diff options
Diffstat (limited to 'lib/Edit/Commit.cpp')
| -rw-r--r-- | lib/Edit/Commit.cpp | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Edit/Commit.cpp b/lib/Edit/Commit.cpp index 0b4ea3e0cdad..706c732dba45 100644 --- a/lib/Edit/Commit.cpp +++ b/lib/Edit/Commit.cpp @@ -38,7 +38,9 @@ CharSourceRange Commit::Edit::getInsertFromRange(SourceManager &SM) const {  Commit::Commit(EditedSource &Editor)    : SourceMgr(Editor.getSourceManager()), LangOpts(Editor.getLangOpts()),      PPRec(Editor.getPPCondDirectiveRecord()), -    Editor(&Editor), IsCommitable(true) { } +    Editor(&Editor), +    ForceCommitInSystemHeader(Editor.getForceCommitInSystemHeader()), +    IsCommitable(true) { }  bool Commit::insert(SourceLocation loc, StringRef text,                      bool afterToken, bool beforePreviousInsertions) { @@ -183,7 +185,7 @@ void Commit::addInsert(SourceLocation OrigLoc, FileOffset Offs, StringRef text,    data.Kind = Act_Insert;    data.OrigLoc = OrigLoc;    data.Offset = Offs; -  data.Text = text; +  data.Text = copyString(text);    data.BeforePrev = beforePreviousInsertions;    CachedEdits.push_back(data);  } @@ -232,7 +234,7 @@ bool Commit::canInsert(SourceLocation loc, FileOffset &offs) {      if (!isAtStartOfMacroExpansion(loc, &loc))        return false; -  if (SM.isInSystemHeader(loc)) +  if (SM.isInSystemHeader(loc) && ForceCommitInSystemHeader)      return false;    std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc); @@ -263,7 +265,7 @@ bool Commit::canInsertAfterToken(SourceLocation loc, FileOffset &offs,      if (!isAtEndOfMacroExpansion(loc, &loc))        return false; -  if (SM.isInSystemHeader(loc)) +  if (SM.isInSystemHeader(loc) && ForceCommitInSystemHeader)      return false;    loc = Lexer::getLocForEndOfToken(loc, 0, SourceMgr, LangOpts); @@ -301,8 +303,8 @@ bool Commit::canRemoveRange(CharSourceRange range,    if (range.getBegin().isMacroID() || range.getEnd().isMacroID())      return false; -  if (SM.isInSystemHeader(range.getBegin()) || -      SM.isInSystemHeader(range.getEnd())) +  if ((SM.isInSystemHeader(range.getBegin()) || +       SM.isInSystemHeader(range.getEnd())) && ForceCommitInSystemHeader)      return false;    if (PPRec && PPRec->rangeIntersectsConditionalDirective(range.getAsRange()))  | 
