aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Tooling/TransformerTest.cpp
diff options
context:
space:
mode:
authorYitzhak Mandelbaum <yitzhakm@google.com>2019-05-22 14:48:19 +0000
committerYitzhak Mandelbaum <yitzhakm@google.com>2019-05-22 14:48:19 +0000
commit3ec50e292f35b5792cbb4281ca7380665ff7f195 (patch)
treeb55168076ef67b6c705bf147dbbf3994c67eecaf /clang/unittests/Tooling/TransformerTest.cpp
parente7230ea7c9dc9b092ee78192d7f32a49bbf28896 (diff)
downloadllvm-3ec50e292f35b5792cbb4281ca7380665ff7f195.zip
llvm-3ec50e292f35b5792cbb4281ca7380665ff7f195.tar.gz
llvm-3ec50e292f35b5792cbb4281ca7380665ff7f195.tar.bz2
[LibTooling] Update Transformer to use RangeSelector instead of NodePart enum.
Transformer provides an enum to indicate the range of source text to be edited. That support is now redundant with the new (and more general) RangeSelector library, so we remove the custom enum support in favor of supporting any RangeSelector. Reviewers: ilya-biryukov Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D62149 llvm-svn: 361392
Diffstat (limited to 'clang/unittests/Tooling/TransformerTest.cpp')
-rw-r--r--clang/unittests/Tooling/TransformerTest.cpp45
1 files changed, 22 insertions, 23 deletions
diff --git a/clang/unittests/Tooling/TransformerTest.cpp b/clang/unittests/Tooling/TransformerTest.cpp
index 7e8cd6e..0bf012a 100644
--- a/clang/unittests/Tooling/TransformerTest.cpp
+++ b/clang/unittests/Tooling/TransformerTest.cpp
@@ -7,8 +7,8 @@
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Refactoring/Transformer.h"
-
#include "clang/ASTMatchers/ASTMatchers.h"
+#include "clang/Tooling/Refactoring/RangeSelector.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/Error.h"
@@ -147,7 +147,7 @@ static RewriteRule ruleStrlenSize() {
on(expr(hasType(isOrPointsTo(StringType)))
.bind(StringExpr)),
callee(cxxMethodDecl(hasName("c_str")))))),
- change<clang::Expr>("REPLACED"));
+ change(text("REPLACED")));
R.Cases[0].Explanation = text("Use size() method directly on string.");
return R;
}
@@ -183,7 +183,7 @@ TEST_F(TransformerTest, Flag) {
hasName("proto::ProtoCommandLineFlag"))))
.bind(Flag)),
unless(callee(cxxMethodDecl(hasName("GetProto"))))),
- change<clang::Expr>(Flag, "EXPR"));
+ change(node(Flag), text("EXPR")));
std::string Input = R"cc(
proto::ProtoCommandLineFlag flag;
@@ -201,9 +201,8 @@ TEST_F(TransformerTest, Flag) {
TEST_F(TransformerTest, NodePartNameNamedDecl) {
StringRef Fun = "fun";
- RewriteRule Rule =
- makeRule(functionDecl(hasName("bad")).bind(Fun),
- change<clang::FunctionDecl>(Fun, NodePart::Name, "good"));
+ RewriteRule Rule = makeRule(functionDecl(hasName("bad")).bind(Fun),
+ change(name(Fun), text("good")));
std::string Input = R"cc(
int bad(int x);
@@ -235,7 +234,7 @@ TEST_F(TransformerTest, NodePartNameDeclRef) {
StringRef Ref = "ref";
testRule(makeRule(declRefExpr(to(functionDecl(hasName("bad")))).bind(Ref),
- change<clang::Expr>(Ref, NodePart::Name, "good")),
+ change(name(Ref), text("good"))),
Input, Expected);
}
@@ -253,7 +252,7 @@ TEST_F(TransformerTest, NodePartNameDeclRefFailure) {
StringRef Ref = "ref";
Transformer T(makeRule(declRefExpr(to(functionDecl())).bind(Ref),
- change<clang::Expr>(Ref, NodePart::Name, "good")),
+ change(name(Ref), text("good"))),
consumer());
T.registerMatchers(&MatchFinder);
EXPECT_FALSE(rewrite(Input));
@@ -262,7 +261,7 @@ TEST_F(TransformerTest, NodePartNameDeclRefFailure) {
TEST_F(TransformerTest, NodePartMember) {
StringRef E = "expr";
RewriteRule Rule = makeRule(memberExpr(member(hasName("bad"))).bind(E),
- change<clang::Expr>(E, NodePart::Member, "good"));
+ change(member(E), text("good")));
std::string Input = R"cc(
struct S {
@@ -315,8 +314,7 @@ TEST_F(TransformerTest, NodePartMemberQualified) {
)cc";
StringRef E = "expr";
- testRule(makeRule(memberExpr().bind(E),
- change<clang::Expr>(E, NodePart::Member, "good")),
+ testRule(makeRule(memberExpr().bind(E), change(member(E), text("good"))),
Input, Expected);
}
@@ -348,7 +346,7 @@ TEST_F(TransformerTest, NodePartMemberMultiToken) {
StringRef MemExpr = "member";
testRule(makeRule(memberExpr().bind(MemExpr),
- change<clang::Expr>(MemExpr, NodePart::Member, "good")),
+ change(member(MemExpr), text("good"))),
Input, Expected);
}
@@ -371,8 +369,9 @@ TEST_F(TransformerTest, MultiChange) {
StringRef C = "C", T = "T", E = "E";
testRule(makeRule(ifStmt(hasCondition(expr().bind(C)),
hasThen(stmt().bind(T)), hasElse(stmt().bind(E))),
- {change<Expr>(C, "true"), change<Stmt>(T, "{ /* then */ }"),
- change<Stmt>(E, "{ /* else */ }")}),
+ {change(node(C), text("true")),
+ change(statement(T), text("{ /* then */ }")),
+ change(statement(E), text("{ /* else */ }"))}),
Input, Expected);
}
@@ -383,7 +382,7 @@ TEST_F(TransformerTest, OrderedRuleUnrelated) {
hasName("proto::ProtoCommandLineFlag"))))
.bind(Flag)),
unless(callee(cxxMethodDecl(hasName("GetProto"))))),
- change<clang::Expr>(Flag, "PROTO"));
+ change(node(Flag), text("PROTO")));
std::string Input = R"cc(
proto::ProtoCommandLineFlag flag;
@@ -410,7 +409,7 @@ RewriteRule ruleStrlenSizeDistinct() {
hasArgument(0, cxxMemberCallExpr(
on(expr().bind(S)),
callee(cxxMethodDecl(hasName("c_str")))))),
- change<clang::Expr>("DISTINCT"));
+ change(text("DISTINCT")));
}
TEST_F(TransformerTest, OrderedRuleRelated) {
@@ -475,7 +474,7 @@ TEST_F(TransformerTest, TextGeneratorFailure) {
-> llvm::Expected<std::string> {
return llvm::createStringError(llvm::errc::invalid_argument, "ERROR");
};
- Transformer T(makeRule(binaryOperator().bind(O), change<Expr>(O, AlwaysFail)),
+ Transformer T(makeRule(binaryOperator().bind(O), change(node(O), AlwaysFail)),
consumer());
T.registerMatchers(&MatchFinder);
EXPECT_FALSE(rewrite(Input));
@@ -488,10 +487,10 @@ TEST_F(TransformerTest, OverlappingEditsInRule) {
std::string Input = "int conflictOneRule() { return 3 + 7; }";
// Try to change the whole binary-operator expression AND one its operands:
StringRef O = "O", L = "L";
- Transformer T(
- makeRule(binaryOperator(hasLHS(expr().bind(L))).bind(O),
- {change<Expr>(O, "DELETE_OP"), change<Expr>(L, "DELETE_LHS")}),
- consumer());
+ Transformer T(makeRule(binaryOperator(hasLHS(expr().bind(L))).bind(O),
+ {change(node(O), text("DELETE_OP")),
+ change(node(L), text("DELETE_LHS"))}),
+ consumer());
T.registerMatchers(&MatchFinder);
EXPECT_FALSE(rewrite(Input));
EXPECT_THAT(Changes, IsEmpty());
@@ -503,7 +502,7 @@ TEST_F(TransformerTest, OverlappingEditsMultipleMatches) {
std::string Input = "int conflictOneRule() { return -7; }";
// Try to change the whole binary-operator expression AND one its operands:
StringRef E = "E";
- Transformer T(makeRule(expr().bind(E), change<Expr>(E, "DELETE_EXPR")),
+ Transformer T(makeRule(expr().bind(E), change(node(E), text("DELETE_EXPR"))),
consumer());
T.registerMatchers(&MatchFinder);
// The rewrite process fails because the changes conflict with each other...
@@ -517,7 +516,7 @@ TEST_F(TransformerTest, ErrorOccurredMatchSkipped) {
// Syntax error in the function body:
std::string Input = "void errorOccurred() { 3 }";
Transformer T(makeRule(functionDecl(hasName("errorOccurred")),
- change<Decl>("DELETED;")),
+ change(text("DELETED;"))),
consumer());
T.registerMatchers(&MatchFinder);
// The rewrite process itself fails...