prism 0.29.0 → 0.30.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -1
- data/CONTRIBUTING.md +0 -4
- data/README.md +1 -0
- data/config.yml +66 -9
- data/docs/fuzzing.md +1 -1
- data/docs/ripper_translation.md +22 -0
- data/ext/prism/api_node.c +30 -12
- data/ext/prism/extension.c +107 -372
- data/ext/prism/extension.h +1 -1
- data/include/prism/ast.h +138 -70
- data/include/prism/diagnostic.h +7 -2
- data/include/prism/node.h +0 -21
- data/include/prism/parser.h +23 -25
- data/include/prism/regexp.h +17 -8
- data/include/prism/static_literals.h +3 -2
- data/include/prism/util/pm_char.h +1 -2
- data/include/prism/util/pm_constant_pool.h +0 -8
- data/include/prism/util/pm_integer.h +16 -9
- data/include/prism/util/pm_string.h +0 -8
- data/include/prism/version.h +2 -2
- data/include/prism.h +0 -11
- data/lib/prism/compiler.rb +3 -0
- data/lib/prism/dispatcher.rb +14 -0
- data/lib/prism/dot_visitor.rb +22 -3
- data/lib/prism/dsl.rb +7 -2
- data/lib/prism/ffi.rb +24 -3
- data/lib/prism/inspect_visitor.rb +10 -8
- data/lib/prism/mutation_compiler.rb +6 -1
- data/lib/prism/node.rb +166 -241
- data/lib/prism/node_ext.rb +21 -5
- data/lib/prism/parse_result/comments.rb +0 -7
- data/lib/prism/parse_result/newlines.rb +101 -11
- data/lib/prism/parse_result.rb +17 -0
- data/lib/prism/reflection.rb +3 -1
- data/lib/prism/serialize.rb +80 -67
- data/lib/prism/translation/parser/compiler.rb +134 -114
- data/lib/prism/translation/parser.rb +6 -1
- data/lib/prism/translation/ripper.rb +8 -6
- data/lib/prism/translation/ruby_parser.rb +23 -5
- data/lib/prism/visitor.rb +3 -0
- data/lib/prism.rb +0 -4
- data/prism.gemspec +1 -4
- data/rbi/prism/node.rbi +63 -6
- data/rbi/prism/visitor.rbi +3 -0
- data/rbi/prism.rbi +6 -0
- data/sig/prism/dsl.rbs +4 -1
- data/sig/prism/mutation_compiler.rbs +1 -0
- data/sig/prism/node.rbs +28 -4
- data/sig/prism/visitor.rbs +1 -0
- data/sig/prism.rbs +21 -0
- data/src/diagnostic.c +27 -17
- data/src/node.c +408 -1666
- data/src/prettyprint.c +49 -6
- data/src/prism.c +958 -991
- data/src/regexp.c +133 -68
- data/src/serialize.c +6 -1
- data/src/static_literals.c +63 -84
- data/src/token_type.c +2 -2
- data/src/util/pm_constant_pool.c +0 -8
- data/src/util/pm_integer.c +39 -11
- data/src/util/pm_string.c +0 -12
- data/src/util/pm_strpbrk.c +32 -6
- metadata +2 -5
- data/include/prism/util/pm_string_list.h +0 -44
- data/lib/prism/debug.rb +0 -249
- data/src/util/pm_string_list.c +0 -28
data/lib/prism/node_ext.rb
CHANGED
@@ -5,10 +5,13 @@
|
|
5
5
|
module Prism
|
6
6
|
class Node
|
7
7
|
def deprecated(*replacements) # :nodoc:
|
8
|
+
location = caller_locations(1, 1)
|
9
|
+
location = location[0].label if location
|
8
10
|
suggest = replacements.map { |replacement| "#{self.class}##{replacement}" }
|
11
|
+
|
9
12
|
warn(<<~MSG, category: :deprecated)
|
10
|
-
[deprecation]: #{self.class}##{
|
11
|
-
|
13
|
+
[deprecation]: #{self.class}##{location} is deprecated and will be \
|
14
|
+
removed in the next major version. Use #{suggest.join("/")} instead.
|
12
15
|
#{(caller(1, 3) || []).join("\n")}
|
13
16
|
MSG
|
14
17
|
end
|
@@ -103,7 +106,19 @@ module Prism
|
|
103
106
|
class RationalNode < Node
|
104
107
|
# Returns the value of the node as a Ruby Rational.
|
105
108
|
def value
|
106
|
-
Rational(
|
109
|
+
Rational(numerator, denominator)
|
110
|
+
end
|
111
|
+
|
112
|
+
# Returns the value of the node as an IntegerNode or a FloatNode. This
|
113
|
+
# method is deprecated in favor of #value or #numerator/#denominator.
|
114
|
+
def numeric
|
115
|
+
deprecated("value", "numerator", "denominator")
|
116
|
+
|
117
|
+
if denominator == 1
|
118
|
+
IntegerNode.new(source, flags, numerator, location.chop)
|
119
|
+
else
|
120
|
+
FloatNode.new(source, numerator.to_f / denominator, location.chop)
|
121
|
+
end
|
107
122
|
end
|
108
123
|
end
|
109
124
|
|
@@ -249,9 +264,10 @@ module Prism
|
|
249
264
|
end
|
250
265
|
|
251
266
|
posts.each do |param|
|
252
|
-
|
267
|
+
case param
|
268
|
+
when MultiTargetNode
|
253
269
|
names << [:req]
|
254
|
-
|
270
|
+
when NoKeywordsParameterNode, KeywordRestParameterNode, ForwardingParameterNode
|
255
271
|
# Invalid syntax, e.g. "def f(**nil, ...)" moves the NoKeywordsParameterNode to posts
|
256
272
|
raise "Invalid syntax"
|
257
273
|
else
|
@@ -183,12 +183,5 @@ module Prism
|
|
183
183
|
[preceding, NodeTarget.new(node), following]
|
184
184
|
end
|
185
185
|
end
|
186
|
-
|
187
|
-
private_constant :Comments
|
188
|
-
|
189
|
-
# Attach the list of comments to their respective locations in the tree.
|
190
|
-
def attach_comments!
|
191
|
-
Comments.new(self).attach! # steep:ignore
|
192
|
-
end
|
193
186
|
end
|
194
187
|
end
|
@@ -17,21 +17,27 @@ module Prism
|
|
17
17
|
# Note that the logic in this file should be kept in sync with the Java
|
18
18
|
# MarkNewlinesVisitor, since that visitor is responsible for marking the
|
19
19
|
# newlines for JRuby/TruffleRuby.
|
20
|
+
#
|
21
|
+
# This file is autoloaded only when `mark_newlines!` is called, so the
|
22
|
+
# re-opening of the various nodes in this file will only be performed in
|
23
|
+
# that case. We do that to avoid storing the extra `@newline` instance
|
24
|
+
# variable on every node if we don't need it.
|
20
25
|
class Newlines < Visitor
|
21
26
|
# Create a new Newlines visitor with the given newline offsets.
|
22
|
-
def initialize(
|
23
|
-
@
|
27
|
+
def initialize(lines)
|
28
|
+
# @type var lines: Integer
|
29
|
+
@lines = Array.new(1 + lines, false)
|
24
30
|
end
|
25
31
|
|
26
32
|
# Permit block/lambda nodes to mark newlines within themselves.
|
27
33
|
def visit_block_node(node)
|
28
|
-
|
29
|
-
@
|
34
|
+
old_lines = @lines
|
35
|
+
@lines = Array.new(old_lines.size, false)
|
30
36
|
|
31
37
|
begin
|
32
38
|
super(node)
|
33
39
|
ensure
|
34
|
-
@
|
40
|
+
@lines = old_lines
|
35
41
|
end
|
36
42
|
end
|
37
43
|
|
@@ -39,7 +45,7 @@ module Prism
|
|
39
45
|
|
40
46
|
# Mark if/unless nodes as newlines.
|
41
47
|
def visit_if_node(node)
|
42
|
-
node.
|
48
|
+
node.newline!(@lines)
|
43
49
|
super(node)
|
44
50
|
end
|
45
51
|
|
@@ -48,17 +54,101 @@ module Prism
|
|
48
54
|
# Permit statements lists to mark newlines within themselves.
|
49
55
|
def visit_statements_node(node)
|
50
56
|
node.body.each do |child|
|
51
|
-
child.
|
57
|
+
child.newline!(@lines)
|
52
58
|
end
|
53
59
|
super(node)
|
54
60
|
end
|
55
61
|
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class Node
|
65
|
+
def newline? # :nodoc:
|
66
|
+
@newline ? true : false
|
67
|
+
end
|
68
|
+
|
69
|
+
def newline!(lines) # :nodoc:
|
70
|
+
line = location.start_line
|
71
|
+
unless lines[line]
|
72
|
+
lines[line] = true
|
73
|
+
@newline = true
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
class BeginNode < Node
|
79
|
+
def newline!(lines) # :nodoc:
|
80
|
+
# Never mark BeginNode with a newline flag, mark children instead.
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
class ParenthesesNode < Node
|
85
|
+
def newline!(lines) # :nodoc:
|
86
|
+
# Never mark ParenthesesNode with a newline flag, mark children instead.
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class IfNode < Node
|
91
|
+
def newline!(lines) # :nodoc:
|
92
|
+
predicate.newline!(lines)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class UnlessNode < Node
|
97
|
+
def newline!(lines) # :nodoc:
|
98
|
+
predicate.newline!(lines)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
class UntilNode < Node
|
103
|
+
def newline!(lines) # :nodoc:
|
104
|
+
predicate.newline!(lines)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
class WhileNode < Node
|
109
|
+
def newline!(lines) # :nodoc:
|
110
|
+
predicate.newline!(lines)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class RescueModifierNode < Node
|
115
|
+
def newline!(lines) # :nodoc:
|
116
|
+
expression.newline!(lines)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class InterpolatedMatchLastLineNode < Node
|
121
|
+
def newline!(lines) # :nodoc:
|
122
|
+
first = parts.first
|
123
|
+
first.newline!(lines) if first
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
class InterpolatedRegularExpressionNode < Node
|
128
|
+
def newline!(lines) # :nodoc:
|
129
|
+
first = parts.first
|
130
|
+
first.newline!(lines) if first
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
class InterpolatedStringNode < Node
|
135
|
+
def newline!(lines) # :nodoc:
|
136
|
+
first = parts.first
|
137
|
+
first.newline!(lines) if first
|
138
|
+
end
|
139
|
+
end
|
56
140
|
|
57
|
-
|
141
|
+
class InterpolatedSymbolNode < Node
|
142
|
+
def newline!(lines) # :nodoc:
|
143
|
+
first = parts.first
|
144
|
+
first.newline!(lines) if first
|
145
|
+
end
|
146
|
+
end
|
58
147
|
|
59
|
-
|
60
|
-
def
|
61
|
-
|
148
|
+
class InterpolatedXStringNode < Node
|
149
|
+
def newline!(lines) # :nodoc:
|
150
|
+
first = parts.first
|
151
|
+
first.newline!(lines) if first
|
62
152
|
end
|
63
153
|
end
|
64
154
|
end
|
data/lib/prism/parse_result.rb
CHANGED
@@ -574,6 +574,12 @@ module Prism
|
|
574
574
|
|
575
575
|
# This is a result specific to the `parse` and `parse_file` methods.
|
576
576
|
class ParseResult < Result
|
577
|
+
autoload :Comments, "prism/parse_result/comments"
|
578
|
+
autoload :Newlines, "prism/parse_result/newlines"
|
579
|
+
|
580
|
+
private_constant :Comments
|
581
|
+
private_constant :Newlines
|
582
|
+
|
577
583
|
# The syntax tree that was parsed from the source code.
|
578
584
|
attr_reader :value
|
579
585
|
|
@@ -587,6 +593,17 @@ module Prism
|
|
587
593
|
def deconstruct_keys(keys)
|
588
594
|
super.merge!(value: value)
|
589
595
|
end
|
596
|
+
|
597
|
+
# Attach the list of comments to their respective locations in the tree.
|
598
|
+
def attach_comments!
|
599
|
+
Comments.new(self).attach! # steep:ignore
|
600
|
+
end
|
601
|
+
|
602
|
+
# Walk the tree and mark nodes that are on a new line, loosely emulating
|
603
|
+
# the behavior of CRuby's `:line` tracepoint event.
|
604
|
+
def mark_newlines!
|
605
|
+
value.accept(Newlines.new(source.offsets.size)) # steep:ignore
|
606
|
+
end
|
590
607
|
end
|
591
608
|
|
592
609
|
# This is a result specific to the `lex` and `lex_file` methods.
|
data/lib/prism/reflection.rb
CHANGED
@@ -277,6 +277,8 @@ module Prism
|
|
277
277
|
[OptionalLocationField.new(:opening_loc), NodeListField.new(:parts), OptionalLocationField.new(:closing_loc)]
|
278
278
|
when :interpolated_x_string_node
|
279
279
|
[LocationField.new(:opening_loc), NodeListField.new(:parts), LocationField.new(:closing_loc)]
|
280
|
+
when :it_local_variable_read_node
|
281
|
+
[]
|
280
282
|
when :it_parameters_node
|
281
283
|
[]
|
282
284
|
when :keyword_hash_node
|
@@ -346,7 +348,7 @@ module Prism
|
|
346
348
|
when :range_node
|
347
349
|
[FlagsField.new(:flags, [:exclude_end?]), OptionalNodeField.new(:left), OptionalNodeField.new(:right), LocationField.new(:operator_loc)]
|
348
350
|
when :rational_node
|
349
|
-
[
|
351
|
+
[FlagsField.new(:flags, [:binary?, :decimal?, :octal?, :hexadecimal?]), IntegerField.new(:numerator), IntegerField.new(:denominator)]
|
350
352
|
when :redo_node
|
351
353
|
[]
|
352
354
|
when :regular_expression_node
|
data/lib/prism/serialize.rb
CHANGED
@@ -18,7 +18,7 @@ module Prism
|
|
18
18
|
|
19
19
|
# The minor version of prism that we are expecting to find in the serialized
|
20
20
|
# strings.
|
21
|
-
MINOR_VERSION =
|
21
|
+
MINOR_VERSION = 30
|
22
22
|
|
23
23
|
# The patch version of prism that we are expecting to find in the serialized
|
24
24
|
# strings.
|
@@ -240,6 +240,7 @@ module Prism
|
|
240
240
|
:expression_not_writable_file,
|
241
241
|
:expression_not_writable_line,
|
242
242
|
:expression_not_writable_nil,
|
243
|
+
:expression_not_writable_numbered,
|
243
244
|
:expression_not_writable_self,
|
244
245
|
:expression_not_writable_true,
|
245
246
|
:float_parse,
|
@@ -279,6 +280,7 @@ module Prism
|
|
279
280
|
:invalid_number_underscore_inner,
|
280
281
|
:invalid_number_underscore_trailing,
|
281
282
|
:invalid_percent,
|
283
|
+
:invalid_percent_eof,
|
282
284
|
:invalid_printable_character,
|
283
285
|
:invalid_retry_after_else,
|
284
286
|
:invalid_retry_after_ensure,
|
@@ -310,9 +312,10 @@ module Prism
|
|
310
312
|
:no_local_variable,
|
311
313
|
:not_expression,
|
312
314
|
:number_literal_underscore,
|
315
|
+
:numbered_parameter_inner_block,
|
313
316
|
:numbered_parameter_it,
|
314
317
|
:numbered_parameter_ordinary,
|
315
|
-
:
|
318
|
+
:numbered_parameter_outer_block,
|
316
319
|
:operator_multi_assign,
|
317
320
|
:operator_write_arguments,
|
318
321
|
:operator_write_block,
|
@@ -329,8 +332,8 @@ module Prism
|
|
329
332
|
:parameter_splat_multi,
|
330
333
|
:parameter_star,
|
331
334
|
:parameter_unexpected_fwd,
|
332
|
-
:parameter_wild_loose_comma,
|
333
335
|
:parameter_unexpected_no_kw,
|
336
|
+
:parameter_wild_loose_comma,
|
334
337
|
:pattern_capture_duplicate,
|
335
338
|
:pattern_expression_after_bracket,
|
336
339
|
:pattern_expression_after_comma,
|
@@ -359,6 +362,7 @@ module Prism
|
|
359
362
|
:regexp_incompat_char_encoding,
|
360
363
|
:regexp_invalid_unicode_range,
|
361
364
|
:regexp_non_escaped_mbc,
|
365
|
+
:regexp_parse_error,
|
362
366
|
:regexp_term,
|
363
367
|
:regexp_unknown_options,
|
364
368
|
:regexp_utf8_char_non_utf8_regexp,
|
@@ -398,6 +402,7 @@ module Prism
|
|
398
402
|
:write_target_readonly,
|
399
403
|
:write_target_unexpected,
|
400
404
|
:xstring_term,
|
405
|
+
:ambiguous_binary_operator,
|
401
406
|
:ambiguous_first_argument_minus,
|
402
407
|
:ambiguous_first_argument_plus,
|
403
408
|
:ambiguous_prefix_ampersand,
|
@@ -891,192 +896,195 @@ module Prism
|
|
891
896
|
InterpolatedXStringNode.new(
|
892
897
|
source, load_location, Array.new(load_varuint) { load_node }, load_location, location)
|
893
898
|
when 88 then
|
894
|
-
|
899
|
+
ItLocalVariableReadNode.new(
|
895
900
|
source, location)
|
896
901
|
when 89 then
|
902
|
+
ItParametersNode.new(
|
903
|
+
source, location)
|
904
|
+
when 90 then
|
897
905
|
KeywordHashNode.new(
|
898
906
|
source, load_varuint, Array.new(load_varuint) { load_node }, location)
|
899
|
-
when
|
907
|
+
when 91 then
|
900
908
|
KeywordRestParameterNode.new(
|
901
909
|
source, load_varuint, load_optional_constant, load_optional_location, load_location, location)
|
902
|
-
when
|
910
|
+
when 92 then
|
903
911
|
LambdaNode.new(
|
904
912
|
source, Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
|
905
|
-
when
|
913
|
+
when 93 then
|
906
914
|
LocalVariableAndWriteNode.new(
|
907
915
|
source, load_location, load_location, load_node, load_required_constant, load_varuint, location)
|
908
|
-
when
|
916
|
+
when 94 then
|
909
917
|
LocalVariableOperatorWriteNode.new(
|
910
918
|
source, load_location, load_location, load_node, load_required_constant, load_required_constant, load_varuint, location)
|
911
|
-
when
|
919
|
+
when 95 then
|
912
920
|
LocalVariableOrWriteNode.new(
|
913
921
|
source, load_location, load_location, load_node, load_required_constant, load_varuint, location)
|
914
|
-
when
|
922
|
+
when 96 then
|
915
923
|
LocalVariableReadNode.new(
|
916
924
|
source, load_required_constant, load_varuint, location)
|
917
|
-
when
|
925
|
+
when 97 then
|
918
926
|
LocalVariableTargetNode.new(
|
919
927
|
source, load_required_constant, load_varuint, location)
|
920
|
-
when
|
928
|
+
when 98 then
|
921
929
|
LocalVariableWriteNode.new(
|
922
930
|
source, load_required_constant, load_varuint, load_location, load_node, load_location, location)
|
923
|
-
when
|
931
|
+
when 99 then
|
924
932
|
MatchLastLineNode.new(
|
925
933
|
source, load_varuint, load_location, load_location, load_location, load_string, location)
|
926
|
-
when
|
934
|
+
when 100 then
|
927
935
|
MatchPredicateNode.new(
|
928
936
|
source, load_node, load_node, load_location, location)
|
929
|
-
when
|
937
|
+
when 101 then
|
930
938
|
MatchRequiredNode.new(
|
931
939
|
source, load_node, load_node, load_location, location)
|
932
|
-
when
|
940
|
+
when 102 then
|
933
941
|
MatchWriteNode.new(
|
934
942
|
source, load_node, Array.new(load_varuint) { load_node }, location)
|
935
|
-
when
|
943
|
+
when 103 then
|
936
944
|
MissingNode.new(
|
937
945
|
source, location)
|
938
|
-
when
|
946
|
+
when 104 then
|
939
947
|
ModuleNode.new(
|
940
948
|
source, Array.new(load_varuint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
|
941
|
-
when
|
949
|
+
when 105 then
|
942
950
|
MultiTargetNode.new(
|
943
951
|
source, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, location)
|
944
|
-
when
|
952
|
+
when 106 then
|
945
953
|
MultiWriteNode.new(
|
946
954
|
source, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
|
947
|
-
when
|
955
|
+
when 107 then
|
948
956
|
NextNode.new(
|
949
957
|
source, load_optional_node, load_location, location)
|
950
|
-
when
|
958
|
+
when 108 then
|
951
959
|
NilNode.new(
|
952
960
|
source, location)
|
953
|
-
when
|
961
|
+
when 109 then
|
954
962
|
NoKeywordsParameterNode.new(
|
955
963
|
source, load_location, load_location, location)
|
956
|
-
when
|
964
|
+
when 110 then
|
957
965
|
NumberedParametersNode.new(
|
958
966
|
source, io.getbyte, location)
|
959
|
-
when
|
967
|
+
when 111 then
|
960
968
|
NumberedReferenceReadNode.new(
|
961
969
|
source, load_varuint, location)
|
962
|
-
when
|
970
|
+
when 112 then
|
963
971
|
OptionalKeywordParameterNode.new(
|
964
972
|
source, load_varuint, load_required_constant, load_location, load_node, location)
|
965
|
-
when
|
973
|
+
when 113 then
|
966
974
|
OptionalParameterNode.new(
|
967
975
|
source, load_varuint, load_required_constant, load_location, load_location, load_node, location)
|
968
|
-
when
|
976
|
+
when 114 then
|
969
977
|
OrNode.new(
|
970
978
|
source, load_node, load_node, load_location, location)
|
971
|
-
when
|
979
|
+
when 115 then
|
972
980
|
ParametersNode.new(
|
973
981
|
source, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, Array.new(load_varuint) { load_node }, Array.new(load_varuint) { load_node }, load_optional_node, load_optional_node, location)
|
974
|
-
when
|
982
|
+
when 116 then
|
975
983
|
ParenthesesNode.new(
|
976
984
|
source, load_optional_node, load_location, load_location, location)
|
977
|
-
when
|
985
|
+
when 117 then
|
978
986
|
PinnedExpressionNode.new(
|
979
987
|
source, load_node, load_location, load_location, load_location, location)
|
980
|
-
when
|
988
|
+
when 118 then
|
981
989
|
PinnedVariableNode.new(
|
982
990
|
source, load_node, load_location, location)
|
983
|
-
when
|
991
|
+
when 119 then
|
984
992
|
PostExecutionNode.new(
|
985
993
|
source, load_optional_node, load_location, load_location, load_location, location)
|
986
|
-
when
|
994
|
+
when 120 then
|
987
995
|
PreExecutionNode.new(
|
988
996
|
source, load_optional_node, load_location, load_location, load_location, location)
|
989
|
-
when
|
997
|
+
when 121 then
|
990
998
|
ProgramNode.new(
|
991
999
|
source, Array.new(load_varuint) { load_required_constant }, load_node, location)
|
992
|
-
when
|
1000
|
+
when 122 then
|
993
1001
|
RangeNode.new(
|
994
1002
|
source, load_varuint, load_optional_node, load_optional_node, load_location, location)
|
995
|
-
when 122 then
|
996
|
-
RationalNode.new(
|
997
|
-
source, load_node, location)
|
998
1003
|
when 123 then
|
1004
|
+
RationalNode.new(
|
1005
|
+
source, load_varuint, load_integer, load_integer, location)
|
1006
|
+
when 124 then
|
999
1007
|
RedoNode.new(
|
1000
1008
|
source, location)
|
1001
|
-
when
|
1009
|
+
when 125 then
|
1002
1010
|
RegularExpressionNode.new(
|
1003
1011
|
source, load_varuint, load_location, load_location, load_location, load_string, location)
|
1004
|
-
when
|
1012
|
+
when 126 then
|
1005
1013
|
RequiredKeywordParameterNode.new(
|
1006
1014
|
source, load_varuint, load_required_constant, load_location, location)
|
1007
|
-
when
|
1015
|
+
when 127 then
|
1008
1016
|
RequiredParameterNode.new(
|
1009
1017
|
source, load_varuint, load_required_constant, location)
|
1010
|
-
when
|
1018
|
+
when 128 then
|
1011
1019
|
RescueModifierNode.new(
|
1012
1020
|
source, load_node, load_location, load_node, location)
|
1013
|
-
when
|
1021
|
+
when 129 then
|
1014
1022
|
RescueNode.new(
|
1015
1023
|
source, load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
|
1016
|
-
when
|
1024
|
+
when 130 then
|
1017
1025
|
RestParameterNode.new(
|
1018
1026
|
source, load_varuint, load_optional_constant, load_optional_location, load_location, location)
|
1019
|
-
when
|
1027
|
+
when 131 then
|
1020
1028
|
RetryNode.new(
|
1021
1029
|
source, location)
|
1022
|
-
when
|
1030
|
+
when 132 then
|
1023
1031
|
ReturnNode.new(
|
1024
1032
|
source, load_varuint, load_location, load_optional_node, location)
|
1025
|
-
when
|
1033
|
+
when 133 then
|
1026
1034
|
SelfNode.new(
|
1027
1035
|
source, location)
|
1028
|
-
when
|
1036
|
+
when 134 then
|
1029
1037
|
ShareableConstantNode.new(
|
1030
1038
|
source, load_varuint, load_node, location)
|
1031
|
-
when
|
1039
|
+
when 135 then
|
1032
1040
|
SingletonClassNode.new(
|
1033
1041
|
source, Array.new(load_varuint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
|
1034
|
-
when
|
1042
|
+
when 136 then
|
1035
1043
|
SourceEncodingNode.new(
|
1036
1044
|
source, location)
|
1037
|
-
when
|
1045
|
+
when 137 then
|
1038
1046
|
SourceFileNode.new(
|
1039
1047
|
source, load_varuint, load_string, location)
|
1040
|
-
when
|
1048
|
+
when 138 then
|
1041
1049
|
SourceLineNode.new(
|
1042
1050
|
source, location)
|
1043
|
-
when
|
1051
|
+
when 139 then
|
1044
1052
|
SplatNode.new(
|
1045
1053
|
source, load_location, load_optional_node, location)
|
1046
|
-
when
|
1054
|
+
when 140 then
|
1047
1055
|
StatementsNode.new(
|
1048
1056
|
source, Array.new(load_varuint) { load_node }, location)
|
1049
|
-
when
|
1057
|
+
when 141 then
|
1050
1058
|
StringNode.new(
|
1051
1059
|
source, load_varuint, load_optional_location, load_location, load_optional_location, load_string, location)
|
1052
|
-
when
|
1060
|
+
when 142 then
|
1053
1061
|
SuperNode.new(
|
1054
1062
|
source, load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
|
1055
|
-
when
|
1063
|
+
when 143 then
|
1056
1064
|
SymbolNode.new(
|
1057
1065
|
source, load_varuint, load_optional_location, load_optional_location, load_optional_location, load_string, location)
|
1058
|
-
when
|
1066
|
+
when 144 then
|
1059
1067
|
TrueNode.new(
|
1060
1068
|
source, location)
|
1061
|
-
when
|
1069
|
+
when 145 then
|
1062
1070
|
UndefNode.new(
|
1063
1071
|
source, Array.new(load_varuint) { load_node }, load_location, location)
|
1064
|
-
when
|
1072
|
+
when 146 then
|
1065
1073
|
UnlessNode.new(
|
1066
1074
|
source, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_optional_location, location)
|
1067
|
-
when
|
1075
|
+
when 147 then
|
1068
1076
|
UntilNode.new(
|
1069
1077
|
source, load_varuint, load_location, load_optional_location, load_node, load_optional_node, location)
|
1070
|
-
when
|
1078
|
+
when 148 then
|
1071
1079
|
WhenNode.new(
|
1072
1080
|
source, load_location, Array.new(load_varuint) { load_node }, load_optional_location, load_optional_node, location)
|
1073
|
-
when
|
1081
|
+
when 149 then
|
1074
1082
|
WhileNode.new(
|
1075
1083
|
source, load_varuint, load_location, load_optional_location, load_node, load_optional_node, location)
|
1076
|
-
when
|
1084
|
+
when 150 then
|
1077
1085
|
XStringNode.new(
|
1078
1086
|
source, load_varuint, load_location, load_location, load_location, load_string, location)
|
1079
|
-
when
|
1087
|
+
when 151 then
|
1080
1088
|
YieldNode.new(
|
1081
1089
|
source, load_location, load_optional_location, load_optional_node, load_optional_location, location)
|
1082
1090
|
end
|
@@ -1526,6 +1534,11 @@ module Prism
|
|
1526
1534
|
InterpolatedXStringNode.new(
|
1527
1535
|
source, load_location, Array.new(load_varuint) { load_node }, load_location, location)
|
1528
1536
|
},
|
1537
|
+
-> {
|
1538
|
+
location = load_location
|
1539
|
+
ItLocalVariableReadNode.new(
|
1540
|
+
source, location)
|
1541
|
+
},
|
1529
1542
|
-> {
|
1530
1543
|
location = load_location
|
1531
1544
|
ItParametersNode.new(
|
@@ -1699,7 +1712,7 @@ module Prism
|
|
1699
1712
|
-> {
|
1700
1713
|
location = load_location
|
1701
1714
|
RationalNode.new(
|
1702
|
-
source,
|
1715
|
+
source, load_varuint, load_integer, load_integer, location)
|
1703
1716
|
},
|
1704
1717
|
-> {
|
1705
1718
|
location = load_location
|