Hi,

also in my back queue a few more location fixes (of course ;) Tested x86_64-linux.

Thanks, Paolo.

////////////////

/cp
2019-05-21  Paolo Carlini  <paolo.carl...@oracle.com>

        * parser.c (cp_parser_template_declaration_after_parameters): Use
        DECL_SOURCE_LOCATION in literal operator template errors.

/testsuite
2019-05-21  Paolo Carlini  <paolo.carl...@oracle.com>

        * g++.dg/cpp0x/udlit-tmpl-arg-neg2.C: Check locations too.
        * g++.dg/cpp0x/udlit-tmpl-parms-neg.C: Likewise.
Index: cp/parser.c
===================================================================
--- cp/parser.c (revision 271459)
+++ cp/parser.c (working copy)
@@ -27912,14 +27912,16 @@ cp_parser_template_declaration_after_parameters (c
       if (!ok)
        {
          if (cxx_dialect > cxx17)
-           error ("literal operator template %qD has invalid parameter list;"
-                  " expected non-type template parameter pack %<<char...>%> "
-                  "or single non-type parameter of class type",
-                  decl);
+           error_at (DECL_SOURCE_LOCATION (decl), "literal operator "
+                     "template %qD has invalid parameter list; expected "
+                     "non-type template parameter pack %<<char...>%> or "
+                     "single non-type parameter of class type",
+                     decl);
          else
-           error ("literal operator template %qD has invalid parameter list;"
-                  " expected non-type template parameter pack %<<char...>%>",
-                  decl);
+           error_at (DECL_SOURCE_LOCATION (decl), "literal operator "
+                     "template %qD has invalid parameter list; expected "
+                     "non-type template parameter pack %<<char...>%>",
+                     decl);
        }
     }
 
Index: testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
===================================================================
--- testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C        (revision 271459)
+++ testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C        (working copy)
@@ -2,6 +2,6 @@
 // { dg-do compile { target c++11 } }
 
 template <T, T... U>           // { dg-error "'T' has not been declared" }
-int operator"" _foo ();                // { dg-error "has invalid parameter 
list" }
+int operator"" _foo ();                // { dg-error "5:literal operator 
template .int operator\"\"_foo\\(\\). has invalid parameter list" }
 template <T... U>              // { dg-error "'T' has not been declared" }
-int operator"" _bar ();                // { dg-error "has invalid parameter 
list" }
+int operator"" _bar ();                // { dg-error "5:literal operator 
template .int operator\"\"_bar\\(\\). has invalid parameter list" }
Index: testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C
===================================================================
--- testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C       (revision 271459)
+++ testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C       (working copy)
@@ -3,10 +3,10 @@
 class Foo { };
 
 template<wchar_t...>
-  Foo operator"" _Foo(); // { dg-error "literal operator template|has invalid 
parameter list" }
+  Foo operator"" _Foo(); // { dg-error "7:literal operator template .Foo 
operator\"\"_Foo\\(\\). has invalid parameter list" }
 
 template<char>
-  Foo operator"" _Bar(); // { dg-error "literal operator template|has invalid 
parameter list" }
+  Foo operator"" _Bar(); // { dg-error "7:literal operator template .Foo 
operator\"\"_Bar\\(\\). has invalid parameter list" }
 
 template<typename... Type>
-  Foo operator"" _Bar(); // { dg-error "literal operator template|has invalid 
parameter list" }
+  Foo operator"" _Bar(); // { dg-error "7:literal operator template .Foo 
operator\"\"_Bar\\(\\). has invalid parameter list" }

Reply via email to