Skip to content

Commit

Permalink
2 small simplifications (#5055)
Browse files Browse the repository at this point in the history
* `IsInstanceMethod` can look in the function's `self_param_id` instead
of iterating through all of the implicit parameter patterns.
* An associated entity is always associated with a single interface, so
we don't need to handle the case when it isn't.

Co-authored-by: Josh L <josh11b@users.noreply.github.com>
  • Loading branch information
josh11b and josh11b authored Mar 3, 2025
1 parent 2d1bfca commit da601fa
Showing 1 changed file with 3 additions and 16 deletions.
19 changes: 3 additions & 16 deletions toolchain/check/member_access.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,7 @@ static auto GetClassElementIndex(Context& context, SemIR::InstId element_id)
static auto IsInstanceMethod(const SemIR::File& sem_ir,
SemIR::FunctionId function_id) -> bool {
const auto& function = sem_ir.functions().Get(function_id);
for (auto param_id :
sem_ir.inst_blocks().GetOrEmpty(function.implicit_param_patterns_id)) {
if (SemIR::Function::GetNameFromPatternId(sem_ir, param_id) ==
SemIR::NameId::SelfValue) {
return true;
}
}

return false;
return function.self_param_id.has_value();
}

// Returns the highest allowed access. For example, if this returns `Protected`
Expand Down Expand Up @@ -187,13 +179,8 @@ static auto PerformImplLookup(
MakeDiagnosticBuilderFn missing_impl_diagnoser = nullptr) -> SemIR::InstId {
auto interface_type =
GetInterfaceFromFacetType(context, assoc_type.interface_type_id);
if (!interface_type) {
context.TODO(loc_id,
"Lookup of impl witness not yet supported except for a single "
"interface");
return SemIR::ErrorInst::SingletonInstId;
}

// An associated entity is always associated with a single interface.
CARBON_CHECK(interface_type);
auto self_type_id = context.types().GetTypeIdForTypeConstantId(type_const_id);
auto witness_id =
LookupImplWitness(context, loc_id, type_const_id,
Expand Down

0 comments on commit da601fa

Please sign in to comment.