commit f78c56aa7de3f70be1d7c9a54fad4803f10f65af (tree)
parent cd7ea62a050008d3d8995d4da5f1ffa296dfbb06
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Tue, 2 Jun 2026 14:39:20 +0200
Sema: make @breakpoint at comptime an error
closes https://github.com/ziglang/zig/issues/18260
Diffstat:
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/Sema.zig b/src/Sema.zig
@@ -1443,9 +1443,7 @@ fn analyzeBodyInner(
continue;
},
.breakpoint => {
- if (!block.isComptime()) {
- _ = try block.addNoOp(.breakpoint);
- }
+ try sema.zirBreakpoint(block, extended);
i += 1;
continue;
},
@@ -5082,6 +5080,14 @@ fn zirTrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
_ = try block.addNoOp(.trap);
}
+fn zirBreakpoint(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void {
+ const src_node: std.zig.Ast.Node.Offset = @enumFromInt(@as(i32, @bitCast(extended.operand)));
+ const src = block.nodeOffset(src_node);
+ if (block.isComptime())
+ 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 pt = sema.pt;
const zcu = pt.zcu;
diff --git a/test/cases/compile_errors/@breakpoint_comptime_call.zig b/test/cases/compile_errors/@breakpoint_comptime_call.zig
@@ -0,0 +1,7 @@
+export fn entry() void {
+ comptime @breakpoint();
+}
+
+// error
+//
+// :2:14: error: encountered @breakpoint at comptime