ruby_parser 3.2.2 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -151,6 +151,19 @@ module TestRubyParserShared
151
151
  assert_parse rb, pt
152
152
  end
153
153
 
154
+ def test_attrasgn_array_arg
155
+ rb = "a[[1, 2]] = 3"
156
+ pt = s(:attrasgn,
157
+ s(:call, nil, :a),
158
+ :[]=,
159
+ s(:array,
160
+ s(:lit, 1),
161
+ s(:lit, 2)),
162
+ s(:lit, 3))
163
+
164
+ assert_parse rb, pt
165
+ end
166
+
154
167
  def test_block_append
155
168
  head = s(:args)
156
169
  tail = s(:zsuper)
@@ -281,6 +294,13 @@ module TestRubyParserShared
281
294
  assert_parse rb, pt
282
295
  end
283
296
 
297
+ def test_begin_else_return_value
298
+ rb = "begin; else 2; end"
299
+ pt = s(:lit, 2)
300
+
301
+ assert_parse rb, pt
302
+ end
303
+
284
304
  def test_bug_comment_eq_begin
285
305
  rb = "\n\n#\n=begin\nblah\n=end\n\n"
286
306
  pt = nil
@@ -290,6 +310,13 @@ module TestRubyParserShared
290
310
  assert_equal exp, processor.lexer.comments
291
311
  end
292
312
 
313
+ def test_eq_begin_why_wont_people_use_their_spacebar?
314
+ rb = "h[k]=begin\n 42\n end"
315
+ pt = s(:attrasgn, s(:call, nil, :h), :[]=, s(:call, nil, :k), s(:lit, 42))
316
+
317
+ assert_parse rb, pt
318
+ end
319
+
293
320
  def test_bug_call_arglist_parens
294
321
  rb = 'g ( 1), 2'
295
322
  pt = s(:call, nil, :g, s(:lit, 1), s(:lit, 2))
@@ -360,6 +387,14 @@ module TestRubyParserShared
360
387
  assert_equal expected_env, processor.env.all
361
388
  end
362
389
 
390
+ def test_lasgn_ivar_env
391
+ rb = '@a = 42'
392
+ pt = s(:iasgn, :@a, s(:lit, 42))
393
+
394
+ assert_parse rb, pt
395
+ assert_empty processor.env.all
396
+ end
397
+
363
398
  def test_list_append
364
399
  a = s(:lit, 1)
365
400
  b = s(:lit, 2)
@@ -539,6 +574,13 @@ module TestRubyParserShared
539
574
  assert_parse rb, pt
540
575
  end
541
576
 
577
+ def test_str_pct_q
578
+ rb = "%q{a b c}"
579
+ pt = s(:str, "a b c")
580
+
581
+ assert_parse rb, pt
582
+ end
583
+
542
584
  # def test_str_pct_nested_nested
543
585
  # rb = "%{ { #\{ \"#\{1}\" } } }"
544
586
  # assert_equal " { 1 } ", eval(rb)
@@ -590,6 +632,41 @@ module TestRubyParserShared
590
632
  assert_same result.file, result.call.file
591
633
  end
592
634
 
635
+ def test_parse_line_block_inline_comment
636
+ rb = "a\nb # comment\nc"
637
+ pt = s(:block,
638
+ s(:call, nil, :a).line(1),
639
+ s(:call, nil, :b).line(2),
640
+ s(:call, nil, :c).line(3))
641
+
642
+ # see skipped test: test_parse_line_block_inline_comment2
643
+ assert_parse rb, pt
644
+ end
645
+
646
+ def test_parse_line_block_inline_comment2
647
+ skip "I can't fix this yet. Very involved. (process_token to return lineno)"
648
+
649
+ rb = "a\nb # comment\n# another comment\nc"
650
+ pt = s(:block,
651
+ s(:call, nil, :a).line(1),
652
+ s(:call, nil, :b).line(2),
653
+ s(:call, nil, :c).line(4)).line(1)
654
+
655
+ assert_parse rb, pt
656
+ end
657
+
658
+ def test_parse_line_block_inline_comment3
659
+ skip "not yet"
660
+
661
+ rb = "\n\n\na\nb # comment\n# another comment\nc"
662
+ pt = s(:block,
663
+ s(:call, nil, :a).line(4),
664
+ s(:call, nil, :b).line(6),
665
+ s(:call, nil, :c).line(8)).line(1)
666
+
667
+ assert_parse rb, pt
668
+ end
669
+
593
670
  def test_parse_line_call_no_args
594
671
  rb = "f do |x, y|\n x + y\nend"
595
672
 
@@ -610,6 +687,8 @@ module TestRubyParserShared
610
687
  rb = "def f\nend"
611
688
  assert_parse_line rb, pt, 1
612
689
 
690
+ processor.reset
691
+
613
692
  rb = "def f\n\nend"
614
693
  assert_parse_line rb, pt, 1
615
694
  end
@@ -1413,7 +1492,6 @@ module TestRubyParserShared
1413
1492
  end
1414
1493
 
1415
1494
  def test___ENCODING__
1416
- # skip "lexer bug" if ruby18
1417
1495
  rb = "__ENCODING__"
1418
1496
  pt = if Ruby18Parser === processor then
1419
1497
  s(:call, nil, :__ENCODING__)
@@ -2794,6 +2872,28 @@ class TestRuby20Parser < RubyParserTestCase
2794
2872
  assert_parse rb, pt
2795
2873
  end
2796
2874
 
2875
+ def test_defn_kwarg_lvar
2876
+ rb = "def fun(kw: :val); kw; end"
2877
+ pt = s(:defn, :fun, s(:args, s(:kwarg, :kw, s(:lit, :val))), s(:lvar, :kw))
2878
+
2879
+ assert_parse rb, pt
2880
+ end
2881
+
2882
+ def test_defn_kwarg_no_parens
2883
+ rb = "def f a: 1\nend"
2884
+ pt = s(:defn, :f, s(:args, s(:kwarg, :a, s(:lit, 1))), s(:nil))
2885
+
2886
+ assert_parse rb, pt
2887
+ end
2888
+
2889
+ def test_block_kwarg_lvar
2890
+ rb = "bl { |kw: :val| kw }"
2891
+ pt = s(:iter, s(:call, nil, :bl), s(:args, s(:kwarg, :kw, s(:lit, :val))),
2892
+ s(:lvar, :kw))
2893
+
2894
+ assert_parse rb, pt
2895
+ end
2896
+
2797
2897
  def test_defn_powarg
2798
2898
  rb = "def f(**opts) end"
2799
2899
  pt = s(:defn, :f, s(:args, :"**opts"), s(:nil))
@@ -173,36 +173,6 @@ class TestEnvironment < Minitest::Test
173
173
  assert_equal 42, @env[:blah]
174
174
  end
175
175
 
176
- def test_use
177
- @env.use :blah
178
- expected = [{ :blah => true }]
179
- assert_equal expected, @env.instance_variable_get(:"@use")
180
- end
181
-
182
- def test_use_scoped
183
- @env.use :blah
184
- @env.extend
185
- expected = [{}, { :blah => true }]
186
- assert_equal expected, @env.instance_variable_get(:"@use")
187
- end
188
-
189
- def test_used_eh
190
- @env.extend :dynamic
191
- @env[:x] = :dvar
192
- @env.use :x
193
- assert_equal true, @env.used?(:x)
194
- end
195
-
196
- def test_used_eh_none
197
- assert_equal nil, @env.used?(:x)
198
- end
199
-
200
- def test_used_eh_scoped
201
- self.test_used_eh
202
- @env.extend :dynamic
203
- assert_equal true, @env.used?(:x)
204
- end
205
-
206
176
  def test_var_scope_dynamic
207
177
  @env.extend :dynamic
208
178
  assert_equal 42, @env[:blah]
@@ -217,30 +187,6 @@ class TestEnvironment < Minitest::Test
217
187
  assert_equal 42, @env[:blah]
218
188
  end
219
189
 
220
- def test_dynamic
221
- expected1 = {}
222
- expected2 = { :x => 42 }
223
-
224
- assert_equal expected1, @env.dynamic
225
- begin
226
- @env.extend :dynamic
227
- assert_equal expected1, @env.dynamic
228
-
229
- @env[:x] = 42
230
- assert_equal expected2, @env.dynamic
231
-
232
- begin
233
- @env.extend :dynamic
234
- assert_equal expected2, @env.dynamic
235
- @env.unextend
236
- end
237
-
238
- assert_equal expected2, @env.dynamic
239
- @env.unextend
240
- end
241
- assert_equal expected1, @env.dynamic
242
- end
243
-
244
190
  def test_all_dynamic
245
191
  expected = { :blah => 42 }
246
192
 
@@ -260,14 +206,6 @@ class TestEnvironment < Minitest::Test
260
206
  assert_equal expected, @env.all
261
207
  end
262
208
 
263
- def test_dynamic_eh
264
- assert_equal false, @env.dynamic?
265
- @env.extend :dynamic
266
- assert_equal true, @env.dynamic?
267
- @env.extend
268
- assert_equal false, @env.dynamic?
269
- end
270
-
271
209
  def test_all_static_deeper
272
210
  expected0 = { :blah => 42 }
273
211
  expected1 = { :blah => 42, :blah2 => 24 }
@@ -277,7 +215,7 @@ class TestEnvironment < Minitest::Test
277
215
  @env[:blah2] = 24
278
216
  assert_equal expected1, @env.all
279
217
 
280
- @env.extend
218
+ @env.extend
281
219
  @env[:blah] = 27
282
220
  assert_equal expected2, @env.all
283
221
 
metadata CHANGED
@@ -1,24 +1,18 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby_parser
3
- version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
6
- segments:
7
- - 3
8
- - 2
9
- - 2
10
- version: 3.2.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.3.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Ryan Davis
14
8
  autorequire:
15
9
  bindir: bin
16
- cert_chain:
10
+ cert_chain:
17
11
  - |
18
12
  -----BEGIN CERTIFICATE-----
19
- MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
20
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
21
- GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTEzMDkxNjIzMDQxMloXDTE0MDkxNjIzMDQxMlowRTETMBEGA1UE
22
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
23
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
24
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -28,146 +22,139 @@ cert_chain:
28
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
29
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
30
24
  HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
31
- AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
32
- vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
33
- w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
34
- l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
35
- n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
36
- FBHgymkyj/AOSqKRIpXPhjC6
25
+ AQCFZ7JTzoy1gcG4d8A6dmOJy7ygtO5MFpRIz8HuKCF5566nOvpy7aHhDDzFmQuu
26
+ FX3zDU6ghx5cQIueDhf2SGOncyBmmJRRYawm3wI0o1MeN6LZJ/3cRaOTjSFy6+S6
27
+ zqDmHBp8fVA2TGJtO0BLNkbGVrBJjh0UPmSoGzWlRhEVnYC33TpDAbNA+u39UrQI
28
+ ynwhNN7YbnmSR7+JU2cUjBFv2iPBO+TGuWC+9L2zn3NHjuc6tnmSYipA9y8Hv+As
29
+ Y4evBVezr3SjXz08vPqRO5YRdO3zfeMT8gBjRqZjWJGMZ2lD4XNfrs7eky74CyZw
30
+ xx3n58i0lQkBE1EpKE0lFu/y
37
31
  -----END CERTIFICATE-----
38
-
39
- date: 2013-07-12 00:00:00 Z
40
- dependencies:
41
- - !ruby/object:Gem::Dependency
32
+ date: 2014-01-15 00:00:00.000000000 Z
33
+ dependencies:
34
+ - !ruby/object:Gem::Dependency
42
35
  name: sexp_processor
43
- prerelease: false
44
- requirement: &id001 !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
47
38
  - - ~>
48
- - !ruby/object:Gem::Version
49
- hash: 25
50
- segments:
51
- - 4
52
- - 1
53
- version: "4.1"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.1'
54
41
  type: :runtime
55
- version_requirements: *id001
56
- - !ruby/object:Gem::Dependency
57
- name: minitest
58
42
  prerelease: false
59
- requirement: &id002 !ruby/object:Gem::Requirement
60
- none: false
61
- requirements:
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '4.1'
48
+ - !ruby/object:Gem::Dependency
49
+ name: minitest
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
62
52
  - - ~>
63
- - !ruby/object:Gem::Version
64
- hash: 31
65
- segments:
66
- - 5
67
- - 0
68
- version: "5.0"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.2'
69
55
  type: :development
70
- version_requirements: *id002
71
- - !ruby/object:Gem::Dependency
72
- name: rdoc
73
56
  prerelease: false
74
- requirement: &id003 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '5.2'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rdoc
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
77
66
  - - ~>
78
- - !ruby/object:Gem::Version
79
- hash: 27
80
- segments:
81
- - 4
82
- - 0
83
- version: "4.0"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
84
69
  type: :development
85
- version_requirements: *id003
86
- - !ruby/object:Gem::Dependency
87
- name: racc
88
70
  prerelease: false
89
- requirement: &id004 !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: racc
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
92
80
  - - ~>
93
- - !ruby/object:Gem::Version
94
- hash: 11
95
- segments:
96
- - 1
97
- - 4
98
- - 6
81
+ - !ruby/object:Gem::Version
99
82
  version: 1.4.6
100
83
  type: :development
101
- version_requirements: *id004
102
- - !ruby/object:Gem::Dependency
103
- name: rake
104
84
  prerelease: false
105
- requirement: &id005 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.4.6
90
+ - !ruby/object:Gem::Dependency
91
+ name: rake
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
108
94
  - - <
109
- - !ruby/object:Gem::Version
110
- hash: 23
111
- segments:
112
- - 10
113
- version: "10"
95
+ - !ruby/object:Gem::Version
96
+ version: '11'
114
97
  type: :development
115
- version_requirements: *id005
116
- - !ruby/object:Gem::Dependency
117
- name: hoe
118
98
  prerelease: false
119
- requirement: &id006 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - <
102
+ - !ruby/object:Gem::Version
103
+ version: '11'
104
+ - !ruby/object:Gem::Dependency
105
+ name: hoe
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
122
108
  - - ~>
123
- - !ruby/object:Gem::Version
124
- hash: 11
125
- segments:
126
- - 3
127
- - 6
128
- version: "3.6"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.7'
129
111
  type: :development
130
- version_requirements: *id006
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.7'
131
118
  description: |-
132
119
  ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
133
120
  racc--which does by default use a C extension). RP's output is
134
121
  the same as ParseTree's output: s-expressions using ruby's arrays and
135
122
  base types.
136
-
123
+
137
124
  As an example:
138
-
125
+
139
126
  def conditional1 arg1
140
127
  return 1 if arg1 == 0
141
128
  return 0
142
129
  end
143
-
130
+
144
131
  becomes:
145
-
132
+
146
133
  s(:defn, :conditional1, s(:args, :arg1),
147
134
  s(:if,
148
135
  s(:call, s(:lvar, :arg1), :==, s(:lit, 0)),
149
136
  s(:return, s(:lit, 1)),
150
137
  nil),
151
138
  s(:return, s(:lit, 0)))
152
-
139
+
153
140
  Tested against 801,039 files from the latest of all rubygems (as of 2013-05):
154
-
141
+
155
142
  * 1.8 parser is at 99.9739% accuracy, 3.651 sigma
156
143
  * 1.9 parser is at 99.9940% accuracy, 4.013 sigma
157
144
  * 2.0 parser is at 99.9939% accuracy, 4.008 sigma
158
- email:
145
+ email:
159
146
  - ryand-ruby@zenspider.com
160
- executables:
147
+ executables:
161
148
  - ruby_parse
162
149
  - ruby_parse_extract_error
163
150
  extensions: []
164
-
165
- extra_rdoc_files:
151
+ extra_rdoc_files:
166
152
  - History.txt
167
153
  - Manifest.txt
168
154
  - README.txt
169
- files:
155
+ files:
170
156
  - .autotest
157
+ - .gemtest
171
158
  - History.txt
172
159
  - Manifest.txt
173
160
  - README.txt
@@ -187,42 +174,34 @@ files:
187
174
  - test/test_ruby_lexer.rb
188
175
  - test/test_ruby_parser.rb
189
176
  - test/test_ruby_parser_extras.rb
190
- - .gemtest
191
177
  homepage: https://github.com/seattlerb/ruby_parser
192
- licenses: []
193
-
178
+ licenses:
179
+ - MIT
180
+ metadata: {}
194
181
  post_install_message:
195
- rdoc_options:
182
+ rdoc_options:
196
183
  - --main
197
184
  - README.txt
198
- require_paths:
185
+ require_paths:
199
186
  - lib
200
- required_ruby_version: !ruby/object:Gem::Requirement
201
- none: false
202
- requirements:
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- hash: 3
206
- segments:
207
- - 0
208
- version: "0"
209
- required_rubygems_version: !ruby/object:Gem::Requirement
210
- none: false
211
- requirements:
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- hash: 3
215
- segments:
216
- - 0
217
- version: "0"
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
218
197
  requirements: []
219
-
220
- rubyforge_project: parsetree
221
- rubygems_version: 1.8.25
198
+ rubyforge_project: ruby_parser
199
+ rubygems_version: 2.2.1
222
200
  signing_key:
223
- specification_version: 3
224
- summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which does by default use a C extension)
225
- test_files:
201
+ specification_version: 4
202
+ summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
203
+ does by default use a C extension)
204
+ test_files:
226
205
  - test/test_ruby_lexer.rb
227
206
  - test/test_ruby_parser.rb
228
207
  - test/test_ruby_parser_extras.rb