aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ir.cpp5
-rw-r--r--test/compile_errors.zig17
2 files changed, 18 insertions, 4 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 7e98e99af1..95172e2b59 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -9874,6 +9874,7 @@ static ZigType *ir_resolve_type(IrAnalyze *ira, IrInstruction *type_value) {
if (!const_val)
return ira->codegen->builtin_types.entry_invalid;
+ assert(const_val->data.x_type != nullptr);
return const_val->data.x_type;
}
@@ -16880,7 +16881,9 @@ static ZigType *ir_analyze_instruction_compile_log(IrAnalyze *ira, IrInstruction
}
fprintf(stderr, "\n");
- ir_add_error(ira, &instruction->base, buf_sprintf("found compile log statement"));
+ // Here we bypass higher level functions such as ir_add_error because we do not want
+ // invalidate_exec to be called.
+ add_node_error(ira->codegen, instruction->base.source_node, buf_sprintf("found compile log statement"));
ir_build_const_from(ira, &instruction->base);
return ira->codegen->builtin_types.entry_void;
diff --git a/test/compile_errors.zig b/test/compile_errors.zig
index 62df9f077d..5d9fb84c71 100644
--- a/test/compile_errors.zig
+++ b/test/compile_errors.zig
@@ -2,6 +2,20 @@ const tests = @import("tests.zig");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
+ "compile log statement inside function which must be comptime evaluated",
+ \\fn Foo(comptime T: type) type {
+ \\ @compileLog(@typeName(T));
+ \\ return T;
+ \\}
+ \\export fn entry() void {
+ \\ _ = Foo(i32);
+ \\ _ = @typeName(Foo(i32));
+ \\}
+ ,
+ ".tmp_source.zig:2:5: error: found compile log statement",
+ );
+
+ cases.add(
"comptime slice of an undefined slice",
\\comptime {
\\ var a: []u8 = undefined;
@@ -3472,11 +3486,8 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
\\}
,
".tmp_source.zig:5:5: error: found compile log statement",
- ".tmp_source.zig:2:17: note: called from here",
".tmp_source.zig:6:5: error: found compile log statement",
- ".tmp_source.zig:2:17: note: called from here",
".tmp_source.zig:7:5: error: found compile log statement",
- ".tmp_source.zig:2:17: note: called from here",
);
cases.add(