diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-04-20 23:15:35 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-04-20 23:15:35 +0000 |
commit | becc308ff32df8c5738ffb958f8033189d62d6f2 (patch) | |
tree | 2f5f05ad3e1e2e62c47ffb09da7dcef5ca623dc9 /lib/AST/Decl.cpp | |
parent | 84688f2a21bfde3cfdf1c41a053ef7b774d4cd0c (diff) |
Specify linkage for Objective-C declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101953 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Decl.cpp')
-rw-r--r-- | lib/AST/Decl.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index b02cbdeb26..b11f61757d 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -286,6 +286,29 @@ static Linkage getLinkageForNamespaceScopeDecl(const NamedDecl *D) { } Linkage NamedDecl::getLinkage() const { + + // Objective-C: treat all Objective-C declarations as having external + // linkage. + switch (getKind()) { + default: + break; + case Decl::ObjCAtDefsField: + case Decl::ObjCCategory: + case Decl::ObjCCategoryImpl: + case Decl::ObjCClass: + case Decl::ObjCCompatibleAlias: + case Decl::ObjCContainer: + case Decl::ObjCForwardProtocol: + case Decl::ObjCImplementation: + case Decl::ObjCInterface: + case Decl::ObjCIvar: + case Decl::ObjCMethod: + case Decl::ObjCProperty: + case Decl::ObjCPropertyImpl: + case Decl::ObjCProtocol: + return ExternalLinkage; + } + // Handle linkage for namespace-scope names. if (getDeclContext()->getLookupContext()->isFileContext()) if (Linkage L = getLinkageForNamespaceScopeDecl(this)) |