prism 0.29.0 → 1.3.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 +115 -1
- data/CONTRIBUTING.md +0 -4
- data/Makefile +1 -1
- data/README.md +4 -0
- data/config.yml +920 -148
- data/docs/build_system.md +8 -11
- data/docs/fuzzing.md +1 -1
- data/docs/parsing_rules.md +4 -1
- data/docs/relocation.md +34 -0
- data/docs/ripper_translation.md +22 -0
- data/docs/serialization.md +3 -0
- data/ext/prism/api_node.c +2863 -2079
- data/ext/prism/extconf.rb +14 -37
- data/ext/prism/extension.c +241 -391
- data/ext/prism/extension.h +2 -2
- data/include/prism/ast.h +2156 -453
- data/include/prism/defines.h +58 -7
- data/include/prism/diagnostic.h +24 -6
- data/include/prism/node.h +0 -21
- data/include/prism/options.h +94 -3
- data/include/prism/parser.h +82 -40
- data/include/prism/regexp.h +18 -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 +22 -15
- data/include/prism/util/pm_newline_list.h +11 -0
- data/include/prism/util/pm_string.h +28 -12
- data/include/prism/version.h +3 -3
- data/include/prism.h +47 -11
- data/lib/prism/compiler.rb +3 -0
- data/lib/prism/desugar_compiler.rb +111 -74
- data/lib/prism/dispatcher.rb +16 -1
- data/lib/prism/dot_visitor.rb +55 -34
- data/lib/prism/dsl.rb +660 -468
- data/lib/prism/ffi.rb +113 -8
- data/lib/prism/inspect_visitor.rb +296 -64
- data/lib/prism/lex_compat.rb +1 -1
- data/lib/prism/mutation_compiler.rb +11 -6
- data/lib/prism/node.rb +4262 -5023
- data/lib/prism/node_ext.rb +91 -14
- data/lib/prism/parse_result/comments.rb +0 -7
- data/lib/prism/parse_result/errors.rb +65 -0
- data/lib/prism/parse_result/newlines.rb +101 -11
- data/lib/prism/parse_result.rb +183 -6
- data/lib/prism/reflection.rb +12 -10
- data/lib/prism/relocation.rb +504 -0
- data/lib/prism/serialize.rb +496 -609
- data/lib/prism/string_query.rb +30 -0
- data/lib/prism/translation/parser/compiler.rb +185 -155
- data/lib/prism/translation/parser/lexer.rb +26 -4
- data/lib/prism/translation/parser.rb +9 -4
- data/lib/prism/translation/ripper.rb +23 -25
- data/lib/prism/translation/ruby_parser.rb +86 -17
- data/lib/prism/visitor.rb +3 -0
- data/lib/prism.rb +6 -8
- data/prism.gemspec +9 -5
- data/rbi/prism/dsl.rbi +521 -0
- data/rbi/prism/node.rbi +1115 -1120
- data/rbi/prism/parse_result.rbi +29 -0
- data/rbi/prism/string_query.rbi +12 -0
- data/rbi/prism/visitor.rbi +3 -0
- data/rbi/prism.rbi +36 -30
- data/sig/prism/dsl.rbs +190 -303
- data/sig/prism/mutation_compiler.rbs +1 -0
- data/sig/prism/node.rbs +678 -632
- data/sig/prism/parse_result.rbs +22 -0
- data/sig/prism/relocation.rbs +185 -0
- data/sig/prism/string_query.rbs +11 -0
- data/sig/prism/visitor.rbs +1 -0
- data/sig/prism.rbs +103 -64
- data/src/diagnostic.c +64 -28
- data/src/node.c +502 -1739
- data/src/options.c +76 -27
- data/src/prettyprint.c +188 -112
- data/src/prism.c +3376 -2293
- data/src/regexp.c +208 -71
- data/src/serialize.c +182 -50
- data/src/static_literals.c +64 -85
- data/src/token_type.c +4 -4
- data/src/util/pm_char.c +1 -1
- data/src/util/pm_constant_pool.c +0 -8
- data/src/util/pm_integer.c +53 -25
- data/src/util/pm_newline_list.c +29 -0
- data/src/util/pm_string.c +131 -80
- data/src/util/pm_strpbrk.c +32 -6
- metadata +11 -7
- data/include/prism/util/pm_string_list.h +0 -44
- data/lib/prism/debug.rb +0 -249
- data/lib/prism/translation/parser/rubocop.rb +0 -73
- data/src/util/pm_string_list.c +0 -28
data/lib/prism/lex_compat.rb
CHANGED
@@ -481,7 +481,7 @@ module Prism
|
|
481
481
|
embexpr_balance -= 1
|
482
482
|
when :on_tstring_content
|
483
483
|
if embexpr_balance == 0
|
484
|
-
while index < max_index && tokens[index].event == :on_tstring_content
|
484
|
+
while index < max_index && tokens[index].event == :on_tstring_content && !token.value.match?(/\\\r?\n\z/)
|
485
485
|
token.value << tokens[index].value
|
486
486
|
index += 1
|
487
487
|
end
|
@@ -128,12 +128,12 @@ module Prism
|
|
128
128
|
|
129
129
|
# Copy a CaseMatchNode node
|
130
130
|
def visit_case_match_node(node)
|
131
|
-
node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions),
|
131
|
+
node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), else_clause: visit(node.else_clause))
|
132
132
|
end
|
133
133
|
|
134
134
|
# Copy a CaseNode node
|
135
135
|
def visit_case_node(node)
|
136
|
-
node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions),
|
136
|
+
node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), else_clause: visit(node.else_clause))
|
137
137
|
end
|
138
138
|
|
139
139
|
# Copy a ClassNode node
|
@@ -343,7 +343,7 @@ module Prism
|
|
343
343
|
|
344
344
|
# Copy a IfNode node
|
345
345
|
def visit_if_node(node)
|
346
|
-
node.copy(predicate: visit(node.predicate), statements: visit(node.statements),
|
346
|
+
node.copy(predicate: visit(node.predicate), statements: visit(node.statements), subsequent: visit(node.subsequent))
|
347
347
|
end
|
348
348
|
|
349
349
|
# Copy a ImaginaryNode node
|
@@ -446,6 +446,11 @@ module Prism
|
|
446
446
|
node.copy(parts: visit_all(node.parts))
|
447
447
|
end
|
448
448
|
|
449
|
+
# Copy a ItLocalVariableReadNode node
|
450
|
+
def visit_it_local_variable_read_node(node)
|
451
|
+
node.copy
|
452
|
+
end
|
453
|
+
|
449
454
|
# Copy a ItParametersNode node
|
450
455
|
def visit_it_parameters_node(node)
|
451
456
|
node.copy
|
@@ -618,7 +623,7 @@ module Prism
|
|
618
623
|
|
619
624
|
# Copy a RationalNode node
|
620
625
|
def visit_rational_node(node)
|
621
|
-
node.copy
|
626
|
+
node.copy
|
622
627
|
end
|
623
628
|
|
624
629
|
# Copy a RedoNode node
|
@@ -648,7 +653,7 @@ module Prism
|
|
648
653
|
|
649
654
|
# Copy a RescueNode node
|
650
655
|
def visit_rescue_node(node)
|
651
|
-
node.copy(exceptions: visit_all(node.exceptions), reference: visit(node.reference), statements: visit(node.statements),
|
656
|
+
node.copy(exceptions: visit_all(node.exceptions), reference: visit(node.reference), statements: visit(node.statements), subsequent: visit(node.subsequent))
|
652
657
|
end
|
653
658
|
|
654
659
|
# Copy a RestParameterNode node
|
@@ -733,7 +738,7 @@ module Prism
|
|
733
738
|
|
734
739
|
# Copy a UnlessNode node
|
735
740
|
def visit_unless_node(node)
|
736
|
-
node.copy(predicate: visit(node.predicate), statements: visit(node.statements),
|
741
|
+
node.copy(predicate: visit(node.predicate), statements: visit(node.statements), else_clause: visit(node.else_clause))
|
737
742
|
end
|
738
743
|
|
739
744
|
# Copy a UntilNode node
|