ruby_parser 3.10.1 → 3.11.0

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.
@@ -548,7 +548,7 @@ class RubyLexer
548
548
  self.lineno += matched.lines.to_a.size if scan(/\n+/)
549
549
 
550
550
  return if in_lex_state?(:expr_beg, :expr_value, :expr_class,
551
- :expr_fname, :expr_dot, :expr_labelarg)
551
+ :expr_fname, :expr_dot)
552
552
 
553
553
  if scan(/([\ \t\r\f\v]*)(\.|&)/) then
554
554
  self.space_seen = true unless ss[1].empty?
@@ -1042,7 +1042,13 @@ class RubyLexer
1042
1042
  when scan(/\\[McCx]/) then
1043
1043
  rb_compile_error "Invalid escape character syntax"
1044
1044
  when scan(/\\(.)/m) then
1045
- self.string_buffer << matched
1045
+ chr = ss[1]
1046
+ prev = self.string_buffer.last
1047
+ if term == chr && prev && prev.end_with?("(?") then
1048
+ self.string_buffer << chr
1049
+ else
1050
+ self.string_buffer << matched
1051
+ end
1046
1052
  else
1047
1053
  rb_compile_error "Invalid escape character syntax"
1048
1054
  end
@@ -72,10 +72,12 @@ require "ruby21_parser"
72
72
  require "ruby22_parser"
73
73
  require "ruby23_parser"
74
74
  require "ruby24_parser"
75
+ require "ruby25_parser"
75
76
 
76
77
  class RubyParser # HACK
77
78
  VERSIONS.clear # also a HACK caused by racc namespace issues
78
79
 
80
+ class V25 < ::Ruby25Parser; end
79
81
  class V24 < ::Ruby24Parser; end
80
82
  class V23 < ::Ruby23Parser; end
81
83
  class V22 < ::Ruby22Parser; end
@@ -10,6 +10,8 @@ class Ruby22Parser
10
10
  class Ruby23Parser
11
11
  #elif V == 24
12
12
  class Ruby24Parser
13
+ #elif V == 25
14
+ class Ruby25Parser
13
15
  #else
14
16
  fail "version not specified or supported on code generation"
15
17
  #endif
@@ -2418,9 +2420,9 @@ keyword_variable: kNIL { result = s(:nil) }
2418
2420
  {
2419
2421
  result = s(:array, val[0], val[2])
2420
2422
  }
2421
- | tLABEL arg_value
2423
+ | tLABEL opt_nl arg_value
2422
2424
  {
2423
- result = s(:array, s(:lit, val[0][0].to_sym), val[1])
2425
+ result = s(:array, s(:lit, val[0][0].to_sym), val.last)
2424
2426
  }
2425
2427
  #if V >= 22
2426
2428
  | tSTRING_BEG string_contents tLABEL_END arg_value
@@ -7,7 +7,7 @@ require "rp_extensions"
7
7
  require "rp_stringscanner"
8
8
 
9
9
  module RubyParserStuff
10
- VERSION = "3.10.1"
10
+ VERSION = "3.11.0"
11
11
 
12
12
  attr_accessor :lexer, :in_def, :in_single, :file
13
13
  attr_reader :env, :comments
@@ -437,12 +437,7 @@ module RubyParserStuff
437
437
  def new_aref val
438
438
  val[2] ||= s(:arglist)
439
439
  val[2].sexp_type = :arglist if val[2].sexp_type == :array # REFACTOR
440
- if val[0].node_type == :self then
441
- result = new_call nil, :"[]", val[2]
442
- else
443
- result = new_call val[0], :"[]", val[2]
444
- end
445
- result
440
+ new_call val[0], :"[]", val[2]
446
441
  end
447
442
 
448
443
  def new_body val
@@ -2053,6 +2053,14 @@ class TestRubyLexer < Minitest::Test
2053
2053
  :tREGEXP_END, "", :expr_end)
2054
2054
  end
2055
2055
 
2056
+ def test_yylex_regexp_escaped_delim
2057
+ assert_lex3("%r!blah(?\\!blah)!",
2058
+ nil,
2059
+ :tREGEXP_BEG, "%r\000", :expr_beg,
2060
+ :tSTRING_CONTENT, "blah(?!blah)", :expr_beg,
2061
+ :tREGEXP_END, "", :expr_end)
2062
+ end
2063
+
2056
2064
  def test_yylex_regexp_escape_backslash_terminator_meta1
2057
2065
  assert_lex3("%r{blah\\}blah}",
2058
2066
  nil,
@@ -2797,6 +2805,20 @@ class TestRubyLexer < Minitest::Test
2797
2805
  :tRCURLY, "}", :expr_endarg, 0, 0)
2798
2806
  end
2799
2807
 
2808
+ def test_yylex_required_kwarg_no_value_22
2809
+ setup_lexer_class RubyParser::V22
2810
+
2811
+ assert_lex3("def foo a:, b:\nend",
2812
+ nil,
2813
+ :kDEF, "def", :expr_fname,
2814
+ :tIDENTIFIER, "foo", :expr_endfn,
2815
+ :tLABEL, "a", :expr_labelarg,
2816
+ :tCOMMA, ",", :expr_beg,
2817
+ :tLABEL, "b", :expr_labelarg,
2818
+ :tNL, nil, :expr_beg,
2819
+ :kEND, "end", :expr_end)
2820
+ end
2821
+
2800
2822
  def test_ruby21_rational_literal
2801
2823
  setup_lexer_class RubyParser::V21
2802
2824
 
@@ -171,6 +171,13 @@ module TestRubyParserShared
171
171
  assert_parse rb, pt
172
172
  end
173
173
 
174
+ def test_call_self_brackets
175
+ rb = "self[1]"
176
+ pt = s(:call, s(:self), :[], s(:lit, 1))
177
+
178
+ assert_parse rb, pt
179
+ end
180
+
174
181
  def test_dasgn_icky2
175
182
  rb = "a do\n v = nil\n begin\n yield\n rescue Exception => v\n break\n end\nend"
176
183
  pt = s(:iter,
@@ -3419,6 +3426,17 @@ module TestRubyParserShared23Plus
3419
3426
  assert_parse rb, pt
3420
3427
  end
3421
3428
 
3429
+ def test_required_kwarg_no_value
3430
+ rb = "def x a:, b:\nend"
3431
+ pt = s(:defn, :x,
3432
+ s(:args,
3433
+ s(:kwarg, :a),
3434
+ s(:kwarg, :b)),
3435
+ s(:nil))
3436
+
3437
+ assert_parse rb, pt
3438
+ end
3439
+
3422
3440
  def test_slashy_newlines_within_string
3423
3441
  rb = %(puts "hello\\
3424
3442
  my\\
@@ -3443,6 +3461,10 @@ module TestRubyParserShared24Plus
3443
3461
  # ...version specific tests to go here...
3444
3462
  end
3445
3463
 
3464
+ module TestRubyParserShared25Plus
3465
+ # ...version specific tests to go here...
3466
+ end
3467
+
3446
3468
  class TestRubyParser < Minitest::Test
3447
3469
  def test_cls_version
3448
3470
  assert_equal 18, RubyParser::V18.version
@@ -3729,6 +3751,23 @@ class TestRubyParserV24 < RubyParserTestCase
3729
3751
  end
3730
3752
  end
3731
3753
 
3754
+ class TestRubyParserV25 < RubyParserTestCase
3755
+ include TestRubyParserShared
3756
+ include TestRubyParserShared19Plus
3757
+ include TestRubyParserShared20Plus
3758
+ include TestRubyParserShared21Plus
3759
+ include TestRubyParserShared22Plus
3760
+ include TestRubyParserShared23Plus
3761
+ include TestRubyParserShared24Plus
3762
+ include TestRubyParserShared25Plus
3763
+
3764
+ def setup
3765
+ super
3766
+
3767
+ self.processor = RubyParser::V25.new
3768
+ end
3769
+ end
3770
+
3732
3771
  RubyParser::VERSIONS.each do |klass|
3733
3772
  v = klass.version
3734
3773
  describe "block args arity #{v}" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.1
4
+ version: 3.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -10,9 +10,9 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBAjANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE2MDkyNjAxNTczNVoXDTE3MDkyNjAxNTczNVowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTE3MTEyMTIxMTExMFoXDTE4MTEyMTIxMTExMFowRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -20,17 +20,16 @@ cert_chain:
20
20
  oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
21
21
  GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
- gBEfoTEGr7Zii72cx+sCAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
- sDAdBgNVHQ4EFgQUR8V72Z3+v+2P9abCnL4wjx32T+EwIwYDVR0RBBwwGoEYcnlh
25
- bmQtcnVieUB6ZW5zcGlkZXIuY29tMCMGA1UdEgQcMBqBGHJ5YW5kLXJ1YnlAemVu
26
- c3BpZGVyLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAIGzgp0aZ2W9+v96ujmBcQHoC
27
- buy0iU68MVj2VlxMyfr1KPZIh1OyhU4UO4zrkREcH8ML70v9cYHNvOd9oynRHnvC
28
- l2tj/fD3YJ0AEkJxGrYwRWQmvMfC4bJ02bC1+rVOUIXXKp3+cUmiN4sTniof8VFo
29
- bo/YYP4c7erpERa+9hrqygg6WQbJlk2YRlH3JXPFjmu869i2dcbR5ZLOAeEy+axH
30
- E4oJcnPkJAr0rw504JGtlZtONZQblwmRJOIdXzolaE3NRGUzGVOUSptZppAKiavY
31
- fO6tdKQc/5RfA8oQEkg8hrxA5PQSz4TOFJGLpFvIapEk6tMruQ0bHgkhr9auXg==
23
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
25
+ AQAfAXSQpsW7YSxd1csRtA/M4Zt0AMXFMd76GJ8Lgtg8G0+VFbdChRyDuDb0kPlW
26
+ h9QQX/YABfCW8vxmssbMGrP+VGBAn7BbdTcfTlgCWrvMX1uL5aRL74nA4urKXqdW
27
+ a0nP70K4958P3GffBdtE3KGkU5xstFnXGajxuBRnL66E15KU0BNehVxdG258bdPu
28
+ EKN6MqBPftFiev3tuwqDV11r2GquDpniYcT+Mi8/PgeAgVT/afBeVgbB3KaZeTRR
29
+ AhXhF6Wi2GTMezlj5jlI5XV7WsJUSwTp/YiVvcmT74ZaCRvexm6EnNhkrvJJ1Xeu
30
+ V+HB+LYYhXWitInO/eXxDrFB
32
31
  -----END CERTIFICATE-----
33
- date: 2017-07-21 00:00:00.000000000 Z
32
+ date: 2018-02-15 00:00:00.000000000 Z
34
33
  dependencies:
35
34
  - !ruby/object:Gem::Dependency
36
35
  name: sexp_processor
@@ -78,16 +77,22 @@ dependencies:
78
77
  name: rdoc
79
78
  requirement: !ruby/object:Gem::Requirement
80
79
  requirements:
81
- - - "~>"
80
+ - - ">="
82
81
  - !ruby/object:Gem::Version
83
82
  version: '4.0'
83
+ - - "<"
84
+ - !ruby/object:Gem::Version
85
+ version: '6'
84
86
  type: :development
85
87
  prerelease: false
86
88
  version_requirements: !ruby/object:Gem::Requirement
87
89
  requirements:
88
- - - "~>"
90
+ - - ">="
89
91
  - !ruby/object:Gem::Version
90
92
  version: '4.0'
93
+ - - "<"
94
+ - !ruby/object:Gem::Version
95
+ version: '6'
91
96
  - !ruby/object:Gem::Dependency
92
97
  name: racc
93
98
  requirement: !ruby/object:Gem::Requirement
@@ -179,6 +184,8 @@ files:
179
184
  - lib/ruby23_parser.y
180
185
  - lib/ruby24_parser.rb
181
186
  - lib/ruby24_parser.y
187
+ - lib/ruby25_parser.rb
188
+ - lib/ruby25_parser.y
182
189
  - lib/ruby_lexer.rb
183
190
  - lib/ruby_lexer.rex
184
191
  - lib/ruby_lexer.rex.rb
@@ -210,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
217
  version: '0'
211
218
  requirements: []
212
219
  rubyforge_project:
213
- rubygems_version: 2.6.8
220
+ rubygems_version: 2.7.3
214
221
  signing_key:
215
222
  specification_version: 4
216
223
  summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
metadata.gz.sig CHANGED
Binary file