diff options
| author | Bogdan Romanyuk <65823030+wrongnull@users.noreply.github.com> | 2023-12-11 18:52:19 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-11 17:52:19 +0200 |
| commit | f88b523065fbb8afbd723fd6e803ace0334b713c (patch) | |
| tree | 38b1e58905d644ef83592db39b9b4e6402e30a68 /src/Sema.zig | |
| parent | 5bbacb0c8ce1aa59af5e898e255c544786059d06 (diff) | |
| download | zig-f88b523065fbb8afbd723fd6e803ace0334b713c.tar.gz zig-f88b523065fbb8afbd723fd6e803ace0334b713c.zip | |
Sema: forbid @breakpoint from being called at comptime
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 752a5b1023..160a531d92 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -1292,9 +1292,7 @@ fn analyzeBodyInner( continue; }, .breakpoint => { - if (!block.is_comptime) { - _ = try block.addNoOp(.breakpoint); - } + try sema.zirBreakpoint(block, extended); i += 1; continue; }, @@ -5620,6 +5618,13 @@ 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(); |
