strimo378 created this revision. strimo378 added a reviewer: aaron.ballman. strimo378 added a project: clang. Herald added a project: All. strimo378 requested review of this revision. Herald added a subscriber: cfe-commits.
DeclPrinter::PrintConstructorInitializers did not consider delegating initializers. As result, the output contained an "NULL TYPE" for delegating constructors. I chose a generic test case name (ast-print-method-decl.cpp). The plan is to add there other method related test cases for fixes I have in my local branch. Please use "Timo Stripf" and timo.str...@emmtrix.com for commit. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D154186 Files: clang/lib/AST/DeclPrinter.cpp clang/test/AST/ast-print-method-decl.cpp Index: clang/test/AST/ast-print-method-decl.cpp =================================================================== --- /dev/null +++ clang/test/AST/ast-print-method-decl.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s + +// CHECK: struct A { +struct A { + // CHECK-NEXT: A(); + A(); + + // CHECK-NEXT: A(int) : A() { + A(int) : A() { + // CHECK-NEXT: } + } + + + // CHECK-NEXT: }; +}; Index: clang/lib/AST/DeclPrinter.cpp =================================================================== --- clang/lib/AST/DeclPrinter.cpp +++ clang/lib/AST/DeclPrinter.cpp @@ -321,6 +321,8 @@ if (BMInitializer->isAnyMemberInitializer()) { FieldDecl *FD = BMInitializer->getAnyMember(); Out << *FD; + } else if (BMInitializer->isDelegatingInitializer()) { + Out << CDecl->getNameAsString(); } else { Out << QualType(BMInitializer->getBaseClass(), 0).getAsString(Policy); }
Index: clang/test/AST/ast-print-method-decl.cpp =================================================================== --- /dev/null +++ clang/test/AST/ast-print-method-decl.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s + +// CHECK: struct A { +struct A { + // CHECK-NEXT: A(); + A(); + + // CHECK-NEXT: A(int) : A() { + A(int) : A() { + // CHECK-NEXT: } + } + + + // CHECK-NEXT: }; +}; Index: clang/lib/AST/DeclPrinter.cpp =================================================================== --- clang/lib/AST/DeclPrinter.cpp +++ clang/lib/AST/DeclPrinter.cpp @@ -321,6 +321,8 @@ if (BMInitializer->isAnyMemberInitializer()) { FieldDecl *FD = BMInitializer->getAnyMember(); Out << *FD; + } else if (BMInitializer->isDelegatingInitializer()) { + Out << CDecl->getNameAsString(); } else { Out << QualType(BMInitializer->getBaseClass(), 0).getAsString(Policy); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits