mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 01:55:08 +00:00
[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. llvm-svn: 301602
This commit is contained in:
parent
064b7fecac
commit
5312b667a8
@ -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); }
|
||||
|
@ -2189,7 +2189,7 @@ static std::string applyEditsToTemp(const FileEntry *FE,
|
||||
|
||||
Rewriter rewriter(SM, LangOpts);
|
||||
RewritesReceiver Rec(rewriter);
|
||||
Editor.applyRewrites(Rec);
|
||||
Editor.applyRewrites(Rec, /*adjustRemovals=*/false);
|
||||
|
||||
const RewriteBuffer *Buf = rewriter.getRewriteBufferFor(FID);
|
||||
SmallString<512> NewText;
|
||||
|
@ -363,13 +363,14 @@ static void adjustRemoval(const SourceManager &SM, const LangOptions &LangOpts,
|
||||
|
||||
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,
|
||||
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(EditsReceiver &receiver) {
|
||||
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() {
|
||||
|
4
clang/test/ARCMT/remap-applying.c
Normal file
4
clang/test/ARCMT/remap-applying.c
Normal file
@ -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
|
4
clang/test/ARCMT/remap-applying.c.result
Normal file
4
clang/test/ARCMT/remap-applying.c.result
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user