rbs 3.5.2 → 3.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9764851079fa89592891f71a26c6eee69864530b07b78e11095b5fdd49b3f6e
4
- data.tar.gz: 4fa3989f4f1508aff037e9f07d708f8b14355d133415c088ae8a61abec5ad114
3
+ metadata.gz: dd64311918171dfbd09f9f589ce34a9f090f145f31d7a687ef1117551913e35d
4
+ data.tar.gz: e9abb9591ee16228cea0b0f07806fc1eef6271944222ed07f4d7d849b8962611
5
5
  SHA512:
6
- metadata.gz: 95b8dd11d46e7d395bb72fe698e6607eea742d02b1fe78309b030f3e921be8400367abf8ce3985b9afa35febb596fb196d532a420d641f1d6cf1bab78fdfdf38
7
- data.tar.gz: bf4153dcdbf740345ed312a75a6452475d1faeb92f5fa7f07d5c0f153582be935c4952aa3ed53dc20f579da0d2ed219f80cda826c575c416d34bb3a9c5ff98d8
6
+ metadata.gz: 046b790474ee8c0cd8f3c1a69531ccf3b3d95df6ef9cd46cf3f89224a6ac0964776025d01c2bb2d094c211e88cb93925a03693e66a7d7986961384cc5d5e229a
7
+ data.tar.gz: 1a191fe2488617141c975b3479666138e75a31f37cbdbadcae7a6032e5031e09a8e74c2699e5f928692c0a12fb8dfa9e8332edd3ac45ae46001e88652bff589f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.5.3 (2024-08-23)
4
+
5
+ ### Library changes
6
+
7
+ * Backport GC fix PR ([#1977](https://github.com/ruby/rbs/pull/1977))
8
+
3
9
  ## 3.5.2 (2024-07-10)
4
10
 
5
11
  ### Library changes
@@ -2836,7 +2836,10 @@ parse_type_try(VALUE a) {
2836
2836
  static VALUE
2837
2837
  rbsparser_parse_type(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables, VALUE require_eof)
2838
2838
  {
2839
- parserstate *parser = alloc_parser(buffer, FIX2INT(start_pos), FIX2INT(end_pos), variables);
2839
+ VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
2840
+ StringValue(string);
2841
+ lexstate *lexer = alloc_lexer(string, FIX2INT(start_pos), FIX2INT(end_pos));
2842
+ parserstate *parser = alloc_parser(buffer, lexer, FIX2INT(start_pos), FIX2INT(end_pos), variables);
2840
2843
  struct parse_type_arg arg = {
2841
2844
  parser,
2842
2845
  require_eof
@@ -2864,7 +2867,10 @@ parse_method_type_try(VALUE a) {
2864
2867
  static VALUE
2865
2868
  rbsparser_parse_method_type(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables, VALUE require_eof)
2866
2869
  {
2867
- parserstate *parser = alloc_parser(buffer, FIX2INT(start_pos), FIX2INT(end_pos), variables);
2870
+ VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
2871
+ StringValue(string);
2872
+ lexstate *lexer = alloc_lexer(string, FIX2INT(start_pos), FIX2INT(end_pos));
2873
+ parserstate *parser = alloc_parser(buffer, lexer, FIX2INT(start_pos), FIX2INT(end_pos), variables);
2868
2874
  struct parse_type_arg arg = {
2869
2875
  parser,
2870
2876
  require_eof
@@ -2881,13 +2887,18 @@ parse_signature_try(VALUE a) {
2881
2887
  static VALUE
2882
2888
  rbsparser_parse_signature(VALUE self, VALUE buffer, VALUE end_pos)
2883
2889
  {
2884
- parserstate *parser = alloc_parser(buffer, 0, FIX2INT(end_pos), Qnil);
2890
+ VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
2891
+ StringValue(string);
2892
+ lexstate *lexer = alloc_lexer(string, 0, FIX2INT(end_pos));
2893
+ parserstate *parser = alloc_parser(buffer, lexer, 0, FIX2INT(end_pos), Qnil);
2885
2894
  return rb_ensure(parse_signature_try, (VALUE)parser, ensure_free_parser, (VALUE)parser);
2886
2895
  }
2887
2896
 
2888
2897
  static VALUE
2889
2898
  rbsparser_lex(VALUE self, VALUE buffer, VALUE end_pos) {
2890
- lexstate *lexer = alloc_lexer(buffer, 0, FIX2INT(end_pos));
2899
+ VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
2900
+ StringValue(string);
2901
+ lexstate *lexer = alloc_lexer(string, 0, FIX2INT(end_pos));
2891
2902
  VALUE results = rb_ary_new();
2892
2903
 
2893
2904
  token token = NullToken;
@@ -2906,6 +2917,7 @@ rbsparser_lex(VALUE self, VALUE buffer, VALUE end_pos) {
2906
2917
 
2907
2918
  void rbs__init_parser(void) {
2908
2919
  RBS_Parser = rb_define_class_under(RBS, "Parser", rb_cObject);
2920
+ rb_gc_register_mark_object(RBS_Parser);
2909
2921
  rb_define_singleton_method(RBS_Parser, "_parse_type", rbsparser_parse_type, 5);
2910
2922
  rb_define_singleton_method(RBS_Parser, "_parse_method_type", rbsparser_parse_method_type, 5);
2911
2923
  rb_define_singleton_method(RBS_Parser, "_parse_signature", rbsparser_parse_signature, 2);
@@ -274,11 +274,7 @@ VALUE comment_to_ruby(comment *com, VALUE buffer) {
274
274
  );
275
275
  }
276
276
 
277
- lexstate *alloc_lexer(VALUE buffer, int start_pos, int end_pos) {
278
- VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
279
-
280
- StringValue(string);
281
-
277
+ lexstate *alloc_lexer(VALUE string, int start_pos, int end_pos) {
282
278
  if (start_pos < 0 || end_pos < 0) {
283
279
  rb_raise(rb_eArgError, "negative position range: %d...%d", start_pos, end_pos);
284
280
  }
@@ -295,8 +291,7 @@ lexstate *alloc_lexer(VALUE buffer, int start_pos, int end_pos) {
295
291
  return lexer;
296
292
  }
297
293
 
298
- parserstate *alloc_parser(VALUE buffer, int start_pos, int end_pos, VALUE variables) {
299
- lexstate *lexer = alloc_lexer(buffer, start_pos, end_pos);
294
+ parserstate *alloc_parser(VALUE buffer, lexstate *lexer, int start_pos, int end_pos, VALUE variables) {
300
295
  parserstate *parser = calloc(1, sizeof(parserstate));
301
296
  parser->lexstate = lexer;
302
297
  parser->buffer = buffer;
@@ -97,20 +97,21 @@ bool parser_typevar_member(parserstate *state, ID id);
97
97
  * Allocate new lexstate object.
98
98
  *
99
99
  * ```
100
- * alloc_lexer(buffer, 0, 31) // New lexstate with buffer
100
+ * VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
101
+ * alloc_lexer(string, 0, 31) // New lexstate with buffer content
101
102
  * ```
102
103
  * */
103
- lexstate *alloc_lexer(VALUE buffer, int start_pos, int end_pos);
104
+ lexstate *alloc_lexer(VALUE string, int start_pos, int end_pos);
104
105
 
105
106
  /**
106
107
  * Allocate new parserstate object.
107
108
  *
108
109
  * ```
109
- * alloc_parser(buffer, 0, 1, variables) // New parserstate with variables
110
- * alloc_parser(buffer, 3, 5, Qnil) // New parserstate without variables
110
+ * alloc_parser(buffer, lexer, 0, 1, variables) // New parserstate with variables
111
+ * alloc_parser(buffer, lexer, 3, 5, Qnil) // New parserstate without variables
111
112
  * ```
112
113
  * */
113
- parserstate *alloc_parser(VALUE buffer, int start_pos, int end_pos, VALUE variables);
114
+ parserstate *alloc_parser(VALUE buffer, lexstate *lexer, int start_pos, int end_pos, VALUE variables);
114
115
  void free_parser(parserstate *parser);
115
116
  /**
116
117
  * Advance one token.
data/lib/rbs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RBS
4
- VERSION = "3.5.2"
4
+ VERSION = "3.5.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.2
4
+ version: 3.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Soutaro Matsumoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-10 00:00:00.000000000 Z
11
+ date: 2024-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger
@@ -527,7 +527,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
527
527
  - !ruby/object:Gem::Version
528
528
  version: '0'
529
529
  requirements: []
530
- rubygems_version: 3.5.11
530
+ rubygems_version: 3.5.17
531
531
  signing_key:
532
532
  specification_version: 4
533
533
  summary: Type signature for Ruby.