AST: ModuleDecl::lookupConformance() is a static method

This commit is contained in:
Slava Pestov
2024-07-05 15:16:25 -04:00
parent e8d717bcd6
commit 86d567f95a
54 changed files with 186 additions and 261 deletions

View File

@@ -110,10 +110,9 @@ deriveBodyMathOperator(AbstractFunctionDecl *funcDecl, MathOperator op) {
// Create expression combining lhs and rhs members using member operator.
auto createMemberOpExpr = [&](VarDecl *member) -> Expr * {
auto module = nominal->getModuleContext();
auto memberType =
parentDC->mapTypeIntoContext(member->getValueInterfaceType());
auto confRef = module->lookupConformance(memberType, proto);
auto confRef = ModuleDecl::lookupConformance(memberType, proto);
assert(confRef && "Member does not conform to math protocol");
// Get member type's math operator, e.g. `Member.+`.
@@ -249,8 +248,7 @@ deriveBodyPropertyGetter(AbstractFunctionDecl *funcDecl, ProtocolDecl *proto,
new (C) MemberRefExpr(selfDRE, SourceLoc(), member, DeclNameLoc(),
/*Implicit*/ true);
}
auto *module = nominal->getModuleContext();
auto confRef = module->lookupConformance(memberType, proto);
auto confRef = ModuleDecl::lookupConformance(memberType, proto);
assert(confRef && "Member does not conform to `AdditiveArithmetic`");
// If conformance reference is not concrete, then concrete witness
// declaration for property cannot be resolved. Return reference to