diff options
author | Jason Merrill <jason@redhat.com> | 2013-07-09 17:52:40 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2013-07-09 17:52:40 -0400 |
commit | d966b2749cc7addb143788e51b2e3e6ad43fb203 (patch) | |
tree | 0774ecb15346e6dcec51f4dacdc5711f3fe2da87 /gcc | |
parent | 7da38058022e0d9b649b95c159f0be7accb2c4a0 (diff) | |
download | gcc-d966b2749cc7addb143788e51b2e3e6ad43fb203.zip gcc-d966b2749cc7addb143788e51b2e3e6ad43fb203.tar.gz gcc-d966b2749cc7addb143788e51b2e3e6ad43fb203.tar.bz2 |
re PR c++/57471 (Bizarre error for template parameter pack)
PR c++/57471
* parser.c (cp_parser_sizeof_pack): Clear parser scopes.
From-SVN: r200852
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/parser.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic-sizeof2.C | 14 |
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 88ba769..1bc0b6f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2013-07-09 Jason Merrill <jason@redhat.com> + PR c++/57471 + * parser.c (cp_parser_sizeof_pack): Clear parser scopes. + PR c++/57658 * semantics.c (finish_id_expression): Return the id for an unevaluated outer variable. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 614cf43..4b683bf 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -23136,6 +23136,10 @@ cp_parser_sizeof_pack (cp_parser *parser) cp_token *token = cp_lexer_peek_token (parser->lexer); tree name = cp_parser_identifier (parser); + /* The name is not qualified. */ + parser->scope = NULL_TREE; + parser->qualifying_scope = NULL_TREE; + parser->object_scope = NULL_TREE; tree expr = cp_parser_lookup_name_simple (parser, name, token->location); if (expr == error_mark_node) cp_parser_name_lookup_error (parser, name, expr, NLE_NULL, diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-sizeof2.C b/gcc/testsuite/g++.dg/cpp0x/variadic-sizeof2.C new file mode 100644 index 0000000..dfc245d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic-sizeof2.C @@ -0,0 +1,14 @@ +// PR c++/57471 +// { dg-require-effective-target c++11 } + +struct A +{ + static constexpr bool value = true; +}; + +template<typename... Types> +struct B +{ + static_assert(A::value, ""); + static_assert(sizeof...(Types) == 0, ""); +}; |