]> granicus.if.org Git - clang/commitdiff
objective-c modern translator. Don't ignore unnamed bitfields
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 6 Mar 2012 17:16:27 +0000 (17:16 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 6 Mar 2012 17:16:27 +0000 (17:16 +0000)
when rewriting.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152123 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Rewrite/RewriteModernObjC.cpp
test/Rewriter/unnamed-bf-modern-write.mm [new file with mode: 0644]

index 41aaafaaa3be5c419e664a4460a73b9fb797964f..fdaf44dd3300a2eeb43c5db9ad990fb06f7c18f0 100644 (file)
@@ -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 (file)
index 0000000..892382f
--- /dev/null
@@ -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: };