Don't print out ivars twice in Decl::print(). Fixes <rdar://problem/8253668>.

llvm-svn: 109833
This commit is contained in:
Ted Kremenek 2010-07-30 00:47:46 +00:00
parent 07a89a83d4
commit 28e1c9155e
2 changed files with 21 additions and 3 deletions

View 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;

View 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: }