From 8edd7219c0d5cc5799ae26ee8299b4d4114f7aed Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 15 Sep 2022 18:10:52 -0700 Subject: [PATCH] Sema: improve source location after as_node is used +2 more passing compile error tests --- src/Sema.zig | 1 + test/cases/compile_errors/and_on_undefined_value.zig | 10 ++++++++++ test/cases/compile_errors/or_on_undefined_value.zig | 10 ++++++++++ .../compile_errors/stage1/and_on_undefined_value.zig | 10 ---------- .../obj/reify_type_for_union_with_opaque_field.zig | 4 ++-- .../compile_errors/stage1/or_on_undefined_value.zig | 10 ---------- 6 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 test/cases/compile_errors/and_on_undefined_value.zig create mode 100644 test/cases/compile_errors/or_on_undefined_value.zig delete mode 100644 test/cases/compile_errors/stage1/and_on_undefined_value.zig delete mode 100644 test/cases/compile_errors/stage1/or_on_undefined_value.zig diff --git a/src/Sema.zig b/src/Sema.zig index 1afecef461..028230841d 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -8321,6 +8321,7 @@ fn zirAsNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. const inst_data = sema.code.instructions.items(.data)[inst].pl_node; const src = inst_data.src(); const extra = sema.code.extraData(Zir.Inst.As, inst_data.payload_index).data; + sema.src = src; return sema.analyzeAs(block, src, extra.dest_type, extra.operand, false); } diff --git a/test/cases/compile_errors/and_on_undefined_value.zig b/test/cases/compile_errors/and_on_undefined_value.zig new file mode 100644 index 0000000000..cee23d0540 --- /dev/null +++ b/test/cases/compile_errors/and_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: bool = undefined; + _ = a and a; +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/or_on_undefined_value.zig b/test/cases/compile_errors/or_on_undefined_value.zig new file mode 100644 index 0000000000..b40c1beddd --- /dev/null +++ b/test/cases/compile_errors/or_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: bool = undefined; + _ = a or a; +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/and_on_undefined_value.zig b/test/cases/compile_errors/stage1/and_on_undefined_value.zig deleted file mode 100644 index 6071d81062..0000000000 --- a/test/cases/compile_errors/stage1/and_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: bool = undefined; - _ = a and a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/reify_type_for_union_with_opaque_field.zig b/test/cases/compile_errors/stage1/obj/reify_type_for_union_with_opaque_field.zig index d3f4f6da4b..58cba3cd42 100644 --- a/test/cases/compile_errors/stage1/obj/reify_type_for_union_with_opaque_field.zig +++ b/test/cases/compile_errors/stage1/obj/reify_type_for_union_with_opaque_field.zig @@ -8,8 +8,8 @@ const Untagged = @Type(.{ .decls = &.{}, }, }); -export fn entry() void { - _ = Untagged{}; +export fn entry() usize { + return @sizeOf(Untagged); } // error diff --git a/test/cases/compile_errors/stage1/or_on_undefined_value.zig b/test/cases/compile_errors/stage1/or_on_undefined_value.zig deleted file mode 100644 index 11e6c41dea..0000000000 --- a/test/cases/compile_errors/stage1/or_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: bool = undefined; - _ = a or a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior