<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Jeffrey,<div><br><div><div>On Apr 4, 2010, at 2:10 AM, Jeffrey Yasskin wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><blockquote type="cite">From the test:<br></blockquote><br>namespace ns {<br>template<typename T> class B {};  // expected-note{{template is declared here}}<br>}<br>A<ns::B> a8; // expected-error{{class template-name ns::B requires<br>template arguments to produce a type}}<br><br>Clang used to just complain that the argument wasn't a type, which<br>confused users.<br></div></blockquote></div><div><br></div><div>Thank you for improving these diagnostics. Just one comment:</div><div><br></div><div><span class="Apple-style-span" style="font-family: Times; "><pre style="word-wrap: break-word; white-space: pre-wrap; ">Index: include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- include/clang/Basic/DiagnosticSemaKinds.td  (revision 100307)
+++ include/clang/Basic/DiagnosticSemaKinds.td  (working copy)
@@ -1178,6 +1178,8 @@
   "cannot refer to class template %0 without a template argument list">;
 
 // C++ Template Argument Lists
+def err_template_missing_args : Error<
+  "class template-name %0 requires template arguments to produce a type">;</pre></span><div><br></div><div>"template-name" sounds too much like a grammar term. How about </div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>"use of class template %0 requires template arguments"</div></div><div><br></div><div>?</div><br><div><span class="Apple-tab-span" style="white-space:pre">      </span>- Doug</div></div></body></html>