[PATCH] D66647: [clangd] DefineInline action apply logic with fully qualified names

Kadir Cetinkaya via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 27 08:33:10 PDT 2019


kadircet added a comment.

In D66647#1684046 <https://reviews.llvm.org/D66647#1684046>, @ilya-biryukov wrote:

> We also need to rename parameters sometimes, right?
>
>   // Sometimes we need to rename parameters.
>   void usages(int decl_param, int);
>  
>   void usages(int def_param, int now_named) {
>     llvm::errs() << def_param + now_named;
>   }
>  
>   // And template parameters! (these are even more interesting)
>   template <class T>
>   struct Foo {
>     template <class U, class>
>     void usages();
>   };
>   template <class L>
>   template <class R, class NowNamed>
>   void Foo<L>::usages() {
>     llvm::errs() << L() + R() + NowNamed();
>   }
>


So currently AST doesn't store any information regarding template parameter locations except the deepest one.
Therefore I've changed the availability to discard any methods inside templated classes, since there is no way to
validate the template parameter names. Hopefully this should be a rare use-case, and I believe most of the times
people have same template paramater names on declaration and definition. Let me know what you think about
it.

In addition to that implemented renaming for function parameters and template parameters in case of templated
functions.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66647/new/

https://reviews.llvm.org/D66647





More information about the cfe-commits mailing list