Fixed StackTrace not being resolved when panic is invalid (#1615)
parent
d4d22df1d9
commit
bc3e99c5e5
|
@ -1058,7 +1058,10 @@ ZigType *get_ptr_to_stack_trace_type(CodeGen *g) {
|
||||||
if (g->stack_trace_type == nullptr) {
|
if (g->stack_trace_type == nullptr) {
|
||||||
ConstExprValue *stack_trace_type_val = get_builtin_value(g, "StackTrace");
|
ConstExprValue *stack_trace_type_val = get_builtin_value(g, "StackTrace");
|
||||||
assert(stack_trace_type_val->type->id == ZigTypeIdMetaType);
|
assert(stack_trace_type_val->type->id == ZigTypeIdMetaType);
|
||||||
|
|
||||||
g->stack_trace_type = stack_trace_type_val->data.x_type;
|
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);
|
g->ptr_to_stack_trace_type = get_pointer_to_type(g, g->stack_trace_type, false);
|
||||||
}
|
}
|
||||||
return g->ptr_to_stack_trace_type;
|
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);
|
LLVMTypeRef field_type = LLVMStructGetTypeAtIndex(struct_type->type_ref, field->gen_index);
|
||||||
return LLVMStoreSizeOfType(g->target_data_ref, field_type);
|
return LLVMStoreSizeOfType(g->target_data_ref, field_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
const tests = @import("tests.zig");
|
const tests = @import("tests.zig");
|
||||||
|
|
||||||
pub fn addCases(cases: *tests.CompileErrorContext) void {
|
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(
|
cases.add(
|
||||||
"compile error when evaluating return type of inferred error set",
|
"compile error when evaluating return type of inferred error set",
|
||||||
\\const Car = struct {
|
\\const Car = struct {
|
||||||
|
|
Loading…
Reference in New Issue