rsmith added a comment.

I have a lingering concern with this style of formatting, because it risks 
making our diagnostics (more) ambiguous. Consider this:

  template<typename T> struct X {};
  
  struct T {};
  X<T> xt;

If we give a diagnostic talking about `X<T>`, it's ambiguous whether we're 
referring to the `X` template itself or the concrete type of `xt`. That said, 
the actual diagnostic changes here do look like improvements, particularly 
because the template parameter names we're using are typically in scope at the 
point where we issue the diagnostic (so there is no ambiguity). On the whole, I 
think the risk of ambiguity is less than the benefit here.


================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:3611
@@ +3610,3 @@
+      if (AtEndOfTU && !getDiagnostics().hasErrorOccurred()) {
+        Diag(PointOfInstantiation, diag::warn_func_template_missing)
+          << Function << PatternDecl;
----------------
I would still like this note to be added to the diagnostic.

================
Comment at: test/OpenMP/parallel_ast_print.cpp:135
@@ -134,3 +134,3 @@
 // CHECK:        static T TS;
-// CHECK-NEXT:   #pragma omp threadprivate(S::TS)
+// CHECK-NEXT:   #pragma omp threadprivate(S<T>::TS)
 // CHECK:      };
----------------
This looks like an undesirable change. Can you turn off 
`PrintTemplateArguments` by default and turn it on only for `%t` in diagnostics?


http://reviews.llvm.org/D16396



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

Reply via email to