Tweak RewriteInterfaceDecl() to generate a typedef (if one hasn't already been generated).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43600 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index 999b079..026c5d6 100644
--- a/Driver/RewriteTest.cpp
+++ b/Driver/RewriteTest.cpp
@@ -329,6 +329,17 @@
   endBuf += Lexer::MeasureTokenLength(LocEnd, *SM);
 
   std::string ResultStr;
+  if (!ObjcForwardDecls.count(ClassDecl)) {
+    // we haven't seen a forward decl - generate a typedef.
+    ResultStr += "typedef struct ";
+    ResultStr += ClassDecl->getName();
+    ResultStr += " ";
+    ResultStr += ClassDecl->getName();
+    ResultStr += ";";
+    
+    // Mark this typedef as having been generated.
+    ObjcForwardDecls.insert(ClassDecl);
+  }
   SynthesizeObjcInternalStruct(ClassDecl, ResultStr);
     
   Rewrite.ReplaceText(LocStart, endBuf-startBuf,