Skip to content

Commit 1f25d14

Browse files
committed
Refactor YARPTranslator and add helper method to translate array of nodes
1 parent 20b952d commit 1f25d14

File tree

1 file changed

+22
-37
lines changed

1 file changed

+22
-37
lines changed

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

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -224,24 +224,15 @@ public RubyNode visitArgumentsNode(Nodes.ArgumentsNode node) {
224224
return values[0].accept(this);
225225
}
226226

227-
final RubyNode[] translatedValues = createArray(values.length);
228-
229-
for (int n = 0; n < values.length; n++) {
230-
translatedValues[n] = values[n].accept(this);
231-
}
232-
227+
final RubyNode[] translatedValues = translate(values);
233228
final RubyNode rubyNode = ArrayLiteralNode.create(language, translatedValues);
234229
assignNodePositionInSource(node, rubyNode);
235230

236231
return rubyNode;
237232
}
238233

239234
public RubyNode visitArrayNode(Nodes.ArrayNode node) {
240-
RubyNode[] elements = new RubyNode[node.elements.length];
241-
for (int i = 0; i < node.elements.length; i++) {
242-
elements[i] = node.elements[i].accept(this);
243-
}
244-
235+
RubyNode[] elements = translate(node.elements);
245236
RubyNode rubyNode = ArrayLiteralNode.create(language, elements);
246237
assignNodePositionInSource(node, rubyNode);
247238
return rubyNode;
@@ -388,11 +379,7 @@ private RescueNode translateExceptionNodes(ArrayList<Nodes.Node> exceptionNodes,
388379
RubyNode translatedBody = translateNodeOrNil(rescueClause.statements);
389380

390381
final Nodes.Node[] exceptionNodesArray = exceptionNodes.toArray(Nodes.Node.EMPTY_ARRAY);
391-
final RubyNode[] handlingClasses = new RubyNode[exceptionNodesArray.length];
392-
393-
for (int i = 0; i < exceptionNodesArray.length; i++) {
394-
handlingClasses[i] = exceptionNodesArray[i].accept(this);
395-
}
382+
final RubyNode[] handlingClasses = translate(exceptionNodesArray);
396383

397384
if (rescueClause.reference != null) {
398385
final RubyNode exceptionWriteNode = translateRescueException(
@@ -446,10 +433,7 @@ public RubyNode visitCallNode(Nodes.CallNode node) {
446433
arguments = node.arguments.arguments;
447434
}
448435

449-
var translatedArguments = new RubyNode[arguments.length];
450-
for (int i = 0; i < arguments.length; i++) {
451-
translatedArguments[i] = arguments[i].accept(this);
452-
}
436+
var translatedArguments = translate(arguments);
453437

454438
// If the receiver is explicit or implicit 'self' then we can call private methods
455439
final boolean ignoreVisibility = node.receiver == null || node.receiver instanceof Nodes.SelfNode;
@@ -1409,12 +1393,8 @@ public RubyNode visitSplatNode(Nodes.SplatNode node) {
14091393
}
14101394

14111395
public RubyNode visitStatementsNode(Nodes.StatementsNode node) {
1412-
var body = node.body;
1413-
var translated = new RubyNode[body.length];
1414-
for (int i = 0; i < body.length; i++) {
1415-
translated[i] = body[i].accept(this);
1416-
}
1417-
return sequence(node, Arrays.asList(translated));
1396+
RubyNode[] rubyNodes = translate(node.body);
1397+
return sequence(node, Arrays.asList(rubyNodes));
14181398
}
14191399

14201400
public RubyNode visitStringConcatNode(Nodes.StringConcatNode node) {
@@ -1452,11 +1432,7 @@ public RubyNode visitTrueNode(Nodes.TrueNode node) {
14521432
}
14531433

14541434
public RubyNode visitUndefNode(Nodes.UndefNode node) {
1455-
RubyNode[] names = new RubyNode[node.names.length];
1456-
for (int i = 0; i < node.names.length; i++) {
1457-
names[i] = node.names[i].accept(this);
1458-
}
1459-
1435+
final RubyNode[] names = translate(node.names);
14601436
final RubyNode rubyNode = new ModuleNodes.UndefNode(names);
14611437
assignNodePositionInSource(node, rubyNode);
14621438
return rubyNode;
@@ -1543,12 +1519,7 @@ private RubyNode translateExpressionsList(Nodes.Node[] nodes) {
15431519
// fast path (no SplatNode)
15441520

15451521
if (!containSplatOperator) {
1546-
RubyNode[] rubyNodes = new RubyNode[nodes.length];
1547-
1548-
for (int i = 0; i < nodes.length; i++) {
1549-
rubyNodes[i] = nodes[i].accept(this);
1550-
}
1551-
1522+
RubyNode[] rubyNodes = translate(nodes);
15521523
return ArrayLiteralNode.create(language, rubyNodes);
15531524
}
15541525

@@ -1975,4 +1946,18 @@ private boolean containYARPSplatNode(Nodes.Node[] nodes) {
19751946

19761947
return false;
19771948
}
1949+
1950+
private RubyNode[] translate(Nodes.Node[] nodes) {
1951+
if (nodes.length == 0) {
1952+
return RubyNode.EMPTY_ARRAY;
1953+
}
1954+
1955+
RubyNode[] rubyNodes = new RubyNode[nodes.length];
1956+
1957+
for (int i = 0; i < nodes.length; i++) {
1958+
rubyNodes[i] = nodes[i].accept(this);
1959+
}
1960+
1961+
return rubyNodes;
1962+
}
19781963
}

0 commit comments

Comments
 (0)