| ... | @@ -2730,9 +2730,13 @@ fn createAnonymousDeclTypeNamed( | ... | @@ -2730,9 +2730,13 @@ fn createAnonymousDeclTypeNamed( |
| 2730 | for (fn_info.param_body) |zir_inst| switch (zir_tags[zir_inst]) { | 2730 | for (fn_info.param_body) |zir_inst| switch (zir_tags[zir_inst]) { |
| 2731 | .param, .param_comptime, .param_anytype, .param_anytype_comptime => { | 2731 | .param, .param_comptime, .param_anytype, .param_anytype_comptime => { |
| 2732 | const arg = sema.inst_map.get(zir_inst).?; | 2732 | const arg = sema.inst_map.get(zir_inst).?; |
| 2733 | // The comptime call code in analyzeCall already did this, so we're | 2733 | // If this is being called in a generic function then analyzeCall will |
| 2734 | // just repeating it here and it's guaranteed to work. | 2734 | // have already resolved the args and this will work. |
| 2735 | const arg_val = sema.resolveConstMaybeUndefVal(block, .unneeded, arg, "") catch unreachable; | 2735 | // If not then this is a struct type being returned from a non-generic |
| | 2736 | // function and the name doesn't matter since it will later |
| | 2737 | // result in a compile error. |
| | 2738 | const arg_val = sema.resolveConstMaybeUndefVal(block, .unneeded, arg, "") catch |
| | 2739 | return sema.createAnonymousDeclTypeNamed(block, src, typed_value, .anon, anon_prefix, null); |
| 2736 | | 2740 | |
| 2737 | if (arg_i != 0) try buf.appendSlice(","); | 2741 | if (arg_i != 0) try buf.appendSlice(","); |
| 2738 | try buf.writer().print("{}", .{arg_val.fmtValue(sema.typeOf(arg), sema.mod)}); | 2742 | try buf.writer().print("{}", .{arg_val.fmtValue(sema.typeOf(arg), sema.mod)}); |
| ... | @@ -6562,7 +6566,6 @@ fn analyzeCall( | ... | @@ -6562,7 +6566,6 @@ fn analyzeCall( |
| 6562 | ) CompileError!Air.Inst.Ref { | 6566 | ) CompileError!Air.Inst.Ref { |
| 6563 | const mod = sema.mod; | 6567 | const mod = sema.mod; |
| 6564 | | 6568 | |
| 6565 | | | |
| 6566 | const callee_ty = sema.typeOf(func); | 6569 | const callee_ty = sema.typeOf(func); |
| 6567 | const func_ty_info = func_ty.fnInfo(); | 6570 | const func_ty_info = func_ty.fnInfo(); |
| 6568 | const fn_params_len = func_ty_info.param_types.len; | 6571 | const fn_params_len = func_ty_info.param_types.len; |