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" }