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