Skip to content

Commit 19aa552

Browse files
committed
[Clang Importer] Always set overridden decls and add ‘override’ attribute.
1 parent dcf53dc commit 19aa552

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

lib/ClangImporter/ImportDecl.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6389,6 +6389,12 @@ ConstructorDecl *SwiftDeclConverter::importConstructor(
63896389
}
63906390

63916391
void SwiftDeclConverter::recordObjCOverride(AbstractFunctionDecl *decl) {
6392+
// Make sure that we always set the overriden declarations.
6393+
SWIFT_DEFER {
6394+
if (!decl->overriddenDeclsComputed())
6395+
(void)decl->setOverriddenDecls({ });
6396+
};
6397+
63926398
// Figure out the class in which this method occurs.
63936399
if (!decl->getDeclContext()->isTypeContext())
63946400
return;
@@ -6419,6 +6425,7 @@ void SwiftDeclConverter::recordObjCOverride(AbstractFunctionDecl *decl) {
64196425
func->getObjCSelector() != foundFunc->getObjCSelector())
64206426
continue;
64216427
func->setOverriddenDecl(foundFunc);
6428+
func->getAttrs().add(new (func->getASTContext()) OverrideAttr(true));
64226429
return;
64236430
}
64246431
// Set constructor override.
@@ -6429,6 +6436,8 @@ void SwiftDeclConverter::recordObjCOverride(AbstractFunctionDecl *decl) {
64296436
ctor->getObjCSelector() != memberCtor->getObjCSelector())
64306437
continue;
64316438
ctor->setOverriddenDecl(memberCtor);
6439+
ctor->getAttrs().add(new (ctor->getASTContext()) OverrideAttr(true));
6440+
64326441
// Propagate 'required' to subclass initializers.
64336442
if (memberCtor->isRequired() &&
64346443
!ctor->getAttrs().hasAttribute<RequiredAttr>()) {

0 commit comments

Comments
 (0)