Introduce typed-inst accessors for ConstantValueStore (#6980)

Add `InstIs`, `GetInstAs`, and `TryGetInstAs` which act on the
underlying constant instruction in a constant value, to save an explicit
call to `GetInstId`.

```carbon
context.insts().GetAs<InstT>(context.constant_values().GetInstId(const_id))
```
can now be written as simply
```carbon
context.constant_values().GetInstAs<InstT>(const_id)
```

For future work, we might provide `GetInst()` so that
`context.insts().Get(context.constant_values().GetInstId(const_id)` can
be shortened also.
This commit is contained in:
Dana Jansens
2026-03-27 21:41:04 +00:00
committed by GitHub
parent 899e54de36
commit 5503f643c6
15 changed files with 99 additions and 100 deletions
+2 -2
View File
@@ -26,8 +26,8 @@ namespace Carbon::Check {
static auto TypeAsClassDecl(Context& context,
SemIR::ConstantId query_self_const_id)
-> clang::CXXRecordDecl* {
auto self_inst_id = context.constant_values().GetInstId(query_self_const_id);
auto class_type = context.insts().TryGetAs<SemIR::ClassType>(self_inst_id);
auto class_type = context.constant_values().TryGetInstAs<SemIR::ClassType>(
query_self_const_id);
if (!class_type) {
// Not a class.
return nullptr;