authorgravatar for jhc@dismail.deJimmi Holst Christensen <jhc@dismail.de> 2018-10-01 20:30:34+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2018-10-01 20:30:34+02:00
logbc3e99c5e5a5f054e57a7056a64ff08762d42e9f
tree96d17ec46014f8545cfb0b43cabf8b1b2141a301
parentd4d22df1d90d9d78f2960e807c3dad061ed1c71a
signature Signed by PGP key 4AEE18F83AFDEB23

Fixed StackTrace not being resolved when panic is invalid (#1615)


2 files changed, 13 insertions(+), 1 deletions(-)

src/analyze.cpp+3-1
......@@ -1058,7 +1058,10 @@ ZigType *get_ptr_to_stack_trace_type(CodeGen *g) {
10581058 if (g->stack_trace_type == nullptr) {
10591059 ConstExprValue *stack_trace_type_val = get_builtin_value(g, "StackTrace");
10601060 assert(stack_trace_type_val->type->id == ZigTypeIdMetaType);
1061
10611062 g->stack_trace_type = stack_trace_type_val->data.x_type;
1063 assertNoError(type_resolve(g, g->stack_trace_type, ResolveStatusZeroBitsKnown));
1064
10621065 g->ptr_to_stack_trace_type = get_pointer_to_type(g, g->stack_trace_type, false);
10631066 }
10641067 return g->ptr_to_stack_trace_type;
......@@ -6560,4 +6563,3 @@ uint32_t get_host_int_bytes(CodeGen *g, ZigType *struct_type, TypeStructField *f
65606563 LLVMTypeRef field_type = LLVMStructGetTypeAtIndex(struct_type->type_ref, field->gen_index);
65616564 return LLVMStoreSizeOfType(g->target_data_ref, field_type);
65626565}
6563
test/compile_errors.zig+10
......@@ -1,6 +1,16 @@
11const tests = @import("tests.zig");
22
33pub fn addCases(cases: *tests.CompileErrorContext) void {
4 cases.add(
5 "Panic declared with wrong type signature in tests",
6 \\test "" {}
7 \\
8 \\pub fn panic() void {}
9 \\
10 ,
11 ".tmp_source.zig:3:5: error: expected 'fn([]const u8, ?*builtin.StackTrace) noreturn', found 'fn() void'",
12 );
13
414 cases.add(
515 "compile error when evaluating return type of inferred error set",
616 \\const Car = struct {