[PATCH] D36610: [Tooling] Add option to getFullyQualifiedName using a custom PritingPolicy

Sterling Augustine via cfe-commits cfe-commits at lists.llvm.org
Fri May 4 13:16:26 PDT 2018


Committed as r331552.

On Fri, May 4, 2018 at 12:43 PM, Mikhail Ramalho via Phabricator <
reviews at reviews.llvm.org> wrote:

> mikhail.ramalho updated this revision to Diff 145255.
> mikhail.ramalho added a comment.
>
> Fixed the test case.
>
>
> https://reviews.llvm.org/D36610
>
> Files:
>   include/clang/AST/QualTypeNames.h
>   lib/AST/QualTypeNames.cpp
>   unittests/Tooling/QualTypeNamesTest.cpp
>
>
> Index: unittests/Tooling/QualTypeNamesTest.cpp
> ===================================================================
> --- unittests/Tooling/QualTypeNamesTest.cpp
> +++ unittests/Tooling/QualTypeNamesTest.cpp
> @@ -26,9 +26,13 @@
>      std::string ExpectedName =
>          ExpectedQualTypeNames.lookup(VD->getNameAsString());
>      if (ExpectedName != "") {
> -      std::string ActualName =
> -          TypeName::getFullyQualifiedName(VD->getType(), *Context,
> -                                          WithGlobalNsPrefix);
> +      PrintingPolicy Policy(Context->getPrintingPolicy());
> +      Policy.SuppressScope = false;
> +      Policy.AnonymousTagLocations = true;
> +      Policy.PolishForDeclaration = true;
> +      Policy.SuppressUnwrittenScope = true;
> +      std::string ActualName = TypeName::getFullyQualifiedName(
> +          VD->getType(), *Context, Policy, WithGlobalNsPrefix);
>        if (ExpectedName != ActualName) {
>          // A custom message makes it much easier to see what declaration
>          // failed compared to EXPECT_EQ.
> @@ -217,6 +221,26 @@
>        "  }\n"
>        "}\n"
>    );
> +
> +  TypeNameVisitor AnonStrucs;
> +  AnonStrucs.ExpectedQualTypeNames["a"] = "short";
> +  AnonStrucs.ExpectedQualTypeNames["un_in_st_1"] =
> +      "union (anonymous struct at input.cc:1:1)::(anonymous union at "
> +      "input.cc:2:27)";
> +  AnonStrucs.ExpectedQualTypeNames["b"] = "short";
> +  AnonStrucs.ExpectedQualTypeNames["un_in_st_2"] =
> +      "union (anonymous struct at input.cc:1:1)::(anonymous union at "
> +      "input.cc:5:27)";
> +  AnonStrucs.ExpectedQualTypeNames["anon_st"] =
> +      "struct (anonymous struct at input.cc:1:1)";
> +  AnonStrucs.runOver(R"(struct {
> +                          union {
> +                            short a;
> +                          } un_in_st_1;
> +                          union {
> +                            short b;
> +                          } un_in_st_2;
> +                        } anon_st;)");
>  }
>
>  }  // end anonymous namespace
> Index: lib/AST/QualTypeNames.cpp
> ===================================================================
> --- lib/AST/QualTypeNames.cpp
> +++ lib/AST/QualTypeNames.cpp
> @@ -452,12 +452,8 @@
>
>  std::string getFullyQualifiedName(QualType QT,
>                                    const ASTContext &Ctx,
> +                                  const PrintingPolicy &Policy,
>                                    bool WithGlobalNsPrefix) {
> -  PrintingPolicy Policy(Ctx.getPrintingPolicy());
> -  Policy.SuppressScope = false;
> -  Policy.AnonymousTagLocations = false;
> -  Policy.PolishForDeclaration = true;
> -  Policy.SuppressUnwrittenScope = true;
>    QualType FQQT = getFullyQualifiedType(QT, Ctx, WithGlobalNsPrefix);
>    return FQQT.getAsString(Policy);
>  }
> Index: include/clang/AST/QualTypeNames.h
> ===================================================================
> --- include/clang/AST/QualTypeNames.h
> +++ include/clang/AST/QualTypeNames.h
> @@ -72,6 +72,7 @@
>  /// \param[in] WithGlobalNsPrefix - If true, then the global namespace
>  /// specifier "::" will be prepended to the fully qualified name.
>  std::string getFullyQualifiedName(QualType QT, const ASTContext &Ctx,
> +                                  const PrintingPolicy &Policy,
>                                    bool WithGlobalNsPrefix = false);
>
>  /// \brief Generates a QualType that can be used to name the same type
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180504/3eb05b4b/attachment.html>


More information about the cfe-commits mailing list