aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/AST/StmtPrinterTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/AST/StmtPrinterTest.cpp')
-rw-r--r--clang/unittests/AST/StmtPrinterTest.cpp44
1 files changed, 31 insertions, 13 deletions
diff --git a/clang/unittests/AST/StmtPrinterTest.cpp b/clang/unittests/AST/StmtPrinterTest.cpp
index 29cdbf7..65dfec4 100644
--- a/clang/unittests/AST/StmtPrinterTest.cpp
+++ b/clang/unittests/AST/StmtPrinterTest.cpp
@@ -38,11 +38,29 @@ DeclarationMatcher FunctionBodyMatcher(StringRef ContainingFunction) {
has(compoundStmt(has(stmt().bind("id")))));
}
+static void PrintStmt(raw_ostream &Out, const ASTContext *Context,
+ const Stmt *S, PrintingPolicyAdjuster PolicyAdjuster) {
+ assert(S != nullptr && "Expected non-null Stmt");
+ PrintingPolicy Policy = Context->getPrintingPolicy();
+ if (PolicyAdjuster)
+ PolicyAdjuster(Policy);
+ S->printPretty(Out, /*Helper*/ nullptr, Policy);
+}
+
+template <typename Matcher>
+::testing::AssertionResult
+PrintedStmtMatches(StringRef Code, const std::vector<std::string> &Args,
+ const Matcher &NodeMatch, StringRef ExpectedPrinted,
+ PrintingPolicyAdjuster PolicyAdjuster = nullptr) {
+ return PrintedNodeMatches<Stmt>(Code, Args, NodeMatch, ExpectedPrinted, "",
+ PrintStmt, PolicyAdjuster);
+}
+
template <typename T>
::testing::AssertionResult
PrintedStmtCXXMatches(StdVer Standard, StringRef Code, const T &NodeMatch,
StringRef ExpectedPrinted,
- PolicyAdjusterType PolicyAdjuster = None) {
+ PrintingPolicyAdjuster PolicyAdjuster = nullptr) {
const char *StdOpt;
switch (Standard) {
case StdVer::CXX98: StdOpt = "-std=c++98"; break;
@@ -64,7 +82,7 @@ template <typename T>
::testing::AssertionResult
PrintedStmtMSMatches(StringRef Code, const T &NodeMatch,
StringRef ExpectedPrinted,
- PolicyAdjusterType PolicyAdjuster = None) {
+ PrintingPolicyAdjuster PolicyAdjuster = nullptr) {
std::vector<std::string> Args = {
"-std=c++98",
"-target", "i686-pc-win32",
@@ -79,7 +97,7 @@ template <typename T>
::testing::AssertionResult
PrintedStmtObjCMatches(StringRef Code, const T &NodeMatch,
StringRef ExpectedPrinted,
- PolicyAdjusterType PolicyAdjuster = None) {
+ PrintingPolicyAdjuster PolicyAdjuster = nullptr) {
std::vector<std::string> Args = {
"-ObjC",
"-fobjc-runtime=macosx-10.12.0",
@@ -202,10 +220,10 @@ class A {
};
)";
// No implicit 'this'.
- ASSERT_TRUE(PrintedStmtCXXMatches(StdVer::CXX11,
- CPPSource, memberExpr(anything()).bind("id"), "field",
- PolicyAdjusterType(
- [](PrintingPolicy &PP) { PP.SuppressImplicitBase = true; })));
+ ASSERT_TRUE(PrintedStmtCXXMatches(
+ StdVer::CXX11, CPPSource, memberExpr(anything()).bind("id"), "field",
+
+ [](PrintingPolicy &PP) { PP.SuppressImplicitBase = true; }));
// Print implicit 'this'.
ASSERT_TRUE(PrintedStmtCXXMatches(StdVer::CXX11,
CPPSource, memberExpr(anything()).bind("id"), "this->field"));
@@ -222,11 +240,10 @@ class A {
@end
)";
// No implicit 'self'.
- ASSERT_TRUE(PrintedStmtObjCMatches(ObjCSource, returnStmt().bind("id"),
- "return ivar;\n",
- PolicyAdjusterType([](PrintingPolicy &PP) {
- PP.SuppressImplicitBase = true;
- })));
+ ASSERT_TRUE(PrintedStmtObjCMatches(
+ ObjCSource, returnStmt().bind("id"), "return ivar;\n",
+
+ [](PrintingPolicy &PP) { PP.SuppressImplicitBase = true; }));
// Print implicit 'self'.
ASSERT_TRUE(PrintedStmtObjCMatches(ObjCSource, returnStmt().bind("id"),
"return self->ivar;\n"));
@@ -243,5 +260,6 @@ TEST(StmtPrinter, TerseOutputWithLambdas) {
// body not printed when TerseOutput is on.
ASSERT_TRUE(PrintedStmtCXXMatches(
StdVer::CXX11, CPPSource, lambdaExpr(anything()).bind("id"), "[] {}",
- PolicyAdjusterType([](PrintingPolicy &PP) { PP.TerseOutput = true; })));
+
+ [](PrintingPolicy &PP) { PP.TerseOutput = true; }));
}