From e8730a35587e8d4ee88addc0d6a268f62cb259ff Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Fri, 8 Feb 2013 17:15:07 +0000 Subject: [PATCH] objective-C modern translator. Fixes a trivial rewriting bug where #ifdef ended up on the same line as the attribute declaration. llvm-svn: 174719 --- clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp | 6 +++--- clang/test/Rewriter/modern-write-bf-abi.mm | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp b/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp index 68babb4..4803bfa 100644 --- a/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp +++ b/clang/lib/Rewrite/Frontend/RewriteModernObjC.cpp @@ -1043,7 +1043,7 @@ void RewriteModernObjC::RewritePropertyImplDecl(ObjCPropertyImplDecl *PID, static void RewriteOneForwardClassDecl(ObjCInterfaceDecl *ForwardDecl, std::string &typedefString) { - typedefString += "#ifndef _REWRITER_typedef_"; + typedefString += "\n#ifndef _REWRITER_typedef_"; typedefString += ForwardDecl->getNameAsString(); typedefString += "\n"; typedefString += "#define _REWRITER_typedef_"; @@ -1076,7 +1076,7 @@ void RewriteModernObjC::RewriteForwardClassDecl(DeclGroupRef D) { // as a comment. typedefString += "// @class "; typedefString += ForwardDecl->getNameAsString(); - typedefString += ";\n"; + typedefString += ";"; } RewriteOneForwardClassDecl(ForwardDecl, typedefString); } @@ -1092,7 +1092,7 @@ void RewriteModernObjC::RewriteForwardClassDecl( if (i == 0) { typedefString += "// @class "; typedefString += ForwardDecl->getNameAsString(); - typedefString += ";\n"; + typedefString += ";"; } RewriteOneForwardClassDecl(ForwardDecl, typedefString); } diff --git a/clang/test/Rewriter/modern-write-bf-abi.mm b/clang/test/Rewriter/modern-write-bf-abi.mm index 6b646db..85db939 100644 --- a/clang/test/Rewriter/modern-write-bf-abi.mm +++ b/clang/test/Rewriter/modern-write-bf-abi.mm @@ -98,3 +98,23 @@ int f2(A* a) { int f3(A *a) { return a->ivar_d + a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a; } + +__attribute__((objc_root_class)) @interface Base +{ + struct objc_class *isa; + int full; + int full2: 32; + int _refs: 8; + int field2: 3; + unsigned f3: 8; + short cc; + unsigned g: 16; + int r2: 8; + int r3: 8; + int r4: 2; + int r5: 8; + char c; +} +@end + +@implementation Base @end -- 2.7.4