From 889cc1219fe0f454045c7869f4d798a1ee521651 Mon Sep 17 00:00:00 2001 From: Jesper Gravgaard Date: Tue, 16 Jul 2019 22:45:13 +0200 Subject: [PATCH] Added test demonstrating problem with passing derefed struct pointer to call. #225 --- .../dk/camelot64/kickc/test/TestPrograms.java | 7 +++++++ src/test/kc/problem-struct-pointer-param.kc | 20 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/test/kc/problem-struct-pointer-param.kc diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 2f0d403e1..79cfcec80 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -35,6 +35,13 @@ public class TestPrograms { public TestPrograms() { } + /* + @Test + public void testProblemStructPointerParam() throws IOException, URISyntaxException { + compileAndCompare("problem-struct-pointer-param"); + } + */ + /* @Test public void testProblemArrayStructParam() throws IOException, URISyntaxException { diff --git a/src/test/kc/problem-struct-pointer-param.kc b/src/test/kc/problem-struct-pointer-param.kc new file mode 100644 index 000000000..f992bd811 --- /dev/null +++ b/src/test/kc/problem-struct-pointer-param.kc @@ -0,0 +1,20 @@ +// Demonstrates problem with passing struct pointer deref as parameter to call + +const char* SCREEN = 0x0400; +char idx = 0; + +struct Point { + char x; + char y; +}; + +void main() { + struct Point point = { 1, 2 }; + struct Point* ptr = &point; + print(*ptr); +} + +void print(struct Point p) { + SCREEN[idx++] = p.x; + SCREEN[idx++] = p.y; +} \ No newline at end of file