Author: Timo Stripf Date: 2023-06-07T10:57:31-04:00 New Revision: 2878282dc550e6a8174917480a2dc22bbe283ed1
URL: https://github.com/llvm/llvm-project/commit/2878282dc550e6a8174917480a2dc22bbe283ed1 DIFF: https://github.com/llvm/llvm-project/commit/2878282dc550e6a8174917480a2dc22bbe283ed1.diff LOG: [clang][DeclPrinter] Fix AST print of out-of-line record definitions DeclPrinter::VisitCXXRecordDecl did not output qualifiers for records. As result, the output of out-of-line record definitions was incorrect. Differential Revision: https://reviews.llvm.org/D151528 Added: Modified: clang/lib/AST/DeclPrinter.cpp clang/test/AST/ast-print-record-decl.c Removed: ################################################################################ diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp index f3bad9f45b74d..932e9b23ebe7f 100644 --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/lib/AST/DeclPrinter.cpp @@ -997,7 +997,10 @@ void DeclPrinter::VisitCXXRecordDecl(CXXRecordDecl *D) { prettyPrintAttributes(D); if (D->getIdentifier()) { - Out << ' ' << *D; + Out << ' '; + if (auto *NNS = D->getQualifier()) + NNS->print(Out, Policy); + Out << *D; if (auto S = dyn_cast<ClassTemplateSpecializationDecl>(D)) { ArrayRef<TemplateArgument> Args = S->getTemplateArgs().asArray(); diff --git a/clang/test/AST/ast-print-record-decl.c b/clang/test/AST/ast-print-record-decl.c index 8553e98b8251f..d3717a4feab83 100644 --- a/clang/test/AST/ast-print-record-decl.c +++ b/clang/test/AST/ast-print-record-decl.c @@ -289,3 +289,19 @@ KW DeclGroupInMemberList { // A tag decl group in the tag decl's own member list is exercised in // defSelfRef above. + + +// Check out-of-line record definition +#ifdef __cplusplus +// PRINT-CXX-NEXT: [[KW]] OutOfLineRecord { +KW OutOfLineRecord { + // PRINT-CXX-NEXT: [[KW]] Inner + KW Inner; + // PRINT-CXX-NEXT: }; +}; + +// PRINT-CXX-NEXT: [[KW]] OutOfLineRecord::Inner { +KW OutOfLineRecord::Inner { + // PRINT-CXX-NEXT: }; +}; +#endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits