diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-06-30 17:22:16 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-07-01 10:22:25 +0300 |
| commit | ae7b32eb62cb00a09fe2e0e30b307eb83e9f0a86 (patch) | |
| tree | abe5edeef5d656feb5dcf82d5a8e93db67fd2afc /test/cases/compile_errors | |
| parent | 3c73f711771e41e9176e973c64484f0ce5e0eeed (diff) | |
| download | zig-ae7b32eb62cb00a09fe2e0e30b307eb83e9f0a86.tar.gz zig-ae7b32eb62cb00a09fe2e0e30b307eb83e9f0a86.zip | |
Sema: validate deref operator type and value
Diffstat (limited to 'test/cases/compile_errors')
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' |
