diff options
-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"; } |