diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-03-29 19:04:10 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-03-29 19:04:10 +0000 |
commit | 868e985d4e2845cf19517dac932dfd013a8494b9 (patch) | |
tree | e7b287e1cf6e3fb01d3b6a78b50eb74fdab9f25e | |
parent | df8dc86148a209792dfcbe7b05a00294ed3bcff4 (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.cpp | 7 |
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) "; |