diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2013-09-24 17:03:07 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-09-24 17:03:07 +0000 |
| commit | 0dded8ab04026291237a9e7215a421ead742c62e (patch) | |
| tree | 38bdd2f6817a06d6d353ae99312d06ead365cea3 /clang/lib/Rewrite/Frontend | |
| parent | fd4777c046f8eba820c27cbcf5072b6ad0a95a8d (diff) | |
| download | bcm5719-llvm-0dded8ab04026291237a9e7215a421ead742c62e.tar.gz bcm5719-llvm-0dded8ab04026291237a9e7215a421ead742c62e.zip | |
Revert my patch in r191155 to allow forward
class/protocol decls in @implementation and
fixup modern rewriter to handle that.
// rdar://15066233
llvm-svn: 191311
Diffstat (limited to 'clang/lib/Rewrite/Frontend')
| -rw-r--r-- | clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp b/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp index ecd509610a7..af9cda3fadd 100644 --- a/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp +++ b/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp @@ -1066,16 +1066,19 @@ void RewriteModernObjC::RewriteForwardClassEpilogue(ObjCInterfaceDecl *ClassDecl void RewriteModernObjC::RewriteForwardClassDecl(DeclGroupRef D) { std::string typedefString; for (DeclGroupRef::iterator I = D.begin(), E = D.end(); I != E; ++I) { - ObjCInterfaceDecl *ForwardDecl = cast<ObjCInterfaceDecl>(*I); - if (I == D.begin()) { - // Translate to typedef's that forward reference structs with the same name - // as the class. As a convenience, we include the original declaration - // as a comment. - typedefString += "// @class "; - typedefString += ForwardDecl->getNameAsString(); - typedefString += ";"; + if (ObjCInterfaceDecl *ForwardDecl = dyn_cast<ObjCInterfaceDecl>(*I)) { + if (I == D.begin()) { + // Translate to typedef's that forward reference structs with the same name + // as the class. As a convenience, we include the original declaration + // as a comment. + typedefString += "// @class "; + typedefString += ForwardDecl->getNameAsString(); + typedefString += ";"; + } + RewriteOneForwardClassDecl(ForwardDecl, typedefString); } - RewriteOneForwardClassDecl(ForwardDecl, typedefString); + else + HandleTopLevelSingleDecl(*I); } DeclGroupRef::iterator I = D.begin(); RewriteForwardClassEpilogue(cast<ObjCInterfaceDecl>(*I), typedefString); |

