diff --git a/toolchain/check/convert.cpp b/toolchain/check/convert.cpp index 16ec2fba4a42..4f7f96973792 100644 --- a/toolchain/check/convert.cpp +++ b/toolchain/check/convert.cpp @@ -1886,7 +1886,7 @@ auto CategoryConverter::DoStep(const SemIR::InstId expr_id, if (target_.kind == ConversionTarget::Discarded) { DiscardInitializer(context_, expr_id); - return Done{SemIR::InstId::None}; + return Done{expr_id}; } else if (IsValidExprCategoryForConversionTarget(category, target_.kind)) { return Done{expr_id}; diff --git a/toolchain/check/testdata/generic/template/argument.carbon b/toolchain/check/testdata/generic/template/argument.carbon index f3eb9334d353..90806e22160f 100644 --- a/toolchain/check/testdata/generic/template/argument.carbon +++ b/toolchain/check/testdata/generic/template/argument.carbon @@ -25,6 +25,32 @@ fn G(x: X) { F(X, x); } +// --- forward_template_type_to_template.carbon +library "[[@TEST_NAME]]"; + +fn F(template T: type, unused x: T) {} + +fn ForwardTemplate(template T: type, x: T) { + F(T, x); +} + +fn CallForwardTemplate() { + ForwardTemplate({}, {}); +} + +// --- forward_generic_type_to_template.carbon +library "[[@TEST_NAME]]"; + +fn F(template T: type, unused x: T) {} + +fn ForwardGeneric(generic T: type, x: T) { + F(T, x); +} + +fn CallForwardGeneric() { + ForwardGeneric({}, {}); +} + // --- constant_nontype_argument.carbon library "[[@TEST_NAME]]";