@@ -6463,13 +6463,6 @@ static bool requiresNewVTableEntry(const AbstractFunctionDecl *decl) {
6463
6463
6464
6464
auto &ctx = dc->getASTContext ();
6465
6465
6466
- // FIXME: Remove this once getInterfaceType(), isDesignatedInit() and
6467
- // anything else that is used below has been request-ified.
6468
- if (!decl->hasInterfaceType ()) {
6469
- ctx.getLazyResolver ()->resolveDeclSignature (
6470
- const_cast <AbstractFunctionDecl *>(decl));
6471
- }
6472
-
6473
6466
// Initializers are not normally inherited, but required initializers can
6474
6467
// be overridden for invocation from dynamic types, and convenience initializers
6475
6468
// are conditionally inherited when all designated initializers are available,
@@ -6494,13 +6487,6 @@ static bool requiresNewVTableEntry(const AbstractFunctionDecl *decl) {
6494
6487
if (!base || base->hasClangNode () || base->isObjCDynamic ())
6495
6488
return true ;
6496
6489
6497
- // FIXME: Remove this once getInterfaceType(), isDesignatedInit() and
6498
- // anything else that is used below has been request-ified.
6499
- if (!base->hasInterfaceType ()) {
6500
- ctx.getLazyResolver ()->resolveDeclSignature (
6501
- const_cast <AbstractFunctionDecl *>(base));
6502
- }
6503
-
6504
6490
// As above, convenience initializers are not formally overridable in Swift
6505
6491
// vtables, although same-named initializers are modeled as overriding for
6506
6492
// various QoI and objc interop reasons. Even if we "override" a non-required
@@ -6517,6 +6503,17 @@ static bool requiresNewVTableEntry(const AbstractFunctionDecl *decl) {
6517
6503
if (decl->isEffectiveLinkageMoreVisibleThan (base))
6518
6504
return true ;
6519
6505
6506
+ // FIXME: Remove this once getInterfaceType() has been request-ified.
6507
+ if (!decl->hasInterfaceType ()) {
6508
+ ctx.getLazyResolver ()->resolveDeclSignature (
6509
+ const_cast <AbstractFunctionDecl *>(decl));
6510
+ }
6511
+
6512
+ if (!base->hasInterfaceType ()) {
6513
+ ctx.getLazyResolver ()->resolveDeclSignature (
6514
+ const_cast <AbstractFunctionDecl *>(base));
6515
+ }
6516
+
6520
6517
// If the method overrides something, we only need a new entry if the
6521
6518
// override has a more general AST type. However an abstraction
6522
6519
// change is OK; we don't want to add a whole new vtable entry just
0 commit comments