diff --git a/toolchain/check/member_access.cpp b/toolchain/check/member_access.cpp index ed94ab4eef8b..901e4d8b7974 100644 --- a/toolchain/check/member_access.cpp +++ b/toolchain/check/member_access.cpp @@ -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` @@ -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,