diff --git a/src/analyze.cpp b/src/analyze.cpp index fb677de0ee..b01a9769e8 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -2003,6 +2003,8 @@ bool type_is_invalid(ZigType *type_entry) { return type_entry->data.unionation.resolve_status == ResolveStatusInvalid; case ZigTypeIdEnum: return type_entry->data.enumeration.resolve_status == ResolveStatusInvalid; + case ZigTypeIdFnFrame: + return type_entry->data.frame.reported_loop_err; default: return false; } diff --git a/src/ir.cpp b/src/ir.cpp index d60fe9ea70..a862ff1068 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -17061,6 +17061,8 @@ static Error ir_result_has_type(IrAnalyze *ira, ResultLoc *result_loc, bool *out static IrInstruction *ir_resolve_no_result_loc(IrAnalyze *ira, IrInstruction *suspend_source_instr, ResultLoc *result_loc, ZigType *value_type, bool force_runtime, bool non_null_comptime) { + if (type_is_invalid(value_type)) + return ira->codegen->invalid_instruction; IrInstructionAllocaGen *alloca_gen = ir_build_alloca_gen(ira, suspend_source_instr, 0, ""); alloca_gen->base.value->type = get_pointer_to_type_extra(ira->codegen, value_type, false, false, PtrLenSingle, 0, 0, 0, false);