aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2019-07-16 04:49:04 -0400
committerJason Merrill <jason@gcc.gnu.org>2019-07-16 04:49:04 -0400
commit19bd90282641da569f3da6c26eac3fd248296cb2 (patch)
treecfa7eca50987876191344625432b6f5ceb30e7ab /gcc
parent10b04d1e0b3f4435a8f2e806fddf12ff8b864623 (diff)
downloadgcc-19bd90282641da569f3da6c26eac3fd248296cb2.zip
gcc-19bd90282641da569f3da6c26eac3fd248296cb2.tar.gz
gcc-19bd90282641da569f3da6c26eac3fd248296cb2.tar.bz2
Fix g++.dg/template/pr84789.C on new concepts branch.
On the concepts branch I ran into trouble where a pre-parsed dependent nested-name-specifier got replaced on a subsequent parse with is_declaration by one with typenames resolved, which was then used wrongly on a further parse with !is_declaration. * parser.c (cp_parser_nested_name_specifier_opt): If the token is already CPP_NESTED_NAME_SPECIFIER, leave it alone. From-SVN: r273513
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a18959d..bd85c70 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2019-07-16 Jason Merrill <jason@redhat.com>
+
+ * parser.c (cp_parser_nested_name_specifier_opt): If the token is
+ already CPP_NESTED_NAME_SPECIFIER, leave it alone.
+
2019-07-12 Jakub Jelinek <jakub@redhat.com>
* parser.c (cp_parser_omp_clause_name): Handle order clause.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index f91c50e..14a2168 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -6275,7 +6275,8 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
cp_token *token;
/* Remember where the nested-name-specifier starts. */
- if (cp_parser_uncommitted_to_tentative_parse_p (parser))
+ if (cp_parser_uncommitted_to_tentative_parse_p (parser)
+ && cp_lexer_next_token_is_not (parser->lexer, CPP_NESTED_NAME_SPECIFIER))
{
start = cp_lexer_token_position (parser->lexer, false);
push_deferring_access_checks (dk_deferred);