ilya-biryukov added inline comments.

================
Comment at: clang/include/clang/Tooling/Refactoring/Transformer.h:89
+  /// relevant name, not including qualifiers.
+  Name,
+};
----------------
ymandel wrote:
> ilya-biryukov wrote:
> > Same here, what happens to the template arguments and multi-token names, 
> > e.g.
> > `operator +` or `foo<int, int>`?
> Good point. This seems difficult to get right, since NamedDecl does not carry 
> sufficient loc data.  However, I've updated the code to explicitly fail in 
> such cases, so at least we won't have bad rewrites.
> 
> BTW, any idea whether constructor initializers can ever be multi token?
> BTW, any idea whether constructor initializers can ever be multi token?

Two cases come to mind:
1. arbitrary names when initializing base classes,  something like 
`::ns::X<int>(10)`
2. template packs with ellipsis (although ellipsis shouldn't be normally part 
that we replace, I guess): `Base(10)...`

Full example:
```
namespace ns {
  struct X {
    X(int);
  };
}


template <class ...Bases>
struct Y : ns::X, Bases... {
  Y() : ns::X(10), Bases(10)... {
  }
};

struct Z {
  Z(int);
};
struct W {
  W(int);
};

Y<Z, W> y;
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D59376



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to