@@ -78,10 +78,7 @@ public MultipleAssignmentNode translate() {
78
78
true ,
79
79
null );
80
80
81
- final AssignableNode [] preNodes = new AssignableNode [node .lefts .length ];
82
- for (int i = 0 ; i < node .lefts .length ; i ++) {
83
- preNodes [i ] = node .lefts [i ].accept (this );
84
- }
81
+ final AssignableNode [] preNodes = processAssignables (node .lefts );
85
82
86
83
final AssignableNode restNode ;
87
84
if (node .rest != null ) {
@@ -97,10 +94,7 @@ public MultipleAssignmentNode translate() {
97
94
restNode = null ;
98
95
}
99
96
100
- final AssignableNode [] postNodes = new AssignableNode [node .rights .length ];
101
- for (int i = 0 ; i < node .rights .length ; i ++) {
102
- postNodes [i ] = node .rights [i ].accept (this );
103
- }
97
+ final AssignableNode [] postNodes = processAssignables (node .rights );
104
98
105
99
// prolog is supposed to be executed in the outer MultipleAssignmentNode (in multi-assignment only)
106
100
final var multipleAssignmentNode = new MultipleAssignmentNode (
@@ -113,6 +107,18 @@ public MultipleAssignmentNode translate() {
113
107
return multipleAssignmentNode ;
114
108
}
115
109
110
+ private AssignableNode [] processAssignables (Nodes .Node [] nodes ) {
111
+ if (nodes .length == 0 ) {
112
+ return MultipleAssignmentNode .EMPTY_ASSIGNABLES ;
113
+ }
114
+
115
+ final AssignableNode [] assignables = new AssignableNode [nodes .length ];
116
+ for (int i = 0 ; i < nodes .length ; i ++) {
117
+ assignables [i ] = nodes [i ].accept (this );
118
+ }
119
+ return assignables ;
120
+ }
121
+
116
122
@ Override
117
123
public AssignableNode visitClassVariableTargetNode (Nodes .ClassVariableTargetNode node ) {
118
124
final RubyNode rubyNode = node .accept (yarpTranslator );
0 commit comments