| 123456789101112131415161718192021222324252627282930 |
- // Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- // Exceptions. See /LICENSE for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- #include "toolchain/check/context.h"
- #include "toolchain/check/convert.h"
- #include "toolchain/sem_ir/inst.h"
- 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, expr.parse_node(), expr_id,
- {.kind = ConversionTarget::Discarded, .type_id = expr.type_id()});
- // TODO: This will eventually need to do some "do not discard" analysis.
- }
- auto HandleExprStatement(Context& context,
- Parse::ExprStatementId /*parse_node*/) -> bool {
- HandleDiscardedExpr(context, context.node_stack().PopExpr());
- return true;
- }
- } // namespace Carbon::Check
|