[clang] [clang] Distinguish unresolved templates in UnresolvedLookupExpr (PR #89019)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 18 10:23:49 PDT 2024


================
@@ -186,3 +186,74 @@ class E {
 #endif
 template<typename T> using D = int; // expected-note {{declared here}} 
 E<D> ed; // expected-note {{instantiation of}}
+
+namespace non_functions {
+
+#if __cplusplus >= 201103L
+namespace PR88832 {
+template <typename T> struct O {
+  static const T v = 0;
+};
+
+struct P {
+  template <typename T> using I = typename O<T>::v; // #TypeAlias
+};
+
+struct Q {
+  template <typename T> int foo() {
+    return T::template I<int>; // expected-error {{'P::I' is expected to be a non-type template, but instantiated to a type alias template}}
+    // expected-note@#TypeAlias {{type alias template declared here}}
----------------
erichkeane wrote:

FWIW, I think I'm the 'first' person who has really been pushing for using the bookmarks for notes, no one ever has before, but when reviewing template stuff in particular, it is REALLY bad, so as code-owner, its one of the things I push for in new commits :)  

So you'll see very few that do it, but hopefully more happening.

https://github.com/llvm/llvm-project/pull/89019


More information about the cfe-commits mailing list