diff options
-rw-r--r-- | lib/Rewrite/RewriteModernObjC.cpp | 7 | ||||
-rw-r--r-- | test/Rewriter/unnamed-bf-modern-write.mm | 23 |
2 files changed, 25 insertions, 5 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp index 41aaafaaa3..fdaf44dd33 100644 --- a/lib/Rewrite/RewriteModernObjC.cpp +++ b/lib/Rewrite/RewriteModernObjC.cpp @@ -3250,12 +3250,9 @@ void RewriteModernObjC::RewriteObjCInternalStruct(ObjCInterfaceDecl *CDecl, ObjCInterfaceDecl *RCDecl = CDecl->getSuperClass(); SmallVector<ObjCIvarDecl *, 8> IVars; for (ObjCIvarDecl *IVD = CDecl->all_declared_ivar_begin(); - IVD; IVD = IVD->getNextIvar()) { - // Ignore unnamed bit-fields. - if (!IVD->getDeclName()) - continue; + IVD; IVD = IVD->getNextIvar()) IVars.push_back(IVD); - } + SourceLocation LocStart = CDecl->getLocStart(); SourceLocation LocEnd = CDecl->getEndOfDefinitionLoc(); diff --git a/test/Rewriter/unnamed-bf-modern-write.mm b/test/Rewriter/unnamed-bf-modern-write.mm new file mode 100644 index 0000000000..892382ff97 --- /dev/null +++ b/test/Rewriter/unnamed-bf-modern-write.mm @@ -0,0 +1,23 @@ +// RUN: %clang_cc1 -E %s -o %t.mm +// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s + +@interface Foo { +@private + int first; + int :1; + int third :1; + int :1; + int fifth :1; +} +@end +@implementation Foo +@end + +// CHECK: struct Foo_IMPL { +// CHECK-NEXT: int first; +// CHECK-NEXT: int : 1; +// CHECK-NEXT: int third : 1; +// CHECK-NEXT: int : 1; +// CHECK-NEXT: int fifth : 1; +// CHECK-NEXT: char : 0; +// CHECK-NEXT: }; |