authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-06-02 14:39:20+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-06-07 05:24:06+02:00
logf78c56aa7de3f70be1d7c9a54fad4803f10f65af
tree397a5617ce9bdb307cbc9f6281cea636f6b81c6c
parentcd7ea62a050008d3d8995d4da5f1ffa296dfbb06

Sema: make @breakpoint at comptime an error

closes https://github.com/ziglang/zig/issues/18260

2 files changed, 16 insertions(+), 3 deletions(-)

src/Sema.zig+9-3
...@@ -1443,9 +1443,7 @@ fn analyzeBodyInner(...@@ -1443,9 +1443,7 @@ fn analyzeBodyInner(
1443 continue;1443 continue;
1444 },1444 },
1445 .breakpoint => {1445 .breakpoint => {
1446 if (!block.isComptime()) {1446 try sema.zirBreakpoint(block, extended);
1447 _ = try block.addNoOp(.breakpoint);
1448 }
1449 i += 1;1447 i += 1;
1450 continue;1448 continue;
1451 },1449 },
...@@ -5082,6 +5080,14 @@ fn zirTrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {...@@ -5082,6 +5080,14 @@ fn zirTrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
5082 _ = try block.addNoOp(.trap);5080 _ = try block.addNoOp(.trap);
5083}5081}
50845082
5083fn zirBreakpoint(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void {
5084 const src_node: std.zig.Ast.Node.Offset = @enumFromInt(@as(i32, @bitCast(extended.operand)));
5085 const src = block.nodeOffset(src_node);
5086 if (block.isComptime())
5087 return sema.fail(block, src, "encountered @breakpoint at comptime", .{});
5088 _ = try block.addNoOp(.breakpoint);
5089}
5090
5085fn zirLoop(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {5091fn zirLoop(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
5086 const pt = sema.pt;5092 const pt = sema.pt;
5087 const zcu = pt.zcu;5093 const zcu = pt.zcu;
test/cases/compile_errors/@breakpoint_comptime_call.zig created+7
...@@ -0,0 +1,7 @@
1export fn entry() void {
2 comptime @breakpoint();
3}
4
5// error
6//
7// :2:14: error: encountered @breakpoint at comptime