diff options
| author | 2026-10-14 16:51:03 +0330 | |
|---|---|---|
| committer | 2026-10-14 16:51:03 +0330 | |
| commit | 82f8b735f966be69f9892350fb0a719f3fc436f1 (patch) | |
| tree | 5a6d7d3f226febfcbe5280f6da7796ef2ff2c6b2 /tests/conformance | |
| parent | lexer: a block comment that is never closed is 'unterminated comment' (append... (diff) | |
as: the type after as is read greedily in both compilers; x as int * y is a syntax error (appendix b.2.12 settled, no compiler change)
Diffstat (limited to 'tests/conformance')
| -rw-r--r-- | tests/conformance/3-expressions/cast_as_then_multiply_parenthesised.zc | 5 | ||||
| -rw-r--r-- | tests/conformance/9-appendix-b/b2_12_as_int_star.zc | 6 | ||||
| -rw-r--r-- | tests/conformance/known.txt | 1 |
3 files changed, 8 insertions, 4 deletions
diff --git a/tests/conformance/3-expressions/cast_as_then_multiply_parenthesised.zc b/tests/conformance/3-expressions/cast_as_then_multiply_parenthesised.zc new file mode 100644 index 0000000..ab11217 --- /dev/null +++ b/tests/conformance/3-expressions/cast_as_then_multiply_parenthesised.zc @@ -0,0 +1,5 @@ +// expect: 6/ +// spec 3.2.3: (x as int) * y multiplies +include rt; +void pn(int x) { rt.put_n(x); rt.put_c(10); } +fn main() { int x = 2; int y = 3; pn((x as int) * y); return 0; } diff --git a/tests/conformance/9-appendix-b/b2_12_as_int_star.zc b/tests/conformance/9-appendix-b/b2_12_as_int_star.zc index fc12792..da54802 100644 --- a/tests/conformance/9-appendix-b/b2_12_as_int_star.zc +++ b/tests/conformance/9-appendix-b/b2_12_as_int_star.zc @@ -1,6 +1,6 @@ -// expect: 6/ -// spec appendix b.2.12: x as int * y should multiply +// expect error: expected ')', found 'y' +// spec 3.2.3 and appendix b.2.12: the type after as is read greedily, so x as int * y reads int* and then fails; write (x as int) * y include rt; void pn(int x) { rt.put_n(x); rt.put_c(10); } fn main() { int x = 2; int y = 3; pn(x as int * y); return 0; } -// zc0: skip +// zc0: error diff --git a/tests/conformance/known.txt b/tests/conformance/known.txt index f666106..7cb703e 100644 --- a/tests/conformance/known.txt +++ b/tests/conformance/known.txt @@ -4,7 +4,6 @@ 4-statements/o3_outside_function_ordinary_block.zc zy c top-level o3 { } is rejected; spec 4.10.2 says it is an ordinary block 5-declarations/fn_prototype_unnamed_params_b13.zc zy c spec 5.2.1 says prototype parameter names are required, and a type name alone is read as an untyped parameter of that name (paramstart); b.2.13 is a spec choice, not fixed 9-appendix-b/b2_10_recovery_hides_errors.zc zy c appendix b.2.10 confirmed; by design per 8.2 -9-appendix-b/b2_12_as_int_star.zc zy c appendix b.2.12 confirmed, but spec 3.2.3 documents it (parenthesise) 9-appendix-b/b2_14_len_char_ptr_typecheck_off.zc zy c appendix b.2.14 confirmed, but spec 3.13.5 leaves it unspecified 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 |
