@@ -224,24 +224,15 @@ public RubyNode visitArgumentsNode(Nodes.ArgumentsNode node) {
224
224
return values [0 ].accept (this );
225
225
}
226
226
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 );
233
228
final RubyNode rubyNode = ArrayLiteralNode .create (language , translatedValues );
234
229
assignNodePositionInSource (node , rubyNode );
235
230
236
231
return rubyNode ;
237
232
}
238
233
239
234
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 );
245
236
RubyNode rubyNode = ArrayLiteralNode .create (language , elements );
246
237
assignNodePositionInSource (node , rubyNode );
247
238
return rubyNode ;
@@ -388,11 +379,7 @@ private RescueNode translateExceptionNodes(ArrayList<Nodes.Node> exceptionNodes,
388
379
RubyNode translatedBody = translateNodeOrNil (rescueClause .statements );
389
380
390
381
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 );
396
383
397
384
if (rescueClause .reference != null ) {
398
385
final RubyNode exceptionWriteNode = translateRescueException (
@@ -446,10 +433,7 @@ public RubyNode visitCallNode(Nodes.CallNode node) {
446
433
arguments = node .arguments .arguments ;
447
434
}
448
435
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 );
453
437
454
438
// If the receiver is explicit or implicit 'self' then we can call private methods
455
439
final boolean ignoreVisibility = node .receiver == null || node .receiver instanceof Nodes .SelfNode ;
@@ -1409,12 +1393,8 @@ public RubyNode visitSplatNode(Nodes.SplatNode node) {
1409
1393
}
1410
1394
1411
1395
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 ));
1418
1398
}
1419
1399
1420
1400
public RubyNode visitStringConcatNode (Nodes .StringConcatNode node ) {
@@ -1452,11 +1432,7 @@ public RubyNode visitTrueNode(Nodes.TrueNode node) {
1452
1432
}
1453
1433
1454
1434
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 );
1460
1436
final RubyNode rubyNode = new ModuleNodes .UndefNode (names );
1461
1437
assignNodePositionInSource (node , rubyNode );
1462
1438
return rubyNode ;
@@ -1543,12 +1519,7 @@ private RubyNode translateExpressionsList(Nodes.Node[] nodes) {
1543
1519
// fast path (no SplatNode)
1544
1520
1545
1521
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 );
1552
1523
return ArrayLiteralNode .create (language , rubyNodes );
1553
1524
}
1554
1525
@@ -1975,4 +1946,18 @@ private boolean containYARPSplatNode(Nodes.Node[] nodes) {
1975
1946
1976
1947
return false ;
1977
1948
}
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
+ }
1978
1963
}
0 commit comments