Supports adding insertion around non-insertion replacements.
authorEric Liu <ioeric@google.com>
Wed, 14 Sep 2016 13:04:51 +0000 (13:04 +0000)
committerEric Liu <ioeric@google.com>
Wed, 14 Sep 2016 13:04:51 +0000 (13:04 +0000)
commitac73ea34a474f578edde75ef4aaa243c8d2847d0
tree84a124337368b75694ed672851c8a291690c4608
parentc2ed91fc4e38364c4c67e2ad5915783e01399476
Supports adding insertion around non-insertion replacements.

Summary:
Extend `tooling::Replacements::add()` to support adding order-independent replacements.

Two replacements are considered order-independent if one of the following conditions is true:
  - They do not overlap. (This is already supported.)
  - One replacement is insertion, and the other is a replacement with
    length > 0, and the insertion is adjecent to but not contained in the
    other replacement. In this case, the replacement should always change
    the original code instead of the inserted text.

Reviewers: klimek, djasper

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D24515

llvm-svn: 281457
clang/include/clang/Tooling/Core/Replacement.h
clang/lib/Tooling/Core/Replacement.cpp
clang/unittests/Tooling/RefactoringTest.cpp