Author: akirtzidis Date: Thu Apr 27 19:25:06 2017 New Revision: 301602 URL: http://llvm.org/viewvc/llvm-project?rev=301602&view=rev Log: [ARCMigrate] When applying changes from remap files, disable the 'adjustRemovals' functionality of EditedSource
'adjustRemovals' is used to avoid situation when removing a range inadvertently causes 2 separate identifiers to get joined into one. But it is not useful when the edits are character precise, as is the case with the remap files. Added: cfe/trunk/test/ARCMT/remap-applying.c cfe/trunk/test/ARCMT/remap-applying.c.result Modified: cfe/trunk/include/clang/Edit/EditedSource.h cfe/trunk/lib/ARCMigrate/ObjCMT.cpp cfe/trunk/lib/Edit/EditedSource.cpp Modified: cfe/trunk/include/clang/Edit/EditedSource.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Edit/EditedSource.h?rev=301602&r1=301601&r2=301602&view=diff ============================================================================== --- cfe/trunk/include/clang/Edit/EditedSource.h (original) +++ cfe/trunk/include/clang/Edit/EditedSource.h Thu Apr 27 19:25:06 2017 @@ -65,7 +65,7 @@ public: bool commit(const Commit &commit); - void applyRewrites(EditsReceiver &receiver); + void applyRewrites(EditsReceiver &receiver, bool adjustRemovals = true); void clearRewrites(); StringRef copyString(StringRef str) { return str.copy(StrAlloc); } Modified: cfe/trunk/lib/ARCMigrate/ObjCMT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ObjCMT.cpp?rev=301602&r1=301601&r2=301602&view=diff ============================================================================== --- cfe/trunk/lib/ARCMigrate/ObjCMT.cpp (original) +++ cfe/trunk/lib/ARCMigrate/ObjCMT.cpp Thu Apr 27 19:25:06 2017 @@ -2189,7 +2189,7 @@ static std::string applyEditsToTemp(cons Rewriter rewriter(SM, LangOpts); RewritesReceiver Rec(rewriter); - Editor.applyRewrites(Rec); + Editor.applyRewrites(Rec, /*adjustRemovals=*/false); const RewriteBuffer *Buf = rewriter.getRewriteBufferFor(FID); SmallString<512> NewText; Modified: cfe/trunk/lib/Edit/EditedSource.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Edit/EditedSource.cpp?rev=301602&r1=301601&r2=301602&view=diff ============================================================================== --- cfe/trunk/lib/Edit/EditedSource.cpp (original) +++ cfe/trunk/lib/Edit/EditedSource.cpp Thu Apr 27 19:25:06 2017 @@ -363,13 +363,14 @@ static void adjustRemoval(const SourceMa static void applyRewrite(EditsReceiver &receiver, StringRef text, FileOffset offs, unsigned len, - const SourceManager &SM, const LangOptions &LangOpts) { + const SourceManager &SM, const LangOptions &LangOpts, + bool shouldAdjustRemovals) { assert(offs.getFID().isValid()); SourceLocation Loc = SM.getLocForStartOfFile(offs.getFID()); Loc = Loc.getLocWithOffset(offs.getOffset()); assert(Loc.isFileID()); - if (text.empty()) + if (text.empty() && shouldAdjustRemovals) adjustRemoval(SM, LangOpts, Loc, offs, len, text); CharSourceRange range = CharSourceRange::getCharRange(Loc, @@ -387,7 +388,8 @@ static void applyRewrite(EditsReceiver & receiver.insert(Loc, text); } -void EditedSource::applyRewrites(EditsReceiver &receiver) { +void EditedSource::applyRewrites(EditsReceiver &receiver, + bool shouldAdjustRemovals) { SmallString<128> StrVec; FileOffset CurOffs, CurEnd; unsigned CurLen; @@ -414,14 +416,16 @@ void EditedSource::applyRewrites(EditsRe continue; } - applyRewrite(receiver, StrVec, CurOffs, CurLen, SourceMgr, LangOpts); + applyRewrite(receiver, StrVec, CurOffs, CurLen, SourceMgr, LangOpts, + shouldAdjustRemovals); CurOffs = offs; StrVec = act.Text; CurLen = act.RemoveLen; CurEnd = CurOffs.getWithOffset(CurLen); } - applyRewrite(receiver, StrVec, CurOffs, CurLen, SourceMgr, LangOpts); + applyRewrite(receiver, StrVec, CurOffs, CurLen, SourceMgr, LangOpts, + shouldAdjustRemovals); } void EditedSource::clearRewrites() { Added: cfe/trunk/test/ARCMT/remap-applying.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/remap-applying.c?rev=301602&view=auto ============================================================================== --- cfe/trunk/test/ARCMT/remap-applying.c (added) +++ cfe/trunk/test/ARCMT/remap-applying.c Thu Apr 27 19:25:06 2017 @@ -0,0 +1,4 @@ +a bc + +// RUN: echo "[{\"file\": \"%s\", \"offset\": 1, \"remove\": 2, }]" > %t.remap +// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %s.result Added: cfe/trunk/test/ARCMT/remap-applying.c.result URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/remap-applying.c.result?rev=301602&view=auto ============================================================================== --- cfe/trunk/test/ARCMT/remap-applying.c.result (added) +++ cfe/trunk/test/ARCMT/remap-applying.c.result Thu Apr 27 19:25:06 2017 @@ -0,0 +1,4 @@ +ac + +// RUN: echo "[{\"file\": \"%s\", \"offset\": 1, \"remove\": 2, }]" > %t.remap +// RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %s.result _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits