yarp 0.10.0 → 0.12.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 +50 -1
- data/CONTRIBUTING.md +7 -0
- data/config.yml +259 -49
- data/docs/configuration.md +0 -1
- data/docs/mapping.md +91 -91
- data/docs/serialization.md +23 -20
- data/ext/yarp/api_node.c +1268 -419
- data/ext/yarp/extension.c +9 -2
- data/ext/yarp/extension.h +2 -2
- data/include/yarp/ast.h +471 -318
- data/include/yarp/diagnostic.h +203 -1
- data/include/yarp/enc/yp_encoding.h +1 -1
- data/include/yarp/node.h +0 -4
- data/include/yarp/parser.h +44 -16
- data/include/yarp/util/yp_char.h +22 -6
- data/include/yarp/util/yp_constant_pool.h +11 -4
- data/include/yarp/version.h +2 -2
- data/lib/yarp/desugar_visitor.rb +19 -19
- data/lib/yarp/mutation_visitor.rb +50 -15
- data/lib/yarp/node.rb +6455 -443
- data/lib/yarp/parse_result/comments.rb +172 -0
- data/lib/yarp/parse_result/newlines.rb +60 -0
- data/lib/yarp/pattern.rb +239 -0
- data/lib/yarp/serialize.rb +173 -140
- data/lib/yarp.rb +151 -76
- data/src/diagnostic.c +259 -2
- data/src/enc/yp_unicode.c +5 -5
- data/src/node.c +984 -872
- data/src/prettyprint.c +461 -203
- data/src/serialize.c +380 -185
- data/src/unescape.c +20 -20
- data/src/util/yp_char.c +59 -16
- data/src/util/yp_constant_pool.c +97 -13
- data/src/util/yp_newline_list.c +5 -1
- data/src/util/yp_string_list.c +4 -1
- data/src/yarp.c +2313 -1675
- data/yarp.gemspec +4 -1
- metadata +5 -2
@@ -10,8 +10,13 @@ module YARP
|
|
10
10
|
# visited. This is useful for consumers that want to mutate the tree, as you
|
11
11
|
# can change subtrees in place without effecting the rest of the tree.
|
12
12
|
class MutationVisitor < BasicVisitor
|
13
|
-
# Copy a
|
14
|
-
def
|
13
|
+
# Copy a AliasGlobalVariableNode node
|
14
|
+
def visit_alias_global_variable_node(node)
|
15
|
+
node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
|
16
|
+
end
|
17
|
+
|
18
|
+
# Copy a AliasMethodNode node
|
19
|
+
def visit_alias_method_node(node)
|
15
20
|
node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
|
16
21
|
end
|
17
22
|
|
@@ -65,6 +70,11 @@ module YARP
|
|
65
70
|
node.copy(expression: visit(node.expression))
|
66
71
|
end
|
67
72
|
|
73
|
+
# Copy a BlockLocalVariableNode node
|
74
|
+
def visit_block_local_variable_node(node)
|
75
|
+
node.copy
|
76
|
+
end
|
77
|
+
|
68
78
|
# Copy a BlockNode node
|
69
79
|
def visit_block_node(node)
|
70
80
|
node.copy(parameters: visit(node.parameters), body: visit(node.body))
|
@@ -77,7 +87,7 @@ module YARP
|
|
77
87
|
|
78
88
|
# Copy a BlockParametersNode node
|
79
89
|
def visit_block_parameters_node(node)
|
80
|
-
node.copy(parameters: visit(node.parameters))
|
90
|
+
node.copy(parameters: visit(node.parameters), locals: visit_all(node.locals))
|
81
91
|
end
|
82
92
|
|
83
93
|
# Copy a BreakNode node
|
@@ -85,24 +95,24 @@ module YARP
|
|
85
95
|
node.copy(arguments: visit(node.arguments))
|
86
96
|
end
|
87
97
|
|
98
|
+
# Copy a CallAndWriteNode node
|
99
|
+
def visit_call_and_write_node(node)
|
100
|
+
node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), value: visit(node.value))
|
101
|
+
end
|
102
|
+
|
88
103
|
# Copy a CallNode node
|
89
104
|
def visit_call_node(node)
|
90
105
|
node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
|
91
106
|
end
|
92
107
|
|
93
|
-
# Copy a CallOperatorAndWriteNode node
|
94
|
-
def visit_call_operator_and_write_node(node)
|
95
|
-
node.copy(target: visit(node.target), value: visit(node.value))
|
96
|
-
end
|
97
|
-
|
98
|
-
# Copy a CallOperatorOrWriteNode node
|
99
|
-
def visit_call_operator_or_write_node(node)
|
100
|
-
node.copy(target: visit(node.target), value: visit(node.value))
|
101
|
-
end
|
102
|
-
|
103
108
|
# Copy a CallOperatorWriteNode node
|
104
109
|
def visit_call_operator_write_node(node)
|
105
|
-
node.copy(
|
110
|
+
node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), value: visit(node.value))
|
111
|
+
end
|
112
|
+
|
113
|
+
# Copy a CallOrWriteNode node
|
114
|
+
def visit_call_or_write_node(node)
|
115
|
+
node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), value: visit(node.value))
|
106
116
|
end
|
107
117
|
|
108
118
|
# Copy a CapturePatternNode node
|
@@ -330,6 +340,11 @@ module YARP
|
|
330
340
|
node.copy(numeric: visit(node.numeric))
|
331
341
|
end
|
332
342
|
|
343
|
+
# Copy a ImplicitNode node
|
344
|
+
def visit_implicit_node(node)
|
345
|
+
node.copy(value: visit(node.value))
|
346
|
+
end
|
347
|
+
|
333
348
|
# Copy a InNode node
|
334
349
|
def visit_in_node(node)
|
335
350
|
node.copy(pattern: visit(node.pattern), statements: visit(node.statements))
|
@@ -370,6 +385,11 @@ module YARP
|
|
370
385
|
node.copy
|
371
386
|
end
|
372
387
|
|
388
|
+
# Copy a InterpolatedMatchLastLineNode node
|
389
|
+
def visit_interpolated_match_last_line_node(node)
|
390
|
+
node.copy(parts: visit_all(node.parts))
|
391
|
+
end
|
392
|
+
|
373
393
|
# Copy a InterpolatedRegularExpressionNode node
|
374
394
|
def visit_interpolated_regular_expression_node(node)
|
375
395
|
node.copy(parts: visit_all(node.parts))
|
@@ -440,6 +460,11 @@ module YARP
|
|
440
460
|
node.copy(value: visit(node.value))
|
441
461
|
end
|
442
462
|
|
463
|
+
# Copy a MatchLastLineNode node
|
464
|
+
def visit_match_last_line_node(node)
|
465
|
+
node.copy
|
466
|
+
end
|
467
|
+
|
443
468
|
# Copy a MatchPredicateNode node
|
444
469
|
def visit_match_predicate_node(node)
|
445
470
|
node.copy(value: visit(node.value), pattern: visit(node.pattern))
|
@@ -450,6 +475,11 @@ module YARP
|
|
450
475
|
node.copy(value: visit(node.value), pattern: visit(node.pattern))
|
451
476
|
end
|
452
477
|
|
478
|
+
# Copy a MatchWriteNode node
|
479
|
+
def visit_match_write_node(node)
|
480
|
+
node.copy(call: visit(node.call))
|
481
|
+
end
|
482
|
+
|
453
483
|
# Copy a MissingNode node
|
454
484
|
def visit_missing_node(node)
|
455
485
|
node.copy
|
@@ -460,6 +490,11 @@ module YARP
|
|
460
490
|
node.copy(constant_path: visit(node.constant_path), body: visit(node.body))
|
461
491
|
end
|
462
492
|
|
493
|
+
# Copy a MultiTargetNode node
|
494
|
+
def visit_multi_target_node(node)
|
495
|
+
node.copy(targets: visit_all(node.targets))
|
496
|
+
end
|
497
|
+
|
463
498
|
# Copy a MultiWriteNode node
|
464
499
|
def visit_multi_write_node(node)
|
465
500
|
node.copy(targets: visit_all(node.targets), value: visit(node.value))
|
@@ -497,7 +532,7 @@ module YARP
|
|
497
532
|
|
498
533
|
# Copy a ParametersNode node
|
499
534
|
def visit_parameters_node(node)
|
500
|
-
node.copy(requireds: visit_all(node.requireds), optionals: visit_all(node.optionals),
|
535
|
+
node.copy(requireds: visit_all(node.requireds), optionals: visit_all(node.optionals), rest: visit(node.rest), posts: visit_all(node.posts), keywords: visit_all(node.keywords), keyword_rest: visit(node.keyword_rest), block: visit(node.block))
|
501
536
|
end
|
502
537
|
|
503
538
|
# Copy a ParenthesesNode node
|