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

via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 18 09:30:34 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:

>  It makes it easier to determine which error is causing the note.

Iirc last time this came up in a discussion the consensus was that it was better not to use markers, but I think that was more about actual errors than notes, because this makes sense, yeah.

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


More information about the cfe-commits mailing list