mirror of
https://github.com/ziglang/zig.git
synced 2024-11-15 00:26:57 +00:00
parent
f4bb8be9fc
commit
490cafe2c5
@ -8675,7 +8675,7 @@ test "safety check" {
|
||||
{#code_end#}
|
||||
{#header_open|Reaching Unreachable Code#}
|
||||
<p>At compile-time:</p>
|
||||
{#code_begin|test_err|unable to evaluate constant expression#}
|
||||
{#code_begin|test_err|reached unreachable code#}
|
||||
comptime {
|
||||
assert(false);
|
||||
}
|
||||
|
@ -21592,6 +21592,11 @@ static IrInstGen *ir_analyze_instruction_cond_br(IrAnalyze *ira, IrInstSrcCondBr
|
||||
static IrInstGen *ir_analyze_instruction_unreachable(IrAnalyze *ira,
|
||||
IrInstSrcUnreachable *unreachable_instruction)
|
||||
{
|
||||
if (ir_should_inline(ira->old_irb.exec, unreachable_instruction->base.base.scope)) {
|
||||
ir_add_error(ira, &unreachable_instruction->base.base, buf_sprintf("reached unreachable code"));
|
||||
return ir_unreach_error(ira);
|
||||
}
|
||||
|
||||
IrInstGen *result = ir_build_unreachable_gen(ira, &unreachable_instruction->base.base);
|
||||
return ir_finish_anal(ira, result);
|
||||
}
|
||||
|
@ -2,6 +2,21 @@ const tests = @import("tests.zig");
|
||||
const std = @import("std");
|
||||
|
||||
pub fn addCases(cases: *tests.CompileErrorContext) void {
|
||||
cases.add("unreachable executed at comptime",
|
||||
\\fn foo(comptime x: i32) i32 {
|
||||
\\ comptime {
|
||||
\\ if (x >= 0) return -x;
|
||||
\\ unreachable;
|
||||
\\ }
|
||||
\\}
|
||||
\\export fn entry() void {
|
||||
\\ _ = foo(-42);
|
||||
\\}
|
||||
, &[_][]const u8{
|
||||
"tmp.zig:4:9: error: reached unreachable code",
|
||||
"tmp.zig:8:12: note: called from here",
|
||||
});
|
||||
|
||||
cases.add("indexing a undefined slice at comptime",
|
||||
\\comptime {
|
||||
\\ var slice: []u8 = undefined;
|
||||
@ -6208,7 +6223,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
|
||||
\\ if (!ok) unreachable;
|
||||
\\}
|
||||
, &[_][]const u8{
|
||||
"tmp.zig:10:14: error: unable to evaluate constant expression",
|
||||
"tmp.zig:10:14: error: reached unreachable code",
|
||||
"tmp.zig:6:20: note: referenced here",
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user