diff options
| author | 2026-10-14 16:51:28 +0330 | |
|---|---|---|
| committer | 2026-10-14 16:51:28 +0330 | |
| commit | 90f96d4d7e2eba0295dd799318caa7e7fcd8925e (patch) | |
| tree | 1b401b6ef889ef40456cb452d39add94a1cc93cf /tests | |
| parent | merge work/jit2: x86-64 jit inline enhancements (diff) | |
| parent | zc0: a store into a local embed array is an error (its elements are in the co... (diff) | |
merge work/xref: zc0 u*d redo and follow-ups
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/conformance/known.txt | 1 | ||||
| -rw-r--r-- | tests/programs/zc0embed_write.zc | 9 | ||||
| -rwxr-xr-x | tests/test.sh | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/tests/conformance/known.txt b/tests/conformance/known.txt index 9bec99b..54e7141 100644 --- a/tests/conformance/known.txt +++ b/tests/conformance/known.txt @@ -16,7 +16,6 @@ 9-appendix-b/b2_14_len_char_ptr_typecheck_off.zc zy a appendix b.2.14 confirmed 9-appendix-b/b2_15_duplicate_case.zc zy c appendix b.2.15 confirmed; 4.7.2 says duplicates are allowed 9-appendix-b/b2_16_local_const_in_const_expr.zc zy c appendix b.2.16 confirmed; 3.14.2 documents it -1-source/ident_tags_as_variables_glued_star.zc zc0 b u*d with visible u and d is read as a recast (no code); zy follows 1.6.3 2-types/conv_argument_and_return.zc zc0 b types are read and dropped: no conversion, no sized cut (appendix a) 2-types/conv_assignment_to_float.zc zc0 b types are read and dropped: no conversion, no sized cut (appendix a) 2-types/conv_f32_rounds.zc zc0 b types are read and dropped: no conversion, no sized cut (appendix a) diff --git a/tests/programs/zc0embed_write.zc b/tests/programs/zc0embed_write.zc new file mode 100644 index 0000000..09686b5 --- /dev/null +++ b/tests/programs/zc0embed_write.zc @@ -0,0 +1,9 @@ +include rt; +// zc0 keeps a local embed array in the code, so it refuses a store into one; the +// resident compiler accepts it (prints 9). tests/test.sh checks zc0's message. +fn main() { + embed "tests/data/embed/bytes.bin" as u8[] b; + b[1] = 9; + rt.put_n(b[1]); rt.put_c(10); + return 0; +} diff --git a/tests/test.sh b/tests/test.sh index cdce083..bc199e1 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -82,6 +82,7 @@ GI="-Isrc/core -I$MAP --embed-dir=$T/s1" # it, and the run-only and bare-metal sections read it as the reference. $CC -pthread -O2 -w -fwrapv -DJTYPE=int src/core/core.c src/core/io_linux.c $GI -o $T/zy || exit 1 chk "$($T/zc0 < tests/programs/zc0typed.zc | md5sum)" "$($T/zc0 < tests/programs/zc0plain.zc | md5sum)" "zc0 reads types and throws them away: typed and plain sources give one image" +case "$($T/zc0 < tests/programs/zc0embed_write.zc 2>&1 >/dev/null)" in *"line 6: a local embed array is part of the code"*) chk 1 1 "zc0 refuses a store into a local embed array";; *) chk 0 1 "zc0 refuses a store into a local embed array";; esac for n in $SECS; do mkdir -p $ROOT/$n |
