diff options
author | Haojian Wu <hokein@google.com> | 2016-11-18 10:51:16 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2016-11-18 10:51:16 +0000 |
commit | 50a45d93717052c70180e57c878eb951e3c1afa1 (patch) | |
tree | a263b938432f68adcbca8cb081ea64d7263fa5f1 /clang-tools-extra/clang-move | |
parent | 85818684c6ccb136ccf5a1dfdca6968fe7d1037b (diff) | |
download | bcm5719-llvm-50a45d93717052c70180e57c878eb951e3c1afa1.tar.gz bcm5719-llvm-50a45d93717052c70180e57c878eb951e3c1afa1.zip |
[clang-move] Fix not moving using-decls in global namespace in old.cc
Reviewers: ioeric
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D26844
llvm-svn: 287330
Diffstat (limited to 'clang-tools-extra/clang-move')
-rw-r--r-- | clang-tools-extra/clang-move/ClangMove.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/clang-tools-extra/clang-move/ClangMove.cpp b/clang-tools-extra/clang-move/ClangMove.cpp index eb147c23c01..5e40691d27d 100644 --- a/clang-tools-extra/clang-move/ClangMove.cpp +++ b/clang-tools-extra/clang-move/ClangMove.cpp @@ -373,6 +373,7 @@ createInsertedReplacements(const std::vector<std::string> &Includes, } // If the moved declaration is in same namespace CurrentNamespace, add // a preceeding `\n' before the moved declaration. + // FIXME: Don't add empty lines between using declarations. if (!IsInNewNamespace) NewCode += "\n"; NewCode += getDeclarationSourceText(MovedDecl.Decl, MovedDecl.SM); @@ -453,15 +454,17 @@ void ClangMoveTool::registerMatchers(ast_matchers::MatchFinder *Finder) { //============================================================================ // Matchers for old cc //============================================================================ - auto InOldCCNamedNamespace = - allOf(hasParent(namespaceDecl(unless(isAnonymous()))), InOldCC); - // Matching using decls/type alias decls which are in named namespace. Those - // in classes, functions and anonymous namespaces are covered in other - // matchers. + auto InOldCCNamedOrGlobalNamespace = + allOf(hasParent(decl(anyOf(namespaceDecl(unless(isAnonymous())), + translationUnitDecl()))), + InOldCC); + // Matching using decls/type alias decls which are in named namespace or + // global namespace. Those in classes, functions and anonymous namespaces are + // covered in other matchers. Finder->addMatcher( - namedDecl(anyOf(usingDecl(InOldCCNamedNamespace), - usingDirectiveDecl(InOldCC, InOldCCNamedNamespace), - typeAliasDecl(InOldCC, InOldCCNamedNamespace))) + namedDecl(anyOf(usingDecl(InOldCCNamedOrGlobalNamespace), + usingDirectiveDecl(InOldCCNamedOrGlobalNamespace), + typeAliasDecl( InOldCCNamedOrGlobalNamespace))) .bind("using_decl"), this); @@ -472,7 +475,7 @@ void ClangMoveTool::registerMatchers(ast_matchers::MatchFinder *Finder) { // Match static functions/variable definitions which are defined in named // namespaces. auto IsOldCCStaticDefinition = - allOf(isDefinition(), unless(InMovedClass), InOldCCNamedNamespace, + allOf(isDefinition(), unless(InMovedClass), InOldCCNamedOrGlobalNamespace, isStaticStorageClass()); Finder->addMatcher(namedDecl(anyOf(functionDecl(IsOldCCStaticDefinition), varDecl(IsOldCCStaticDefinition))) |