Give more accurate descriptions of what kind of template we found in diagnostics.
We were previouly assuming that every type template was a class template, which
is not true any more.
llvm-svn: 291988
diff --git a/clang/test/SemaTemplate/alias-templates.cpp b/clang/test/SemaTemplate/alias-templates.cpp
index d70e868..3b7548d 100644
--- a/clang/test/SemaTemplate/alias-templates.cpp
+++ b/clang/test/SemaTemplate/alias-templates.cpp
@@ -254,3 +254,14 @@
tuple_size<const int> t;
}
+
+namespace an_alias_template_is_not_a_class_template {
+ template<typename T> using Foo = int; // expected-note 2{{here}}
+ Foo x; // expected-error {{use of alias template 'Foo' requires template arguments}}
+ Foo<> y; // expected-error {{too few template arguments for alias template 'Foo'}}
+
+ template<template<typename> class Bar> void f() { // expected-note 2{{here}}
+ Bar x; // expected-error {{use of template template parameter 'Bar' requires template arguments}}
+ Bar<> y; // expected-error {{too few template arguments for template template parameter 'Bar'}}
+ }
+}