aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-06-30 17:22:16 +0300
committerVeikka Tuominen <git@vexu.eu>2022-07-01 10:22:25 +0300
commitae7b32eb62cb00a09fe2e0e30b307eb83e9f0a86 (patch)
treeabe5edeef5d656feb5dcf82d5a8e93db67fd2afc /test/cases/compile_errors
parent3c73f711771e41e9176e973c64484f0ce5e0eeed (diff)
downloadzig-ae7b32eb62cb00a09fe2e0e30b307eb83e9f0a86.tar.gz
zig-ae7b32eb62cb00a09fe2e0e30b307eb83e9f0a86.zip
Sema: validate deref operator type and value
Diffstat (limited to 'test/cases/compile_errors')
-rw-r--r--test/cases/compile_errors/assign_to_invalid_dereference.zig9
-rw-r--r--test/cases/compile_errors/deref_on_undefined_value.zig (renamed from test/cases/compile_errors/stage1/deref_on_undefined_value.zig)4
-rw-r--r--test/cases/compile_errors/deref_slice_and_get_len_field.zig (renamed from test/cases/compile_errors/stage1/obj/deref_slice_and_get_len_field.zig)4
-rw-r--r--test/cases/compile_errors/dereference_an_array.zig (renamed from test/cases/compile_errors/stage1/obj/dereference_an_array.zig)6
-rw-r--r--test/cases/compile_errors/dereference_slice.zig12
-rw-r--r--test/cases/compile_errors/dereference_unknown_length_pointer.zig9
-rw-r--r--test/cases/compile_errors/invalid_deref_on_switch_target.zig (renamed from test/cases/compile_errors/stage1/obj/invalid_deref_on_switch_target.zig)4
-rw-r--r--test/cases/compile_errors/invalid_multiple_dereferences.zig (renamed from test/cases/compile_errors/stage1/obj/invalid_multiple_dereferences.zig)6
-rw-r--r--test/cases/compile_errors/stage1/comptime_ptrcast_of_zero-sized_type.zig (renamed from test/cases/compile_errors/stage1/obj/comptime_ptrcast_of_zero-sized_type.zig)0
-rw-r--r--test/cases/compile_errors/stage1/obj/assign_to_invalid_dereference.zig9
-rw-r--r--test/cases/compile_errors/stage1/obj/dereference_unknown_length_pointer.zig9
-rw-r--r--test/cases/compile_errors/stage1/obj/take_slice_of_invalid_dereference.zig10
-rw-r--r--test/cases/compile_errors/take_slice_of_invalid_dereference.zig10
13 files changed, 52 insertions, 40 deletions
diff --git a/test/cases/compile_errors/assign_to_invalid_dereference.zig b/test/cases/compile_errors/assign_to_invalid_dereference.zig
new file mode 100644
index 0000000000..cb35004034
--- /dev/null
+++ b/test/cases/compile_errors/assign_to_invalid_dereference.zig
@@ -0,0 +1,9 @@
+export fn entry() void {
+ 'a'.* = 1;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:8: error: cannot dereference non-pointer type 'comptime_int'
diff --git a/test/cases/compile_errors/stage1/deref_on_undefined_value.zig b/test/cases/compile_errors/deref_on_undefined_value.zig
index f64d567a26..fa12e2824c 100644
--- a/test/cases/compile_errors/stage1/deref_on_undefined_value.zig
+++ b/test/cases/compile_errors/deref_on_undefined_value.zig
@@ -4,7 +4,7 @@ comptime {
}
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:3:9: error: attempt to dereference undefined value
+// :3:10: error: cannot dereference undefined value
diff --git a/test/cases/compile_errors/stage1/obj/deref_slice_and_get_len_field.zig b/test/cases/compile_errors/deref_slice_and_get_len_field.zig
index 98097597cc..1ba03c6d50 100644
--- a/test/cases/compile_errors/stage1/obj/deref_slice_and_get_len_field.zig
+++ b/test/cases/compile_errors/deref_slice_and_get_len_field.zig
@@ -4,7 +4,7 @@ export fn entry() void {
}
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:3:10: error: attempt to dereference non-pointer type '[]u8'
+// :3:10: error: index syntax required for slice type '[]u8'
diff --git a/test/cases/compile_errors/stage1/obj/dereference_an_array.zig b/test/cases/compile_errors/dereference_an_array.zig
index 0dd91f70e5..f5aabf081c 100644
--- a/test/cases/compile_errors/stage1/obj/dereference_an_array.zig
+++ b/test/cases/compile_errors/dereference_an_array.zig
@@ -5,10 +5,10 @@ pub fn pass(in: []u8) []u8 {
return out.*[0..1];
}
-export fn entry() usize { return @sizeOf(@TypeOf(pass)); }
+export fn entry() usize { return @sizeOf(@TypeOf(&pass)); }
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:4:10: error: attempt to dereference non-pointer type '[10]u8'
+// :4:10: error: cannot dereference non-pointer type '[10]u8'
diff --git a/test/cases/compile_errors/dereference_slice.zig b/test/cases/compile_errors/dereference_slice.zig
new file mode 100644
index 0000000000..7dba3b55d8
--- /dev/null
+++ b/test/cases/compile_errors/dereference_slice.zig
@@ -0,0 +1,12 @@
+fn entry(x: []i32) i32 {
+ return x.*;
+}
+comptime {
+ _ = entry;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:13: error: index syntax required for slice type '[]i32'
diff --git a/test/cases/compile_errors/dereference_unknown_length_pointer.zig b/test/cases/compile_errors/dereference_unknown_length_pointer.zig
new file mode 100644
index 0000000000..353f94b8d9
--- /dev/null
+++ b/test/cases/compile_errors/dereference_unknown_length_pointer.zig
@@ -0,0 +1,9 @@
+export fn entry(x: [*]i32) i32 {
+ return x.*;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:13: error: index syntax required for unknown-length pointer type '[*]i32'
diff --git a/test/cases/compile_errors/stage1/obj/invalid_deref_on_switch_target.zig b/test/cases/compile_errors/invalid_deref_on_switch_target.zig
index 966a881543..a880b16fca 100644
--- a/test/cases/compile_errors/stage1/obj/invalid_deref_on_switch_target.zig
+++ b/test/cases/compile_errors/invalid_deref_on_switch_target.zig
@@ -11,7 +11,7 @@ const Tile = enum {
};
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:3:17: error: attempt to dereference non-pointer type 'Tile'
+// :3:17: error: cannot dereference non-pointer type 'tmp.Tile'
diff --git a/test/cases/compile_errors/stage1/obj/invalid_multiple_dereferences.zig b/test/cases/compile_errors/invalid_multiple_dereferences.zig
index f8a0b8013f..3edebf7b1f 100644
--- a/test/cases/compile_errors/stage1/obj/invalid_multiple_dereferences.zig
+++ b/test/cases/compile_errors/invalid_multiple_dereferences.zig
@@ -12,8 +12,8 @@ pub const Box = struct {
};
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:3:8: error: attempt to dereference non-pointer type 'Box'
-// tmp.zig:8:13: error: attempt to dereference non-pointer type 'Box'
+// :3:8: error: cannot dereference non-pointer type 'tmp.Box'
+// :8:13: error: cannot dereference non-pointer type 'tmp.Box'
diff --git a/test/cases/compile_errors/stage1/obj/comptime_ptrcast_of_zero-sized_type.zig b/test/cases/compile_errors/stage1/comptime_ptrcast_of_zero-sized_type.zig
index 231e735cfa..231e735cfa 100644
--- a/test/cases/compile_errors/stage1/obj/comptime_ptrcast_of_zero-sized_type.zig
+++ b/test/cases/compile_errors/stage1/comptime_ptrcast_of_zero-sized_type.zig
diff --git a/test/cases/compile_errors/stage1/obj/assign_to_invalid_dereference.zig b/test/cases/compile_errors/stage1/obj/assign_to_invalid_dereference.zig
deleted file mode 100644
index 7fef5db83c..0000000000
--- a/test/cases/compile_errors/stage1/obj/assign_to_invalid_dereference.zig
+++ /dev/null
@@ -1,9 +0,0 @@
-export fn entry() void {
- 'a'.* = 1;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:8: error: attempt to dereference non-pointer type 'comptime_int'
diff --git a/test/cases/compile_errors/stage1/obj/dereference_unknown_length_pointer.zig b/test/cases/compile_errors/stage1/obj/dereference_unknown_length_pointer.zig
deleted file mode 100644
index c305e4bc98..0000000000
--- a/test/cases/compile_errors/stage1/obj/dereference_unknown_length_pointer.zig
+++ /dev/null
@@ -1,9 +0,0 @@
-export fn entry(x: [*]i32) i32 {
- return x.*;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:13: error: index syntax required for unknown-length pointer type '[*]i32'
diff --git a/test/cases/compile_errors/stage1/obj/take_slice_of_invalid_dereference.zig b/test/cases/compile_errors/stage1/obj/take_slice_of_invalid_dereference.zig
deleted file mode 100644
index c039be3737..0000000000
--- a/test/cases/compile_errors/stage1/obj/take_slice_of_invalid_dereference.zig
+++ /dev/null
@@ -1,10 +0,0 @@
-export fn entry() void {
- const x = 'a'.*[0..];
- _ = x;
-}
-
-// error
-// backend=stage1
-// target=native
-//
-// tmp.zig:2:18: error: attempt to dereference non-pointer type 'comptime_int'
diff --git a/test/cases/compile_errors/take_slice_of_invalid_dereference.zig b/test/cases/compile_errors/take_slice_of_invalid_dereference.zig
new file mode 100644
index 0000000000..35c1b2de0d
--- /dev/null
+++ b/test/cases/compile_errors/take_slice_of_invalid_dereference.zig
@@ -0,0 +1,10 @@
+export fn entry() void {
+ const x = 'a'.*[0..];
+ _ = x;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:18: error: cannot dereference non-pointer type 'comptime_int'