zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Msrc/Sema.zig | 12+++++++++---
Atest/cases/compile_errors/@breakpoint_comptime_call.zig | 7+++++++
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