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

via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 17 05:44:24 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}}
----------------
Sirraide wrote:

I’d suggest putting this on the line where the note is emitted rather than using markers whenever possible.

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


More information about the cfe-commits mailing list