From: Fariborz Jahanian Date: Fri, 8 Feb 2013 17:15:07 +0000 (+0000) Subject: objective-C modern translator. Fixes a trivial X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bfaa111e7106ad15a73513d953a1a19a7b626f10;p=clang objective-C modern translator. Fixes a trivial rewriting bug where #ifdef ended up on the same line as the attribute declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174719 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Rewrite/Frontend/RewriteModernObjC.cpp b/lib/Rewrite/Frontend/RewriteModernObjC.cpp index 68babb4ef0..4803bfa397 100644 --- a/lib/Rewrite/Frontend/RewriteModernObjC.cpp +++ b/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/test/Rewriter/modern-write-bf-abi.mm b/test/Rewriter/modern-write-bf-abi.mm index 6b646db678..85db93924f 100644 --- a/test/Rewriter/modern-write-bf-abi.mm +++ b/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