mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Replace form insts with actions (#7100)
See [here](https://docs.google.com/document/d/1rWcueFwIfZox6GKVGxiUG4cBzjrZ6djXiIDGyJDtrE4/edit?tab=t.0) for the design doc. This also removes the default value of the `result_type_inst_id` parameter of `HandleAction`, moves it before the action in the parameter list, and documents it. This solves two problems: - The default made it easy to forget, leading to unnecessary `TypeOfInst` instructions. - When it was present, putting it after the fairly "bulky" action argument tended to make the callsite harder to read.
This commit is contained in:
@@ -93,21 +93,6 @@ static auto GetExprCategoryImpl(const File* ir, InstId inst_id)
|
||||
return ExprCategory::ReprInitializing;
|
||||
}
|
||||
}
|
||||
} else if constexpr (std::same_as<TypedInstT, FormBinding>) {
|
||||
auto form_id = ir->entity_names().Get(inst.entity_name_id).form_id;
|
||||
auto form_inst = ir->insts().Get(form_id);
|
||||
CARBON_KIND_SWITCH(form_inst) {
|
||||
case InitForm::Kind:
|
||||
// A `var` binding pattern produces a `ref` binding.
|
||||
case RefForm::Kind:
|
||||
return ExprCategory::DurableRef;
|
||||
case ValueForm::Kind:
|
||||
return ExprCategory::Value;
|
||||
case ErrorInst::Kind:
|
||||
return ExprCategory::Error;
|
||||
default:
|
||||
CARBON_FATAL("Unexpected kind for form inst {0}", form_inst);
|
||||
}
|
||||
} else {
|
||||
static_assert(
|
||||
TypedInstT::Kind.expr_category().TryAsComputedCategory() !=
|
||||
|
||||
Reference in New Issue
Block a user