From 605f2a0978c3ae262e224ff01d163d412a64c284 Mon Sep 17 00:00:00 2001 From: mlugg Date: Wed, 28 Aug 2024 18:35:37 +0100 Subject: [PATCH] cases: update for new error wording, add coverage for field/decl name conflict --- .../colliding_invalid_top_level_functions.zig | 7 +++---- .../compile_errors/decl_shadows_local.zig | 5 +++-- .../compile_errors/duplicate_enum_field.zig | 4 ++-- .../compile_errors/duplicate_struct_field.zig | 10 +++++----- .../compile_errors/duplicate_union_field.zig | 6 ++---- ...t_initializer_doesnt_crash_the_compiler.zig | 6 ++---- .../field_decl_name_conflict.zig | 18 ++++++++++++++++++ .../invalid_duplicate_test_decl_name.zig | 5 +++-- .../invalid_store_to_comptime_field.zig | 8 ++++---- .../multiple_function_definitions.zig | 7 +++---- .../compile_errors/redefinition_of_enums.zig | 5 +++-- .../redefinition_of_global_variables.zig | 5 +++-- .../compile_errors/redefinition_of_struct.zig | 5 +++-- .../struct_duplicate_field_name.zig | 4 ++-- .../union_duplicate_enum_field.zig | 4 ++-- .../union_duplicate_field_definition.zig | 4 ++-- test/cases/function_redeclaration.zig | 5 +++-- test/cases/global_variable_redeclaration.zig | 5 +++-- test/compile_errors.zig | 4 ++-- 19 files changed, 68 insertions(+), 49 deletions(-) create mode 100644 test/cases/compile_errors/field_decl_name_conflict.zig diff --git a/test/cases/compile_errors/colliding_invalid_top_level_functions.zig b/test/cases/compile_errors/colliding_invalid_top_level_functions.zig index 8a2adb2f077811f3f9cc243fdbe4546b2bd31db1..e63810c986ff34dd7a7771db75cff541e20d49bd 100644 --- a/test/cases/compile_errors/colliding_invalid_top_level_functions.zig +++ b/test/cases/compile_errors/colliding_invalid_top_level_functions.zig @@ -5,10 +5,9 @@ export fn entry() usize { } // error -// backend=stage2 -// target=native // -// :2:1: error: redeclaration of 'func' -// :1:1: note: other declaration here +// :1:4: error: duplicate struct member name 'func' +// :2:4: note: duplicate name here +// :1:1: note: struct declared here // :1:11: error: use of undeclared identifier 'bogus' // :2:11: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/decl_shadows_local.zig b/test/cases/compile_errors/decl_shadows_local.zig index 44066ab659be83f1d34e78f3976609c39b6ae345..eeb69a49545514ac2d3281dcfc49a1b27f051f90 100644 --- a/test/cases/compile_errors/decl_shadows_local.zig +++ b/test/cases/compile_errors/decl_shadows_local.zig @@ -2,6 +2,7 @@ fn foo(a: usize) void { struct { const a = 1; }; + _ = a; } fn bar(a: usize) void { struct { @@ -18,5 +19,5 @@ fn bar(a: usize) void { // // :3:15: error: declaration 'a' shadows function parameter from outer scope // :1:8: note: previous declaration here -// :9:19: error: declaration 'a' shadows function parameter from outer scope -// :6:8: note: previous declaration here +// :10:19: error: declaration 'a' shadows function parameter from outer scope +// :7:8: note: previous declaration here diff --git a/test/cases/compile_errors/duplicate_enum_field.zig b/test/cases/compile_errors/duplicate_enum_field.zig index 02738f1b37430b23a1da463a1c89256fba4589c8..b3a4f4495b40919afc79fd5b0d456c92adcd1433 100644 --- a/test/cases/compile_errors/duplicate_enum_field.zig +++ b/test/cases/compile_errors/duplicate_enum_field.zig @@ -12,6 +12,6 @@ export fn entry() void { // backend=stage2 // target=native // -// :2:5: error: duplicate enum field name -// :3:5: note: duplicate field here +// :2:5: error: duplicate enum member name 'Bar' +// :3:5: note: duplicate name here // :1:13: note: enum declared here diff --git a/test/cases/compile_errors/duplicate_struct_field.zig b/test/cases/compile_errors/duplicate_struct_field.zig index 954ed24e920f0659353ea6224d8ffb4c20f3bdd6..bb1ba26445730f26837b626989ab93e8f0c29500 100644 --- a/test/cases/compile_errors/duplicate_struct_field.zig +++ b/test/cases/compile_errors/duplicate_struct_field.zig @@ -24,10 +24,10 @@ export fn b() void { // backend=stage2 // target=native // -// :2:5: error: duplicate struct field name -// :3:5: note: duplicate field here +// :2:5: error: duplicate struct member name 'Bar' +// :3:5: note: duplicate name here // :1:13: note: struct declared here -// :7:5: error: duplicate struct field name -// :9:5: note: duplicate field here -// :10:5: note: duplicate field here +// :7:5: error: duplicate struct member name 'a' +// :9:5: note: duplicate name here +// :10:5: note: duplicate name here // :6:11: note: struct declared here diff --git a/test/cases/compile_errors/duplicate_union_field.zig b/test/cases/compile_errors/duplicate_union_field.zig index b57842c1f79869f171d8194251a7519189c52653..912296ec2e7ddd487d622d08c5a8560ae4bba4f3 100644 --- a/test/cases/compile_errors/duplicate_union_field.zig +++ b/test/cases/compile_errors/duplicate_union_field.zig @@ -8,9 +8,7 @@ export fn entry() void { } // error -// backend=stage2 -// target=native // -// :2:5: error: duplicate union field name -// :3:5: note: duplicate field here +// :2:5: error: duplicate union member name 'Bar' +// :3:5: note: duplicate name here // :1:13: note: union declared here diff --git a/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig b/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig index ea799c561aafadb935bcb70aa013cca494a4a7c9..b880dd5992e55748ef107bcefbc5e8b647e79f65 100644 --- a/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig +++ b/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig @@ -8,9 +8,7 @@ pub export fn entry() void { } // error -// backend=stage2 -// target=native // -// :3:9: error: duplicate struct field name -// :4:9: note: duplicate field here +// :3:9: error: duplicate struct member name 'e' +// :4:9: note: duplicate name here // :2:22: note: struct declared here diff --git a/test/cases/compile_errors/field_decl_name_conflict.zig b/test/cases/compile_errors/field_decl_name_conflict.zig new file mode 100644 index 0000000000000000000000000000000000000000..b71eb5b11904fb801f1927ed7978a17cf552d373 --- /dev/null +++ b/test/cases/compile_errors/field_decl_name_conflict.zig @@ -0,0 +1,18 @@ +foo: u32, +bar: u32, +qux: u32, + +const foo = 123; + +var bar: u8 = undefined; +fn bar() void {} + +// error +// +// :1:1: error: duplicate struct member name 'foo' +// :5:7: note: duplicate name here +// :1:1: note: struct declared here +// :2:1: error: duplicate struct member name 'bar' +// :7:5: note: duplicate name here +// :8:4: note: duplicate name here +// :1:1: note: struct declared here diff --git a/test/cases/compile_errors/invalid_duplicate_test_decl_name.zig b/test/cases/compile_errors/invalid_duplicate_test_decl_name.zig index 2dd330912aa0516635f63809884089f1abd8e540..0e59795993f604b58e2805beb4fe07410e9b0e59 100644 --- a/test/cases/compile_errors/invalid_duplicate_test_decl_name.zig +++ b/test/cases/compile_errors/invalid_duplicate_test_decl_name.zig @@ -6,5 +6,6 @@ test "thingy" {} // target=native // is_test=true // -// :2:1: error: duplicate test name 'thingy' -// :1:1: note: other test here +// :1:6: error: duplicate test name 'thingy' +// :2:6: note: duplicate test here +// :1:1: note: struct declared here diff --git a/test/cases/compile_errors/invalid_store_to_comptime_field.zig b/test/cases/compile_errors/invalid_store_to_comptime_field.zig index f3082b06a96b1858d1190c03e51687778864f620..86ec05bf688a18bd689750b4438691df03ab544b 100644 --- a/test/cases/compile_errors/invalid_store_to_comptime_field.zig +++ b/test/cases/compile_errors/invalid_store_to_comptime_field.zig @@ -25,21 +25,21 @@ pub export fn entry3() void { const U = struct { comptime foo: u32 = 1, bar: u32, - fn foo(x: @This()) void { + fn qux(x: @This()) void { _ = x; } }; - _ = U.foo(U{ .foo = 2, .bar = 2 }); + _ = U.qux(U{ .foo = 2, .bar = 2 }); } pub export fn entry4() void { const U = struct { comptime foo: u32 = 1, bar: u32, - fn foo(x: @This()) void { + fn qux(x: @This()) void { _ = x; } }; - _ = U.foo(.{ .foo = 2, .bar = 2 }); + _ = U.qux(.{ .foo = 2, .bar = 2 }); } pub export fn entry5() void { comptime var y = .{ 1, 2 }; diff --git a/test/cases/compile_errors/multiple_function_definitions.zig b/test/cases/compile_errors/multiple_function_definitions.zig index 134daaeaa4f6e05e6bbad67ec2b939eb9adfdef1..63522ca40d9cebeaa828d05c3be1de98eac3a2d1 100644 --- a/test/cases/compile_errors/multiple_function_definitions.zig +++ b/test/cases/compile_errors/multiple_function_definitions.zig @@ -5,8 +5,7 @@ export fn entry() void { } // error -// backend=stage2 -// target=native // -// :2:1: error: redeclaration of 'a' -// :1:1: note: other declaration here +// :1:4: error: duplicate struct member name 'a' +// :2:4: note: duplicate name here +// :1:1: note: struct declared here diff --git a/test/cases/compile_errors/redefinition_of_enums.zig b/test/cases/compile_errors/redefinition_of_enums.zig index 34d5efe8df86fc0fd413a51b3db3cde3d0fd3890..0ccc7ec8ddd47fa7f353600c1e5bcab021bf1727 100644 --- a/test/cases/compile_errors/redefinition_of_enums.zig +++ b/test/cases/compile_errors/redefinition_of_enums.zig @@ -5,5 +5,6 @@ const A = enum { x }; // backend=stage2 // target=native // -// :2:1: error: redeclaration of 'A' -// :1:1: note: other declaration here +// :1:7: error: duplicate struct member name 'A' +// :2:7: note: duplicate name here +// :1:1: note: struct declared here diff --git a/test/cases/compile_errors/redefinition_of_global_variables.zig b/test/cases/compile_errors/redefinition_of_global_variables.zig index 6f4ed225f791b6eb73c69723f3b2f8b653b7f94f..9c224a30a91cc2d6a1273f3a0a5017d5551efced 100644 --- a/test/cases/compile_errors/redefinition_of_global_variables.zig +++ b/test/cases/compile_errors/redefinition_of_global_variables.zig @@ -5,5 +5,6 @@ var a: i32 = 2; // backend=stage2 // target=native // -// :2:1: error: redeclaration of 'a' -// :1:1: note: other declaration here +// :1:5: error: duplicate struct member name 'a' +// :2:5: note: duplicate name here +// :1:1: note: struct declared here diff --git a/test/cases/compile_errors/redefinition_of_struct.zig b/test/cases/compile_errors/redefinition_of_struct.zig index 22852966dbc25d3945edbad3792ef51f842b5d92..da7b2fa4dd0763fd2de1e16bed5a06585497ee7c 100644 --- a/test/cases/compile_errors/redefinition_of_struct.zig +++ b/test/cases/compile_errors/redefinition_of_struct.zig @@ -5,5 +5,6 @@ const A = struct { y: i32 }; // backend=stage2 // target=native // -// :2:1: error: redeclaration of 'A' -// :1:1: note: other declaration here +// :1:7: error: duplicate struct member name 'A' +// :2:7: note: duplicate name here +// :1:1: note: struct declared here diff --git a/test/cases/compile_errors/struct_duplicate_field_name.zig b/test/cases/compile_errors/struct_duplicate_field_name.zig index 057083c3cb5723105352cf3cee7fc7e71cf1c39f..207b40daf3941c3074297391d18c10f812aa94b3 100644 --- a/test/cases/compile_errors/struct_duplicate_field_name.zig +++ b/test/cases/compile_errors/struct_duplicate_field_name.zig @@ -11,6 +11,6 @@ export fn entry() void { // error // target=native // -// :2:5: error: duplicate struct field name -// :3:5: note: duplicate field here +// :2:5: error: duplicate struct member name 'foo' +// :3:5: note: duplicate name here // :1:11: note: struct declared here diff --git a/test/cases/compile_errors/union_duplicate_enum_field.zig b/test/cases/compile_errors/union_duplicate_enum_field.zig index 21c307755be00069a169ccaba1fc3e6b314fc624..3a350f923f9f1b3edc96b68c94a0be4d44eef1f2 100644 --- a/test/cases/compile_errors/union_duplicate_enum_field.zig +++ b/test/cases/compile_errors/union_duplicate_enum_field.zig @@ -12,6 +12,6 @@ export fn foo() void { // error // target=native // -// :3:5: error: duplicate union field name -// :4:5: note: duplicate field here +// :3:5: error: duplicate union member name 'a' +// :4:5: note: duplicate name here // :2:11: note: union declared here diff --git a/test/cases/compile_errors/union_duplicate_field_definition.zig b/test/cases/compile_errors/union_duplicate_field_definition.zig index e0866964eb36494816d6a7652c170bab0ff71a8f..4fca2a7b362be8fba795afdee5565a5953801d88 100644 --- a/test/cases/compile_errors/union_duplicate_field_definition.zig +++ b/test/cases/compile_errors/union_duplicate_field_definition.zig @@ -11,6 +11,6 @@ export fn entry() void { // error // target=native // -// :2:5: error: duplicate union field name -// :3:5: note: duplicate field here +// :2:5: error: duplicate union member name 'foo' +// :3:5: note: duplicate name here // :1:11: note: union declared here diff --git a/test/cases/function_redeclaration.zig b/test/cases/function_redeclaration.zig index b6cbf664a9fdc37a1a86caf6e1b3e4f5e10e33cf..2b8dc4c15dd52045c8196fe27ca15d9b40569d9e 100644 --- a/test/cases/function_redeclaration.zig +++ b/test/cases/function_redeclaration.zig @@ -8,7 +8,8 @@ fn foo() void { // error // -// :3:1: error: redeclaration of 'entry' -// :2:1: note: other declaration here +// :2:4: error: duplicate struct member name 'entry' +// :3:4: note: duplicate name here +// :2:1: note: struct declared here // :6:9: error: local variable shadows declaration of 'foo' // :5:1: note: declared here diff --git a/test/cases/global_variable_redeclaration.zig b/test/cases/global_variable_redeclaration.zig index 9a0d5939fbffc35ff3da74a6901cf8d69dec421a..3970294b0d630a23efb16c1e71d480f2d0df852a 100644 --- a/test/cases/global_variable_redeclaration.zig +++ b/test/cases/global_variable_redeclaration.zig @@ -4,5 +4,6 @@ var foo = true; // error // -// :3:1: error: redeclaration of 'foo' -// :2:1: note: other declaration here +// :2:5: error: duplicate struct member name 'foo' +// :3:5: note: duplicate name here +// :2:1: note: struct declared here diff --git a/test/compile_errors.zig b/test/compile_errors.zig index 07ad178859dbb1df59043045d99bac226826be4a..447984d2779a95950527c830bb9de46ada28332e 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -92,7 +92,7 @@ pub fn addCases(ctx: *Cases, b: *std.Build) !void { \\const a = @import("a.zig"); \\ \\export fn entry() void { - \\ _ = a.S.foo(a.S{ .foo = 2, .bar = 2 }); + \\ _ = a.S.qux(a.S{ .foo = 2, .bar = 2 }); \\} , &[_][]const u8{ ":4:23: error: value stored in comptime field does not match the default value of the field", @@ -102,7 +102,7 @@ pub fn addCases(ctx: *Cases, b: *std.Build) !void { \\pub const S = struct { \\ comptime foo: u32 = 1, \\ bar: u32, - \\ pub fn foo(x: @This()) void { + \\ pub fn qux(x: @This()) void { \\ _ = x; \\ } \\}; -- 2.54.0