aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype-pr66548.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C6
5 files changed, 20 insertions, 13 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e26cb98..970f7e8 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,10 @@
2019-05-21 Paolo Carlini <paolo.carlini@oracle.com>
+ * parser.c (cp_parser_template_declaration_after_parameters): Use
+ DECL_SOURCE_LOCATION in literal operator template errors.
+
+2019-05-21 Paolo Carlini <paolo.carlini@oracle.com>
+
PR c++/67184
PR c++/69445
* call.c (build_over_call): Devirtualize when the final overrider
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 290f897..1440fdb 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -27895,14 +27895,16 @@ cp_parser_template_declaration_after_parameters (cp_parser* parser,
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);
}
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype-pr66548.C b/gcc/testsuite/g++.dg/cpp0x/decltype-pr66548.C
index f4b7caa..3f20d15 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype-pr66548.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype-pr66548.C
@@ -11,7 +11,7 @@ struct Meow {};
void f ()
{
- decltype (Meow.purr ()) d; // { dg-error "expected primary-expression" "pr89875" { xfail c++98_only } }
+ decltype (Meow.purr ()) d; // { dg-error "expected primary-expression" }
(void)&d;
}
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
index c426e0e..f2db95d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
@@ -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" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C
index f681ecf..167d871 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C
@@ -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" }