aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2019-10-21 19:29:41 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2019-10-21 19:29:41 +0000
commit79cd6c7b905ca9390bc1e7c87c259a5a18cefa81 (patch)
tree4c70fff8023627a84ce3887ab08492d416c7df86 /gcc
parent5b884e9400741569ee385f0de4590c1730aa600c (diff)
downloadgcc-79cd6c7b905ca9390bc1e7c87c259a5a18cefa81.zip
gcc-79cd6c7b905ca9390bc1e7c87c259a5a18cefa81.tar.gz
gcc-79cd6c7b905ca9390bc1e7c87c259a5a18cefa81.tar.bz2
parser.c (cp_parser_class_head): Improve error recovery upon extra qualification error.
/cp 2019-10-21 Paolo Carlini <paolo.carlini@oracle.com> * parser.c (cp_parser_class_head): Improve error recovery upon extra qualification error. /testsuite 2019-10-21 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/parse/qualified2.C: Tighten dg-error directive. * g++.old-deja/g++.other/decl5.C: Don't expect redundant error. From-SVN: r277268
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/parse/qualified2.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/decl5.C7
5 files changed, 16 insertions, 11 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 593510f..19a687a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2019-10-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * parser.c (cp_parser_class_head): Improve error recovery upon
+ extra qualification error.
+
2019-10-21 Jakub Jelinek <jakub@redhat.com>
PR c++/92015
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 450b144..6433f87 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -24178,12 +24178,8 @@ cp_parser_class_head (cp_parser* parser,
... [or] the definition or explicit instantiation of a
class member of a namespace outside of its namespace. */
if (scope == nested_name_specifier)
- {
- permerror (nested_name_specifier_token_start->location,
- "extra qualification not allowed");
- nested_name_specifier = NULL_TREE;
- num_templates = 0;
- }
+ permerror (nested_name_specifier_token_start->location,
+ "extra qualification not allowed");
}
/* An explicit-specialization must be preceded by "template <>". If
it is not, try to recover gracefully. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3f4e6c5..5aec5cd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-10-21 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/parse/qualified2.C: Tighten dg-error directive.
+ * g++.old-deja/g++.other/decl5.C: Don't expect redundant error.
+
2019-10-21 Jakub Jelinek <jakub@redhat.com>
PR c++/92015
diff --git a/gcc/testsuite/g++.dg/parse/qualified2.C b/gcc/testsuite/g++.dg/parse/qualified2.C
index c582613..ef1bedb 100644
--- a/gcc/testsuite/g++.dg/parse/qualified2.C
+++ b/gcc/testsuite/g++.dg/parse/qualified2.C
@@ -1,4 +1,4 @@
namespace Glib {
template <typename> class Value {};
- template <> class Glib::Value<int> {}; // { dg-error "" }
+ template <> class Glib::Value<int> {}; // { dg-error "29:extra qualification" }
}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/decl5.C b/gcc/testsuite/g++.old-deja/g++.other/decl5.C
index 6d22932..26556aa 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/decl5.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/decl5.C
@@ -8,11 +8,10 @@
struct A {
- int A::fn(); // { dg-error "extra qualification" }
- int A::m; // { dg-error "extra qualification" }
+ int A::fn(); // { dg-error "7:extra qualification" }
+ int A::m; // { dg-error "7:extra qualification" }
struct e;
- struct A::e {int i;}; // { dg-error "extra qualification" "qual" }
- // { dg-error "anonymous struct" "anon" { target *-*-* } .-1 }
+ struct A::e {int i;}; // { dg-error "10:extra qualification" "qual" }
struct A::expand { // { dg-error "qualified name" }
int m;
};