[clang-apply-replacements] Added an option to ignore insert conflict.
authorSockke <liuke.gehry@bytedance.com>
Mon, 30 May 2022 05:02:25 +0000 (13:02 +0800)
committerSockke <liuke.gehry@bytedance.com>
Mon, 30 May 2022 05:02:25 +0000 (13:02 +0800)
commit3f3a235aa2e610b5ba393228a666d55a8135ef4a
treec33400b927c7a915e46f11e5c4c73b45f2dcd1ee
parent88af539c0eaa5a282e6c1632797d33dfc0ebcb65
[clang-apply-replacements] Added an option to ignore insert conflict.

If two different texts are inserted at the same offset, clang-apply-replacements prints the conflict error and discards all fixes. This patch adds support for adjusting conflict offset and keeps running to continually fix them.

https://godbolt.org/z/P938EGoxj doesn't have any fixes when I run run-clang-tidy.py to generate a YAML file with clang-tidy and fix them with clang-apply-replacements. The YAML file has two different header texts insertions at the same offset, unlike clang-tidy with '-fix', clang-apply-replacements does not adjust for this conflict.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D123924
clang-tools-extra/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h
clang-tools-extra/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp
clang-tools-extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
clang-tools-extra/test/clang-apply-replacements/Inputs/ignore-conflict/file1.yaml [new file with mode: 0644]
clang-tools-extra/test/clang-apply-replacements/Inputs/ignore-conflict/ignore-conflict.cpp [new file with mode: 0644]
clang-tools-extra/test/clang-apply-replacements/ignore-conflict.cpp [new file with mode: 0644]
clang/include/clang/Tooling/Refactoring/AtomicChange.h