]> granicus.if.org Git - clang/commitdiff
Add quotation marks to template names in diagnostics.
authorDavid Blaikie <dblaikie@gmail.com>
Tue, 5 Mar 2013 06:21:38 +0000 (06:21 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Tue, 5 Mar 2013 06:21:38 +0000 (06:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176474 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/AST/TemplateName.cpp
test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp
test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/basic.cpp
test/Parser/cxx-casting.cpp
test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp
test/SemaTemplate/class-template-id.cpp
test/SemaTemplate/temp_arg.cpp
test/SemaTemplate/temp_arg_type.cpp

index a17719df99bbb15b1005c203ca9a42d6c206348e..44dec5a2c8101e378fb403d3d257bcfd0d1c585d 100644 (file)
@@ -3126,9 +3126,9 @@ def warn_cxx98_compat_template_outside_of_template : Warning<
   InGroup<CXX98Compat>, DefaultIgnore;
 
 def err_non_type_template_in_nested_name_specifier : Error<
-  "qualified name refers into a specialization of function template '%0'">;
+  "qualified name refers into a specialization of function template %0">;
 def err_template_id_not_a_type : Error<
-  "template name refers to non-type template '%0'">;
+  "template name refers to non-type template %0">;
 def note_template_declared_here : Note<
   "%select{function template|class template|type alias template|template template parameter}0 "
   "%1 declared here">;
index f68dbda7c7e2ef701a093b74a0049c98cbe4a95d..8767c635f675c3e5ef3a88299e90231b9f8766dc 100644 (file)
@@ -163,7 +163,9 @@ const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB,
   LangOptions LO;
   LO.CPlusPlus = true;
   LO.Bool = true;
+  OS << '\'';
   N.print(OS, PrintingPolicy(LO));
+  OS << '\'';
   OS.flush();
   return DB << NameStr;
 }
index d2afd5d83fdc85ae7328b4fb1a4838031053413c..9632fda296aa1719d6415394266f99b5920753aa 100644 (file)
@@ -33,5 +33,5 @@ namespace test1 {
 // specifiers.
 namespace test2 {
   template <class T> struct bar {};
-  template <class T> struct foo : bar<foo> {}; // expected-error {{use of class template foo requires template arguments}} expected-note {{template is declared here}}
+  template <class T> struct foo : bar<foo> {}; // expected-error {{use of class template 'foo' requires template arguments}} expected-note {{template is declared here}}
 }
index 4f6dcc11053d0278866c4611491dfb01fb4cdb21..33efac02482dc0142391771731b9893bf93a8c2d 100644 (file)
@@ -27,3 +27,21 @@ void test_f2(int *ip, float *fp) {
   f2(ip, ip); // okay
   f2(ip, fp); // expected-error{{no matching function}}
 }
+
+namespace test3 {
+  template<typename T>
+  struct bar { };
+
+  template<typename T>
+  struct foo {
+    operator bar<T>();
+  };
+
+  template<typename T>
+  void func(bar<T>) { // expected-note {{candidate template ignored: could not match 'bar' against 'foo'}}
+  }
+
+  void test() {
+    func(foo<int>()); // expected-error {{no matching function}}
+  }
+}
index 01980d3341769c0f2889437721cc216c9146e8b0..69680e421b0da2dff128678e4dac1539cb4e4826 100644 (file)
@@ -58,9 +58,9 @@ void test2(char x, struct B * b) {
               expected-error {{expected ']'}}
 #define LC <:
 #define C :
-  test1::A LC:B> c; // expected-error {{class template test1::A requires template arguments}} expected-error 2{{}}
+  test1::A LC:B> c; // expected-error {{class template 'test1::A' requires template arguments}} expected-error 2{{}}
   (void)static_cast LC:c>(&x); // expected-error {{expected '<' after 'static_cast'}} expected-error 2{{}} expected-note{{}}
-  test1::A<:C B> d; // expected-error {{class template test1::A requires template arguments}} expected-error 2{{}}
+  test1::A<:C B> d; // expected-error {{class template 'test1::A' requires template arguments}} expected-error 2{{}}
   (void)static_cast<:C c>(&x); // expected-error {{expected '<' after 'static_cast'}} expected-error 2{{}} expected-note{{}}
 
 #define LCC <::
@@ -85,7 +85,7 @@ void test3() {
   E< ::F>();
 
   // Make sure that parser doesn't expand '[:' to '< ::'
-  ::D[:F> A5; // expected-error {{class template ::D requires template arguments}} \
+  ::D[:F> A5; // expected-error {{class template '::D' requires template arguments}} \
               // expected-error {{expected expression}} \
               // expected-error {{expected unqualified-id}}
 }
index 83f83951395cb95111e107eb94aa9d46d1f8b308..40bcf45bca32f954bc1383416bc843686e153672 100644 (file)
@@ -70,7 +70,7 @@ namespace llvm {
 struct S {};
 void bar() {
  GraphWriter<S> x; //expected-error{{no template named 'GraphWriter'; did you mean 'llvm::GraphWriter'?}}
- (void)new llvm::GraphWriter; // expected-error {{use of class template llvm::GraphWriter requires template arguments}}
+ (void)new llvm::GraphWriter; // expected-error {{use of class template 'llvm::GraphWriter' requires template arguments}}
  (void)new llvm::Graphwriter<S>; // expected-error {{no template named 'Graphwriter' in namespace 'llvm'; did you mean 'GraphWriter'?}}
 }
 
index b674537ea71c9e376e124ceab2e146a31016ad79..5bbc70c9552cd4c23ad9c805f2c0d6389dabb8e0 100644 (file)
@@ -40,7 +40,7 @@ typedef N::C<float> c2;
 // PR5655
 template<typename T> struct Foo { }; // expected-note{{template is declared here}}
 
-void f(void) { Foo bar; } // expected-error{{use of class template Foo requires template arguments}}
+void f(void) { Foo bar; } // expected-error{{use of class template 'Foo' requires template arguments}}
 
 // rdar://problem/8254267
 template <typename T> class Party;
index 5a4c8fc16fd6524a8e6fafe259650bbe74f57c37..052c19ef639d34dbbb490984cc4411cc42eedafb 100644 (file)
@@ -10,7 +10,7 @@ A<int, 0, X> * a1;
 
 A<float, 1, X, double> *a2; // expected-error{{too many template arguments for class template 'A'}}
 A<float, 1> *a3; // expected-error{{too few template arguments for class template 'A'}}
-A a3; // expected-error{{use of class template A requires template arguments}}
+A a3; // expected-error{{use of class template 'A' requires template arguments}}
 
 namespace test0 {
   template <class t> class foo {};
index 397094218af837facf75206391ba652daaec110b..637b5637baec576234267f19358f1155937e3c81 100644 (file)
@@ -4,7 +4,7 @@ template<typename T> class A; // expected-note 2 {{template parameter is declare
 // [temp.arg.type]p1
 A<0> *a1; // expected-error{{template argument for template type parameter must be a type}}
 
-A<A> *a2; // expected-error{{use of class template A requires template arguments}}
+A<A> *a2; // expected-error{{use of class template 'A' requires template arguments}}
 
 A<int> *a3;
 A<int()> *a4; 
@@ -19,7 +19,7 @@ A<function_tpl> a7;  // expected-error{{template argument for template type para
 namespace ns {
 template<typename T> class B {};  // expected-note{{template is declared here}}
 }
-A<ns::B> a8; // expected-error{{use of class template ns::B requires template arguments}}
+A<ns::B> a8; // expected-error{{use of class template 'ns::B' requires template arguments}}
 
 // [temp.arg.type]p2
 void f() {