@@ -95,37 +95,27 @@ class MatchContext {
9595 // Implementations of `EmitPatternMatch` for particular pattern inst kinds.
9696 // The pattern argument is always equal to
9797 // `context.insts().Get(entry.pattern_id)`.
98- // TODO: drop pattern_inst_id parameter, which is redundant with
99- // entry.pattern_id
10098 auto DoEmitPatternMatch (Context& context,
10199 SemIR::AnyBindingPattern binding_pattern,
102- SemIR::InstId pattern_inst_id, WorkItem entry)
103- -> void;
100+ WorkItem entry) -> void;
104101 auto DoEmitPatternMatch (Context& context, SemIR::AddrPattern addr_pattern,
105- SemIR::InstId pattern_inst_id, WorkItem entry)
106- -> void;
102+ WorkItem entry) -> void;
107103 auto DoEmitPatternMatch (Context& context,
108104 SemIR::ValueParamPattern param_pattern,
109- SemIR::InstId pattern_inst_id, WorkItem entry)
110- -> void;
105+ WorkItem entry) -> void;
111106 auto DoEmitPatternMatch (Context& context,
112- SemIR::RefParamPattern param_pattern,
113- SemIR::InstId pattern_inst_id, WorkItem entry)
107+ SemIR::RefParamPattern param_pattern, WorkItem entry)
114108 -> void;
115109 auto DoEmitPatternMatch (Context& context,
116- SemIR::OutParamPattern param_pattern,
117- SemIR::InstId pattern_inst_id, WorkItem entry)
110+ SemIR::OutParamPattern param_pattern, WorkItem entry)
118111 -> void;
119112 auto DoEmitPatternMatch (Context& context,
120113 SemIR::ReturnSlotPattern return_slot_pattern,
121- SemIR::InstId pattern_inst_id, WorkItem entry)
122- -> void;
114+ WorkItem entry) -> void;
123115 auto DoEmitPatternMatch (Context& context, SemIR::VarPattern var_pattern,
124- SemIR::InstId pattern_inst_id, WorkItem entry)
125- -> void;
116+ WorkItem entry) -> void;
126117 auto DoEmitPatternMatch (Context& context, SemIR::TuplePattern tuple_pattern,
127- SemIR::InstId pattern_inst_id, WorkItem entry)
128- -> void;
118+ WorkItem entry) -> void;
129119
130120 // The stack of work to be processed.
131121 llvm::SmallVector<WorkItem> stack_;
@@ -208,7 +198,6 @@ static auto InsertHere(Context& context, SemIR::ExprRegionId region_id)
208198
209199auto MatchContext::DoEmitPatternMatch (Context& context,
210200 SemIR::AnyBindingPattern binding_pattern,
211- SemIR::InstId /* pattern_inst_id*/ ,
212201 MatchContext::WorkItem entry) -> void {
213202 if (kind_ == MatchKind::Caller) {
214203 CARBON_CHECK (binding_pattern.kind == SemIR::SymbolicBindingPattern::Kind,
@@ -265,7 +254,6 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
265254
266255auto MatchContext::DoEmitPatternMatch (Context& context,
267256 SemIR::AddrPattern addr_pattern,
268- SemIR::InstId /* pattern_inst_id*/ ,
269257 WorkItem entry) -> void {
270258 CARBON_CHECK (kind_ != MatchKind::Local);
271259 if (kind_ == MatchKind::Callee) {
@@ -304,7 +292,6 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
304292
305293auto MatchContext::DoEmitPatternMatch (Context& context,
306294 SemIR::ValueParamPattern param_pattern,
307- SemIR::InstId pattern_inst_id,
308295 WorkItem entry) -> void {
309296 switch (kind_) {
310297 case MatchKind::Caller: {
@@ -321,7 +308,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
321308 ExtractScrutineeType (
322309 context.sem_ir (),
323310 SemIR::GetTypeOfInstInSpecific (
324- context.sem_ir (), callee_specific_id_, pattern_inst_id ))));
311+ context.sem_ir (), callee_specific_id_, entry. pattern_id ))));
325312 }
326313 // Do not traverse farther, because the caller side of the pattern
327314 // ends here.
@@ -333,7 +320,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
333320 param_pattern.index = NextRuntimeIndex ();
334321 ReplaceInstBeforeConstantUse (context, entry.pattern_id , param_pattern);
335322 auto param_id = AddInst<SemIR::ValueParam>(
336- context, SemIR::LocId (pattern_inst_id ),
323+ context, SemIR::LocId (entry. pattern_id ),
337324 {.type_id =
338325 ExtractScrutineeType (context.sem_ir (), param_pattern.type_id ),
339326 .index = param_pattern.index ,
@@ -352,7 +339,6 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
352339
353340auto MatchContext::DoEmitPatternMatch (Context& context,
354341 SemIR::RefParamPattern param_pattern,
355- SemIR::InstId pattern_inst_id,
356342 WorkItem entry) -> void {
357343 switch (kind_) {
358344 case MatchKind::Caller: {
@@ -370,7 +356,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
370356 ExtractScrutineeType (
371357 context.sem_ir (),
372358 SemIR::GetTypeOfInstInSpecific (
373- context.sem_ir (), callee_specific_id_, pattern_inst_id )));
359+ context.sem_ir (), callee_specific_id_, entry. pattern_id )));
374360
375361 switch (SemIR::GetExprCategory (context.sem_ir (), scrutinee_ref_id)) {
376362 case SemIR::ExprCategory::Error:
@@ -396,7 +382,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
396382 param_pattern.index = NextRuntimeIndex ();
397383 ReplaceInstBeforeConstantUse (context, entry.pattern_id , param_pattern);
398384 auto param_id = AddInst<SemIR::RefParam>(
399- context, SemIR::LocId (pattern_inst_id ),
385+ context, SemIR::LocId (entry. pattern_id ),
400386 {.type_id =
401387 ExtractScrutineeType (context.sem_ir (), param_pattern.type_id ),
402388 .index = param_pattern.index ,
@@ -415,7 +401,6 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
415401
416402auto MatchContext::DoEmitPatternMatch (Context& context,
417403 SemIR::OutParamPattern param_pattern,
418- SemIR::InstId pattern_inst_id,
419404 WorkItem entry) -> void {
420405 switch (kind_) {
421406 case MatchKind::Caller: {
@@ -429,7 +414,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
429414 ExtractScrutineeType (
430415 context.sem_ir (),
431416 SemIR::GetTypeOfInstInSpecific (
432- context.sem_ir (), callee_specific_id_, pattern_inst_id )));
417+ context.sem_ir (), callee_specific_id_, entry. pattern_id )));
433418 results_.push_back (entry.scrutinee_id );
434419 // Do not traverse farther, because the caller side of the pattern
435420 // ends here.
@@ -442,7 +427,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
442427 param_pattern.index = NextRuntimeIndex ();
443428 ReplaceInstBeforeConstantUse (context, entry.pattern_id , param_pattern);
444429 auto param_id = AddInst<SemIR::OutParam>(
445- context, SemIR::LocId (pattern_inst_id ),
430+ context, SemIR::LocId (entry. pattern_id ),
446431 {.type_id =
447432 ExtractScrutineeType (context.sem_ir (), param_pattern.type_id ),
448433 .index = param_pattern.index ,
@@ -461,12 +446,12 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
461446
462447auto MatchContext::DoEmitPatternMatch (
463448 Context& context, SemIR::ReturnSlotPattern return_slot_pattern,
464- SemIR::InstId pattern_inst_id, WorkItem entry) -> void {
449+ WorkItem entry) -> void {
465450 CARBON_CHECK (kind_ == MatchKind::Callee);
466451 auto type_id =
467452 ExtractScrutineeType (context.sem_ir (), return_slot_pattern.type_id );
468453 auto return_slot_id = AddInst<SemIR::ReturnSlot>(
469- context, SemIR::LocId (pattern_inst_id ),
454+ context, SemIR::LocId (entry. pattern_id ),
470455 {.type_id = type_id,
471456 .type_inst_id = context.types ().GetInstId (type_id),
472457 .storage_id = entry.scrutinee_id });
@@ -479,7 +464,6 @@ auto MatchContext::DoEmitPatternMatch(
479464
480465auto MatchContext::DoEmitPatternMatch (Context& context,
481466 SemIR::VarPattern var_pattern,
482- SemIR::InstId pattern_inst_id,
483467 WorkItem entry) -> void {
484468 auto storage_id = SemIR::InstId::None;
485469 switch (kind_) {
@@ -501,7 +485,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
501485 }
502486 case MatchKind::Caller: {
503487 storage_id = AddInst<SemIR::TemporaryStorage>(
504- context, SemIR::LocId (pattern_inst_id ),
488+ context, SemIR::LocId (entry. pattern_id ),
505489 {.type_id =
506490 ExtractScrutineeType (context.sem_ir (), var_pattern.type_id )});
507491 CARBON_CHECK (entry.scrutinee_id .has_value ());
@@ -515,7 +499,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
515499 context.global_init ().Resume ();
516500 }
517501 if (entry.scrutinee_id .has_value ()) {
518- auto init_id = Initialize (context, SemIR::LocId (pattern_inst_id ),
502+ auto init_id = Initialize (context, SemIR::LocId (entry. pattern_id ),
519503 storage_id, entry.scrutinee_id );
520504 // If we created a `TemporaryStorage` to hold the var, create a
521505 // corresponding `Temporary` to model that its initialization is complete.
@@ -524,14 +508,14 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
524508 // support destructive move from it.
525509 if (kind_ == MatchKind::Caller) {
526510 storage_id = AddInstWithCleanup<SemIR::Temporary>(
527- context, SemIR::LocId (pattern_inst_id ),
511+ context, SemIR::LocId (entry. pattern_id ),
528512 {.type_id = context.insts ().Get (storage_id).type_id (),
529513 .storage_id = storage_id,
530514 .init_id = init_id});
531515 } else {
532516 // TODO: Consider using different instruction kinds for assignment
533517 // versus initialization.
534- AddInst<SemIR::Assign>(context, SemIR::LocId (pattern_inst_id ),
518+ AddInst<SemIR::Assign>(context, SemIR::LocId (entry. pattern_id ),
535519 {.lhs_id = storage_id, .rhs_id = init_id});
536520 }
537521 }
@@ -544,7 +528,6 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
544528
545529auto MatchContext::DoEmitPatternMatch (Context& context,
546530 SemIR::TuplePattern tuple_pattern,
547- SemIR::InstId pattern_inst_id,
548531 WorkItem entry) -> void {
549532 if (tuple_pattern.type_id == SemIR::ErrorInst::TypeId) {
550533 return ;
@@ -560,7 +543,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
560543 };
561544 if (!entry.scrutinee_id .has_value ()) {
562545 CARBON_CHECK (kind_ == MatchKind::Callee);
563- context.TODO (pattern_inst_id ,
546+ context.TODO (entry. pattern_id ,
564547 " Support patterns besides bindings in parameter list" );
565548 return ;
566549 }
@@ -573,7 +556,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
573556 " tuple pattern expects {0} element{0:s}, but tuple "
574557 " literal has {1}" ,
575558 Diagnostics::IntAsSelect, Diagnostics::IntAsSelect);
576- context.emitter ().Emit (pattern_inst_id ,
559+ context.emitter ().Emit (entry. pattern_id ,
577560 TuplePatternSizeDoesntMatchLiteral,
578561 subpattern_ids.size (), subscrutinee_ids.size ());
579562 return ;
@@ -585,7 +568,7 @@ auto MatchContext::DoEmitPatternMatch(Context& context,
585568 auto tuple_type_id =
586569 ExtractScrutineeType (context.sem_ir (), tuple_pattern.type_id );
587570 auto converted_scrutinee_id =
588- ConvertToValueOrRefOfType (context, SemIR::LocId (pattern_inst_id ),
571+ ConvertToValueOrRefOfType (context, SemIR::LocId (entry. pattern_id ),
589572 entry.scrutinee_id , tuple_type_id);
590573 if (auto scrutinee_value =
591574 context.insts ().TryGetAs <SemIR::TupleValue>(converted_scrutinee_id)) {
@@ -629,35 +612,35 @@ auto MatchContext::EmitPatternMatch(Context& context,
629612 case SemIR::SymbolicBindingPattern::Kind:
630613 case SemIR::ValueBindingPattern::Kind: {
631614 DoEmitPatternMatch (context, pattern.As <SemIR::AnyBindingPattern>(),
632- entry. pattern_id , entry );
615+ entry);
633616 break ;
634617 }
635618 case CARBON_KIND (SemIR::AddrPattern addr_pattern): {
636- DoEmitPatternMatch (context, addr_pattern, entry. pattern_id , entry );
619+ DoEmitPatternMatch (context, addr_pattern, entry);
637620 break ;
638621 }
639622 case CARBON_KIND (SemIR::ValueParamPattern param_pattern): {
640- DoEmitPatternMatch (context, param_pattern, entry. pattern_id , entry );
623+ DoEmitPatternMatch (context, param_pattern, entry);
641624 break ;
642625 }
643626 case CARBON_KIND (SemIR::RefParamPattern param_pattern): {
644- DoEmitPatternMatch (context, param_pattern, entry. pattern_id , entry );
627+ DoEmitPatternMatch (context, param_pattern, entry);
645628 break ;
646629 }
647630 case CARBON_KIND (SemIR::OutParamPattern param_pattern): {
648- DoEmitPatternMatch (context, param_pattern, entry. pattern_id , entry );
631+ DoEmitPatternMatch (context, param_pattern, entry);
649632 break ;
650633 }
651634 case CARBON_KIND (SemIR::ReturnSlotPattern return_slot_pattern): {
652- DoEmitPatternMatch (context, return_slot_pattern, entry. pattern_id , entry );
635+ DoEmitPatternMatch (context, return_slot_pattern, entry);
653636 break ;
654637 }
655638 case CARBON_KIND (SemIR::VarPattern var_pattern): {
656- DoEmitPatternMatch (context, var_pattern, entry. pattern_id , entry );
639+ DoEmitPatternMatch (context, var_pattern, entry);
657640 break ;
658641 }
659642 case CARBON_KIND (SemIR::TuplePattern tuple_pattern): {
660- DoEmitPatternMatch (context, tuple_pattern, entry. pattern_id , entry );
643+ DoEmitPatternMatch (context, tuple_pattern, entry);
661644 break ;
662645 }
663646 default : {
0 commit comments