Fix two rewriter bugs:

- For @class, don't generate multiple typedefs.
- Handle the following edge case interface...

@interface NSMiddleSpecifier : NSObject {}

@end

...which was incorrectly being rewritten to...

struct _interface_NSMiddleSpecifier {
        struct _interface_NSObject _NSObject;
};
{}



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43582 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp
index 579c48c..301b041 100644
--- a/Parse/ParseObjc.cpp
+++ b/Parse/ParseObjc.cpp
@@ -740,11 +740,11 @@
     }
   }
   SourceLocation RBraceLoc = MatchRHSPunctuation(tok::r_brace, LBraceLoc);
-  if (AllIvarDecls.size()) {  // Check for {} - no ivars in braces
-    Actions.ActOnFields(CurScope, atLoc, interfaceDecl,
-                        &AllIvarDecls[0], AllIvarDecls.size(),
-                        LBraceLoc, RBraceLoc, &AllVisibilities[0]);
-  }
+  // Call ActOnFields() even if we don't have any decls. This is useful
+  // for code rewriting tools that need to be aware of the empty list.
+  Actions.ActOnFields(CurScope, atLoc, interfaceDecl,
+                      &AllIvarDecls[0], AllIvarDecls.size(),
+                      LBraceLoc, RBraceLoc, &AllVisibilities[0]);
   return;
 }