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