@@ -5185,25 +5185,25 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
5185
5185
if (decl->isInvalid () || decl->getOverriddenDecl ())
5186
5186
return false ;
5187
5187
5188
+ // Ignore accessor methods (e.g. getters and setters), they will be handled
5189
+ // when their storage decl is processed.
5190
+ if (isa<AccessorDecl>(decl))
5191
+ return false ;
5192
+
5188
5193
auto *dc = decl->getDeclContext ();
5189
5194
5190
5195
auto owningTy = dc->getDeclaredInterfaceType ();
5191
5196
if (!owningTy)
5192
5197
return false ;
5193
5198
5194
- auto classDecl = owningTy-> getClassOrBoundGenericClass ();
5199
+ auto classDecl = dc-> getAsClassOrClassExtensionContext ();
5195
5200
if (!classDecl)
5196
5201
return false ;
5197
5202
5198
5203
Type superclass = classDecl->getSuperclass ();
5199
5204
if (!superclass)
5200
5205
return false ;
5201
5206
5202
- // Ignore accessor methods (e.g. getters and setters), they will be handled
5203
- // when their storage decl is processed.
5204
- if (isa<AccessorDecl>(decl))
5205
- return false ;
5206
-
5207
5207
auto method = dyn_cast<AbstractFunctionDecl>(decl);
5208
5208
ConstructorDecl *ctor = nullptr ;
5209
5209
if (method)
@@ -5279,12 +5279,6 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
5279
5279
// visible via dynamic dispatch.
5280
5280
lookupOptions -= NameLookupFlags::DynamicLookup;
5281
5281
5282
- // Class methods cannot override declarations only
5283
- // visible as protocol requirements or protocol
5284
- // extension members.
5285
- lookupOptions -= NameLookupFlags::ProtocolMembers;
5286
- lookupOptions -= NameLookupFlags::PerformConformanceCheck;
5287
-
5288
5282
members = TC.lookupMember (dc, superclass,
5289
5283
name, lookupOptions);
5290
5284
}
@@ -5298,7 +5292,10 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
5298
5292
if (member->getKind () != decl->getKind ())
5299
5293
continue ;
5300
5294
5301
- if (!dc->getAsClassOrClassExtensionContext ())
5295
+ // Class methods cannot override declarations only
5296
+ // visible as protocol requirements or protocol
5297
+ // extension members.
5298
+ if (!member->getDeclContext ()->getAsClassOrClassExtensionContext ())
5302
5299
continue ;
5303
5300
5304
5301
auto parentDecl = cast<ValueDecl>(member);
0 commit comments