Skip to content

Commit fd3b0b0

Browse files
authored
Remove redundant function parameter (#6313)
1 parent 30c3a35 commit fd3b0b0

File tree

1 file changed

+31
-48
lines changed

1 file changed

+31
-48
lines changed

toolchain/check/pattern_match.cpp

Lines changed: 31 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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

209199
auto 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

266255
auto 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

305293
auto 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

353340
auto 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

416402
auto 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

462447
auto 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

480465
auto 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

545529
auto 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

Comments
 (0)