diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index ce5959818..194e808cb 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -4855,6 +4855,11 @@ public class TestPrograms { compileAndCompare("condition-type-mismatch.c"); } + @Test + public void testIssue594() throws IOException, URISyntaxException { + compileAndCompare("issue-594-case.c"); + } + @BeforeAll public static void setUp() { TmpDirManager.init(new File("").toPath()); @@ -4993,8 +4998,8 @@ public class TestPrograms { success &= helper.testOutput(baseFileName, ".cfg", program.getGraph().toString(program)); success &= helper.testOutput(baseFileName, ".log", program.getLog().toString()); if(!success) { - //System.out.println("\nCOMPILE LOG"); - //System.out.println(program.getLog().toString()); + System.out.println("\nCOMPILE LOG"); + System.out.println(program.getLog().toString()); fail("Output does not match reference!"); } // Save the ASM fragment caches (if there are any changes) diff --git a/src/test/kc/issue-594-case.c b/src/test/kc/issue-594-case.c new file mode 100644 index 000000000..9a2902c81 --- /dev/null +++ b/src/test/kc/issue-594-case.c @@ -0,0 +1,20 @@ +enum _substate_hosts { + HOSTS, + DEVICES, + DONE +}; + +typedef enum _substate_hosts SubState; + +#define ORIGIN_HOST_SLOTS 2 +#define ORIGIN_DEVICE_SLOTS 13 + +const char * OUT = 0x8000; + +void main() { + SubState substate = HOSTS; + SubState *ss = &substate; + + char x = (*ss == DEVICES ? ORIGIN_DEVICE_SLOTS : ORIGIN_HOST_SLOTS); + *OUT = x; +}