| ... | @@ -3888,6 +3888,14 @@ fn analyzeCall( | ... | @@ -3888,6 +3888,14 @@ fn analyzeCall( |
| 3888 | | 3888 | |
| 3889 | if (is_comptime_call) { | 3889 | if (is_comptime_call) { |
| 3890 | const arg_val = try sema.resolveConstMaybeUndefVal(&child_block, arg_src, casted_arg); | 3890 | const arg_val = try sema.resolveConstMaybeUndefVal(&child_block, arg_src, casted_arg); |
| | 3891 | switch (arg_val.tag()) { |
| | 3892 | .generic_poison, .generic_poison_type => { |
| | 3893 | // This function is currently evaluated as part of an as-of-yet unresolvable |
| | 3894 | // parameter or return type. |
| | 3895 | return error.GenericPoison; |
| | 3896 | }, |
| | 3897 | else => {}, |
| | 3898 | } |
| 3891 | memoized_call_key.args[arg_i] = .{ | 3899 | memoized_call_key.args[arg_i] = .{ |
| 3892 | .ty = param_ty, | 3900 | .ty = param_ty, |
| 3893 | .val = arg_val, | 3901 | .val = arg_val, |
| ... | @@ -3905,6 +3913,14 @@ fn analyzeCall( | ... | @@ -3905,6 +3913,14 @@ fn analyzeCall( |
| 3905 | if (is_comptime_call) { | 3913 | if (is_comptime_call) { |
| 3906 | const arg_src = call_src; // TODO: better source location | 3914 | const arg_src = call_src; // TODO: better source location |
| 3907 | const arg_val = try sema.resolveConstMaybeUndefVal(&child_block, arg_src, uncasted_arg); | 3915 | const arg_val = try sema.resolveConstMaybeUndefVal(&child_block, arg_src, uncasted_arg); |
| | 3916 | switch (arg_val.tag()) { |
| | 3917 | .generic_poison, .generic_poison_type => { |
| | 3918 | // This function is currently evaluated as part of an as-of-yet unresolvable |
| | 3919 | // parameter or return type. |
| | 3920 | return error.GenericPoison; |
| | 3921 | }, |
| | 3922 | else => {}, |
| | 3923 | } |
| 3908 | memoized_call_key.args[arg_i] = .{ | 3924 | memoized_call_key.args[arg_i] = .{ |
| 3909 | .ty = sema.typeOf(uncasted_arg), | 3925 | .ty = sema.typeOf(uncasted_arg), |
| 3910 | .val = arg_val, | 3926 | .val = arg_val, |