]> granicus.if.org Git - clang/commitdiff
Don't print out ivars twice in Decl::print(). Fixes <rdar://problem/8253668>.
authorTed Kremenek <kremenek@apple.com>
Fri, 30 Jul 2010 00:47:46 +0000 (00:47 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 30 Jul 2010 00:47:46 +0000 (00:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109833 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclPrinter.cpp
test/SemaObjC/static-ivar-ref-1.m

index 765772dd13f9be94ce613af7b6d23f75af269b6f..fae1e724a1750a48333d13bac292ea1cb9ebeb57 100644 (file)
@@ -198,6 +198,12 @@ void DeclPrinter::VisitDeclContext(DeclContext *DC, bool Indent) {
   llvm::SmallVector<Decl*, 2> Decls;
   for (DeclContext::decl_iterator D = DC->decls_begin(), DEnd = DC->decls_end();
        D != DEnd; ++D) {
+
+    // Don't print ObjCIvarDecls, as they are printed when visiting the
+    // containing ObjCInterfaceDecl.
+    if (isa<ObjCIvarDecl>(*D))
+      continue;
+
     if (!Policy.Dump) {
       // Skip over implicit declarations in pretty-printing mode.
       if (D->isImplicit()) continue;
index cd5e05558c35bacff61ca4aa77d1787bc376d13d..d9f99f513da72c694184a23bf24b77ef1f0b89ed 100644 (file)
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -ast-print %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -ast-print %s
+// RUN: %clang_cc1 -triple i386-unknown-unknown -ast-print %s 2>&1 | FileCheck  %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -ast-print %s  2>&1  | FileCheck %s
 
 @interface current 
 {
@@ -14,5 +14,17 @@ current *pc;
 
 int foo()
 {
-       return pc->ivar2 + (*pc).ivar + pc->ivar1;
+  return pc->ivar2 + (*pc).ivar + pc->ivar1;
 }
+
+// CHECK: @interface current{
+// CHECK:     int ivar;
+// CHECK:     int ivar1;
+// CHECK:     int ivar2;
+// CHECK: }
+// CHECK: @end
+// CHECK: current *pc;
+// CHECK: int foo() {
+// CHECK:     return pc->ivar2 + (*pc).ivar + pc->ivar1;
+// CHECK: }
+