zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit bf4bfe54ac13512d7553a7be83ae19e908e9c294 (tree)
parent 6b8ae6fffb71128169de447851244869aebb882b
Author: Tadeo Kondrak <me@tadeo.ca>
Date:   Sat, 26 Sep 2020 11:55:56 -0600

Update compile error test for field access of opaque type

Diffstat:
Msrc/stage1/ir.cpp | 2++
Mtest/compile_errors.zig | 30+++++++++++++++---------------
2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp @@ -22387,6 +22387,8 @@ static IrInstGen *ir_analyze_container_member_access_inner(IrAnalyze *ira, prefix_name = "enum "; } else if (bare_struct_type->id == ZigTypeIdUnion) { prefix_name = "union "; + } else if (bare_struct_type->id == ZigTypeIdOpaque) { + prefix_name = "opaque type "; } else { prefix_name = ""; } diff --git a/test/compile_errors.zig b/test/compile_errors.zig @@ -126,6 +126,21 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { "tmp.zig:27:24: note: referenced here", }); + cases.add("field access of opaque type", + \\const MyType = opaque {}; + \\ + \\export fn entry() bool { + \\ var x: i32 = 1; + \\ return bar(@ptrCast(*MyType, &x)); + \\} + \\ + \\fn bar(x: *MyType) bool { + \\ return x.blah; + \\} + , &[_][]const u8{ + "tmp.zig:9:13: error: no member named 'blah' in opaque type 'MyType'", + }); + cases.add("opaque type with field", \\const Opaque = opaque { foo: i32 }; \\export fn entry() void { @@ -7029,21 +7044,6 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { "tmp.zig:37:29: error: cannot store runtime value in compile time variable", }); - cases.add("field access of opaque type", - \\const MyType = opaque {}; - \\ - \\export fn entry() bool { - \\ var x: i32 = 1; - \\ return bar(@ptrCast(*MyType, &x)); - \\} - \\ - \\fn bar(x: *MyType) bool { - \\ return x.blah; - \\} - , &[_][]const u8{ - "tmp.zig:9:13: error: type '*MyType' does not support field access", - }); - cases.add("invalid legacy unicode escape", \\export fn entry() void { \\ const a = '\U1234';