From 33fcf676128426f2ac9a4730d63fa481bb351518 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 18 Aug 2024 00:07:56 +0300 Subject: make check works again --- tests/Makefile | 40 ++++++++++++++++++++++ tests/alias.ek | 9 ----- tests/alias/alias.ek | 9 +++++ tests/alias/source.mk | 1 + tests/call.ek | 11 ------ tests/call/call.ek | 11 ++++++ tests/call/source.mk | 1 + tests/callbacks.ek | 16 --------- tests/callbacks/callbacks.ek | 16 +++++++++ tests/callbacks/source.mk | 1 + tests/check.sh | 36 ------------------- tests/defer.ek | 23 ------------- tests/defer/defer.ek | 23 +++++++++++++ tests/defer/source.mk | 1 + tests/defer_shadow.ek | 28 --------------- tests/defer_shadow/defer_shadow.ek | 28 +++++++++++++++ tests/defer_shadow/source.mk | 1 + tests/empty.ek | 0 tests/empty/empty.ek | 0 tests/empty/source.mk | 1 + tests/enums.ek | 23 ------------- tests/enums/enums.ek | 23 +++++++++++++ tests/enums/source.mk | 1 + tests/fib.ek | 20 ----------- tests/fib/fib.ek | 20 +++++++++++ tests/fib/source.mk | 1 + tests/generic.ek | 14 -------- tests/generic/generic.ek | 14 ++++++++ tests/generic/source.mk | 1 + tests/generic_defer.ek | 20 ----------- tests/generic_defer/generic_defer.ek | 20 +++++++++++ tests/generic_defer/source.mk | 1 + tests/if.ek | 24 ------------- tests/if/if.ek | 24 +++++++++++++ tests/if/source.mk | 1 + tests/if2.ek | 31 ----------------- tests/if2/if2.ek | 31 +++++++++++++++++ tests/if2/source.mk | 1 + tests/import/priv_hello.ek | 1 - tests/import/pub_hello.ek | 1 - tests/import/pub_import_hello.ek | 1 - tests/loop.ek | 17 --------- tests/loop/loop.ek | 17 +++++++++ tests/loop/source.mk | 1 + tests/main.ek | 1 - tests/main/main.ek | 1 + tests/main/source.mk | 1 + tests/nested_structs.ek | 17 --------- tests/nested_structs/nested_structs.ek | 17 +++++++++ tests/nested_structs/source.mk | 1 + tests/parse/struct_cont.ek | 3 -- tests/pointer_literal.ek | 9 ----- tests/pointer_literal/pointer_literal.ek | 9 +++++ tests/pointer_literal/source.mk | 1 + tests/priv_hello.ek | 7 ---- tests/priv_hello/check.mk | 1 + tests/priv_hello/import/priv_hello.ek | 1 + tests/priv_hello/priv_hello.ek | 7 ++++ tests/priv_hello/source.mk | 1 + tests/ptr.ek | 30 ---------------- tests/ptr/ptr.ek | 30 ++++++++++++++++ tests/ptr/source.mk | 1 + tests/pub_hello.ek | 6 ---- tests/pub_hello/import/pub_hello.ek | 1 + tests/pub_hello/pub_hello.ek | 6 ++++ tests/pub_hello/source.mk | 1 + tests/pub_import_hello.ek | 6 ---- tests/refderef.ek | 12 ------- tests/refderef/refderef.ek | 12 +++++++ tests/refderef/source.mk | 1 + tests/rvalue.ek | 7 ---- tests/rvalue/rvalue.ek | 7 ++++ tests/rvalue/source.mk | 1 + tests/scripts/gen-simple | 14 ++++++++ tests/scripts/gen-simple-xfail | 29 ++++++++++++++++ tests/scripts/makefile | 16 +++++++++ tests/struct_call.ek | 25 -------------- tests/struct_call/source.mk | 1 + tests/struct_call/struct_call.ek | 25 ++++++++++++++ tests/struct_call_ref.ek | 30 ---------------- tests/struct_call_ref/source.mk | 1 + tests/struct_call_ref/struct_call_ref.ek | 30 ++++++++++++++++ tests/struct_cont/source.mk | 1 + tests/struct_cont/struct_cont.ek | 3 ++ tests/structs.ek | 23 ------------- tests/structs/source.mk | 1 + tests/structs/structs.ek | 23 +++++++++++++ tests/trait_expand.ek | 21 ------------ tests/trait_expand/source.mk | 1 + tests/trait_expand/trait_expand.ek | 21 ++++++++++++ tests/trait_multiple_expand.ek | 26 -------------- tests/trait_multiple_expand/source.mk | 1 + .../trait_multiple_expand/trait_multiple_expand.ek | 26 ++++++++++++++ tests/trait_recursive_expand.ek | 8 ----- tests/trait_recursive_expand/source.mk | 1 + .../trait_recursive_expand.ek | 8 +++++ tests/ufcs.ek | 12 ------- tests/ufcs/source.mk | 1 + tests/ufcs/ufcs.ek | 12 +++++++ tests/variadic.ek | 16 --------- tests/variadic/source.mk | 1 + tests/variadic/variadic.ek | 16 +++++++++ tests/vars.ek | 33 ------------------ 103 files changed, 621 insertions(+), 567 deletions(-) create mode 100644 tests/Makefile delete mode 100644 tests/alias.ek create mode 100644 tests/alias/alias.ek create mode 100644 tests/alias/source.mk delete mode 100644 tests/call.ek create mode 100644 tests/call/call.ek create mode 100644 tests/call/source.mk delete mode 100644 tests/callbacks.ek create mode 100644 tests/callbacks/callbacks.ek create mode 100644 tests/callbacks/source.mk delete mode 100755 tests/check.sh delete mode 100644 tests/defer.ek create mode 100644 tests/defer/defer.ek create mode 100644 tests/defer/source.mk delete mode 100644 tests/defer_shadow.ek create mode 100644 tests/defer_shadow/defer_shadow.ek create mode 100644 tests/defer_shadow/source.mk delete mode 100644 tests/empty.ek create mode 100644 tests/empty/empty.ek create mode 100644 tests/empty/source.mk delete mode 100644 tests/enums.ek create mode 100644 tests/enums/enums.ek create mode 100644 tests/enums/source.mk delete mode 100644 tests/fib.ek create mode 100644 tests/fib/fib.ek create mode 100644 tests/fib/source.mk delete mode 100644 tests/generic.ek create mode 100644 tests/generic/generic.ek create mode 100644 tests/generic/source.mk delete mode 100644 tests/generic_defer.ek create mode 100644 tests/generic_defer/generic_defer.ek create mode 100644 tests/generic_defer/source.mk delete mode 100644 tests/if.ek create mode 100644 tests/if/if.ek create mode 100644 tests/if/source.mk delete mode 100644 tests/if2.ek create mode 100644 tests/if2/if2.ek create mode 100644 tests/if2/source.mk delete mode 100644 tests/import/priv_hello.ek delete mode 100644 tests/import/pub_hello.ek delete mode 100644 tests/import/pub_import_hello.ek delete mode 100644 tests/loop.ek create mode 100644 tests/loop/loop.ek create mode 100644 tests/loop/source.mk delete mode 100644 tests/main.ek create mode 100644 tests/main/main.ek create mode 100644 tests/main/source.mk delete mode 100644 tests/nested_structs.ek create mode 100644 tests/nested_structs/nested_structs.ek create mode 100644 tests/nested_structs/source.mk delete mode 100644 tests/parse/struct_cont.ek delete mode 100644 tests/pointer_literal.ek create mode 100644 tests/pointer_literal/pointer_literal.ek create mode 100644 tests/pointer_literal/source.mk delete mode 100644 tests/priv_hello.ek create mode 100644 tests/priv_hello/check.mk create mode 100644 tests/priv_hello/import/priv_hello.ek create mode 100644 tests/priv_hello/priv_hello.ek create mode 100644 tests/priv_hello/source.mk delete mode 100644 tests/ptr.ek create mode 100644 tests/ptr/ptr.ek create mode 100644 tests/ptr/source.mk delete mode 100644 tests/pub_hello.ek create mode 100644 tests/pub_hello/import/pub_hello.ek create mode 100644 tests/pub_hello/pub_hello.ek create mode 100644 tests/pub_hello/source.mk delete mode 100644 tests/pub_import_hello.ek delete mode 100644 tests/refderef.ek create mode 100644 tests/refderef/refderef.ek create mode 100644 tests/refderef/source.mk delete mode 100644 tests/rvalue.ek create mode 100644 tests/rvalue/rvalue.ek create mode 100644 tests/rvalue/source.mk create mode 100755 tests/scripts/gen-simple create mode 100755 tests/scripts/gen-simple-xfail create mode 100644 tests/scripts/makefile delete mode 100644 tests/struct_call.ek create mode 100644 tests/struct_call/source.mk create mode 100644 tests/struct_call/struct_call.ek delete mode 100644 tests/struct_call_ref.ek create mode 100644 tests/struct_call_ref/source.mk create mode 100644 tests/struct_call_ref/struct_call_ref.ek create mode 100644 tests/struct_cont/source.mk create mode 100644 tests/struct_cont/struct_cont.ek delete mode 100644 tests/structs.ek create mode 100644 tests/structs/source.mk create mode 100644 tests/structs/structs.ek delete mode 100644 tests/trait_expand.ek create mode 100644 tests/trait_expand/source.mk create mode 100644 tests/trait_expand/trait_expand.ek delete mode 100644 tests/trait_multiple_expand.ek create mode 100644 tests/trait_multiple_expand/source.mk create mode 100644 tests/trait_multiple_expand/trait_multiple_expand.ek delete mode 100644 tests/trait_recursive_expand.ek create mode 100644 tests/trait_recursive_expand/source.mk create mode 100644 tests/trait_recursive_expand/trait_recursive_expand.ek delete mode 100644 tests/ufcs.ek create mode 100644 tests/ufcs/source.mk create mode 100644 tests/ufcs/ufcs.ek delete mode 100644 tests/variadic.ek create mode 100644 tests/variadic/source.mk create mode 100644 tests/variadic/variadic.ek delete mode 100644 tests/vars.ek (limited to 'tests') diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..9741247 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,40 @@ +check: + $(MAKE) -f scripts/makefile check + +.DEFAULT: + $(MAKE) -f scripts/makefile $< + +SOURCES != echo */source.mk +DO != echo -n > tests.mk && rm -rf reports + +# hmm, initially I had each test call a gen-simple with command line arguments +# and all but thought that running a script for each test would be too slow, so +# I tried to simplify things by making the trivial cases just append a string to +# a make variable. Apparently it didn't end up having a significant effect since +# the bottleneck was actually my SSD write speed, since all output from the test +# programs gets collected. +# +# I guess the previous approach was slightly less hacky but I'll go with this +# for now, at least it (probably) scales slightly better :) More exotic tests +# can still generate their own test cases fairly easily + +# basic tests that shouldn't cause the return code to be nonzero +SIMPLE := +# simple tests where we expect the compiler to error out with some message, +# see tests/empty for an example of usage +SIMPLE_XFAIL := + +include $(SOURCES) + +# pass through xargs to 'trick' it into expanding each SIMPLE_XFAIL into a +# separate argument for the script, as make would otherwise just split at each space +# this way we can pass spaces as arguments to the generator scripts, pretty neat +# huh? +DO != echo "$(SIMPLE)" | xargs ./scripts/gen-simple +DO != echo "$(SIMPLE_XFAIL)" | xargs ./scripts/gen-simple-xfail + +RM ?= rm + +.PHONY: clean +clean: + $(RM) -rf reports diff --git a/tests/alias.ek b/tests/alias.ek deleted file mode 100644 index c6a26d6..0000000 --- a/tests/alias.ek +++ /dev/null @@ -1,9 +0,0 @@ -typedef i27 {} -typedef i9 {} - -typedef int i27; - -main() -{ - int a = 10 as i9; -} diff --git a/tests/alias/alias.ek b/tests/alias/alias.ek new file mode 100644 index 0000000..2066506 --- /dev/null +++ b/tests/alias/alias.ek @@ -0,0 +1,9 @@ +typedef i27 {} +typedef i9 {} + +typedef int i27; + +main() +{ + int a = 10 as i27; +} diff --git a/tests/alias/source.mk b/tests/alias/source.mk new file mode 100644 index 0000000..cc799ef --- /dev/null +++ b/tests/alias/source.mk @@ -0,0 +1 @@ +SIMPLE += alias diff --git a/tests/call.ek b/tests/call.ek deleted file mode 100644 index 86d6ed0..0000000 --- a/tests/call.ek +++ /dev/null @@ -1,11 +0,0 @@ -typedef i27 {} - -add(i27 a, i27 b => i27) -{ - return a + b; -} - -main() -{ - add(20 as i27, 40 as i27); -} diff --git a/tests/call/call.ek b/tests/call/call.ek new file mode 100644 index 0000000..86d6ed0 --- /dev/null +++ b/tests/call/call.ek @@ -0,0 +1,11 @@ +typedef i27 {} + +add(i27 a, i27 b => i27) +{ + return a + b; +} + +main() +{ + add(20 as i27, 40 as i27); +} diff --git a/tests/call/source.mk b/tests/call/source.mk new file mode 100644 index 0000000..3e9da8c --- /dev/null +++ b/tests/call/source.mk @@ -0,0 +1 @@ +SIMPLE += call diff --git a/tests/callbacks.ek b/tests/callbacks.ek deleted file mode 100644 index 927c122..0000000 --- a/tests/callbacks.ek +++ /dev/null @@ -1,16 +0,0 @@ -typedef i27 {} - -do_stuff(^(i27 => i27) proc => i27) -{ - return proc(20); -} - -other_proc(i27 a => i27) -{ - return a + 10; -} - -main() -{ - do_stuff(other_proc); -} diff --git a/tests/callbacks/callbacks.ek b/tests/callbacks/callbacks.ek new file mode 100644 index 0000000..927c122 --- /dev/null +++ b/tests/callbacks/callbacks.ek @@ -0,0 +1,16 @@ +typedef i27 {} + +do_stuff(^(i27 => i27) proc => i27) +{ + return proc(20); +} + +other_proc(i27 a => i27) +{ + return a + 10; +} + +main() +{ + do_stuff(other_proc); +} diff --git a/tests/callbacks/source.mk b/tests/callbacks/source.mk new file mode 100644 index 0000000..75a9fa8 --- /dev/null +++ b/tests/callbacks/source.mk @@ -0,0 +1 @@ +SIMPLE += callbacks diff --git a/tests/check.sh b/tests/check.sh deleted file mode 100755 index 397d36d..0000000 --- a/tests/check.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh - -echo > check.log - -tests=0 -passed=0 -failed=0 - -for file in $(echo check/*.cu) -do - testcase=$(echo "$file" | cut -f 1 -d '.') - expected="$testcase".ok - args=$(test -e "$testcase".args && cat "$testcase".args) - - echo -n testing "$testcase"... - - cmd="./cu "$args" "$file" -o check/run && ./check/run" - - tests=$((tests + 1)) - if test "$output" = "$expected" - then - passed=$((passed + 1)) - echo ok - else - failed=$((failed + 1)) - echo fail - fi; - - if test -n "$VERBOSE" - then - echo "$cmd" - fi -done - -echo -echo tests "$tests", passed "$passed", failed "$failed" diff --git a/tests/defer.ek b/tests/defer.ek deleted file mode 100644 index 839cc4d..0000000 --- a/tests/defer.ek +++ /dev/null @@ -1,23 +0,0 @@ -typedef i27 {}; -typedef i9 {}; -typedef bool {}; - -extern _putchar(i9 c); - -main() -{ - defer _putchar('S'); - for i9 i = 0 as i9; i < 10 as i9; i = i + 1 as i9 { - defer _putchar('0' + i); - - if i == 5 as i9 { continue; } - if i == 9 as i9 { defer _putchar('b'); break; } - } - - { - defer _putchar('g'); - goto end; - } - - end: -} diff --git a/tests/defer/defer.ek b/tests/defer/defer.ek new file mode 100644 index 0000000..839cc4d --- /dev/null +++ b/tests/defer/defer.ek @@ -0,0 +1,23 @@ +typedef i27 {}; +typedef i9 {}; +typedef bool {}; + +extern _putchar(i9 c); + +main() +{ + defer _putchar('S'); + for i9 i = 0 as i9; i < 10 as i9; i = i + 1 as i9 { + defer _putchar('0' + i); + + if i == 5 as i9 { continue; } + if i == 9 as i9 { defer _putchar('b'); break; } + } + + { + defer _putchar('g'); + goto end; + } + + end: +} diff --git a/tests/defer/source.mk b/tests/defer/source.mk new file mode 100644 index 0000000..5d0cf21 --- /dev/null +++ b/tests/defer/source.mk @@ -0,0 +1 @@ +SIMPLE += defer diff --git a/tests/defer_shadow.ek b/tests/defer_shadow.ek deleted file mode 100644 index 0e890a2..0000000 --- a/tests/defer_shadow.ek +++ /dev/null @@ -1,28 +0,0 @@ -typedef i9 {} -typedef i27 {} - -define any[] {} - -extern _putchar(i9 c); - -typedef some_struct[any T] { - test() - { - i9 a = 'a' as i9; - { - /* at this point, only a is defined */ - defer _putchar(a); - - /* a gets shadowed */ - i9 a = 'b' as i9; - - /* defer should still point to the outer 'a' */ - } - } -} - -main() -{ - some_struct![i9] test = some_struct![i9]{}; - test.test(); -} diff --git a/tests/defer_shadow/defer_shadow.ek b/tests/defer_shadow/defer_shadow.ek new file mode 100644 index 0000000..0e890a2 --- /dev/null +++ b/tests/defer_shadow/defer_shadow.ek @@ -0,0 +1,28 @@ +typedef i9 {} +typedef i27 {} + +define any[] {} + +extern _putchar(i9 c); + +typedef some_struct[any T] { + test() + { + i9 a = 'a' as i9; + { + /* at this point, only a is defined */ + defer _putchar(a); + + /* a gets shadowed */ + i9 a = 'b' as i9; + + /* defer should still point to the outer 'a' */ + } + } +} + +main() +{ + some_struct![i9] test = some_struct![i9]{}; + test.test(); +} diff --git a/tests/defer_shadow/source.mk b/tests/defer_shadow/source.mk new file mode 100644 index 0000000..30b5c23 --- /dev/null +++ b/tests/defer_shadow/source.mk @@ -0,0 +1 @@ +SIMPLE += defer_shadow diff --git a/tests/empty.ek b/tests/empty.ek deleted file mode 100644 index e69de29..0000000 diff --git a/tests/empty/empty.ek b/tests/empty/empty.ek new file mode 100644 index 0000000..e69de29 diff --git a/tests/empty/source.mk b/tests/empty/source.mk new file mode 100644 index 0000000..f7198f0 --- /dev/null +++ b/tests/empty/source.mk @@ -0,0 +1 @@ +SIMPLE_XFAIL += empty,'no main' diff --git a/tests/enums.ek b/tests/enums.ek deleted file mode 100644 index ef7850c..0000000 --- a/tests/enums.ek +++ /dev/null @@ -1,23 +0,0 @@ -typedef i27 { - add(i27 a, i27 b => i27) { - return a + b; - } -}; - -typedef i9 {}; - -enum A { - a = 200, - b -} - -enum B: i9 { - b, c -} - -main() -{ - const a = a::A; - const b = b::B; - const c = a.add(b as i27); -} diff --git a/tests/enums/enums.ek b/tests/enums/enums.ek new file mode 100644 index 0000000..ef7850c --- /dev/null +++ b/tests/enums/enums.ek @@ -0,0 +1,23 @@ +typedef i27 { + add(i27 a, i27 b => i27) { + return a + b; + } +}; + +typedef i9 {}; + +enum A { + a = 200, + b +} + +enum B: i9 { + b, c +} + +main() +{ + const a = a::A; + const b = b::B; + const c = a.add(b as i27); +} diff --git a/tests/enums/source.mk b/tests/enums/source.mk new file mode 100644 index 0000000..24ac839 --- /dev/null +++ b/tests/enums/source.mk @@ -0,0 +1 @@ +SIMPLE += enums diff --git a/tests/fib.ek b/tests/fib.ek deleted file mode 100644 index a9cc5fb..0000000 --- a/tests/fib.ek +++ /dev/null @@ -1,20 +0,0 @@ -typedef bool {} -typedef i27 {} -typedef i9 {} - -extern _putchar(i9 c); - -fib(i27 n => i27) -{ - if n < 2 { - return 1; - } - - return fib(n - 1) + fib(n - 2); -} - -main() -{ - _putchar('0' + fib(35) as i9); - _putchar('\n'); -} diff --git a/tests/fib/fib.ek b/tests/fib/fib.ek new file mode 100644 index 0000000..a9cc5fb --- /dev/null +++ b/tests/fib/fib.ek @@ -0,0 +1,20 @@ +typedef bool {} +typedef i27 {} +typedef i9 {} + +extern _putchar(i9 c); + +fib(i27 n => i27) +{ + if n < 2 { + return 1; + } + + return fib(n - 1) + fib(n - 2); +} + +main() +{ + _putchar('0' + fib(35) as i9); + _putchar('\n'); +} diff --git a/tests/fib/source.mk b/tests/fib/source.mk new file mode 100644 index 0000000..3957f6a --- /dev/null +++ b/tests/fib/source.mk @@ -0,0 +1 @@ +SIMPLE += fib diff --git a/tests/generic.ek b/tests/generic.ek deleted file mode 100644 index 065477e..0000000 --- a/tests/generic.ek +++ /dev/null @@ -1,14 +0,0 @@ -define any[] {} - -typedef i27 {} -typedef i9 {} - -typedef a[any T] { - T b; -} - -main() -{ - a![i27] a = a![i27]{.b = 10}; - a![i9] b = a![i9]{.b = 20 as i9}; -} diff --git a/tests/generic/generic.ek b/tests/generic/generic.ek new file mode 100644 index 0000000..065477e --- /dev/null +++ b/tests/generic/generic.ek @@ -0,0 +1,14 @@ +define any[] {} + +typedef i27 {} +typedef i9 {} + +typedef a[any T] { + T b; +} + +main() +{ + a![i27] a = a![i27]{.b = 10}; + a![i9] b = a![i9]{.b = 20 as i9}; +} diff --git a/tests/generic/source.mk b/tests/generic/source.mk new file mode 100644 index 0000000..31e7427 --- /dev/null +++ b/tests/generic/source.mk @@ -0,0 +1 @@ +SIMPLE += generic diff --git a/tests/generic_defer.ek b/tests/generic_defer.ek deleted file mode 100644 index cb11154..0000000 --- a/tests/generic_defer.ek +++ /dev/null @@ -1,20 +0,0 @@ -define any[] {} - -typedef i27 {} -typedef i9 {} - -typedef a[any T] { - T b; - do_stuff() { - defer do_stuff(); - } -} - -main() -{ - a![i27] a = a![i27]{.b = 10}; - a.do_stuff(); - - a![i9] b = a![i9]{.b = 20 as i9}; - b.do_stuff(); -} diff --git a/tests/generic_defer/generic_defer.ek b/tests/generic_defer/generic_defer.ek new file mode 100644 index 0000000..cb11154 --- /dev/null +++ b/tests/generic_defer/generic_defer.ek @@ -0,0 +1,20 @@ +define any[] {} + +typedef i27 {} +typedef i9 {} + +typedef a[any T] { + T b; + do_stuff() { + defer do_stuff(); + } +} + +main() +{ + a![i27] a = a![i27]{.b = 10}; + a.do_stuff(); + + a![i9] b = a![i9]{.b = 20 as i9}; + b.do_stuff(); +} diff --git a/tests/generic_defer/source.mk b/tests/generic_defer/source.mk new file mode 100644 index 0000000..b0a041d --- /dev/null +++ b/tests/generic_defer/source.mk @@ -0,0 +1 @@ +SIMPLE += generic_defer diff --git a/tests/if.ek b/tests/if.ek deleted file mode 100644 index e3e08d7..0000000 --- a/tests/if.ek +++ /dev/null @@ -1,24 +0,0 @@ -typedef i9 {} -typedef i27 {} -typedef ptr {} - -putchar(i9 c) -{ - *i9 p = 19683 as *i9; - p* = c; -} - -main() -{ - if 0 { - putchar('0'); - } - else if 1 { - putchar('1'); - } - else { - putchar('2'); - } - - putchar('\n'); -} diff --git a/tests/if/if.ek b/tests/if/if.ek new file mode 100644 index 0000000..e3e08d7 --- /dev/null +++ b/tests/if/if.ek @@ -0,0 +1,24 @@ +typedef i9 {} +typedef i27 {} +typedef ptr {} + +putchar(i9 c) +{ + *i9 p = 19683 as *i9; + p* = c; +} + +main() +{ + if 0 { + putchar('0'); + } + else if 1 { + putchar('1'); + } + else { + putchar('2'); + } + + putchar('\n'); +} diff --git a/tests/if/source.mk b/tests/if/source.mk new file mode 100644 index 0000000..8e1fdde --- /dev/null +++ b/tests/if/source.mk @@ -0,0 +1 @@ +SIMPLE += if diff --git a/tests/if2.ek b/tests/if2.ek deleted file mode 100644 index 0932155..0000000 --- a/tests/if2.ek +++ /dev/null @@ -1,31 +0,0 @@ -typedef i9 {} -typedef i27 {} -typedef bool {} -typedef ptr {} - -putchar(i9 c) -{ - *i9 p = 19683 as *i9; - p* = c; -} - -main() -{ - if 0 { - for i27 i = 0; i < 5; i = i + 1 { - putchar('0' + i as i9); - } - } - else if 1 { - for i27 i = 0; i < 5; i = i + 1 { - putchar('A' + i as i9); - } - } - else { - for i27 i = 0; i < 5; i = i + 1 { - putchar('K' + i as i9); - } - } - - putchar('\n'); -} diff --git a/tests/if2/if2.ek b/tests/if2/if2.ek new file mode 100644 index 0000000..0932155 --- /dev/null +++ b/tests/if2/if2.ek @@ -0,0 +1,31 @@ +typedef i9 {} +typedef i27 {} +typedef bool {} +typedef ptr {} + +putchar(i9 c) +{ + *i9 p = 19683 as *i9; + p* = c; +} + +main() +{ + if 0 { + for i27 i = 0; i < 5; i = i + 1 { + putchar('0' + i as i9); + } + } + else if 1 { + for i27 i = 0; i < 5; i = i + 1 { + putchar('A' + i as i9); + } + } + else { + for i27 i = 0; i < 5; i = i + 1 { + putchar('K' + i as i9); + } + } + + putchar('\n'); +} diff --git a/tests/if2/source.mk b/tests/if2/source.mk new file mode 100644 index 0000000..6fabbe9 --- /dev/null +++ b/tests/if2/source.mk @@ -0,0 +1 @@ +SIMPLE += if2 diff --git a/tests/import/priv_hello.ek b/tests/import/priv_hello.ek deleted file mode 100644 index 970efcd..0000000 --- a/tests/import/priv_hello.ek +++ /dev/null @@ -1 +0,0 @@ -hello(){} diff --git a/tests/import/pub_hello.ek b/tests/import/pub_hello.ek deleted file mode 100644 index f26624e..0000000 --- a/tests/import/pub_hello.ek +++ /dev/null @@ -1 +0,0 @@ -pub hello(){} diff --git a/tests/import/pub_import_hello.ek b/tests/import/pub_import_hello.ek deleted file mode 100644 index 839f83a..0000000 --- a/tests/import/pub_import_hello.ek +++ /dev/null @@ -1 +0,0 @@ -pub import "pub_hello.ek"; diff --git a/tests/loop.ek b/tests/loop.ek deleted file mode 100644 index 6ecf439..0000000 --- a/tests/loop.ek +++ /dev/null @@ -1,17 +0,0 @@ -typedef i9 {} -typedef i27 {} -typedef bool {} -typedef ptr {} - -putchar(i9 c) -{ - *i9 p = 19683 as *i9; - p* = c; -} - -main() -{ - for i27 i = 0; i < 5; i = i + 1 { - putchar('A' + (i as i9)); - } -} diff --git a/tests/loop/loop.ek b/tests/loop/loop.ek new file mode 100644 index 0000000..6ecf439 --- /dev/null +++ b/tests/loop/loop.ek @@ -0,0 +1,17 @@ +typedef i9 {} +typedef i27 {} +typedef bool {} +typedef ptr {} + +putchar(i9 c) +{ + *i9 p = 19683 as *i9; + p* = c; +} + +main() +{ + for i27 i = 0; i < 5; i = i + 1 { + putchar('A' + (i as i9)); + } +} diff --git a/tests/loop/source.mk b/tests/loop/source.mk new file mode 100644 index 0000000..0796330 --- /dev/null +++ b/tests/loop/source.mk @@ -0,0 +1 @@ +SIMPLE += loop diff --git a/tests/main.ek b/tests/main.ek deleted file mode 100644 index 05437c5..0000000 --- a/tests/main.ek +++ /dev/null @@ -1 +0,0 @@ -main(){} diff --git a/tests/main/main.ek b/tests/main/main.ek new file mode 100644 index 0000000..05437c5 --- /dev/null +++ b/tests/main/main.ek @@ -0,0 +1 @@ +main(){} diff --git a/tests/main/source.mk b/tests/main/source.mk new file mode 100644 index 0000000..7cc0734 --- /dev/null +++ b/tests/main/source.mk @@ -0,0 +1 @@ +SIMPLE += main diff --git a/tests/nested_structs.ek b/tests/nested_structs.ek deleted file mode 100644 index 1429a77..0000000 --- a/tests/nested_structs.ek +++ /dev/null @@ -1,17 +0,0 @@ -typedef i27 {} -typedef i9 {} - -typedef a { - i27 a; - i27 b; -} - -typedef b { - a a; - i27 b; -} - -main() -{ - mut p = b!{.a = a!{.a = 1, .b = 2}, .b = 3}; -} diff --git a/tests/nested_structs/nested_structs.ek b/tests/nested_structs/nested_structs.ek new file mode 100644 index 0000000..1429a77 --- /dev/null +++ b/tests/nested_structs/nested_structs.ek @@ -0,0 +1,17 @@ +typedef i27 {} +typedef i9 {} + +typedef a { + i27 a; + i27 b; +} + +typedef b { + a a; + i27 b; +} + +main() +{ + mut p = b!{.a = a!{.a = 1, .b = 2}, .b = 3}; +} diff --git a/tests/nested_structs/source.mk b/tests/nested_structs/source.mk new file mode 100644 index 0000000..9632763 --- /dev/null +++ b/tests/nested_structs/source.mk @@ -0,0 +1 @@ +SIMPLE += nested_structs diff --git a/tests/parse/struct_cont.ek b/tests/parse/struct_cont.ek deleted file mode 100644 index f4799aa..0000000 --- a/tests/parse/struct_cont.ek +++ /dev/null @@ -1,3 +0,0 @@ -typedef i27 {} -continue i27 { -} diff --git a/tests/pointer_literal.ek b/tests/pointer_literal.ek deleted file mode 100644 index ade7988..0000000 --- a/tests/pointer_literal.ek +++ /dev/null @@ -1,9 +0,0 @@ -typedef i9 {} -typedef i27 {} -typedef ptr {} - -main() -{ - *i9 p = 19683 as *i9; - p* = 'A' as i9; -} diff --git a/tests/pointer_literal/pointer_literal.ek b/tests/pointer_literal/pointer_literal.ek new file mode 100644 index 0000000..ade7988 --- /dev/null +++ b/tests/pointer_literal/pointer_literal.ek @@ -0,0 +1,9 @@ +typedef i9 {} +typedef i27 {} +typedef ptr {} + +main() +{ + *i9 p = 19683 as *i9; + p* = 'A' as i9; +} diff --git a/tests/pointer_literal/source.mk b/tests/pointer_literal/source.mk new file mode 100644 index 0000000..49e52a9 --- /dev/null +++ b/tests/pointer_literal/source.mk @@ -0,0 +1 @@ +SIMPLE += pointer_literal diff --git a/tests/priv_hello.ek b/tests/priv_hello.ek deleted file mode 100644 index fe6fa86..0000000 --- a/tests/priv_hello.ek +++ /dev/null @@ -1,7 +0,0 @@ -import "import/priv_hello.ek" - -main() -{ - /* expect this to fail */ - hello(); -} diff --git a/tests/priv_hello/check.mk b/tests/priv_hello/check.mk new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tests/priv_hello/check.mk @@ -0,0 +1 @@ + diff --git a/tests/priv_hello/import/priv_hello.ek b/tests/priv_hello/import/priv_hello.ek new file mode 100644 index 0000000..970efcd --- /dev/null +++ b/tests/priv_hello/import/priv_hello.ek @@ -0,0 +1 @@ +hello(){} diff --git a/tests/priv_hello/priv_hello.ek b/tests/priv_hello/priv_hello.ek new file mode 100644 index 0000000..fe6fa86 --- /dev/null +++ b/tests/priv_hello/priv_hello.ek @@ -0,0 +1,7 @@ +import "import/priv_hello.ek" + +main() +{ + /* expect this to fail */ + hello(); +} diff --git a/tests/priv_hello/source.mk b/tests/priv_hello/source.mk new file mode 100644 index 0000000..b2160b2 --- /dev/null +++ b/tests/priv_hello/source.mk @@ -0,0 +1 @@ +SIMPLE_XFAIL += priv_hello,'no such symbol' diff --git a/tests/ptr.ek b/tests/ptr.ek deleted file mode 100644 index 86f413c..0000000 --- a/tests/ptr.ek +++ /dev/null @@ -1,30 +0,0 @@ -typedef bool {} - -typedef i27 { - cmp![]; - eq(i27 a, i27 b => bool) { - return a == b; - } -} - -typedef ptr { - cmp![]; - eq(ptr a, ptr b => bool) { - return a == b; - } -} - -typedef test[cmp T] {} - -define cmp[] { - eq(cmp, cmp => bool); -} - -main() -{ - const a = test![i27]{}; - 20.eq(20); - - const b = test![*i27]{}; - a&.eq(a&); -} diff --git a/tests/ptr/ptr.ek b/tests/ptr/ptr.ek new file mode 100644 index 0000000..86f413c --- /dev/null +++ b/tests/ptr/ptr.ek @@ -0,0 +1,30 @@ +typedef bool {} + +typedef i27 { + cmp![]; + eq(i27 a, i27 b => bool) { + return a == b; + } +} + +typedef ptr { + cmp![]; + eq(ptr a, ptr b => bool) { + return a == b; + } +} + +typedef test[cmp T] {} + +define cmp[] { + eq(cmp, cmp => bool); +} + +main() +{ + const a = test![i27]{}; + 20.eq(20); + + const b = test![*i27]{}; + a&.eq(a&); +} diff --git a/tests/ptr/source.mk b/tests/ptr/source.mk new file mode 100644 index 0000000..abdd059 --- /dev/null +++ b/tests/ptr/source.mk @@ -0,0 +1 @@ +SIMPLE += ptr diff --git a/tests/pub_hello.ek b/tests/pub_hello.ek deleted file mode 100644 index 9dd65d2..0000000 --- a/tests/pub_hello.ek +++ /dev/null @@ -1,6 +0,0 @@ -import "import/pub_hello.ek"; - -main() -{ - hello(); -} diff --git a/tests/pub_hello/import/pub_hello.ek b/tests/pub_hello/import/pub_hello.ek new file mode 100644 index 0000000..f26624e --- /dev/null +++ b/tests/pub_hello/import/pub_hello.ek @@ -0,0 +1 @@ +pub hello(){} diff --git a/tests/pub_hello/pub_hello.ek b/tests/pub_hello/pub_hello.ek new file mode 100644 index 0000000..9dd65d2 --- /dev/null +++ b/tests/pub_hello/pub_hello.ek @@ -0,0 +1,6 @@ +import "import/pub_hello.ek"; + +main() +{ + hello(); +} diff --git a/tests/pub_hello/source.mk b/tests/pub_hello/source.mk new file mode 100644 index 0000000..470342b --- /dev/null +++ b/tests/pub_hello/source.mk @@ -0,0 +1 @@ +SIMPLE += pub_hello diff --git a/tests/pub_import_hello.ek b/tests/pub_import_hello.ek deleted file mode 100644 index 7765efb..0000000 --- a/tests/pub_import_hello.ek +++ /dev/null @@ -1,6 +0,0 @@ -import "import/pub_import_hello.ek"; - -main() -{ - hello(); -} diff --git a/tests/refderef.ek b/tests/refderef.ek deleted file mode 100644 index ff020e7..0000000 --- a/tests/refderef.ek +++ /dev/null @@ -1,12 +0,0 @@ -typedef i9 {} -typedef i27 {} -typedef ptr {} - -main() -{ - *i9 p = 0 as *i9; - *i9 a = p*&; - a = p*&*&; - a = p&*; - i9 b = p&**&*; -} diff --git a/tests/refderef/refderef.ek b/tests/refderef/refderef.ek new file mode 100644 index 0000000..ff020e7 --- /dev/null +++ b/tests/refderef/refderef.ek @@ -0,0 +1,12 @@ +typedef i9 {} +typedef i27 {} +typedef ptr {} + +main() +{ + *i9 p = 0 as *i9; + *i9 a = p*&; + a = p*&*&; + a = p&*; + i9 b = p&**&*; +} diff --git a/tests/refderef/source.mk b/tests/refderef/source.mk new file mode 100644 index 0000000..840eb16 --- /dev/null +++ b/tests/refderef/source.mk @@ -0,0 +1 @@ +SIMPLE += refderef diff --git a/tests/rvalue.ek b/tests/rvalue.ek deleted file mode 100644 index 4864fae..0000000 --- a/tests/rvalue.ek +++ /dev/null @@ -1,7 +0,0 @@ -typedef i27 {} - -main() -{ - /* should parse, but give an error about lvalue vs rvalue */ - 20 = 20; -} diff --git a/tests/rvalue/rvalue.ek b/tests/rvalue/rvalue.ek new file mode 100644 index 0000000..4864fae --- /dev/null +++ b/tests/rvalue/rvalue.ek @@ -0,0 +1,7 @@ +typedef i27 {} + +main() +{ + /* should parse, but give an error about lvalue vs rvalue */ + 20 = 20; +} diff --git a/tests/rvalue/source.mk b/tests/rvalue/source.mk new file mode 100644 index 0000000..2b2fba6 --- /dev/null +++ b/tests/rvalue/source.mk @@ -0,0 +1 @@ +SIMPLE_XFAIL += rvalue,'rvalue used where lvalue required' diff --git a/tests/scripts/gen-simple b/tests/scripts/gen-simple new file mode 100755 index 0000000..cf4c35c --- /dev/null +++ b/tests/scripts/gen-simple @@ -0,0 +1,14 @@ +#!/bin/sh + +mkdir -p $(for d in "${@}"; do echo "$d"; done | uniq | sed "s|^|reports/|") + +for s in "${@}" +do + echo ".PHONY: $s" >> tests.mk + echo "$s:" >> tests.mk + echo " @../ek $s/$s.ek > reports/$s/log 2>&1\\" >> tests.mk + echo " && echo OK > reports/$s/OK \\" >> tests.mk + echo " || echo ERR > reports/$s/OK" >> tests.mk +done + +echo "TESTS += " "${@}" >> tests.mk diff --git a/tests/scripts/gen-simple-xfail b/tests/scripts/gen-simple-xfail new file mode 100755 index 0000000..bb8c5ae --- /dev/null +++ b/tests/scripts/gen-simple-xfail @@ -0,0 +1,29 @@ +#!/bin/sh + +mkdir -p $(for d in "${@}"; do echo "$d"; done \ + | sed "s|,.*||" | uniq | sed "s|^|reports/|") + +for s in "${@}" +do + NAME=${s%%,*} + EMSG=${s#${NAME},} + echo ".PHONY: $NAME" >> tests.mk + echo "$NAME:" >> tests.mk + echo " @../ek $NAME/$NAME.ek > reports/$NAME/log 2>&1 \\" >> tests.mk + echo " && echo 'Wrong retval' > reports/$NAME/OK \\" >> tests.mk + echo " || :" >> tests.mk + echo " @grep '$EMSG' reports/$NAME/log > /dev/null; \\" >> tests.mk + echo " [ \$\$? -eq 0 ] \\" >> tests.mk + echo " && echo OK > reports/$NAME/OK \\" >> tests.mk + echo " || echo EMSG > reports/$NAME/OK" >> tests.mk +done + +echo -n "TESTS +=" >> tests.mk +for s in "${@}" +do + NAME=${s%%,*} + echo -n " $NAME" >> tests.mk +done + +# append newline +echo "" >> tests.mk diff --git a/tests/scripts/makefile b/tests/scripts/makefile new file mode 100644 index 0000000..a85d373 --- /dev/null +++ b/tests/scripts/makefile @@ -0,0 +1,16 @@ +.PHONY: all +all: check + +TESTS := +include tests.mk + +.PHONY: check +check: $(TESTS) + @cd reports; for d in * ; do \ + if [ ! -f "$$d/OK" ]; then \ + echo "BROKEN: $$d" ; \ + elif [ "$$(tail -n1 $$d/OK)" != "OK" ]; then \ + echo "FAIL: $$d" ; \ + fi \ + done + @echo "Done." diff --git a/tests/struct_call.ek b/tests/struct_call.ek deleted file mode 100644 index 7d2559b..0000000 --- a/tests/struct_call.ek +++ /dev/null @@ -1,25 +0,0 @@ -typedef i27 {} -typedef i9 {} - -typedef int_pair { - i27 a; - i27 b; -} - -extern _putchar(i9 c); - -add_int_pair(int_pair a, int_pair b => int_pair) -{ - return int_pair!{.a = a.a + b.a, .b = a.b + b.b}; -} - -main() -{ - mut a = int_pair!{.a = 1, .b = 2}; - mut b = int_pair!{.a = 3, .b = 4}; - - mut n = add_int_pair(a, b); - _putchar('0' + n.a as i9); - _putchar('0' + n.b as i9); - _putchar('\n'); -} diff --git a/tests/struct_call/source.mk b/tests/struct_call/source.mk new file mode 100644 index 0000000..fccd735 --- /dev/null +++ b/tests/struct_call/source.mk @@ -0,0 +1 @@ +SIMPLE += struct_call diff --git a/tests/struct_call/struct_call.ek b/tests/struct_call/struct_call.ek new file mode 100644 index 0000000..7d2559b --- /dev/null +++ b/tests/struct_call/struct_call.ek @@ -0,0 +1,25 @@ +typedef i27 {} +typedef i9 {} + +typedef int_pair { + i27 a; + i27 b; +} + +extern _putchar(i9 c); + +add_int_pair(int_pair a, int_pair b => int_pair) +{ + return int_pair!{.a = a.a + b.a, .b = a.b + b.b}; +} + +main() +{ + mut a = int_pair!{.a = 1, .b = 2}; + mut b = int_pair!{.a = 3, .b = 4}; + + mut n = add_int_pair(a, b); + _putchar('0' + n.a as i9); + _putchar('0' + n.b as i9); + _putchar('\n'); +} diff --git a/tests/struct_call_ref.ek b/tests/struct_call_ref.ek deleted file mode 100644 index e1ec9d9..0000000 --- a/tests/struct_call_ref.ek +++ /dev/null @@ -1,30 +0,0 @@ -typedef ptr {} -typedef i27 {} -typedef i9 {} - -typedef int_pair { - i27 a; - i27 b; -} - -extern _putchar(i9 c); - -add_int_pair_self(*int_pair a, *int_pair b) -{ - a*.a = a*.a + b*.a; - a*.b = a*.b + b*.b; -} - -main() -{ - mut a = int_pair!{.a = 1, .b = 2}; - mut b = int_pair!{.a = 3, .b = 4}; - - add_int_pair_self(a&, b&); - - _putchar('0' + a.a as i9); - _putchar('0' + a.b as i9); - _putchar('0' + b.a as i9); - _putchar('0' + b.b as i9); - _putchar('\n'); -} diff --git a/tests/struct_call_ref/source.mk b/tests/struct_call_ref/source.mk new file mode 100644 index 0000000..115eb3b --- /dev/null +++ b/tests/struct_call_ref/source.mk @@ -0,0 +1 @@ +SIMPLE += struct_call_ref diff --git a/tests/struct_call_ref/struct_call_ref.ek b/tests/struct_call_ref/struct_call_ref.ek new file mode 100644 index 0000000..e1ec9d9 --- /dev/null +++ b/tests/struct_call_ref/struct_call_ref.ek @@ -0,0 +1,30 @@ +typedef ptr {} +typedef i27 {} +typedef i9 {} + +typedef int_pair { + i27 a; + i27 b; +} + +extern _putchar(i9 c); + +add_int_pair_self(*int_pair a, *int_pair b) +{ + a*.a = a*.a + b*.a; + a*.b = a*.b + b*.b; +} + +main() +{ + mut a = int_pair!{.a = 1, .b = 2}; + mut b = int_pair!{.a = 3, .b = 4}; + + add_int_pair_self(a&, b&); + + _putchar('0' + a.a as i9); + _putchar('0' + a.b as i9); + _putchar('0' + b.a as i9); + _putchar('0' + b.b as i9); + _putchar('\n'); +} diff --git a/tests/struct_cont/source.mk b/tests/struct_cont/source.mk new file mode 100644 index 0000000..b986282 --- /dev/null +++ b/tests/struct_cont/source.mk @@ -0,0 +1 @@ +SIMPLE_XFAIL += struct_cont,'unknown top element' diff --git a/tests/struct_cont/struct_cont.ek b/tests/struct_cont/struct_cont.ek new file mode 100644 index 0000000..f4799aa --- /dev/null +++ b/tests/struct_cont/struct_cont.ek @@ -0,0 +1,3 @@ +typedef i27 {} +continue i27 { +} diff --git a/tests/structs.ek b/tests/structs.ek deleted file mode 100644 index 13399b3..0000000 --- a/tests/structs.ek +++ /dev/null @@ -1,23 +0,0 @@ -typedef ptr {} -typedef i27 {} -typedef i9 {} - -typedef int_pair { - i27 a; - i27 b; - - sum(*int_pair self => i27) - { - return self*.a + self*.b; - } -} - -extern _putchar(i9 c); - -main() -{ - mut p = int_pair!{.a = 1, .b = 2}; - i27 s = p.sum(); - _putchar('0' + s as i9); - _putchar('\n'); -} diff --git a/tests/structs/source.mk b/tests/structs/source.mk new file mode 100644 index 0000000..cc89d06 --- /dev/null +++ b/tests/structs/source.mk @@ -0,0 +1 @@ +SIMPLE += structs diff --git a/tests/structs/structs.ek b/tests/structs/structs.ek new file mode 100644 index 0000000..13399b3 --- /dev/null +++ b/tests/structs/structs.ek @@ -0,0 +1,23 @@ +typedef ptr {} +typedef i27 {} +typedef i9 {} + +typedef int_pair { + i27 a; + i27 b; + + sum(*int_pair self => i27) + { + return self*.a + self*.b; + } +} + +extern _putchar(i9 c); + +main() +{ + mut p = int_pair!{.a = 1, .b = 2}; + i27 s = p.sum(); + _putchar('0' + s as i9); + _putchar('\n'); +} diff --git a/tests/trait_expand.ek b/tests/trait_expand.ek deleted file mode 100644 index c5f0f1c..0000000 --- a/tests/trait_expand.ek +++ /dev/null @@ -1,21 +0,0 @@ -typedef ptr {} - -define b[] { - a![]; -} - -define a[] { - a(*a a); -} - -typedef c { - b![]; - - a(*c) {} -} - -main() -{ - c c = c!{}; - c.a(); -} diff --git a/tests/trait_expand/source.mk b/tests/trait_expand/source.mk new file mode 100644 index 0000000..7926a7c --- /dev/null +++ b/tests/trait_expand/source.mk @@ -0,0 +1 @@ +SIMPLE += trait_expand diff --git a/tests/trait_expand/trait_expand.ek b/tests/trait_expand/trait_expand.ek new file mode 100644 index 0000000..c5f0f1c --- /dev/null +++ b/tests/trait_expand/trait_expand.ek @@ -0,0 +1,21 @@ +typedef ptr {} + +define b[] { + a![]; +} + +define a[] { + a(*a a); +} + +typedef c { + b![]; + + a(*c) {} +} + +main() +{ + c c = c!{}; + c.a(); +} diff --git a/tests/trait_multiple_expand.ek b/tests/trait_multiple_expand.ek deleted file mode 100644 index 04e2b82..0000000 --- a/tests/trait_multiple_expand.ek +++ /dev/null @@ -1,26 +0,0 @@ -typedef ptr {} - -define b[] { - c![]; - a![]; -} - -define a[] { - c![]; - a(*a a); -} - -define c[] { - c(*c c); -} - -typedef d { - b![]; - c(*d d) {} -} - -main() -{ - d d = d!{}; - d.c(); -} diff --git a/tests/trait_multiple_expand/source.mk b/tests/trait_multiple_expand/source.mk new file mode 100644 index 0000000..f4e9516 --- /dev/null +++ b/tests/trait_multiple_expand/source.mk @@ -0,0 +1 @@ +SIMPLE += trait_multiple_expand diff --git a/tests/trait_multiple_expand/trait_multiple_expand.ek b/tests/trait_multiple_expand/trait_multiple_expand.ek new file mode 100644 index 0000000..04e2b82 --- /dev/null +++ b/tests/trait_multiple_expand/trait_multiple_expand.ek @@ -0,0 +1,26 @@ +typedef ptr {} + +define b[] { + c![]; + a![]; +} + +define a[] { + c![]; + a(*a a); +} + +define c[] { + c(*c c); +} + +typedef d { + b![]; + c(*d d) {} +} + +main() +{ + d d = d!{}; + d.c(); +} diff --git a/tests/trait_recursive_expand.ek b/tests/trait_recursive_expand.ek deleted file mode 100644 index 53012bf..0000000 --- a/tests/trait_recursive_expand.ek +++ /dev/null @@ -1,8 +0,0 @@ -define b[] { - a![]; -} - -define a[] { - b![]; - a(*a a); -} diff --git a/tests/trait_recursive_expand/source.mk b/tests/trait_recursive_expand/source.mk new file mode 100644 index 0000000..668408c --- /dev/null +++ b/tests/trait_recursive_expand/source.mk @@ -0,0 +1 @@ +SIMPLE_XFAIL += trait_recursive_expand,'recursive trait implementations not allowed' diff --git a/tests/trait_recursive_expand/trait_recursive_expand.ek b/tests/trait_recursive_expand/trait_recursive_expand.ek new file mode 100644 index 0000000..53012bf --- /dev/null +++ b/tests/trait_recursive_expand/trait_recursive_expand.ek @@ -0,0 +1,8 @@ +define b[] { + a![]; +} + +define a[] { + b![]; + a(*a a); +} diff --git a/tests/ufcs.ek b/tests/ufcs.ek deleted file mode 100644 index efa7701..0000000 --- a/tests/ufcs.ek +++ /dev/null @@ -1,12 +0,0 @@ -typedef ptr {} -typedef i27 { - add(*i27 self, i27 other => i27) - { - return self* + other; - } -} - -main() -{ - i27 a = 12.add(24); -} diff --git a/tests/ufcs/source.mk b/tests/ufcs/source.mk new file mode 100644 index 0000000..12e216d --- /dev/null +++ b/tests/ufcs/source.mk @@ -0,0 +1 @@ +SIMPLE += ufcs diff --git a/tests/ufcs/ufcs.ek b/tests/ufcs/ufcs.ek new file mode 100644 index 0000000..efa7701 --- /dev/null +++ b/tests/ufcs/ufcs.ek @@ -0,0 +1,12 @@ +typedef ptr {} +typedef i27 { + add(*i27 self, i27 other => i27) + { + return self* + other; + } +} + +main() +{ + i27 a = 12.add(24); +} diff --git a/tests/variadic.ek b/tests/variadic.ek deleted file mode 100644 index 0e9120c..0000000 --- a/tests/variadic.ek +++ /dev/null @@ -1,16 +0,0 @@ -typedef i27 {} - -define macro(a, b, ... c) -{ - mut sum = 0; - const for i : a, b, ... c { - sum += i; - } - - sum; -} - -main() -{ - macro!(1, 2, 3, 4); -} diff --git a/tests/variadic/source.mk b/tests/variadic/source.mk new file mode 100644 index 0000000..e7c2972 --- /dev/null +++ b/tests/variadic/source.mk @@ -0,0 +1 @@ +SIMPLE_XFAIL += variadic,'not yet implemented' diff --git a/tests/variadic/variadic.ek b/tests/variadic/variadic.ek new file mode 100644 index 0000000..0e9120c --- /dev/null +++ b/tests/variadic/variadic.ek @@ -0,0 +1,16 @@ +typedef i27 {} + +define macro(a, b, ... c) +{ + mut sum = 0; + const for i : a, b, ... c { + sum += i; + } + + sum; +} + +main() +{ + macro!(1, 2, 3, 4); +} diff --git a/tests/vars.ek b/tests/vars.ek deleted file mode 100644 index ad56213..0000000 --- a/tests/vars.ek +++ /dev/null @@ -1,33 +0,0 @@ -typedef any {} - -struct some_struct { - i64 a; -} - -struct some_template (any A) { - A a; -} - -main() -{ - i64 a = 20; - a = 200; - - some_struct b = {.a = 20}; - b = {.a = 200}; - - mut c = {.a = 20} as some_struct; - c = {.a = 200}; - - mut some_template d = {.a = 20}; - d = {.a = 200}; - - mut some_template![i64] e = {.a = 20}; - e = {.a = 200}; - - mut f = {.a = 20} as some_template; - f = {.a = 200}; - - mut g = {.a = 20} as some_template(i64); - g = {.a = 200}; -} -- cgit v1.3