Skip to content

Commit 094886f

Browse files
committed
Fix enum in switch cases
1 parent be09180 commit 094886f

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public class JavaExpressionVisitor implements ExpressionVisitor<Void>, JavaNativ
113113
private static final JavaMethod STRING_GET_BYTES = JavaMethod.getNativeVirtual(JavaClass.STRING, "getBytes", "(Ljava/nio/charset/Charset;)[B");
114114
private static final JavaMethod ENUM_COMPARETO = JavaMethod.getNativeVirtual(JavaClass.ENUM, "compareTo", "(Ljava/lang/Enum;)I");
115115
private static final JavaMethod ENUM_NAME = JavaMethod.getNativeVirtual(JavaClass.ENUM, "name", "()Ljava/lang/String;");
116-
private static final JavaMethod ENUM_ORDINAL = JavaMethod.getNativeVirtual(JavaClass.ENUM, "ordinal", "()I");
116+
public static final JavaMethod ENUM_ORDINAL = JavaMethod.getNativeVirtual(JavaClass.ENUM, "ordinal", "()I");
117117
private static final JavaMethod HASHMAP_INIT = JavaMethod.getNativeConstructor(JavaClass.HASHMAP, "()V");
118118
private static final JavaMethod MAP_GET = JavaMethod.getInterface(JavaClass.MAP, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
119119
private static final JavaMethod MAP_PUT = JavaMethod.getInterface(JavaClass.MAP, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ public Boolean visitSwitch(SwitchStatement statement) {
221221
statement.value.accept(expressionVisitor);
222222
if (statement.value.type == BasicTypeID.STRING)
223223
javaWriter.invokeVirtual(JavaExpressionVisitor.OBJECT_HASHCODE);
224+
if (statement.value.type.isEnum()) {
225+
javaWriter.invokeVirtual(JavaExpressionVisitor.ENUM_ORDINAL);
226+
}
224227
boolean out = false;
225228

226229
final boolean hasNoDefault = hasNoDefault(statement);

0 commit comments

Comments
 (0)