Convert discarded calls in thunks. (#5452)

No functionality change right now: we reject thunks where the signature
has no return type and the callee has a return type. But discarding the
expression is still the right thing to do.
This commit is contained in:
Richard Smith
2025-05-09 16:35:28 +00:00
committed by GitHub
parent 2cb0df42e0
commit 69b9982e95
4 changed files with 16 additions and 14 deletions
+1 -14
View File
@@ -9,22 +9,9 @@
namespace Carbon::Check {
// TODO: Find a better home for this. We'll likely need it for more than just
// expression statements.
static auto HandleDiscardedExpr(Context& context, SemIR::InstId expr_id)
-> void {
// If we discard an initializing expression, convert it to a value or
// reference so that it has something to initialize.
auto expr = context.insts().Get(expr_id);
Convert(context, SemIR::LocId(expr_id), expr_id,
{.kind = ConversionTarget::Discarded, .type_id = expr.type_id()});
// TODO: This will eventually need to do some "do not discard" analysis.
}
auto HandleParseNode(Context& context, Parse::ExprStatementId /*node_id*/)
-> bool {
HandleDiscardedExpr(context, context.node_stack().PopExpr());
DiscardExpr(context, context.node_stack().PopExpr());
return true;
}