diff options
author | Eric Liu <ioeric@google.com> | 2017-03-01 10:29:39 +0000 |
---|---|---|
committer | Eric Liu <ioeric@google.com> | 2017-03-01 10:29:39 +0000 |
commit | c91e584f41bbb0dbb25a86ceb61b92e4dc838a5c (patch) | |
tree | 113ff782f73337d0c613f3204db9be2f6bf7a33f /clang-tools-extra/change-namespace | |
parent | ab5d3583d45d110b08976091b4bbfa959f47e812 (diff) |
[change-namespace] get insertion points of forward declarations correct.
Summary:
Previously, the insertion points would conflict with the old namespace
deletion.
Reviewers: hokein
Reviewed By: hokein
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D30490
Diffstat (limited to 'clang-tools-extra/change-namespace')
-rw-r--r-- | clang-tools-extra/change-namespace/ChangeNamespace.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/clang-tools-extra/change-namespace/ChangeNamespace.cpp b/clang-tools-extra/change-namespace/ChangeNamespace.cpp index ad1c22afcdb..36f04243ce8 100644 --- a/clang-tools-extra/change-namespace/ChangeNamespace.cpp +++ b/clang-tools-extra/change-namespace/ChangeNamespace.cpp @@ -676,19 +676,18 @@ void ChangeNamespaceTool::moveClassForwardDeclaration( const NamedDecl *FwdDecl) { SourceLocation Start = FwdDecl->getLocStart(); SourceLocation End = FwdDecl->getLocEnd(); + const SourceManager &SM = *Result.SourceManager; SourceLocation AfterSemi = Lexer::findLocationAfterToken( - End, tok::semi, *Result.SourceManager, Result.Context->getLangOpts(), + End, tok::semi, SM, Result.Context->getLangOpts(), /*SkipTrailingWhitespaceAndNewLine=*/true); if (AfterSemi.isValid()) End = AfterSemi.getLocWithOffset(-1); // Delete the forward declaration from the code to be moved. - addReplacementOrDie(Start, End, "", *Result.SourceManager, - &FileToReplacements); + addReplacementOrDie(Start, End, "", SM, &FileToReplacements); llvm::StringRef Code = Lexer::getSourceText( - CharSourceRange::getTokenRange( - Result.SourceManager->getSpellingLoc(Start), - Result.SourceManager->getSpellingLoc(End)), - *Result.SourceManager, Result.Context->getLangOpts()); + CharSourceRange::getTokenRange(SM.getSpellingLoc(Start), + SM.getSpellingLoc(End)), + SM, Result.Context->getLangOpts()); // Insert the forward declaration back into the old namespace after moving the // code from old namespace to new namespace. // Insertion information is stored in `InsertFwdDecls` and actual @@ -697,8 +696,9 @@ void ChangeNamespaceTool::moveClassForwardDeclaration( const auto *NsDecl = Result.Nodes.getNodeAs<NamespaceDecl>("ns_decl"); // The namespace contains the forward declaration, so it must not be empty. assert(!NsDecl->decls_empty()); - const auto Insertion = createInsertion(NsDecl->decls_begin()->getLocStart(), - Code, *Result.SourceManager); + const auto Insertion = createInsertion( + getLocAfterNamespaceLBrace(NsDecl, SM, Result.Context->getLangOpts()), + Code, SM); InsertForwardDeclaration InsertFwd; InsertFwd.InsertionOffset = Insertion.getOffset(); InsertFwd.ForwardDeclText = Insertion.getReplacementText().str(); |