r351269 - Re-order overrides in FunctionDecl dump
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 15 15:00:21 PST 2019
On Tue, Jan 15, 2019 at 5:54 PM Stephen Kelly via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
>
> Author: steveire
> Date: Tue Jan 15 14:50:37 2019
> New Revision: 351269
>
> URL: http://llvm.org/viewvc/llvm-project?rev=351269&view=rev
> Log:
> Re-order overrides in FunctionDecl dump
>
> Output all content which is local to the FunctionDecl before traversing
> to child AST nodes.
>
> This is necessary so that all of the part which is local to the
> FunctionDecl can be split into a different method.
>
> Reviewers: aaron.ballman
>
> Differential Revision: https://reviews.llvm.org/D55083
>
> Modified:
> cfe/trunk/lib/AST/ASTDumper.cpp
> cfe/trunk/test/AST/ast-dump-funcs.cpp
>
> Modified: cfe/trunk/lib/AST/ASTDumper.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDumper.cpp?rev=351269&r1=351268&r2=351269&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ASTDumper.cpp (original)
> +++ cfe/trunk/lib/AST/ASTDumper.cpp Tue Jan 15 14:50:37 2019
> @@ -612,20 +612,6 @@ void ASTDumper::VisitFunctionDecl(const
> }
> }
>
> - if (const FunctionTemplateSpecializationInfo *FTSI =
> - D->getTemplateSpecializationInfo())
> - dumpTemplateArgumentList(*FTSI->TemplateArguments);
> -
> - if (!D->param_begin() && D->getNumParams())
> - dumpChild([=] { OS << "<<NULL params x " << D->getNumParams() << ">>"; });
> - else
> - for (const ParmVarDecl *Parameter : D->parameters())
> - dumpDecl(Parameter);
> -
> - if (const CXXConstructorDecl *C = dyn_cast<CXXConstructorDecl>(D))
> - for (const auto *I : C->inits())
> - dumpCXXCtorInitializer(I);
> -
> if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(D)) {
> if (MD->size_overridden_methods() != 0) {
> auto dumpOverride = [=](const CXXMethodDecl *D) {
> @@ -649,6 +635,22 @@ void ASTDumper::VisitFunctionDecl(const
> }
> }
>
> + if (const FunctionTemplateSpecializationInfo *FTSI =
> + D->getTemplateSpecializationInfo())
> + dumpTemplateArgumentList(*FTSI->TemplateArguments);
> +
> + if (!D->param_begin() && D->getNumParams())
> + dumpChild([=] { OS << "<<NULL params x " << D->getNumParams() << ">>"; });
> + else
> + for (const ParmVarDecl *Parameter : D->parameters())
> + dumpDecl(Parameter);
> +
> + if (const CXXConstructorDecl *C = dyn_cast<CXXConstructorDecl>(D))
Missed this nit from the review.
> + for (CXXConstructorDecl::init_const_iterator I = C->init_begin(),
> + E = C->init_end();
> + I != E; ++I)
> + dumpCXXCtorInitializer(*I);
This accidentally reverts what you did in r351268.
~Aaron
> +
> if (D->doesThisDeclarationHaveABody())
> dumpStmt(D->getBody());
> }
>
> Modified: cfe/trunk/test/AST/ast-dump-funcs.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-funcs.cpp?rev=351269&r1=351268&r2=351269&view=diff
> ==============================================================================
> --- cfe/trunk/test/AST/ast-dump-funcs.cpp (original)
> +++ cfe/trunk/test/AST/ast-dump-funcs.cpp Tue Jan 15 14:50:37 2019
> @@ -56,10 +56,10 @@ struct S {
> struct T : S { // T is not referenced, but S is
> void f(float, int = 100) override;
> // CHECK: CXXMethodDecl 0x{{[^ ]*}} <line:[[@LINE-1]]:3, col:28> col:8 f 'void (float, int)'
> + // CHECK-NEXT: Overrides: [ 0x{{[^ ]*}} S::f 'void (float, int)' ]
> // CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:10> col:15 'float'
> // CHECK-NEXT: ParmVarDecl 0x{{[^ ]*}} <col:17, col:23> col:21 'int' cinit
> // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:23> 'int' 100
> - // CHECK-NEXT: Overrides: [ 0x{{[^ ]*}} S::f 'void (float, int)' ]
> // CHECK-NEXT: OverrideAttr
>
> // CHECK: CXXConstructorDecl 0x{{[^ ]*}} <line:[[@LINE-9]]:8> col:8 implicit T 'void (const T &)' inline default_delete noexcept-unevaluated
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list