From aebd7f9d7fe2bac73c37333b7f2bf67c8fb995d4 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 1 May 2026 11:41:33 -0700 Subject: [PATCH] Simplify logic a little. (#7153) Also preserve the error state rather than overriding it, though this doesn't seem to make a difference in practice. Assisted-by: Gemini via Antigravity --- toolchain/check/call.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/toolchain/check/call.cpp b/toolchain/check/call.cpp index 0cc16c08f42e..9b8e82572f15 100644 --- a/toolchain/check/call.cpp +++ b/toolchain/check/call.cpp @@ -248,21 +248,12 @@ auto PerformCallToFunction(Context& context, SemIR::LocId loc_id, context, loc_id, callee.return_pattern_id, *callee_specific_id); if (arg_type_id == SemIR::ErrorInst::TypeId) { return_type_id = SemIR::ErrorInst::TypeId; - } - switch (SemIR::InitRepr::ForType(context.sem_ir(), arg_type_id).kind) { - case SemIR::InitRepr::InPlace: - case SemIR::InitRepr::Dependent: - // Tentatively use storage for a temporary as the return argument. - // This will be replaced if necessary when we perform initialization. - return_arg_id = AddInst( - context, loc_id, {.type_id = arg_type_id}); - break; - case SemIR::InitRepr::None: - case SemIR::InitRepr::ByCopy: - case SemIR::InitRepr::Incomplete: - case SemIR::InitRepr::Abstract: - return_arg_id = SemIR::InstId::None; - break; + } else if (SemIR::InitRepr::ForType(context.sem_ir(), arg_type_id) + .MightBeInPlace()) { + // Tentatively use storage for a temporary as the return argument. + // This will be replaced if necessary when we perform initialization. + return_arg_id = AddInst( + context, loc_id, {.type_id = arg_type_id}); } } // Convert the arguments to match the parameters.