From bc3e99c5e5a5f054e57a7056a64ff08762d42e9f Mon Sep 17 00:00:00 2001 From: Jimmi Holst Christensen Date: Mon, 1 Oct 2018 20:30:34 +0200 Subject: [PATCH] Fixed StackTrace not being resolved when panic is invalid (#1615) --- src/analyze.cpp | 4 +++- test/compile_errors.zig | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/analyze.cpp b/src/analyze.cpp index 14cba3970..4f8b2f888 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -1058,7 +1058,10 @@ ZigType *get_ptr_to_stack_trace_type(CodeGen *g) { if (g->stack_trace_type == nullptr) { ConstExprValue *stack_trace_type_val = get_builtin_value(g, "StackTrace"); assert(stack_trace_type_val->type->id == ZigTypeIdMetaType); + g->stack_trace_type = stack_trace_type_val->data.x_type; + assertNoError(type_resolve(g, g->stack_trace_type, ResolveStatusZeroBitsKnown)); + g->ptr_to_stack_trace_type = get_pointer_to_type(g, g->stack_trace_type, false); } return g->ptr_to_stack_trace_type; @@ -6560,4 +6563,3 @@ uint32_t get_host_int_bytes(CodeGen *g, ZigType *struct_type, TypeStructField *f LLVMTypeRef field_type = LLVMStructGetTypeAtIndex(struct_type->type_ref, field->gen_index); return LLVMStoreSizeOfType(g->target_data_ref, field_type); } - diff --git a/test/compile_errors.zig b/test/compile_errors.zig index fb7b536be..3b1b4a249 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -1,6 +1,16 @@ const tests = @import("tests.zig"); pub fn addCases(cases: *tests.CompileErrorContext) void { + cases.add( + "Panic declared with wrong type signature in tests", + \\test "" {} + \\ + \\pub fn panic() void {} + \\ + , + ".tmp_source.zig:3:5: error: expected 'fn([]const u8, ?*builtin.StackTrace) noreturn', found 'fn() void'", + ); + cases.add( "compile error when evaluating return type of inferred error set", \\const Car = struct {