| ... | ... | @@ -126,6 +126,21 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { |
| 126 | 126 | "tmp.zig:27:24: note: referenced here", |
| 127 | 127 | }); |
| 128 | 128 | |
| 129 | cases.add("field access of opaque type", |
| 130 | \\const MyType = opaque {}; |
| 131 | \\ |
| 132 | \\export fn entry() bool { |
| 133 | \\ var x: i32 = 1; |
| 134 | \\ return bar(@ptrCast(*MyType, &x)); |
| 135 | \\} |
| 136 | \\ |
| 137 | \\fn bar(x: *MyType) bool { |
| 138 | \\ return x.blah; |
| 139 | \\} |
| 140 | , &[_][]const u8{ |
| 141 | "tmp.zig:9:13: error: no member named 'blah' in opaque type 'MyType'", |
| 142 | }); |
| 143 | |
| 129 | 144 | cases.add("opaque type with field", |
| 130 | 145 | \\const Opaque = opaque { foo: i32 }; |
| 131 | 146 | \\export fn entry() void { |
| ... | ... | @@ -7029,21 +7044,6 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { |
| 7029 | 7044 | "tmp.zig:37:29: error: cannot store runtime value in compile time variable", |
| 7030 | 7045 | }); |
| 7031 | 7046 | |
| 7032 | | cases.add("field access of opaque type", |
| 7033 | | \\const MyType = opaque {}; |
| 7034 | | \\ |
| 7035 | | \\export fn entry() bool { |
| 7036 | | \\ var x: i32 = 1; |
| 7037 | | \\ return bar(@ptrCast(*MyType, &x)); |
| 7038 | | \\} |
| 7039 | | \\ |
| 7040 | | \\fn bar(x: *MyType) bool { |
| 7041 | | \\ return x.blah; |
| 7042 | | \\} |
| 7043 | | , &[_][]const u8{ |
| 7044 | | "tmp.zig:9:13: error: type '*MyType' does not support field access", |
| 7045 | | }); |
| 7046 | | |
| 7047 | 7047 | cases.add("invalid legacy unicode escape", |
| 7048 | 7048 | \\export fn entry() void { |
| 7049 | 7049 | \\ const a = '\U1234'; |