rsmith added a comment.

I would prefer to avoid adding the `%qt` format if we can. But if we do provide 
it, the template parameter names we use should match what was written in the 
declaration of the template itself.


================
Comment at: lib/AST/Decl.cpp:1423
@@ +1422,3 @@
+///
+/// is printed as C1<T,N>::C2<T1,TT<>>::meth<T2> rather than C1::C2::meth.
+///
----------------
Presumably you mean `C1<T, Val>::C2<T1, TC>::meth<T2>`?

================
Comment at: lib/AST/Decl.cpp:1447
@@ +1446,3 @@
+          OS << "...";
+        OS << 'T';
+        if (TypePNo)
----------------
Please don't invent a name here. If you really want this formatting for 
template names, please query the `TemplateDecl` to find the names that were 
used when declaring its parameters.

================
Comment at: lib/AST/Decl.cpp:1464
@@ +1463,3 @@
+          OS << TemplPNo;
+        OS << "<>";
+        TemplPNo++;
----------------
This doesn't make sense: a template template argument is passed as a template, 
but adding `<>` would make it a type instead. Remove this.

================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:3611
@@ +3610,3 @@
+      if (AtEndOfTU && !getDiagnostics().hasErrorOccurred()) {
+        Diag(PointOfInstantiation, diag::warn_func_template_missing)
+          << Function << PatternDecl;
----------------
Please produce a note pointing at the declaration of the undefined template. 
With a bit of rewording the diagnostics, I think you can remove the need for 
the `%qt` format entirely:

  warning: instantiation for 'X<int>::f<double>' is required but no definition 
is available
    X<int>::f(0.0);
            ^
  note: forward declaration of template entity is here
    template<typename T> void f(T);
                              ^
  note: add an explicit instantiation declaration to suppress this warning if 
'X<int>::f<double>' is explicitly instantiated in another translation unit


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