Index: clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp =================================================================== --- clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp +++ clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp @@ -288,13 +288,12 @@ for (const tooling::Replacement &R : TU.Replacements) { // Use the file manager to deduplicate paths. FileEntries are // automatically canonicalized. - const FileEntry *Entry = SM.getFileManager().getFile(R.getFilePath()); - if (!Entry && Warned.insert(R.getFilePath()).second) { - errs() << "Described file '" << R.getFilePath() - << "' doesn't exist. Ignoring...\n"; - continue; + if (const FileEntry *Entry = SM.getFileManager().getFile(R.getFilePath())) { + GroupedReplacements[Entry].push_back(R); + } else if (Warned.insert(R.getFilePath()).second) { + errs() << "Described file '" << R.getFilePath() + << "' doesn't exist. Ignoring...\n"; } - GroupedReplacements[Entry].push_back(R); } } @@ -314,13 +313,12 @@ for (const tooling::Replacement &R : Fix.second) { // Use the file manager to deduplicate paths. FileEntries are // automatically canonicalized. - const FileEntry *Entry = SM.getFileManager().getFile(R.getFilePath()); - if (!Entry && Warned.insert(R.getFilePath()).second) { - errs() << "Described file '" << R.getFilePath() - << "' doesn't exist. Ignoring...\n"; - continue; + if (const FileEntry *Entry = SM.getFileManager().getFile(R.getFilePath())) { + GroupedReplacements[Entry].push_back(R); + } else if (Warned.insert(R.getFilePath()).second) { + errs() << "Described file '" << R.getFilePath() + << "' doesn't exist. Ignoring...\n"; } - GroupedReplacements[Entry].push_back(R); } } } Index: test/clang-apply-replacements/Inputs/invalid-files/invalid-files.yaml =================================================================== --- /dev/null +++ test/clang-apply-replacements/Inputs/invalid-files/invalid-files.yaml @@ -0,0 +1,12 @@ +--- +MainSourceFile: '' +Replacements: + - FilePath: idontexist.h + Offset: 2669 + Length: 0 + ReplacementText: ' override' + - FilePath: idontexist.h + Offset: 2669 + Length: 0 + ReplacementText: ' override' +... Index: test/clang-apply-replacements/invalid-files.cpp =================================================================== --- /dev/null +++ test/clang-apply-replacements/invalid-files.cpp @@ -0,0 +1,5 @@ +// RUN: mkdir -p %T/invalid-files +// RUN: clang-apply-replacements %T/invalid-files +// +// Check that the yaml files are *not* deleted after running clang-apply-replacements without remove-change-desc-files. +// RUN: ls %T/Inputs/invalid-files/invalid-files.yaml