Skip to content

Commit be09180

Browse files
committed
Fix foreach variables not handling primitives correctly
1 parent 9255039 commit be09180

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/JavaForeachWriter.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import org.openzen.zenscript.codemodel.statement.ForeachStatement;
66
import org.openzen.zenscript.codemodel.type.ArrayTypeID;
77
import org.openzen.zenscript.codemodel.type.BasicTypeID;
8+
import org.openzen.zenscript.codemodel.type.OptionalTypeID;
89
import org.openzen.zenscript.codemodel.type.RangeTypeID;
10+
import org.openzen.zenscript.codemodel.type.TypeID;
911
import org.openzen.zenscript.javabytecode.JavaLocalVariableInfo;
1012
import org.openzen.zenscript.javashared.JavaClass;
1113
import org.openzen.zenscript.javashared.JavaMethod;
@@ -171,8 +173,10 @@ public void visitAssocKeyValueIterator() {
171173
}
172174

173175
private void downCast(int typeNumber, Type t) {
174-
if (CompilerUtils.isPrimitive(statement.loopVariables[typeNumber].type)) {
175-
statement.loopVariables[typeNumber].type.accept(statement.loopVariables[typeNumber].type, unboxingTypeVisitor);
176+
TypeID type = statement.loopVariables[typeNumber].type;
177+
if (CompilerUtils.isPrimitive(type)) {
178+
javaWriter.checkCast(statementVisitor.context.getInternalName(new OptionalTypeID(null, type)));
179+
type.accept(type, unboxingTypeVisitor);
176180
} else {
177181
javaWriter.checkCast(t);
178182
}

0 commit comments

Comments
 (0)