[clangd] Implement Decl canonicalization rules for rename
This patch introduces new canonicalization rules which are used for AST-based rename in Clangd. By comparing two canonical declarations of inspected nodes, Clangd determines whether both of them belong to the same entity user would like to rename. Such functionality is relatively concise compared to the Clang-Rename API that is used right now. It also helps to overcome the limitations that Clang-Rename originally had and helps to eliminate several classes of bugs. Clangd AST-based rename currently relies on Clang-Rename which has design limitations and also lacks some features. This patch breaks this dependency and significantly reduces the amount of code to maintain (Clang-Rename is ~2000 LOC, this patch is just <30 LOC of replacement code). We eliminate technical debt by simultaneously * Maintaining feature parity and ensuring no regressions * Opening a straightforward path to improving existing rename bugs * Making it possible to add more capabilities to rename feature which would not be possible with Clang-Rename Reviewed By: hokein Differential Revision: https://reviews.llvm.org/D71880
Loading
Please sign in to comment