Skip to content

Commit 7e54183

Browse files
committed
Refactor handling of numbered parameters
1 parent 760ac1e commit 7e54183

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/main/java/org/truffleruby/parser/YARPTranslator.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,19 @@ public class YARPTranslator extends AbstractNodeVisitor<RubyNode> {
203203
private boolean translatingNextExpression = false;
204204
private boolean translatingForStatement = false;
205205

206+
private static final String[] numberedParameterNames = {
207+
null,
208+
"_1",
209+
"_2",
210+
"_3",
211+
"_4",
212+
"_5",
213+
"_6",
214+
"_7",
215+
"_8",
216+
"_9"
217+
};
218+
206219
public YARPTranslator(
207220
RubyLanguage language,
208221
TranslatorEnvironment environment,
@@ -473,7 +486,8 @@ private RubyNode translateBlockAndLambda(Nodes.Node node, Nodes.Node parametersN
473486
final var requireds = new Nodes.RequiredParameterNode[maximum];
474487

475488
for (int i = 1; i <= maximum; i++) {
476-
requireds[i - 1] = new Nodes.RequiredParameterNode("_" + i, 0, 0);
489+
String name = numberedParameterNames[i];
490+
requireds[i - 1] = new Nodes.RequiredParameterNode(name, 0, 0);
477491
}
478492

479493
parameters = new Nodes.ParametersNode(requireds, EMPTY_NODE_ARRAY, null, EMPTY_NODE_ARRAY,
@@ -2125,18 +2139,15 @@ public RubyNode visitMatchWriteNode(Nodes.MatchWriteNode node) {
21252139
assert node.call.name.equals("=~");
21262140
assert node.call.arguments != null;
21272141
assert node.call.arguments.arguments.length == 1;
2128-
21292142
assert node.targets.length > 0;
2130-
for (var t : node.targets) {
2131-
assert t instanceof Nodes.LocalVariableTargetNode;
2132-
}
21332143

21342144
RubyNode matchNode = node.call.accept(this);
21352145

21362146
final int numberOfNames = node.targets.length;
21372147
String[] names = new String[numberOfNames];
21382148

21392149
for (int i = 0; i < numberOfNames; i++) {
2150+
// Nodes.LocalVariableTargetNode is the only expected node here
21402151
names[i] = ((Nodes.LocalVariableTargetNode) node.targets[i]).name;
21412152
}
21422153

0 commit comments

Comments
 (0)