prism 0.29.0 → 0.30.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
- 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
|