diff options
| author | zooster <r00ster91@proton.me> | 2022-08-18 18:54:51 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-18 19:54:51 +0300 |
| commit | 4055e6055b5c0727f5e85a30760c9bccf525f4de (patch) | |
| tree | 3295ef3babc22815422ced1f692bc98c9a43972d /test/cases/compile_errors/leading_zero_in_integer.zig | |
| parent | 2523b443a482d78fd1a31f5e6b0224fec03835e3 (diff) | |
| download | zig-4055e6055b5c0727f5e85a30760c9bccf525f4de.tar.gz zig-4055e6055b5c0727f5e85a30760c9bccf525f4de.zip | |
AstGen: disallow leading zeroes in int literals and int types
This makes `0123` and `u0123` etc. illegal.
I'm now confident that this is a good change because
I actually caught two C header translation mistakes in `haiku.zig` with this.
Clearly, `0123` being octal in C (TIL) can cause confusion, and we make this easier to read by
requiring `0o` as the prefix and now also disallowing leading zeroes in integers.
For consistency and because it looks weird, we disallow it for integer types too (e.g. `u0123`).
Fixes #11963
Fixes #12417
Diffstat (limited to 'test/cases/compile_errors/leading_zero_in_integer.zig')
| -rw-r--r-- | test/cases/compile_errors/leading_zero_in_integer.zig | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/cases/compile_errors/leading_zero_in_integer.zig b/test/cases/compile_errors/leading_zero_in_integer.zig new file mode 100644 index 0000000000..a818a3d75d --- /dev/null +++ b/test/cases/compile_errors/leading_zero_in_integer.zig @@ -0,0 +1,27 @@ +export fn entry1() void { + const T = u000123; + _ = T; +} +export fn entry2() void { + _ = i0; + _ = u0; + var x: i01 = 1; + _ = x; +} +export fn entry3() void { + _ = 000123; +} +export fn entry4() void { + _ = 01; +} + +// error +// backend=llvm +// target=native +// +// :2:15: error: primitive integer type 'u000123' has leading zero +// :8:12: error: primitive integer type 'i01' has leading zero +// :12:9: error: integer literal '000123' has leading zero +// :12:9: note: use '0o' prefix for octal literals +// :15:9: error: integer literal '01' has leading zero +// :15:9: note: use '0o' prefix for octal literals |
