prism 2.0.0.rc1-x86_64-linux-gnu
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 +7 -0
- data/BSDmakefile +58 -0
- data/CHANGELOG.md +870 -0
- data/CODE_OF_CONDUCT.md +76 -0
- data/CONTRIBUTING.md +58 -0
- data/LICENSE.md +7 -0
- data/Makefile +145 -0
- data/README.md +81 -0
- data/config.yml +4752 -0
- data/docs/build_system.md +119 -0
- data/docs/configuration.md +69 -0
- data/docs/cruby_compilation.md +27 -0
- data/docs/design.md +53 -0
- data/docs/encoding.md +121 -0
- data/docs/fuzzing.md +81 -0
- data/docs/heredocs.md +36 -0
- data/docs/javascript.md +133 -0
- data/docs/local_variable_depth.md +229 -0
- data/docs/mapping.md +117 -0
- data/docs/parser_translation.md +24 -0
- data/docs/parsing_rules.md +22 -0
- data/docs/releasing.md +147 -0
- data/docs/relocation.md +32 -0
- data/docs/ripper_translation.md +63 -0
- data/docs/ruby_api.md +45 -0
- data/docs/ruby_parser_translation.md +19 -0
- data/docs/serialization.md +230 -0
- data/docs/testing.md +72 -0
- data/ext/prism/api_node.c +7005 -0
- data/ext/prism/extconf.rb +126 -0
- data/ext/prism/extension.c +1783 -0
- data/ext/prism/extension.h +19 -0
- data/include/prism/arena.h +37 -0
- data/include/prism/ast.h +10371 -0
- data/include/prism/buffer.h +52 -0
- data/include/prism/comments.h +55 -0
- data/include/prism/compiler/accel.h +24 -0
- data/include/prism/compiler/align.h +36 -0
- data/include/prism/compiler/assume.h +25 -0
- data/include/prism/compiler/exported.h +24 -0
- data/include/prism/compiler/fallthrough.h +22 -0
- data/include/prism/compiler/filesystem.h +32 -0
- data/include/prism/compiler/flex_array.h +19 -0
- data/include/prism/compiler/force_inline.h +21 -0
- data/include/prism/compiler/format.h +25 -0
- data/include/prism/compiler/inline.h +17 -0
- data/include/prism/compiler/nodiscard.h +22 -0
- data/include/prism/compiler/nonnull.h +18 -0
- data/include/prism/compiler/unused.h +18 -0
- data/include/prism/constant_pool.h +81 -0
- data/include/prism/diagnostic.h +93 -0
- data/include/prism/errors_format.h +53 -0
- data/include/prism/excludes.h +29 -0
- data/include/prism/integer.h +41 -0
- data/include/prism/internal/allocator.h +68 -0
- data/include/prism/internal/allocator_debug.h +88 -0
- data/include/prism/internal/arena.h +108 -0
- data/include/prism/internal/bit.h +42 -0
- data/include/prism/internal/buffer.h +91 -0
- data/include/prism/internal/char.h +145 -0
- data/include/prism/internal/comments.h +53 -0
- data/include/prism/internal/constant_pool.h +152 -0
- data/include/prism/internal/diagnostic.h +389 -0
- data/include/prism/internal/encoding.h +242 -0
- data/include/prism/internal/integer.h +68 -0
- data/include/prism/internal/isinf.h +16 -0
- data/include/prism/internal/line_offset_list.h +34 -0
- data/include/prism/internal/list.h +62 -0
- data/include/prism/internal/magic_comments.h +23 -0
- data/include/prism/internal/memchr.h +15 -0
- data/include/prism/internal/node.h +38 -0
- data/include/prism/internal/options.h +232 -0
- data/include/prism/internal/parser.h +984 -0
- data/include/prism/internal/regexp.h +26 -0
- data/include/prism/internal/serialize.h +39 -0
- data/include/prism/internal/source.h +72 -0
- data/include/prism/internal/static_literals.h +100 -0
- data/include/prism/internal/stringy.h +35 -0
- data/include/prism/internal/strncasecmp.h +18 -0
- data/include/prism/internal/strpbrk.h +33 -0
- data/include/prism/internal/tokens.h +11 -0
- data/include/prism/json.h +32 -0
- data/include/prism/line_offset_list.h +61 -0
- data/include/prism/magic_comments.h +35 -0
- data/include/prism/node.h +94 -0
- data/include/prism/options.h +354 -0
- data/include/prism/parser.h +404 -0
- data/include/prism/prettyprint.h +31 -0
- data/include/prism/serialize.h +115 -0
- data/include/prism/source.h +155 -0
- data/include/prism/stream.h +28 -0
- data/include/prism/string_query.h +63 -0
- data/include/prism/stringy.h +72 -0
- data/include/prism/version.h +38 -0
- data/include/prism.h +131 -0
- data/lib/prism/3.3/prism.so +0 -0
- data/lib/prism/3.4/prism.so +0 -0
- data/lib/prism/4.0/prism.so +0 -0
- data/lib/prism/compiler.rb +815 -0
- data/lib/prism/desugar_compiler.rb +463 -0
- data/lib/prism/dispatcher.rb +2383 -0
- data/lib/prism/dot_visitor.rb +4848 -0
- data/lib/prism/dsl.rb +1369 -0
- data/lib/prism/ffi.rb +740 -0
- data/lib/prism/inspect_visitor.rb +2425 -0
- data/lib/prism/lex_compat.rb +953 -0
- data/lib/prism/mutation_compiler.rb +780 -0
- data/lib/prism/node.rb +33204 -0
- data/lib/prism/node_ext.rb +504 -0
- data/lib/prism/node_find.rb +215 -0
- data/lib/prism/parse_result/errors.rb +72 -0
- data/lib/prism/parse_result/newlines.rb +423 -0
- data/lib/prism/parse_result.rb +1221 -0
- data/lib/prism/pattern.rb +314 -0
- data/lib/prism/polyfill/append_as_bytes.rb +15 -0
- data/lib/prism/polyfill/byteindex.rb +13 -0
- data/lib/prism/polyfill/scan_byte.rb +14 -0
- data/lib/prism/polyfill/unpack1.rb +14 -0
- data/lib/prism/polyfill/warn.rb +36 -0
- data/lib/prism/reflection.rb +427 -0
- data/lib/prism/relocation.rb +567 -0
- data/lib/prism/serialize.rb +5308 -0
- data/lib/prism/string_query.rb +46 -0
- data/lib/prism/translation/parser/builder.rb +70 -0
- data/lib/prism/translation/parser/compiler.rb +2226 -0
- data/lib/prism/translation/parser/lexer.rb +769 -0
- data/lib/prism/translation/parser.rb +376 -0
- data/lib/prism/translation/parser_current.rb +26 -0
- data/lib/prism/translation/parser_versions.rb +36 -0
- data/lib/prism/translation/ripper/filter.rb +53 -0
- data/lib/prism/translation/ripper/lexer.rb +133 -0
- data/lib/prism/translation/ripper/sexp.rb +118 -0
- data/lib/prism/translation/ripper/shim.rb +7 -0
- data/lib/prism/translation/ripper.rb +4278 -0
- data/lib/prism/translation/ruby_parser.rb +1721 -0
- data/lib/prism/translation.rb +20 -0
- data/lib/prism/visitor.rb +1440 -0
- data/lib/prism.rb +168 -0
- data/prism.gemspec +234 -0
- data/rbi/generated/prism/compiler.rbi +489 -0
- data/rbi/generated/prism/desugar_compiler.rbi +306 -0
- data/rbi/generated/prism/dispatcher.rbi +1138 -0
- data/rbi/generated/prism/dot_visitor.rbi +618 -0
- data/rbi/generated/prism/dsl.rbi +751 -0
- data/rbi/generated/prism/inspect_visitor.rbi +503 -0
- data/rbi/generated/prism/lex_compat.rbi +162 -0
- data/rbi/generated/prism/mutation_compiler.rbi +464 -0
- data/rbi/generated/prism/node.rbi +13681 -0
- data/rbi/generated/prism/node_ext.rbi +259 -0
- data/rbi/generated/prism/node_find.rbi +79 -0
- data/rbi/generated/prism/parse_result/errors.rbi +21 -0
- data/rbi/generated/prism/parse_result/newlines.rbi +208 -0
- data/rbi/generated/prism/parse_result.rbi +764 -0
- data/rbi/generated/prism/pattern.rbi +134 -0
- data/rbi/generated/prism/reflection.rbi +89 -0
- data/rbi/generated/prism/relocation.rbi +329 -0
- data/rbi/generated/prism/serialize.rbi +181 -0
- data/rbi/generated/prism/string_query.rbi +36 -0
- data/rbi/generated/prism/translation.rbi +7 -0
- data/rbi/generated/prism/visitor.rbi +650 -0
- data/rbi/generated/prism.rbi +86 -0
- data/rbi/prism/translation/parser.rbi +11 -0
- data/rbi/prism/translation/parser_versions.rbi +28 -0
- data/rbi/prism/translation/ripper.rbi +15 -0
- data/rbi/rubyvm/node_find.rbi +14 -0
- data/sig/generated/prism/compiler.rbs +492 -0
- data/sig/generated/prism/desugar_compiler.rbs +305 -0
- data/sig/generated/prism/dispatcher.rbs +1292 -0
- data/sig/generated/prism/dot_visitor.rbs +635 -0
- data/sig/generated/prism/dsl.rbs +928 -0
- data/sig/generated/prism/inspect_visitor.rbs +509 -0
- data/sig/generated/prism/lex_compat.rbs +166 -0
- data/sig/generated/prism/mutation_compiler.rbs +464 -0
- data/sig/generated/prism/node.rbs +20160 -0
- data/sig/generated/prism/node_ext.rbs +290 -0
- data/sig/generated/prism/node_find.rbs +90 -0
- data/sig/generated/prism/parse_result/errors.rbs +22 -0
- data/sig/generated/prism/parse_result/newlines.rbs +223 -0
- data/sig/generated/prism/parse_result.rbs +859 -0
- data/sig/generated/prism/pattern.rbs +156 -0
- data/sig/generated/prism/reflection.rbs +101 -0
- data/sig/generated/prism/relocation.rbs +428 -0
- data/sig/generated/prism/serialize.rbs +195 -0
- data/sig/generated/prism/string_query.rbs +36 -0
- data/sig/generated/prism/translation.rbs +8 -0
- data/sig/generated/prism/visitor.rbs +1111 -0
- data/sig/generated/prism.rbs +84 -0
- data/sig/manifest.yaml +2 -0
- data/src/arena.c +117 -0
- data/src/buffer.c +380 -0
- data/src/char.c +289 -0
- data/src/comments.c +454 -0
- data/src/constant_pool.c +406 -0
- data/src/diagnostic.c +886 -0
- data/src/encoding.c +5345 -0
- data/src/errors_format.c +519 -0
- data/src/integer.c +681 -0
- data/src/json.c +5733 -0
- data/src/line_offset_list.c +100 -0
- data/src/list.c +24 -0
- data/src/memchr.c +37 -0
- data/src/node.c +4515 -0
- data/src/options.c +451 -0
- data/src/parser.c +349 -0
- data/src/prettyprint.c +9024 -0
- data/src/prism.c +23739 -0
- data/src/regexp.c +1706 -0
- data/src/serialize.c +2309 -0
- data/src/source.c +518 -0
- data/src/static_literals.c +685 -0
- data/src/string_query.c +166 -0
- data/src/stringy.c +91 -0
- data/src/strncasecmp.c +37 -0
- data/src/strpbrk.c +447 -0
- data/src/tokens.c +724 -0
- metadata +259 -0
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
# Generated from lib/prism/inspect_visitor.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Prism
|
|
4
|
+
# This visitor is responsible for composing the strings that get returned by
|
|
5
|
+
# the various #inspect methods defined on each of the nodes.
|
|
6
|
+
class InspectVisitor < Visitor
|
|
7
|
+
# Most of the time, we can simply pass down the indent to the next node.
|
|
8
|
+
# However, when we are inside a list we want some extra special formatting
|
|
9
|
+
# when we hit an element in that list. In this case, we have a special
|
|
10
|
+
# command that replaces the subsequent indent with the given value.
|
|
11
|
+
class Replace
|
|
12
|
+
# :nodoc:
|
|
13
|
+
attr_reader value: String
|
|
14
|
+
|
|
15
|
+
# : (String value) -> void
|
|
16
|
+
def initialize: (String value) -> void
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# The current prefix string.
|
|
20
|
+
# :stopdoc:
|
|
21
|
+
attr_reader indent: String
|
|
22
|
+
|
|
23
|
+
# The list of commands that we need to execute in order to compose the
|
|
24
|
+
# final string.
|
|
25
|
+
# : stopdoc:
|
|
26
|
+
attr_reader commands: Array[[ String | node | Replace, String ]]
|
|
27
|
+
|
|
28
|
+
# : (?String indent) -> void
|
|
29
|
+
def initialize: (?String indent) -> void
|
|
30
|
+
|
|
31
|
+
# Compose an inspect string for the given node.
|
|
32
|
+
#
|
|
33
|
+
# : (node node) -> String
|
|
34
|
+
def self.compose: (node node) -> String
|
|
35
|
+
|
|
36
|
+
# Compose the final string.
|
|
37
|
+
#
|
|
38
|
+
# : () -> String
|
|
39
|
+
def compose: () -> String
|
|
40
|
+
|
|
41
|
+
# : (AliasGlobalVariableNode node) -> void
|
|
42
|
+
def visit_alias_global_variable_node: (AliasGlobalVariableNode node) -> void
|
|
43
|
+
|
|
44
|
+
# : (AliasMethodNode node) -> void
|
|
45
|
+
def visit_alias_method_node: (AliasMethodNode node) -> void
|
|
46
|
+
|
|
47
|
+
# : (AlternationPatternNode node) -> void
|
|
48
|
+
def visit_alternation_pattern_node: (AlternationPatternNode node) -> void
|
|
49
|
+
|
|
50
|
+
# : (AndNode node) -> void
|
|
51
|
+
def visit_and_node: (AndNode node) -> void
|
|
52
|
+
|
|
53
|
+
# : (ArgumentsNode node) -> void
|
|
54
|
+
def visit_arguments_node: (ArgumentsNode node) -> void
|
|
55
|
+
|
|
56
|
+
# : (ArrayNode node) -> void
|
|
57
|
+
def visit_array_node: (ArrayNode node) -> void
|
|
58
|
+
|
|
59
|
+
# : (ArrayPatternNode node) -> void
|
|
60
|
+
def visit_array_pattern_node: (ArrayPatternNode node) -> void
|
|
61
|
+
|
|
62
|
+
# : (AssocNode node) -> void
|
|
63
|
+
def visit_assoc_node: (AssocNode node) -> void
|
|
64
|
+
|
|
65
|
+
# : (AssocSplatNode node) -> void
|
|
66
|
+
def visit_assoc_splat_node: (AssocSplatNode node) -> void
|
|
67
|
+
|
|
68
|
+
# : (BackReferenceReadNode node) -> void
|
|
69
|
+
def visit_back_reference_read_node: (BackReferenceReadNode node) -> void
|
|
70
|
+
|
|
71
|
+
# : (BeginNode node) -> void
|
|
72
|
+
def visit_begin_node: (BeginNode node) -> void
|
|
73
|
+
|
|
74
|
+
# : (BlockArgumentNode node) -> void
|
|
75
|
+
def visit_block_argument_node: (BlockArgumentNode node) -> void
|
|
76
|
+
|
|
77
|
+
# : (BlockLocalVariableNode node) -> void
|
|
78
|
+
def visit_block_local_variable_node: (BlockLocalVariableNode node) -> void
|
|
79
|
+
|
|
80
|
+
# : (BlockNode node) -> void
|
|
81
|
+
def visit_block_node: (BlockNode node) -> void
|
|
82
|
+
|
|
83
|
+
# : (BlockParameterNode node) -> void
|
|
84
|
+
def visit_block_parameter_node: (BlockParameterNode node) -> void
|
|
85
|
+
|
|
86
|
+
# : (BlockParametersNode node) -> void
|
|
87
|
+
def visit_block_parameters_node: (BlockParametersNode node) -> void
|
|
88
|
+
|
|
89
|
+
# : (BreakNode node) -> void
|
|
90
|
+
def visit_break_node: (BreakNode node) -> void
|
|
91
|
+
|
|
92
|
+
# : (CallAndWriteNode node) -> void
|
|
93
|
+
def visit_call_and_write_node: (CallAndWriteNode node) -> void
|
|
94
|
+
|
|
95
|
+
# : (CallNode node) -> void
|
|
96
|
+
def visit_call_node: (CallNode node) -> void
|
|
97
|
+
|
|
98
|
+
# : (CallOperatorWriteNode node) -> void
|
|
99
|
+
def visit_call_operator_write_node: (CallOperatorWriteNode node) -> void
|
|
100
|
+
|
|
101
|
+
# : (CallOrWriteNode node) -> void
|
|
102
|
+
def visit_call_or_write_node: (CallOrWriteNode node) -> void
|
|
103
|
+
|
|
104
|
+
# : (CallTargetNode node) -> void
|
|
105
|
+
def visit_call_target_node: (CallTargetNode node) -> void
|
|
106
|
+
|
|
107
|
+
# : (CapturePatternNode node) -> void
|
|
108
|
+
def visit_capture_pattern_node: (CapturePatternNode node) -> void
|
|
109
|
+
|
|
110
|
+
# : (CaseMatchNode node) -> void
|
|
111
|
+
def visit_case_match_node: (CaseMatchNode node) -> void
|
|
112
|
+
|
|
113
|
+
# : (CaseNode node) -> void
|
|
114
|
+
def visit_case_node: (CaseNode node) -> void
|
|
115
|
+
|
|
116
|
+
# : (ClassNode node) -> void
|
|
117
|
+
def visit_class_node: (ClassNode node) -> void
|
|
118
|
+
|
|
119
|
+
# : (ClassVariableAndWriteNode node) -> void
|
|
120
|
+
def visit_class_variable_and_write_node: (ClassVariableAndWriteNode node) -> void
|
|
121
|
+
|
|
122
|
+
# : (ClassVariableOperatorWriteNode node) -> void
|
|
123
|
+
def visit_class_variable_operator_write_node: (ClassVariableOperatorWriteNode node) -> void
|
|
124
|
+
|
|
125
|
+
# : (ClassVariableOrWriteNode node) -> void
|
|
126
|
+
def visit_class_variable_or_write_node: (ClassVariableOrWriteNode node) -> void
|
|
127
|
+
|
|
128
|
+
# : (ClassVariableReadNode node) -> void
|
|
129
|
+
def visit_class_variable_read_node: (ClassVariableReadNode node) -> void
|
|
130
|
+
|
|
131
|
+
# : (ClassVariableTargetNode node) -> void
|
|
132
|
+
def visit_class_variable_target_node: (ClassVariableTargetNode node) -> void
|
|
133
|
+
|
|
134
|
+
# : (ClassVariableWriteNode node) -> void
|
|
135
|
+
def visit_class_variable_write_node: (ClassVariableWriteNode node) -> void
|
|
136
|
+
|
|
137
|
+
# : (ConstantAndWriteNode node) -> void
|
|
138
|
+
def visit_constant_and_write_node: (ConstantAndWriteNode node) -> void
|
|
139
|
+
|
|
140
|
+
# : (ConstantOperatorWriteNode node) -> void
|
|
141
|
+
def visit_constant_operator_write_node: (ConstantOperatorWriteNode node) -> void
|
|
142
|
+
|
|
143
|
+
# : (ConstantOrWriteNode node) -> void
|
|
144
|
+
def visit_constant_or_write_node: (ConstantOrWriteNode node) -> void
|
|
145
|
+
|
|
146
|
+
# : (ConstantPathAndWriteNode node) -> void
|
|
147
|
+
def visit_constant_path_and_write_node: (ConstantPathAndWriteNode node) -> void
|
|
148
|
+
|
|
149
|
+
# : (ConstantPathNode node) -> void
|
|
150
|
+
def visit_constant_path_node: (ConstantPathNode node) -> void
|
|
151
|
+
|
|
152
|
+
# : (ConstantPathOperatorWriteNode node) -> void
|
|
153
|
+
def visit_constant_path_operator_write_node: (ConstantPathOperatorWriteNode node) -> void
|
|
154
|
+
|
|
155
|
+
# : (ConstantPathOrWriteNode node) -> void
|
|
156
|
+
def visit_constant_path_or_write_node: (ConstantPathOrWriteNode node) -> void
|
|
157
|
+
|
|
158
|
+
# : (ConstantPathTargetNode node) -> void
|
|
159
|
+
def visit_constant_path_target_node: (ConstantPathTargetNode node) -> void
|
|
160
|
+
|
|
161
|
+
# : (ConstantPathWriteNode node) -> void
|
|
162
|
+
def visit_constant_path_write_node: (ConstantPathWriteNode node) -> void
|
|
163
|
+
|
|
164
|
+
# : (ConstantReadNode node) -> void
|
|
165
|
+
def visit_constant_read_node: (ConstantReadNode node) -> void
|
|
166
|
+
|
|
167
|
+
# : (ConstantTargetNode node) -> void
|
|
168
|
+
def visit_constant_target_node: (ConstantTargetNode node) -> void
|
|
169
|
+
|
|
170
|
+
# : (ConstantWriteNode node) -> void
|
|
171
|
+
def visit_constant_write_node: (ConstantWriteNode node) -> void
|
|
172
|
+
|
|
173
|
+
# : (DefNode node) -> void
|
|
174
|
+
def visit_def_node: (DefNode node) -> void
|
|
175
|
+
|
|
176
|
+
# : (DefinedNode node) -> void
|
|
177
|
+
def visit_defined_node: (DefinedNode node) -> void
|
|
178
|
+
|
|
179
|
+
# : (ElseNode node) -> void
|
|
180
|
+
def visit_else_node: (ElseNode node) -> void
|
|
181
|
+
|
|
182
|
+
# : (EmbeddedStatementsNode node) -> void
|
|
183
|
+
def visit_embedded_statements_node: (EmbeddedStatementsNode node) -> void
|
|
184
|
+
|
|
185
|
+
# : (EmbeddedVariableNode node) -> void
|
|
186
|
+
def visit_embedded_variable_node: (EmbeddedVariableNode node) -> void
|
|
187
|
+
|
|
188
|
+
# : (EnsureNode node) -> void
|
|
189
|
+
def visit_ensure_node: (EnsureNode node) -> void
|
|
190
|
+
|
|
191
|
+
# : (ErrorRecoveryNode node) -> void
|
|
192
|
+
def visit_error_recovery_node: (ErrorRecoveryNode node) -> void
|
|
193
|
+
|
|
194
|
+
# : (FalseNode node) -> void
|
|
195
|
+
def visit_false_node: (FalseNode node) -> void
|
|
196
|
+
|
|
197
|
+
# : (FindPatternNode node) -> void
|
|
198
|
+
def visit_find_pattern_node: (FindPatternNode node) -> void
|
|
199
|
+
|
|
200
|
+
# : (FlipFlopNode node) -> void
|
|
201
|
+
def visit_flip_flop_node: (FlipFlopNode node) -> void
|
|
202
|
+
|
|
203
|
+
# : (FloatNode node) -> void
|
|
204
|
+
def visit_float_node: (FloatNode node) -> void
|
|
205
|
+
|
|
206
|
+
# : (ForNode node) -> void
|
|
207
|
+
def visit_for_node: (ForNode node) -> void
|
|
208
|
+
|
|
209
|
+
# : (ForwardingArgumentsNode node) -> void
|
|
210
|
+
def visit_forwarding_arguments_node: (ForwardingArgumentsNode node) -> void
|
|
211
|
+
|
|
212
|
+
# : (ForwardingParameterNode node) -> void
|
|
213
|
+
def visit_forwarding_parameter_node: (ForwardingParameterNode node) -> void
|
|
214
|
+
|
|
215
|
+
# : (ForwardingSuperNode node) -> void
|
|
216
|
+
def visit_forwarding_super_node: (ForwardingSuperNode node) -> void
|
|
217
|
+
|
|
218
|
+
# : (GlobalVariableAndWriteNode node) -> void
|
|
219
|
+
def visit_global_variable_and_write_node: (GlobalVariableAndWriteNode node) -> void
|
|
220
|
+
|
|
221
|
+
# : (GlobalVariableOperatorWriteNode node) -> void
|
|
222
|
+
def visit_global_variable_operator_write_node: (GlobalVariableOperatorWriteNode node) -> void
|
|
223
|
+
|
|
224
|
+
# : (GlobalVariableOrWriteNode node) -> void
|
|
225
|
+
def visit_global_variable_or_write_node: (GlobalVariableOrWriteNode node) -> void
|
|
226
|
+
|
|
227
|
+
# : (GlobalVariableReadNode node) -> void
|
|
228
|
+
def visit_global_variable_read_node: (GlobalVariableReadNode node) -> void
|
|
229
|
+
|
|
230
|
+
# : (GlobalVariableTargetNode node) -> void
|
|
231
|
+
def visit_global_variable_target_node: (GlobalVariableTargetNode node) -> void
|
|
232
|
+
|
|
233
|
+
# : (GlobalVariableWriteNode node) -> void
|
|
234
|
+
def visit_global_variable_write_node: (GlobalVariableWriteNode node) -> void
|
|
235
|
+
|
|
236
|
+
# : (HashNode node) -> void
|
|
237
|
+
def visit_hash_node: (HashNode node) -> void
|
|
238
|
+
|
|
239
|
+
# : (HashPatternNode node) -> void
|
|
240
|
+
def visit_hash_pattern_node: (HashPatternNode node) -> void
|
|
241
|
+
|
|
242
|
+
# : (IfNode node) -> void
|
|
243
|
+
def visit_if_node: (IfNode node) -> void
|
|
244
|
+
|
|
245
|
+
# : (ImaginaryNode node) -> void
|
|
246
|
+
def visit_imaginary_node: (ImaginaryNode node) -> void
|
|
247
|
+
|
|
248
|
+
# : (ImplicitNode node) -> void
|
|
249
|
+
def visit_implicit_node: (ImplicitNode node) -> void
|
|
250
|
+
|
|
251
|
+
# : (ImplicitRestNode node) -> void
|
|
252
|
+
def visit_implicit_rest_node: (ImplicitRestNode node) -> void
|
|
253
|
+
|
|
254
|
+
# : (InNode node) -> void
|
|
255
|
+
def visit_in_node: (InNode node) -> void
|
|
256
|
+
|
|
257
|
+
# : (IndexAndWriteNode node) -> void
|
|
258
|
+
def visit_index_and_write_node: (IndexAndWriteNode node) -> void
|
|
259
|
+
|
|
260
|
+
# : (IndexOperatorWriteNode node) -> void
|
|
261
|
+
def visit_index_operator_write_node: (IndexOperatorWriteNode node) -> void
|
|
262
|
+
|
|
263
|
+
# : (IndexOrWriteNode node) -> void
|
|
264
|
+
def visit_index_or_write_node: (IndexOrWriteNode node) -> void
|
|
265
|
+
|
|
266
|
+
# : (IndexTargetNode node) -> void
|
|
267
|
+
def visit_index_target_node: (IndexTargetNode node) -> void
|
|
268
|
+
|
|
269
|
+
# : (InstanceVariableAndWriteNode node) -> void
|
|
270
|
+
def visit_instance_variable_and_write_node: (InstanceVariableAndWriteNode node) -> void
|
|
271
|
+
|
|
272
|
+
# : (InstanceVariableOperatorWriteNode node) -> void
|
|
273
|
+
def visit_instance_variable_operator_write_node: (InstanceVariableOperatorWriteNode node) -> void
|
|
274
|
+
|
|
275
|
+
# : (InstanceVariableOrWriteNode node) -> void
|
|
276
|
+
def visit_instance_variable_or_write_node: (InstanceVariableOrWriteNode node) -> void
|
|
277
|
+
|
|
278
|
+
# : (InstanceVariableReadNode node) -> void
|
|
279
|
+
def visit_instance_variable_read_node: (InstanceVariableReadNode node) -> void
|
|
280
|
+
|
|
281
|
+
# : (InstanceVariableTargetNode node) -> void
|
|
282
|
+
def visit_instance_variable_target_node: (InstanceVariableTargetNode node) -> void
|
|
283
|
+
|
|
284
|
+
# : (InstanceVariableWriteNode node) -> void
|
|
285
|
+
def visit_instance_variable_write_node: (InstanceVariableWriteNode node) -> void
|
|
286
|
+
|
|
287
|
+
# : (IntegerNode node) -> void
|
|
288
|
+
def visit_integer_node: (IntegerNode node) -> void
|
|
289
|
+
|
|
290
|
+
# : (InterpolatedMatchLastLineNode node) -> void
|
|
291
|
+
def visit_interpolated_match_last_line_node: (InterpolatedMatchLastLineNode node) -> void
|
|
292
|
+
|
|
293
|
+
# : (InterpolatedRegularExpressionNode node) -> void
|
|
294
|
+
def visit_interpolated_regular_expression_node: (InterpolatedRegularExpressionNode node) -> void
|
|
295
|
+
|
|
296
|
+
# : (InterpolatedStringNode node) -> void
|
|
297
|
+
def visit_interpolated_string_node: (InterpolatedStringNode node) -> void
|
|
298
|
+
|
|
299
|
+
# : (InterpolatedSymbolNode node) -> void
|
|
300
|
+
def visit_interpolated_symbol_node: (InterpolatedSymbolNode node) -> void
|
|
301
|
+
|
|
302
|
+
# : (InterpolatedXStringNode node) -> void
|
|
303
|
+
def visit_interpolated_x_string_node: (InterpolatedXStringNode node) -> void
|
|
304
|
+
|
|
305
|
+
# : (ItLocalVariableReadNode node) -> void
|
|
306
|
+
def visit_it_local_variable_read_node: (ItLocalVariableReadNode node) -> void
|
|
307
|
+
|
|
308
|
+
# : (ItParametersNode node) -> void
|
|
309
|
+
def visit_it_parameters_node: (ItParametersNode node) -> void
|
|
310
|
+
|
|
311
|
+
# : (KeywordHashNode node) -> void
|
|
312
|
+
def visit_keyword_hash_node: (KeywordHashNode node) -> void
|
|
313
|
+
|
|
314
|
+
# : (KeywordRestParameterNode node) -> void
|
|
315
|
+
def visit_keyword_rest_parameter_node: (KeywordRestParameterNode node) -> void
|
|
316
|
+
|
|
317
|
+
# : (LambdaNode node) -> void
|
|
318
|
+
def visit_lambda_node: (LambdaNode node) -> void
|
|
319
|
+
|
|
320
|
+
# : (LocalVariableAndWriteNode node) -> void
|
|
321
|
+
def visit_local_variable_and_write_node: (LocalVariableAndWriteNode node) -> void
|
|
322
|
+
|
|
323
|
+
# : (LocalVariableOperatorWriteNode node) -> void
|
|
324
|
+
def visit_local_variable_operator_write_node: (LocalVariableOperatorWriteNode node) -> void
|
|
325
|
+
|
|
326
|
+
# : (LocalVariableOrWriteNode node) -> void
|
|
327
|
+
def visit_local_variable_or_write_node: (LocalVariableOrWriteNode node) -> void
|
|
328
|
+
|
|
329
|
+
# : (LocalVariableReadNode node) -> void
|
|
330
|
+
def visit_local_variable_read_node: (LocalVariableReadNode node) -> void
|
|
331
|
+
|
|
332
|
+
# : (LocalVariableTargetNode node) -> void
|
|
333
|
+
def visit_local_variable_target_node: (LocalVariableTargetNode node) -> void
|
|
334
|
+
|
|
335
|
+
# : (LocalVariableWriteNode node) -> void
|
|
336
|
+
def visit_local_variable_write_node: (LocalVariableWriteNode node) -> void
|
|
337
|
+
|
|
338
|
+
# : (MatchLastLineNode node) -> void
|
|
339
|
+
def visit_match_last_line_node: (MatchLastLineNode node) -> void
|
|
340
|
+
|
|
341
|
+
# : (MatchPredicateNode node) -> void
|
|
342
|
+
def visit_match_predicate_node: (MatchPredicateNode node) -> void
|
|
343
|
+
|
|
344
|
+
# : (MatchRequiredNode node) -> void
|
|
345
|
+
def visit_match_required_node: (MatchRequiredNode node) -> void
|
|
346
|
+
|
|
347
|
+
# : (MatchWriteNode node) -> void
|
|
348
|
+
def visit_match_write_node: (MatchWriteNode node) -> void
|
|
349
|
+
|
|
350
|
+
# : (ModuleNode node) -> void
|
|
351
|
+
def visit_module_node: (ModuleNode node) -> void
|
|
352
|
+
|
|
353
|
+
# : (MultiTargetNode node) -> void
|
|
354
|
+
def visit_multi_target_node: (MultiTargetNode node) -> void
|
|
355
|
+
|
|
356
|
+
# : (MultiWriteNode node) -> void
|
|
357
|
+
def visit_multi_write_node: (MultiWriteNode node) -> void
|
|
358
|
+
|
|
359
|
+
# : (NextNode node) -> void
|
|
360
|
+
def visit_next_node: (NextNode node) -> void
|
|
361
|
+
|
|
362
|
+
# : (NilNode node) -> void
|
|
363
|
+
def visit_nil_node: (NilNode node) -> void
|
|
364
|
+
|
|
365
|
+
# : (NoBlockParameterNode node) -> void
|
|
366
|
+
def visit_no_block_parameter_node: (NoBlockParameterNode node) -> void
|
|
367
|
+
|
|
368
|
+
# : (NoKeywordsParameterNode node) -> void
|
|
369
|
+
def visit_no_keywords_parameter_node: (NoKeywordsParameterNode node) -> void
|
|
370
|
+
|
|
371
|
+
# : (NumberedParametersNode node) -> void
|
|
372
|
+
def visit_numbered_parameters_node: (NumberedParametersNode node) -> void
|
|
373
|
+
|
|
374
|
+
# : (NumberedReferenceReadNode node) -> void
|
|
375
|
+
def visit_numbered_reference_read_node: (NumberedReferenceReadNode node) -> void
|
|
376
|
+
|
|
377
|
+
# : (OptionalKeywordParameterNode node) -> void
|
|
378
|
+
def visit_optional_keyword_parameter_node: (OptionalKeywordParameterNode node) -> void
|
|
379
|
+
|
|
380
|
+
# : (OptionalParameterNode node) -> void
|
|
381
|
+
def visit_optional_parameter_node: (OptionalParameterNode node) -> void
|
|
382
|
+
|
|
383
|
+
# : (OrNode node) -> void
|
|
384
|
+
def visit_or_node: (OrNode node) -> void
|
|
385
|
+
|
|
386
|
+
# : (ParametersNode node) -> void
|
|
387
|
+
def visit_parameters_node: (ParametersNode node) -> void
|
|
388
|
+
|
|
389
|
+
# : (ParenthesesNode node) -> void
|
|
390
|
+
def visit_parentheses_node: (ParenthesesNode node) -> void
|
|
391
|
+
|
|
392
|
+
# : (PinnedExpressionNode node) -> void
|
|
393
|
+
def visit_pinned_expression_node: (PinnedExpressionNode node) -> void
|
|
394
|
+
|
|
395
|
+
# : (PinnedVariableNode node) -> void
|
|
396
|
+
def visit_pinned_variable_node: (PinnedVariableNode node) -> void
|
|
397
|
+
|
|
398
|
+
# : (PostExecutionNode node) -> void
|
|
399
|
+
def visit_post_execution_node: (PostExecutionNode node) -> void
|
|
400
|
+
|
|
401
|
+
# : (PreExecutionNode node) -> void
|
|
402
|
+
def visit_pre_execution_node: (PreExecutionNode node) -> void
|
|
403
|
+
|
|
404
|
+
# : (ProgramNode node) -> void
|
|
405
|
+
def visit_program_node: (ProgramNode node) -> void
|
|
406
|
+
|
|
407
|
+
# : (RangeNode node) -> void
|
|
408
|
+
def visit_range_node: (RangeNode node) -> void
|
|
409
|
+
|
|
410
|
+
# : (RationalNode node) -> void
|
|
411
|
+
def visit_rational_node: (RationalNode node) -> void
|
|
412
|
+
|
|
413
|
+
# : (RedoNode node) -> void
|
|
414
|
+
def visit_redo_node: (RedoNode node) -> void
|
|
415
|
+
|
|
416
|
+
# : (RegularExpressionNode node) -> void
|
|
417
|
+
def visit_regular_expression_node: (RegularExpressionNode node) -> void
|
|
418
|
+
|
|
419
|
+
# : (RequiredKeywordParameterNode node) -> void
|
|
420
|
+
def visit_required_keyword_parameter_node: (RequiredKeywordParameterNode node) -> void
|
|
421
|
+
|
|
422
|
+
# : (RequiredParameterNode node) -> void
|
|
423
|
+
def visit_required_parameter_node: (RequiredParameterNode node) -> void
|
|
424
|
+
|
|
425
|
+
# : (RescueModifierNode node) -> void
|
|
426
|
+
def visit_rescue_modifier_node: (RescueModifierNode node) -> void
|
|
427
|
+
|
|
428
|
+
# : (RescueNode node) -> void
|
|
429
|
+
def visit_rescue_node: (RescueNode node) -> void
|
|
430
|
+
|
|
431
|
+
# : (RestParameterNode node) -> void
|
|
432
|
+
def visit_rest_parameter_node: (RestParameterNode node) -> void
|
|
433
|
+
|
|
434
|
+
# : (RetryNode node) -> void
|
|
435
|
+
def visit_retry_node: (RetryNode node) -> void
|
|
436
|
+
|
|
437
|
+
# : (ReturnNode node) -> void
|
|
438
|
+
def visit_return_node: (ReturnNode node) -> void
|
|
439
|
+
|
|
440
|
+
# : (SelfNode node) -> void
|
|
441
|
+
def visit_self_node: (SelfNode node) -> void
|
|
442
|
+
|
|
443
|
+
# : (ShareableConstantNode node) -> void
|
|
444
|
+
def visit_shareable_constant_node: (ShareableConstantNode node) -> void
|
|
445
|
+
|
|
446
|
+
# : (SingletonClassNode node) -> void
|
|
447
|
+
def visit_singleton_class_node: (SingletonClassNode node) -> void
|
|
448
|
+
|
|
449
|
+
# : (SourceEncodingNode node) -> void
|
|
450
|
+
def visit_source_encoding_node: (SourceEncodingNode node) -> void
|
|
451
|
+
|
|
452
|
+
# : (SourceFileNode node) -> void
|
|
453
|
+
def visit_source_file_node: (SourceFileNode node) -> void
|
|
454
|
+
|
|
455
|
+
# : (SourceLineNode node) -> void
|
|
456
|
+
def visit_source_line_node: (SourceLineNode node) -> void
|
|
457
|
+
|
|
458
|
+
# : (SplatNode node) -> void
|
|
459
|
+
def visit_splat_node: (SplatNode node) -> void
|
|
460
|
+
|
|
461
|
+
# : (StatementsNode node) -> void
|
|
462
|
+
def visit_statements_node: (StatementsNode node) -> void
|
|
463
|
+
|
|
464
|
+
# : (StringNode node) -> void
|
|
465
|
+
def visit_string_node: (StringNode node) -> void
|
|
466
|
+
|
|
467
|
+
# : (SuperNode node) -> void
|
|
468
|
+
def visit_super_node: (SuperNode node) -> void
|
|
469
|
+
|
|
470
|
+
# : (SymbolNode node) -> void
|
|
471
|
+
def visit_symbol_node: (SymbolNode node) -> void
|
|
472
|
+
|
|
473
|
+
# : (TrueNode node) -> void
|
|
474
|
+
def visit_true_node: (TrueNode node) -> void
|
|
475
|
+
|
|
476
|
+
# : (UndefNode node) -> void
|
|
477
|
+
def visit_undef_node: (UndefNode node) -> void
|
|
478
|
+
|
|
479
|
+
# : (UnlessNode node) -> void
|
|
480
|
+
def visit_unless_node: (UnlessNode node) -> void
|
|
481
|
+
|
|
482
|
+
# : (UntilNode node) -> void
|
|
483
|
+
def visit_until_node: (UntilNode node) -> void
|
|
484
|
+
|
|
485
|
+
# : (WhenNode node) -> void
|
|
486
|
+
def visit_when_node: (WhenNode node) -> void
|
|
487
|
+
|
|
488
|
+
# : (WhileNode node) -> void
|
|
489
|
+
def visit_while_node: (WhileNode node) -> void
|
|
490
|
+
|
|
491
|
+
# : (XStringNode node) -> void
|
|
492
|
+
def visit_x_string_node: (XStringNode node) -> void
|
|
493
|
+
|
|
494
|
+
# : (YieldNode node) -> void
|
|
495
|
+
def visit_yield_node: (YieldNode node) -> void
|
|
496
|
+
|
|
497
|
+
private
|
|
498
|
+
|
|
499
|
+
# Compose a header for the given node.
|
|
500
|
+
#
|
|
501
|
+
# : (String name, node node) -> String
|
|
502
|
+
def inspect_node: (String name, node node) -> String
|
|
503
|
+
|
|
504
|
+
# Compose a string representing the given inner location field.
|
|
505
|
+
#
|
|
506
|
+
# : (Location? location) -> String
|
|
507
|
+
def inspect_location: (Location? location) -> String
|
|
508
|
+
end
|
|
509
|
+
end
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Generated from lib/prism/lex_compat.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Prism
|
|
4
|
+
module Translation
|
|
5
|
+
class Ripper
|
|
6
|
+
EXPR_NONE: Integer
|
|
7
|
+
EXPR_BEG: Integer
|
|
8
|
+
EXPR_MID: Integer
|
|
9
|
+
EXPR_END: Integer
|
|
10
|
+
EXPR_CLASS: Integer
|
|
11
|
+
EXPR_VALUE: Integer
|
|
12
|
+
EXPR_ARG: Integer
|
|
13
|
+
EXPR_CMDARG: Integer
|
|
14
|
+
EXPR_ENDARG: Integer
|
|
15
|
+
EXPR_ENDFN: Integer
|
|
16
|
+
|
|
17
|
+
class Lexer < Ripper
|
|
18
|
+
class State
|
|
19
|
+
def self.[]: (Integer value) -> State
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class LineAndColumnCache
|
|
24
|
+
def initialize: (Source source) -> void
|
|
25
|
+
|
|
26
|
+
def line_and_column: (Integer byte_offset) -> [ Integer, Integer ]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# This class is responsible for lexing the source using prism and then
|
|
32
|
+
# converting those tokens to be compatible with Ripper. In the vast majority
|
|
33
|
+
# of cases, this is a one-to-one mapping of the token type. Everything else
|
|
34
|
+
# generally lines up. However, there are a few cases that require special
|
|
35
|
+
# handling.
|
|
36
|
+
class LexCompat
|
|
37
|
+
# A token produced by the Ripper lexer that Prism is replicating.
|
|
38
|
+
type lex_compat_token = [ [ Integer, Integer ], Symbol, String, untyped ]
|
|
39
|
+
|
|
40
|
+
# A result class specialized for holding tokens produced by the lexer.
|
|
41
|
+
class Result < Prism::Result
|
|
42
|
+
# The list of tokens that were produced by the lexer.
|
|
43
|
+
attr_reader value: Array[lex_compat_token]
|
|
44
|
+
|
|
45
|
+
# Create a new lex compat result object with the given values.
|
|
46
|
+
#
|
|
47
|
+
# : (Array[lex_compat_token] value, Array[MagicComment] magic_comments, Location? data_loc, Array[ParseError] errors, Array[ParseWarning] warnings, bool continuable, Source source) -> void
|
|
48
|
+
def initialize: (Array[lex_compat_token] value, Array[MagicComment] magic_comments, Location? data_loc, Array[ParseError] errors, Array[ParseWarning] warnings, bool continuable, Source source) -> void
|
|
49
|
+
|
|
50
|
+
# Implement the hash pattern matching interface for Result.
|
|
51
|
+
#
|
|
52
|
+
# : (Array[Symbol]? keys) -> Hash[Symbol, untyped]
|
|
53
|
+
def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# This is a mapping of prism token types to Ripper token types. This is a
|
|
57
|
+
# many-to-one mapping because we split up our token types, whereas Ripper
|
|
58
|
+
# tends to group them.
|
|
59
|
+
RIPPER: untyped
|
|
60
|
+
|
|
61
|
+
# A heredoc in this case is a list of tokens that belong to the body of the
|
|
62
|
+
# heredoc that should be appended onto the list of tokens when the heredoc
|
|
63
|
+
# closes.
|
|
64
|
+
module Heredoc
|
|
65
|
+
# Heredocs that are no dash or tilde heredocs are just a list of tokens.
|
|
66
|
+
# We need to keep them around so that we can insert them in the correct
|
|
67
|
+
# order back into the token stream and set the state of the last token to
|
|
68
|
+
# the state that the heredoc was opened in.
|
|
69
|
+
class PlainHeredoc
|
|
70
|
+
# :nodoc:
|
|
71
|
+
attr_reader tokens: Array[lex_compat_token]
|
|
72
|
+
|
|
73
|
+
# : () -> void
|
|
74
|
+
def initialize: () -> void
|
|
75
|
+
|
|
76
|
+
# : (lex_compat_token token) -> void
|
|
77
|
+
def <<: (lex_compat_token token) -> void
|
|
78
|
+
|
|
79
|
+
# : () -> Array[lex_compat_token]
|
|
80
|
+
def to_a: () -> Array[lex_compat_token]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Dash heredocs are a little more complicated. They are a list of tokens
|
|
84
|
+
# that need to be split on "\\\n" to mimic Ripper's behavior. We also need
|
|
85
|
+
# to keep track of the state that the heredoc was opened in.
|
|
86
|
+
class DashHeredoc
|
|
87
|
+
# :nodoc:
|
|
88
|
+
attr_reader split: bool
|
|
89
|
+
|
|
90
|
+
attr_reader tokens: Array[lex_compat_token]
|
|
91
|
+
|
|
92
|
+
# : (bool split) -> void
|
|
93
|
+
def initialize: (bool split) -> void
|
|
94
|
+
|
|
95
|
+
# : (lex_compat_token token) -> void
|
|
96
|
+
def <<: (lex_compat_token token) -> void
|
|
97
|
+
|
|
98
|
+
# : () -> Array[lex_compat_token]
|
|
99
|
+
def to_a: () -> Array[lex_compat_token]
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Heredocs that are dedenting heredocs are a little more complicated.
|
|
103
|
+
# Ripper outputs on_ignored_sp tokens for the whitespace that is being
|
|
104
|
+
# removed from the output. prism only modifies the node itself and keeps
|
|
105
|
+
# the token the same. This simplifies prism, but makes comparing against
|
|
106
|
+
# Ripper much harder because there is a length mismatch.
|
|
107
|
+
#
|
|
108
|
+
# Fortunately, we already have to pull out the heredoc tokens in order to
|
|
109
|
+
# insert them into the stream in the correct order. As such, we can do
|
|
110
|
+
# some extra manipulation on the tokens to make them match Ripper's
|
|
111
|
+
# output by mirroring the dedent logic that Ripper uses.
|
|
112
|
+
class DedentingHeredoc
|
|
113
|
+
# :nodoc:
|
|
114
|
+
TAB_WIDTH: ::Integer
|
|
115
|
+
|
|
116
|
+
attr_reader tokens: Array[lex_compat_token]
|
|
117
|
+
|
|
118
|
+
attr_reader dedent_next: bool
|
|
119
|
+
|
|
120
|
+
attr_reader dedent: Integer?
|
|
121
|
+
|
|
122
|
+
attr_reader embexpr_balance: Integer
|
|
123
|
+
|
|
124
|
+
@ended_on_newline: bool
|
|
125
|
+
|
|
126
|
+
# : () -> void
|
|
127
|
+
def initialize: () -> void
|
|
128
|
+
|
|
129
|
+
# As tokens are coming in, we track the minimum amount of common leading
|
|
130
|
+
# whitespace on plain string content tokens. This allows us to later
|
|
131
|
+
# remove that amount of whitespace from the beginning of each line.
|
|
132
|
+
#
|
|
133
|
+
# : (lex_compat_token token) -> void
|
|
134
|
+
def <<: (lex_compat_token token) -> void
|
|
135
|
+
|
|
136
|
+
# : () -> Array[lex_compat_token]
|
|
137
|
+
def to_a: () -> Array[lex_compat_token]
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Here we will split between the two types of heredocs and return the
|
|
141
|
+
# object that will store their tokens.
|
|
142
|
+
#
|
|
143
|
+
# : (lex_compat_token opening) -> (PlainHeredoc | DashHeredoc | DedentingHeredoc)
|
|
144
|
+
def self.build: (lex_compat_token opening) -> (PlainHeredoc | DashHeredoc | DedentingHeredoc)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# In previous versions of Ruby, Ripper wouldn't flush the bom before the
|
|
148
|
+
# first token, so we had to have a hack in place to account for that.
|
|
149
|
+
BOM_FLUSHED: untyped
|
|
150
|
+
|
|
151
|
+
attr_reader options: Hash[Symbol, untyped]
|
|
152
|
+
|
|
153
|
+
@source: String
|
|
154
|
+
|
|
155
|
+
# : (String source, **untyped options) -> void
|
|
156
|
+
def initialize: (String source, **untyped options) -> void
|
|
157
|
+
|
|
158
|
+
# : () -> Result
|
|
159
|
+
def result: () -> Result
|
|
160
|
+
|
|
161
|
+
private
|
|
162
|
+
|
|
163
|
+
# : (Array[lex_compat_token] tokens, Source source, Location? data_loc, bool bom, Token? eof_token) -> Array[lex_compat_token]
|
|
164
|
+
def post_process_tokens: (Array[lex_compat_token] tokens, Source source, Location? data_loc, bool bom, Token? eof_token) -> Array[lex_compat_token]
|
|
165
|
+
end
|
|
166
|
+
end
|