diff options
Diffstat (limited to 'test/compile_errors.zig')
| -rw-r--r-- | test/compile_errors.zig | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/test/compile_errors.zig b/test/compile_errors.zig index d151b31343..7ee5896568 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -3,6 +3,38 @@ const builtin = @import("builtin"); pub fn addCases(cases: *tests.CompileErrorContext) void { cases.add( + "compile error in struct init expression", + \\const Foo = struct { + \\ a: i32 = crap, + \\ b: i32, + \\}; + \\export fn entry() void { + \\ var x = Foo{ + \\ .b = 5, + \\ }; + \\} + , + "tmp.zig:2:14: error: use of undeclared identifier 'crap'", + ); + + cases.add( + "undefined as field type is rejected", + \\const Foo = struct { + \\ a: undefined, + \\}; + \\const Bar = union { + \\ a: undefined, + \\}; + \\pub fn main() void { + \\ const foo: Foo = undefined; + \\ const bar: Bar = undefined; + \\} + , + "tmp.zig:2:8: error: expected type 'type', found '(undefined)'", + "tmp.zig:5:8: error: expected type 'type', found '(undefined)'", + ); + + cases.add( "@hasDecl with non-container", \\export fn entry() void { \\ _ = @hasDecl(i32, "hi"); @@ -146,7 +178,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { "usingnamespace with wrong type", \\use void; , - "tmp.zig:1:1: error: expected struct, found 'void'", + "tmp.zig:1:1: error: expected struct, enum, or union; found 'void'", ); cases.add( @@ -1202,7 +1234,6 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\} , "tmp.zig:2:5: error: `_` is not a declarable symbol", - "tmp.zig:3:12: error: use of undeclared identifier '_'", ); cases.add( @@ -1215,7 +1246,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\ } \\} , - "tmp.zig:4:20: error: use of undeclared identifier '_'", + "tmp.zig:4:20: error: `_` may only be used to assign things to", ); cases.add( @@ -1231,7 +1262,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\ return 1; \\} , - "tmp.zig:4:20: error: use of undeclared identifier '_'", + "tmp.zig:4:20: error: `_` may only be used to assign things to", ); cases.add( @@ -1249,7 +1280,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\ return error.optionalReturnError; \\} , - "tmp.zig:6:17: error: use of undeclared identifier '_'", + "tmp.zig:6:17: error: `_` may only be used to assign things to", ); cases.add( @@ -5469,18 +5500,6 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { ); cases.add( - "struct fields with value assignments", - \\const MultipleChoice = struct { - \\ A: i32 = 20, - \\}; - \\export fn entry() void { - \\ var x: MultipleChoice = undefined; - \\} - , - "tmp.zig:2:14: error: enums, not structs, support field assignment", - ); - - cases.add( "union fields with value assignments", \\const MultipleChoice = union { \\ A: i32 = 20, |
