diff --git a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/WurstTypeEnum.java b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/WurstTypeEnum.java index 63cc33412..09ddb5534 100644 --- a/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/WurstTypeEnum.java +++ b/de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/types/WurstTypeEnum.java @@ -68,4 +68,9 @@ public boolean isCastableToInt() { return true; } + @Override + protected boolean isNullable() { + return false; + } + } diff --git a/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/EnumTests.java b/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/EnumTests.java index fd6c76f9d..ae3330e79 100644 --- a/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/EnumTests.java +++ b/de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/EnumTests.java @@ -67,4 +67,59 @@ public void enum_to_int_test() { ); } + @Test + public void enumCannotBeAssignedNull() { + testAssertErrorsLines(false, "Cannot assign null to Blub", + "package test", + "enum Blub", + " A", + " B", + "init", + " Blub value = null" + ); + } + + @Test + public void enumCannotBeComparedWithNull() { + testAssertErrorsLines(false, "Cannot compare types Blub with null", + "package test", + "enum Blub", + " A", + " B", + "init", + " if Blub.A == null", + " skip" + ); + } + + @Test + public void nullCannotBeComparedWithEnum() { + testAssertErrorsLines(false, "Cannot compare types null with Blub", + "package test", + "enum Blub", + " A", + " B", + "init", + " if null != Blub.B", + " skip" + ); + } + + @Test + public void enumDefaultValueRemainsFirstMember() { + test().testLua(true).executeProg().lines( + "package test", + "native testSuccess()", + "enum Blub", + " A", + " B", + "class Holder", + " Blub value", + "init", + " let holder = new Holder()", + " if holder.value == Blub.A", + " testSuccess()" + ); + } + }