}
static void compareSnippets(StringRef Expected,
- const llvm::Optional<std::string> &MaybeActual) {
+ const llvm::Optional<std::string> &MaybeActual) {
ASSERT_TRUE(MaybeActual) << "Rewrite failed. Expecting: " << Expected;
auto Actual = *MaybeActual;
std::string HL = "#include \"header.h\"\n";
auto RewriteOutput =
CodePrefix + RangeLoop + LoopBody + RangeLoop + LoopBody + CodeSuffix;
- auto MatchedLoop = forStmt(
- has(declStmt(
- hasSingleDecl(varDecl(hasInitializer(integerLiteral(equals(0))))
- .bind("loopVar")))),
- has(binaryOperator(hasOperatorName("!="),
- hasLHS(ignoringImplicit(declRefExpr(
- to(varDecl(equalsBoundNode("loopVar")))))),
- hasRHS(expr().bind("upperBoundExpr")))),
- has(unaryOperator(hasOperatorName("++"),
- hasUnaryOperand(declRefExpr(
- to(varDecl(equalsBoundNode("loopVar"))))))
- .bind("incrementOp")));
+ auto MatchedLoop = forStmt(
+ has(declStmt(hasSingleDecl(
+ varDecl(hasInitializer(integerLiteral(equals(0)))).bind("loopVar")))),
+ has(binaryOperator(hasOperatorName("!="),
+ hasLHS(ignoringImplicit(declRefExpr(
+ to(varDecl(equalsBoundNode("loopVar")))))),
+ hasRHS(expr().bind("upperBoundExpr")))),
+ has(unaryOperator(hasOperatorName("++"),
+ hasUnaryOperand(declRefExpr(
+ to(varDecl(equalsBoundNode("loopVar"))))))
+ .bind("incrementOp")));
- auto RewriteRule =
- changeTo(transformer::enclose(node("loopVar"), node("incrementOp")),
- cat("auto ", name("loopVar"), " : boost::irange(",
- node("upperBoundExpr"), ")"));
-
- testRule(makeRule(traverse(TK_IgnoreUnlessSpelledInSource, MatchedLoop),
- RewriteRule),
- RewriteInput, RewriteOutput);
+ auto RewriteRule =
+ changeTo(transformer::enclose(node("loopVar"), node("incrementOp")),
+ cat("auto ", name("loopVar"), " : boost::irange(",
+ node("upperBoundExpr"), ")"));
- testRuleFailure(makeRule(traverse(TK_AsIs, MatchedLoop), RewriteRule),
- RewriteInput);
+ testRule(makeRule(traverse(TK_IgnoreUnlessSpelledInSource, MatchedLoop),
+ RewriteRule),
+ RewriteInput, RewriteOutput);
+ testRuleFailure(makeRule(traverse(TK_AsIs, MatchedLoop), RewriteRule),
+ RewriteInput);
}
TEST_F(TransformerTest, ImplicitNodes_ForStmt2) {
auto RewriteOutput =
CodePrefix + RangeLoop + LoopBody + RangeLoop + LoopBody + CodeSuffix;
- auto MatchedLoop = forStmt(
- hasLoopInit(declStmt(
- hasSingleDecl(varDecl(hasInitializer(integerLiteral(equals(0))))
- .bind("loopVar")))),
- hasCondition(binaryOperator(hasOperatorName("!="),
- hasLHS(ignoringImplicit(declRefExpr(to(
- varDecl(equalsBoundNode("loopVar")))))),
- hasRHS(expr().bind("upperBoundExpr")))),
- hasIncrement(unaryOperator(hasOperatorName("++"),
- hasUnaryOperand(declRefExpr(to(
- varDecl(equalsBoundNode("loopVar"))))))
- .bind("incrementOp")));
-
- auto RewriteRule =
- changeTo(transformer::enclose(node("loopVar"), node("incrementOp")),
- cat("auto ", name("loopVar"), " : boost::irange(",
- node("upperBoundExpr"), ")"));
-
- testRule(makeRule(traverse(TK_IgnoreUnlessSpelledInSource, MatchedLoop),
- RewriteRule),
- RewriteInput, RewriteOutput);
-
- testRuleFailure(makeRule(traverse(TK_AsIs, MatchedLoop), RewriteRule),
- RewriteInput);
+ auto MatchedLoop = forStmt(
+ hasLoopInit(declStmt(hasSingleDecl(
+ varDecl(hasInitializer(integerLiteral(equals(0)))).bind("loopVar")))),
+ hasCondition(binaryOperator(hasOperatorName("!="),
+ hasLHS(ignoringImplicit(declRefExpr(to(
+ varDecl(equalsBoundNode("loopVar")))))),
+ hasRHS(expr().bind("upperBoundExpr")))),
+ hasIncrement(unaryOperator(hasOperatorName("++"),
+ hasUnaryOperand(declRefExpr(
+ to(varDecl(equalsBoundNode("loopVar"))))))
+ .bind("incrementOp")));
+
+ auto RewriteRule =
+ changeTo(transformer::enclose(node("loopVar"), node("incrementOp")),
+ cat("auto ", name("loopVar"), " : boost::irange(",
+ node("upperBoundExpr"), ")"));
+
+ testRule(makeRule(traverse(TK_IgnoreUnlessSpelledInSource, MatchedLoop),
+ RewriteRule),
+ RewriteInput, RewriteOutput);
+ testRuleFailure(makeRule(traverse(TK_AsIs, MatchedLoop), RewriteRule),
+ RewriteInput);
}
TEST_F(TransformerTest, TemplateInstantiation) {