Skip to content

Commit be5c724

Browse files
committed
gvar assignment in for loops
1 parent 36962ee commit be5c724

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

src/main/java/org/jruby/prism/builder/IRBuilderPrism.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ protected void receiveForArgs(Node node) {
615615
buildBlockArgsAssignment(node, null, 0, false);
616616
} else if (node instanceof ClassVariableTargetNode || node instanceof LocalVariableTargetNode ||
617617
node instanceof InstanceVariableTargetNode || node instanceof ConstantTargetNode ||
618-
node instanceof GlobalVariableTargetNode) {
618+
node instanceof GlobalVariableTargetNode || node instanceof CallTargetNode) {
619619
receivePreArg(node, keywords, 0);
620620
} else {
621621
throw notCompilable("missing arg processing for `for`", node);
@@ -2201,8 +2201,9 @@ public void receivePreArg(Node node, Variable keywords, int argIndex) {
22012201
Variable v = getLocalVariable(((LocalVariableTargetNode) node).name, ((LocalVariableTargetNode) node).depth);
22022202
addInstr(new ReceivePreReqdArgInstr(v, keywords, argIndex));
22032203
} else if (node instanceof GlobalVariableTargetNode target) {
2204-
Variable v = (Variable) buildGlobalVar(temp(), target.name);
2204+
Variable v = temp();
22052205
addInstr(new ReceivePreReqdArgInstr(v, keywords, argIndex));
2206+
addInstr(new PutGlobalVarInstr(target.name, v));
22062207
} else {
22072208
throw notCompilable("Can't build required parameter node", node);
22082209
}

0 commit comments

Comments
 (0)