[clang-move] Matching static class member more correctly.

Reviewers: ioeric

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D25598

llvm-svn: 284221
This commit is contained in:
Haojian Wu 2016-10-14 10:07:58 +00:00
parent 86e72d98dd
commit 7bd492c53a
4 changed files with 13 additions and 1 deletions

View File

@ -24,6 +24,11 @@ namespace clang {
namespace move {
namespace {
// FIXME: Move to ASTMatchers.
AST_MATCHER(VarDecl, isStaticDataMember) {
return Node.isStaticDataMember();
}
AST_MATCHER_P(Decl, hasOutermostEnclosingClass,
ast_matchers::internal::Matcher<Decl>, InnerMatcher) {
const auto* Context = Node.getDeclContext();
@ -365,7 +370,8 @@ void ClangMoveTool::registerMatchers(ast_matchers::MatchFinder *Finder) {
this);
// Match static member variable definition of the moved class.
Finder->addMatcher(varDecl(InMovedClass, InOldCC, isDefinition())
Finder->addMatcher(varDecl(InMovedClass, InOldCC, isDefinition(),
isStaticDataMember())
.bind("class_static_var_decl"),
this);

View File

@ -5,4 +5,7 @@ namespace a {
int Foo::f() {
return 0;
}
int Foo::f2(int a, int b) {
return a + b;
}
} // namespace a

View File

@ -2,5 +2,6 @@ namespace a {
class Foo {
public:
int f();
int f2(int a, int b);
};
} // namespace a

View File

@ -25,6 +25,7 @@
// CHECK-NEW-TEST-H: class Foo {
// CHECK-NEW-TEST-H: public:
// CHECK-NEW-TEST-H: int f();
// CHECK-NEW-TEST-H: int f2(int a, int b);
// CHECK-NEW-TEST-H: };
// CHECK-NEW-TEST-H: } // namespace a
//
@ -32,6 +33,7 @@
// CHECK-NEW-TEST-CPP: #include "test2.h"
// CHECK-NEW-TEST-CPP: namespace a {
// CHECK-NEW-TEST-CPP: int Foo::f() { return 0; }
// CHECK-NEW-TEST-CPP: int Foo::f2(int a, int b) { return a + b; }
// CHECK-NEW-TEST-CPP: } // namespace a
//
// CHECK-OLD-TEST-CPP: #include "test.h"