[clangd] Use raw rename functions to implement the rename.
authorHaojian Wu <hokein@google.com>
Fri, 9 Aug 2019 10:55:22 +0000 (10:55 +0000)
committerHaojian Wu <hokein@google.com>
Fri, 9 Aug 2019 10:55:22 +0000 (10:55 +0000)
commit8b49173a8232cd20db01d4701bdaac3bcef3bcfe
treec475b7b275cfeaa79a11f8648f826d8b208db57d
parente3d81fdf6f019c4774f8f513d880fcdd4f3a0239
[clangd] Use raw rename functions to implement the rename.

Summary:
The API provided by refactoring lib doesn't provide enough flexibility
to get clangd's rename to behave as we expect. Instead, we replace it
with the low-level rename functions, which give us more control.

Bonus:
- performance, previously we visit the TU to find all occurrences,
  now we just visit top-level decls from main file;
- fix a bug where we wrongly filter out the main file replacement due to the
  different relative/absolute file path;

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits

Tags: #clang

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

llvm-svn: 368429
clang-tools-extra/clangd/refactor/Rename.cpp
clang-tools-extra/clangd/test/rename.test