aboutsummaryrefslogtreecommitdiff
path: root/test/compile_errors.zig
diff options
context:
space:
mode:
Diffstat (limited to 'test/compile_errors.zig')
-rw-r--r--test/compile_errors.zig53
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,