aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Tooling/TransformerTest.cpp
diff options
context:
space:
mode:
authorYitzhak Mandelbaum <yitzhakm@google.com>2020-07-20 21:16:39 +0000
committerYitzhak Mandelbaum <yitzhakm@google.com>2020-07-20 21:17:09 +0000
commitc0b8954ecba500e3d9609152295b74ccd7d89d62 (patch)
tree79a792d70a2b8560f5a8577baadaaf8639262386 /clang/unittests/Tooling/TransformerTest.cpp
parent917f8421591d2cc53c48ebd17d88b0dd3255aa2c (diff)
downloadllvm-c0b8954ecba500e3d9609152295b74ccd7d89d62.zip
llvm-c0b8954ecba500e3d9609152295b74ccd7d89d62.tar.gz
llvm-c0b8954ecba500e3d9609152295b74ccd7d89d62.tar.bz2
[libTooling] In Clang Transformer, change `Metadata` field to deferred evalutaion
`Metadata` is being changed from an `llvm::Any` to a `MatchConsumer<llvm;:Any>`, so that it's evaluation can be be dependent on `MatchResult`s passed in. Reviewed By: ymandel, gribozavr2 Differential Revision: https://reviews.llvm.org/D83820
Diffstat (limited to 'clang/unittests/Tooling/TransformerTest.cpp')
-rw-r--r--clang/unittests/Tooling/TransformerTest.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/clang/unittests/Tooling/TransformerTest.cpp b/clang/unittests/Tooling/TransformerTest.cpp
index 7d6b632..59b334b 100644
--- a/clang/unittests/Tooling/TransformerTest.cpp
+++ b/clang/unittests/Tooling/TransformerTest.cpp
@@ -440,6 +440,12 @@ TEST_F(TransformerTest, RemoveEdit) {
}
TEST_F(TransformerTest, WithMetadata) {
+ auto makeMetadata = [](const MatchFinder::MatchResult &R) -> llvm::Any {
+ int N =
+ R.Nodes.getNodeAs<IntegerLiteral>("int")->getValue().getLimitedValue();
+ return N;
+ };
+
std::string Input = R"cc(
int f() {
int x = 5;
@@ -448,8 +454,11 @@ TEST_F(TransformerTest, WithMetadata) {
)cc";
Transformer T(
- makeRule(declStmt().bind("decl"),
- withMetadata(remove(statement(std::string("decl"))), 17)),
+ makeRule(
+ declStmt(containsDeclaration(0, varDecl(hasInitializer(
+ integerLiteral().bind("int")))))
+ .bind("decl"),
+ withMetadata(remove(statement(std::string("decl"))), makeMetadata)),
consumer());
T.registerMatchers(&MatchFinder);
auto Factory = newFrontendActionFactory(&MatchFinder);
@@ -459,7 +468,7 @@ TEST_F(TransformerTest, WithMetadata) {
ASSERT_EQ(Changes.size(), 1u);
const llvm::Any &Metadata = Changes[0].getMetadata();
ASSERT_TRUE(llvm::any_isa<int>(Metadata));
- EXPECT_THAT(llvm::any_cast<int>(Metadata), 17);
+ EXPECT_THAT(llvm::any_cast<int>(Metadata), 5);
}
TEST_F(TransformerTest, MultiChange) {