diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-03-10 18:25:06 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-03-10 18:25:06 +0000 |
commit | ce0d89744bdad195c991362bd6fc7b334e5c2d52 (patch) | |
tree | 763e399dc1fe6f8c83ccb56645085ceda66e50c0 /lib/Rewrite/RewriteModernObjC.cpp | |
parent | 6991bc5a45b6d334a19e1ba995c8aea16553973b (diff) |
objective-c modern rewriter: add __declspec(dllexport) to forward
declaration of class metadata when they are defined later.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152500 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Rewrite/RewriteModernObjC.cpp')
-rw-r--r-- | lib/Rewrite/RewriteModernObjC.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp index 87d49fd08f..269249d65e 100644 --- a/lib/Rewrite/RewriteModernObjC.cpp +++ b/lib/Rewrite/RewriteModernObjC.cpp @@ -5682,13 +5682,20 @@ static void Write_class_t(ASTContext *Context, std::string &Result, if (metadata && !CDecl->getSuperClass()) { // Need to handle a case of use of forward declaration. - Result += "\nextern struct _class_t OBJC_CLASS_$_"; + Result += "\n"; + if (CDecl->getImplementation()) + Result += "__declspec(dllexport) "; + Result += "extern struct _class_t OBJC_CLASS_$_"; Result += CDecl->getNameAsString(); Result += ";\n"; } // Also, for possibility of 'super' metadata class not having been defined yet. if (CDecl->getSuperClass()) { - Result += "\nextern struct _class_t "; Result += VarName; + Result += "\n"; + if (CDecl->getSuperClass()->getImplementation()) + Result += "__declspec(dllexport) "; + Result += "extern struct _class_t "; + Result += VarName; Result += CDecl->getSuperClass()->getNameAsString(); Result += ";\n"; } |