ruby_parser 3.9.0 → 3.10.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.rdoc +17 -0
- data/Rakefile +2 -2
- data/lib/rp_extensions.rb +5 -1
- data/lib/ruby18_parser.rb +15 -9
- data/lib/ruby18_parser.y +15 -9
- data/lib/ruby19_parser.rb +19 -15
- data/lib/ruby19_parser.y +19 -15
- data/lib/ruby20_parser.rb +2229 -2223
- data/lib/ruby20_parser.y +34 -23
- data/lib/ruby21_parser.rb +2546 -2530
- data/lib/ruby21_parser.y +34 -23
- data/lib/ruby22_parser.rb +2567 -2552
- data/lib/ruby22_parser.y +35 -24
- data/lib/ruby23_parser.rb +2505 -2483
- data/lib/ruby23_parser.y +35 -24
- data/lib/ruby24_parser.rb +2505 -2483
- data/lib/ruby24_parser.y +35 -24
- data/lib/ruby_lexer.rb +84 -11
- data/lib/ruby_parser.yy +35 -24
- data/lib/ruby_parser_extras.rb +112 -89
- data/test/test_ruby_lexer.rb +67 -0
- data/test/test_ruby_parser.rb +32 -1
- metadata +6 -6
- metadata.gz.sig +0 -0
data/test/test_ruby_lexer.rb
CHANGED
@@ -1153,6 +1153,47 @@ class TestRubyLexer < Minitest::Test
|
|
1153
1153
|
:tNL, nil, :expr_beg)
|
1154
1154
|
end
|
1155
1155
|
|
1156
|
+
def test_yylex_heredoc_double_squiggly
|
1157
|
+
setup_lexer_class Ruby23Parser
|
1158
|
+
|
1159
|
+
assert_lex3("a = <<~\"EOF\"\n blah blah\n EOF\n\n",
|
1160
|
+
nil,
|
1161
|
+
:tIDENTIFIER, "a", :expr_cmdarg,
|
1162
|
+
:tEQL, "=", :expr_beg,
|
1163
|
+
:tSTRING_BEG, "\"", :expr_beg,
|
1164
|
+
:tSTRING_CONTENT, "blah blah\n", :expr_beg,
|
1165
|
+
:tSTRING_END, "EOF", :expr_end,
|
1166
|
+
:tNL, nil, :expr_beg)
|
1167
|
+
end
|
1168
|
+
|
1169
|
+
# mri handles tabs in a pretty specific way:
|
1170
|
+
# https://github.com/ruby/ruby/blob/trunk/parse.y#L5925
|
1171
|
+
def test_yylex_heredoc_double_squiggly_with_tab_indentation_remaining
|
1172
|
+
setup_lexer_class Ruby23Parser
|
1173
|
+
|
1174
|
+
assert_lex3("a = <<~\"EOF\"\n blah blah\n \tblah blah\n EOF\n\n",
|
1175
|
+
nil,
|
1176
|
+
:tIDENTIFIER, "a", :expr_cmdarg,
|
1177
|
+
:tEQL, "=", :expr_beg,
|
1178
|
+
:tSTRING_BEG, "\"", :expr_beg,
|
1179
|
+
:tSTRING_CONTENT, "blah blah\n\tblah blah\n", :expr_beg,
|
1180
|
+
:tSTRING_END, "EOF", :expr_end,
|
1181
|
+
:tNL, nil, :expr_beg)
|
1182
|
+
end
|
1183
|
+
|
1184
|
+
def test_yylex_heredoc_double_squiggly_with_tab_indentation_removed
|
1185
|
+
setup_lexer_class Ruby23Parser
|
1186
|
+
|
1187
|
+
assert_lex3("a = <<~\"EOF\"\n blah blah\n\t blah blah\n EOF\n\n",
|
1188
|
+
nil,
|
1189
|
+
:tIDENTIFIER, "a", :expr_cmdarg,
|
1190
|
+
:tEQL, "=", :expr_beg,
|
1191
|
+
:tSTRING_BEG, "\"", :expr_beg,
|
1192
|
+
:tSTRING_CONTENT, "blah blah\n blah blah\n", :expr_beg,
|
1193
|
+
:tSTRING_END, "EOF", :expr_end,
|
1194
|
+
:tNL, nil, :expr_beg)
|
1195
|
+
end
|
1196
|
+
|
1156
1197
|
def test_yylex_heredoc_double_eos
|
1157
1198
|
refute_lex("a = <<\"EOF\"\nblah",
|
1158
1199
|
:tIDENTIFIER, "a",
|
@@ -1223,6 +1264,19 @@ class TestRubyLexer < Minitest::Test
|
|
1223
1264
|
:tNL, nil, :expr_beg)
|
1224
1265
|
end
|
1225
1266
|
|
1267
|
+
def test_yylex_heredoc_none_squiggly
|
1268
|
+
setup_lexer_class Ruby23Parser
|
1269
|
+
|
1270
|
+
assert_lex3("a = <<~EOF\n blah\n blah\n EOF\n",
|
1271
|
+
nil,
|
1272
|
+
:tIDENTIFIER, "a", :expr_cmdarg,
|
1273
|
+
:tEQL, "=", :expr_beg,
|
1274
|
+
:tSTRING_BEG, "\"", :expr_beg,
|
1275
|
+
:tSTRING_CONTENT, "blah\nblah\n", :expr_beg,
|
1276
|
+
:tSTRING_END, "EOF", :expr_end,
|
1277
|
+
:tNL, nil, :expr_beg)
|
1278
|
+
end
|
1279
|
+
|
1226
1280
|
def test_yylex_heredoc_single
|
1227
1281
|
assert_lex3("a = <<'EOF'\n blah blah\nEOF\n\n",
|
1228
1282
|
nil,
|
@@ -1273,6 +1327,19 @@ class TestRubyLexer < Minitest::Test
|
|
1273
1327
|
:tNL, nil, :expr_beg)
|
1274
1328
|
end
|
1275
1329
|
|
1330
|
+
def test_yylex_heredoc_single_squiggly
|
1331
|
+
setup_lexer_class Ruby23Parser
|
1332
|
+
|
1333
|
+
assert_lex3("a = <<~'EOF'\n blah blah\n EOF\n\n",
|
1334
|
+
nil,
|
1335
|
+
:tIDENTIFIER, "a", :expr_cmdarg,
|
1336
|
+
:tEQL, "=", :expr_beg,
|
1337
|
+
:tSTRING_BEG, "\"", :expr_beg,
|
1338
|
+
:tSTRING_CONTENT, "blah blah\n", :expr_beg,
|
1339
|
+
:tSTRING_END, "EOF", :expr_end,
|
1340
|
+
:tNL, nil, :expr_beg)
|
1341
|
+
end
|
1342
|
+
|
1276
1343
|
def test_yylex_identifier
|
1277
1344
|
assert_lex3("identifier",
|
1278
1345
|
nil,
|
data/test/test_ruby_parser.rb
CHANGED
@@ -571,6 +571,14 @@ module TestRubyParserShared
|
|
571
571
|
assert_parse rb, pt
|
572
572
|
end
|
573
573
|
|
574
|
+
def test_str_newline_hash_line_number
|
575
|
+
rb = "\"\\n\\n\\n\\n#\"\n1"
|
576
|
+
pt = s(:block, s(:str, "\n\n\n\n#").line(1),
|
577
|
+
s(:lit, 1).line(2))
|
578
|
+
|
579
|
+
assert_parse rb, pt
|
580
|
+
end
|
581
|
+
|
574
582
|
def after_process_hook klass, node, data, input_name, output_name
|
575
583
|
assert_equal 1, @result.line, "should have proper line number"
|
576
584
|
end
|
@@ -811,7 +819,6 @@ module TestRubyParserShared
|
|
811
819
|
end
|
812
820
|
|
813
821
|
def test_parse_line_rescue
|
814
|
-
skip "not yet"
|
815
822
|
rb = "begin\n a\n rescue\n b\n rescue\n c\n end\n"
|
816
823
|
pt = s(:rescue,
|
817
824
|
s(:call, nil, :a).line(2),
|
@@ -1709,6 +1716,16 @@ module TestRubyParserShared
|
|
1709
1716
|
assert_parse rb, pt
|
1710
1717
|
end
|
1711
1718
|
|
1719
|
+
def test_defs_as_arg_with_do_block_inside
|
1720
|
+
rb = "p def self.b; x.y do; end; end"
|
1721
|
+
pt = s(:call,
|
1722
|
+
nil,
|
1723
|
+
:p,
|
1724
|
+
s(:defs, s(:self), :b, s(:args),
|
1725
|
+
s(:iter, s(:call, s(:call, nil, :x), :y), 0)))
|
1726
|
+
|
1727
|
+
assert_parse rb, pt
|
1728
|
+
end
|
1712
1729
|
end
|
1713
1730
|
|
1714
1731
|
module TestRubyParserShared19Plus
|
@@ -3239,6 +3256,20 @@ module TestRubyParserShared20Plus
|
|
3239
3256
|
|
3240
3257
|
assert_parse rb, pt
|
3241
3258
|
end
|
3259
|
+
|
3260
|
+
def test_bug_249
|
3261
|
+
rb = "mount (Class.new do\ndef initialize\nend\n end).new, :at => 'endpoint'"
|
3262
|
+
pt = s(:call, nil, :mount,
|
3263
|
+
s(:call,
|
3264
|
+
s(:iter,
|
3265
|
+
s(:call, s(:const, :Class), :new),
|
3266
|
+
0,
|
3267
|
+
s(:defn, :initialize, s(:args), s(:nil))),
|
3268
|
+
:new),
|
3269
|
+
s(:hash, s(:lit, :at), s(:str, "endpoint")))
|
3270
|
+
|
3271
|
+
assert_parse rb, pt
|
3272
|
+
end
|
3242
3273
|
end
|
3243
3274
|
|
3244
3275
|
module TestRubyParserShared22Plus
|
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.
|
4
|
+
version: 3.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
E4oJcnPkJAr0rw504JGtlZtONZQblwmRJOIdXzolaE3NRGUzGVOUSptZppAKiavY
|
31
31
|
fO6tdKQc/5RfA8oQEkg8hrxA5PQSz4TOFJGLpFvIapEk6tMruQ0bHgkhr9auXg==
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2017-
|
33
|
+
date: 2017-07-17 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: sexp_processor
|
@@ -38,14 +38,14 @@ dependencies:
|
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '4.
|
41
|
+
version: '4.9'
|
42
42
|
type: :runtime
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '4.
|
48
|
+
version: '4.9'
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: rake
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,14 +66,14 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '2.
|
69
|
+
version: '2.5'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '2.
|
76
|
+
version: '2.5'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: rdoc
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|