Skip to content

Commit 36962ee

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

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,8 @@ protected void receiveForArgs(Node node) {
614614
if (node instanceof MultiTargetNode) { // for loops
615615
buildBlockArgsAssignment(node, null, 0, false);
616616
} else if (node instanceof ClassVariableTargetNode || node instanceof LocalVariableTargetNode ||
617-
node instanceof InstanceVariableTargetNode || node instanceof ConstantTargetNode) {
617+
node instanceof InstanceVariableTargetNode || node instanceof ConstantTargetNode ||
618+
node instanceof GlobalVariableTargetNode) {
618619
receivePreArg(node, keywords, 0);
619620
} else {
620621
throw notCompilable("missing arg processing for `for`", node);
@@ -2199,6 +2200,9 @@ public void receivePreArg(Node node, Variable keywords, int argIndex) {
21992200
} else if (node instanceof LocalVariableTargetNode) { // blocks/for
22002201
Variable v = getLocalVariable(((LocalVariableTargetNode) node).name, ((LocalVariableTargetNode) node).depth);
22012202
addInstr(new ReceivePreReqdArgInstr(v, keywords, argIndex));
2203+
} else if (node instanceof GlobalVariableTargetNode target) {
2204+
Variable v = (Variable) buildGlobalVar(temp(), target.name);
2205+
addInstr(new ReceivePreReqdArgInstr(v, keywords, argIndex));
22022206
} else {
22032207
throw notCompilable("Can't build required parameter node", node);
22042208
}

0 commit comments

Comments
 (0)