[PATCH] D36610: [Tooling] Add option to getFullyQualifiedName using a custom PritingPolicy
Mikhail Ramalho via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 16 15:29:00 PDT 2018
mikhail.ramalho updated this revision to Diff 142709.
mikhail.ramalho added a comment.
Renamed variables in the test so it doesn't match the type name
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:31)";
+ AnonStrucs.ExpectedQualTypeNames["b"] = "short";
+ AnonStrucs.ExpectedQualTypeNames["un_in_st_2"] =
+ "union (anonymous struct at input.cc:1:1)::(anonymous union at "
+ "input.cc:5:31)";
+ 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
+} // end anonymous namespace
Index: lib/AST/QualTypeNames.cpp
===================================================================
--- lib/AST/QualTypeNames.cpp
+++ lib/AST/QualTypeNames.cpp
@@ -450,14 +450,9 @@
return QT;
}
-std::string getFullyQualifiedName(QualType QT,
- const ASTContext &Ctx,
+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 --------------
A non-text attachment was scrubbed...
Name: D36610.142709.patch
Type: text/x-patch
Size: 3427 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180416/7cabb2ac/attachment.bin>
More information about the cfe-commits
mailing list