mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 08:44:41 +01:00
Model the return slot as an output parameter (#4432)
Also fix `Param` insts to have meaningful names in pretty-printing, to help clarify relationship with return slot.
This commit is contained in:
@@ -9,7 +9,8 @@
|
||||
|
||||
namespace Carbon::Check {
|
||||
|
||||
auto PopNameComponent(Context& context) -> NameComponent {
|
||||
auto PopNameComponent(Context& context, SemIR::InstId return_slot_pattern_id)
|
||||
-> NameComponent {
|
||||
Parse::NodeId first_param_node_id = Parse::InvalidNodeId();
|
||||
Parse::NodeId last_param_node_id = Parse::InvalidNodeId();
|
||||
|
||||
@@ -42,8 +43,9 @@ auto PopNameComponent(Context& context) -> NameComponent {
|
||||
implicit_param_patterns_id = SemIR::InstBlockId::Invalid;
|
||||
}
|
||||
|
||||
auto [implicit_params_id, params_id] = CalleePatternMatch(
|
||||
context, *implicit_param_patterns_id, *param_patterns_id);
|
||||
auto [implicit_params_id, params_id, return_slot_id] =
|
||||
CalleePatternMatch(context, *implicit_param_patterns_id,
|
||||
*param_patterns_id, return_slot_pattern_id);
|
||||
|
||||
auto [name_loc_id, name_id] = context.node_stack().PopNameWithNodeId();
|
||||
return {
|
||||
@@ -57,6 +59,8 @@ auto PopNameComponent(Context& context) -> NameComponent {
|
||||
.params_loc_id = params_loc_id,
|
||||
.params_id = params_id,
|
||||
.param_patterns_id = *param_patterns_id,
|
||||
.return_slot_pattern_id = return_slot_pattern_id,
|
||||
.return_slot_id = return_slot_id,
|
||||
.pattern_block_id = context.pattern_block_stack().Pop(),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user