aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2012-03-29 19:04:10 +0000
committerFariborz Jahanian <fjahanian@apple.com>2012-03-29 19:04:10 +0000
commit868e985d4e2845cf19517dac932dfd013a8494b9 (patch)
treee7b287e1cf6e3fb01d3b6a78b50eb74fdab9f25e
parentdf8dc86148a209792dfcbe7b05a00294ed3bcff4 (diff)
modern objc translator: avoid some duplicate declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153674 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Rewrite/RewriteModernObjC.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp
index 5b9a12fb9b..ec7089af57 100644
--- a/lib/Rewrite/RewriteModernObjC.cpp
+++ b/lib/Rewrite/RewriteModernObjC.cpp
@@ -5689,19 +5689,20 @@ static void Write_class_t(ASTContext *Context, std::string &Result,
}
// Also, for possibility of 'super' metadata class not having been defined yet.
if (!rootClass) {
+ ObjCInterfaceDecl *SuperClass = CDecl->getSuperClass();
Result += "\n";
Result += "extern \"C\" ";
- if (CDecl->getSuperClass()->getImplementation())
+ if (SuperClass->getImplementation())
Result += "__declspec(dllexport) ";
else
Result += "__declspec(dllimport) ";
Result += "struct _class_t ";
Result += VarName;
- Result += CDecl->getSuperClass()->getNameAsString();
+ Result += SuperClass->getNameAsString();
Result += ";\n";
- if (metaclass) {
+ if (metaclass && RootClass != SuperClass) {
Result += "extern \"C\" ";
if (RootClass->getImplementation())
Result += "__declspec(dllexport) ";