From 3d23ba9c352b93a299d17e85d9a758cfac613d23 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 11 Dec 2023 12:24:15 -0700 Subject: [PATCH] Revert "Sema: forbid @breakpoint from being called at comptime" This reverts commit f88b523065fbb8afbd723fd6e803ace0334b713c. Let's please go through the language proposal process for this change. I don't see any justification for this breaking change even in the commit message. --- src/Sema.zig | 11 +++------- .../compile_errors/@trap_comptime_call.zig | 9 +++++++++ .../panic_called_at_compile_time.zig | 13 ++++++++++++ ...ntime-only_builtins_called_at_comptime.zig | 20 ------------------- 4 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 test/cases/compile_errors/@trap_comptime_call.zig create mode 100644 test/cases/compile_errors/panic_called_at_compile_time.zig delete mode 100644 test/cases/compile_errors/runtime-only_builtins_called_at_comptime.zig diff --git a/src/Sema.zig b/src/Sema.zig index 160a531d92..752a5b1023 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -1292,7 +1292,9 @@ fn analyzeBodyInner( continue; }, .breakpoint => { - try sema.zirBreakpoint(block, extended); + if (!block.is_comptime) { + _ = try block.addNoOp(.breakpoint); + } i += 1; continue; }, @@ -5618,13 +5620,6 @@ fn zirTrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Zir.In return always_noreturn; } -fn zirBreakpoint(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void { - const src = LazySrcLoc.nodeOffset(@bitCast(extended.operand)); - if (block.is_comptime) - return sema.fail(block, src, "encountered @breakpoint at comptime", .{}); - _ = try block.addNoOp(.breakpoint); -} - fn zirLoop(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { const tracy = trace(@src()); defer tracy.end(); diff --git a/test/cases/compile_errors/@trap_comptime_call.zig b/test/cases/compile_errors/@trap_comptime_call.zig new file mode 100644 index 0000000000..c6d0decf98 --- /dev/null +++ b/test/cases/compile_errors/@trap_comptime_call.zig @@ -0,0 +1,9 @@ +export fn entry() void { + comptime @trap(); +} + +// error +// backend=stage2 +// target=native +// +// :2:14: error: encountered @trap at comptime diff --git a/test/cases/compile_errors/panic_called_at_compile_time.zig b/test/cases/compile_errors/panic_called_at_compile_time.zig new file mode 100644 index 0000000000..8198cd8e5d --- /dev/null +++ b/test/cases/compile_errors/panic_called_at_compile_time.zig @@ -0,0 +1,13 @@ +export fn entry() void { + comptime { + @panic( + "aoeu", + ); + } +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: encountered @panic at comptime diff --git a/test/cases/compile_errors/runtime-only_builtins_called_at_comptime.zig b/test/cases/compile_errors/runtime-only_builtins_called_at_comptime.zig deleted file mode 100644 index 382a7b01ec..0000000000 --- a/test/cases/compile_errors/runtime-only_builtins_called_at_comptime.zig +++ /dev/null @@ -1,20 +0,0 @@ -test "comptime @panic call" { - comptime @panic("amogus"); -} - -test "comptime @trap call" { - comptime @trap(); -} - -test "comptime @breakpoint call" { - comptime @breakpoint(); -} - -// error -// backend=stage2 -// target=native -// is_test=true -// -// :2:14: error: encountered @panic at comptime -// :6:14: error: encountered @trap at comptime -// :10:14: error: encountered @breakpoint at comptime