rbs 3.5.2 → 3.5.3

Sign up to get free protection for your applications and to get access to all the features.
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.