aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors/leading_zero_in_integer.zig
diff options
context:
space:
mode:
authorzooster <r00ster91@proton.me>2022-08-18 18:54:51 +0200
committerGitHub <noreply@github.com>2022-08-18 19:54:51 +0300
commit4055e6055b5c0727f5e85a30760c9bccf525f4de (patch)
tree3295ef3babc22815422ced1f692bc98c9a43972d /test/cases/compile_errors/leading_zero_in_integer.zig
parent2523b443a482d78fd1a31f5e6b0224fec03835e3 (diff)
downloadzig-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.zig27
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