Skip to content

Commit 33109d8

Browse files
committed
[AST] Imported classes have no stored properties.
Avoid triggering the import of all of the members of an Objective-C class to determine its stored properties, because we don't import instance variables of Objective-C classes. rdar://problem/45060773
1 parent 59543a1 commit 33109d8

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

include/swift/AST/Decl.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3233,10 +3233,7 @@ class NominalTypeDecl : public GenericTypeDecl, public IterableDeclContext {
32333233
ToStoredProperty>;
32343234

32353235
/// Return a collection of the stored member variables of this type.
3236-
StoredPropertyRange getStoredProperties(bool skipInaccessible = false) const {
3237-
return StoredPropertyRange(getMembers(),
3238-
ToStoredProperty(skipInaccessible));
3239-
}
3236+
StoredPropertyRange getStoredProperties(bool skipInaccessible = false) const;
32403237

32413238
private:
32423239
/// Predicate used to filter StoredPropertyRange.

lib/AST/Decl.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3000,6 +3000,17 @@ void NominalTypeDecl::addExtension(ExtensionDecl *extension) {
30003000
LastExtension = extension;
30013001
}
30023002

3003+
auto NominalTypeDecl::getStoredProperties(bool skipInaccessible) const
3004+
-> StoredPropertyRange {
3005+
// Clang-imported classes never have stored properties.
3006+
if (hasClangNode() && isa<ClassDecl>(this))
3007+
return StoredPropertyRange(DeclRange(nullptr, nullptr),
3008+
ToStoredProperty(skipInaccessible));
3009+
3010+
return StoredPropertyRange(getMembers(),
3011+
ToStoredProperty(skipInaccessible));
3012+
}
3013+
30033014
bool NominalTypeDecl::isOptionalDecl() const {
30043015
return this == getASTContext().getOptionalDecl();
30053016
}

0 commit comments

Comments
 (0)