diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 11:06:01 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 11:06:01 +0000 |
commit | 486754660bb926339aefcf012a3f848592babb8b (patch) | |
tree | ecdbc446c9876f4f120f701c243373cd3cb43db3 /lib/Edit/EditedSource.cpp | |
parent | 55e6d896ad333f07bb3b1ba487df214fc268a4ab (diff) |
Notes
Diffstat (limited to 'lib/Edit/EditedSource.cpp')
-rw-r--r-- | lib/Edit/EditedSource.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/Edit/EditedSource.cpp b/lib/Edit/EditedSource.cpp index 444d0393cccd..b38f8fd0d9cb 100644 --- a/lib/Edit/EditedSource.cpp +++ b/lib/Edit/EditedSource.cpp @@ -1,4 +1,4 @@ -//===----- EditedSource.cpp - Collection of source edits ------------------===// +//===- EditedSource.cpp - Collection of source edits ----------------------===// // // The LLVM Compiler Infrastructure // @@ -9,12 +9,21 @@ #include "clang/Edit/EditedSource.h" #include "clang/Basic/CharInfo.h" +#include "clang/Basic/LLVM.h" +#include "clang/Basic/SourceLocation.h" #include "clang/Basic/SourceManager.h" #include "clang/Edit/Commit.h" #include "clang/Edit/EditsReceiver.h" +#include "clang/Edit/FileOffset.h" #include "clang/Lex/Lexer.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" +#include <algorithm> +#include <cassert> +#include <tuple> +#include <utility> using namespace clang; using namespace edit; @@ -27,12 +36,14 @@ void EditedSource::deconstructMacroArgLoc(SourceLocation Loc, SourceLocation &ExpansionLoc, MacroArgUse &ArgUse) { assert(SourceMgr.isMacroArgExpansion(Loc)); - SourceLocation DefArgLoc = SourceMgr.getImmediateExpansionRange(Loc).first; + SourceLocation DefArgLoc = + SourceMgr.getImmediateExpansionRange(Loc).getBegin(); SourceLocation ImmediateExpansionLoc = - SourceMgr.getImmediateExpansionRange(DefArgLoc).first; + SourceMgr.getImmediateExpansionRange(DefArgLoc).getBegin(); ExpansionLoc = ImmediateExpansionLoc; while (SourceMgr.isMacroBodyExpansion(ExpansionLoc)) - ExpansionLoc = SourceMgr.getImmediateExpansionRange(ExpansionLoc).first; + ExpansionLoc = + SourceMgr.getImmediateExpansionRange(ExpansionLoc).getBegin(); SmallString<20> Buf; StringRef ArgName = Lexer::getSpelling(SourceMgr.getSpellingLoc(DefArgLoc), Buf, SourceMgr, LangOpts); @@ -269,9 +280,11 @@ bool EditedSource::commit(const Commit &commit) { struct CommitRAII { EditedSource &Editor; + CommitRAII(EditedSource &Editor) : Editor(Editor) { Editor.startingCommit(); } + ~CommitRAII() { Editor.finishedCommit(); } @@ -298,7 +311,7 @@ bool EditedSource::commit(const Commit &commit) { return true; } -// \brief Returns true if it is ok to make the two given characters adjacent. +// Returns true if it is ok to make the two given characters adjacent. static bool canBeJoined(char left, char right, const LangOptions &LangOpts) { // FIXME: Should use TokenConcatenation to make sure we don't allow stuff like // making two '<' adjacent. @@ -306,7 +319,7 @@ static bool canBeJoined(char left, char right, const LangOptions &LangOpts) { Lexer::isIdentifierBodyChar(right, LangOpts)); } -/// \brief Returns true if it is ok to eliminate the trailing whitespace between +/// Returns true if it is ok to eliminate the trailing whitespace between /// the given characters. static bool canRemoveWhitespace(char left, char beforeWSpace, char right, const LangOptions &LangOpts) { @@ -319,7 +332,7 @@ static bool canRemoveWhitespace(char left, char beforeWSpace, char right, return true; } -/// \brief Check the range that we are going to remove and: +/// Check the range that we are going to remove and: /// -Remove any trailing whitespace if possible. /// -Insert a space if removing the range is going to mess up the source tokens. static void adjustRemoval(const SourceManager &SM, const LangOptions &LangOpts, |