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) {...@@ -1058,7 +1058,10 @@ ZigType *get_ptr_to_stack_trace_type(CodeGen *g) {
1058 if (g->stack_trace_type == nullptr) {1058 if (g->stack_trace_type == nullptr) {
1059 ConstExprValue *stack_trace_type_val = get_builtin_value(g, "StackTrace");1059 ConstExprValue *stack_trace_type_val = get_builtin_value(g, "StackTrace");
1060 assert(stack_trace_type_val->type->id == ZigTypeIdMetaType);1060 assert(stack_trace_type_val->type->id == ZigTypeIdMetaType);
1061
1061 g->stack_trace_type = stack_trace_type_val->data.x_type;1062 g->stack_trace_type = stack_trace_type_val->data.x_type;
1063 assertNoError(type_resolve(g, g->stack_trace_type, ResolveStatusZeroBitsKnown));
1064
1062 g->ptr_to_stack_trace_type = get_pointer_to_type(g, g->stack_trace_type, false);1065 g->ptr_to_stack_trace_type = get_pointer_to_type(g, g->stack_trace_type, false);
1063 }1066 }
1064 return g->ptr_to_stack_trace_type;1067 return g->ptr_to_stack_trace_type;
...@@ -6560,4 +6563,3 @@ uint32_t get_host_int_bytes(CodeGen *g, ZigType *struct_type, TypeStructField *f...@@ -6560,4 +6563,3 @@ uint32_t get_host_int_bytes(CodeGen *g, ZigType *struct_type, TypeStructField *f
6560 LLVMTypeRef field_type = LLVMStructGetTypeAtIndex(struct_type->type_ref, field->gen_index);6563 LLVMTypeRef field_type = LLVMStructGetTypeAtIndex(struct_type->type_ref, field->gen_index);
6561 return LLVMStoreSizeOfType(g->target_data_ref, field_type);6564 return LLVMStoreSizeOfType(g->target_data_ref, field_type);
6562}6565}
6563
test/compile_errors.zig+10
...@@ -1,6 +1,16 @@...@@ -1,6 +1,16 @@
1const tests = @import("tests.zig");1const tests = @import("tests.zig");
22
3pub fn addCases(cases: *tests.CompileErrorContext) void {3pub 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
4 cases.add(14 cases.add(
5 "compile error when evaluating return type of inferred error set",15 "compile error when evaluating return type of inferred error set",
6 \\const Car = struct {16 \\const Car = struct {