diff options
author | Jason Merrill <jason@redhat.com> | 2012-01-06 18:19:05 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-01-06 18:19:05 -0500 |
commit | b2218da7a76e54ab5b82965cbb5dee3081012dc6 (patch) | |
tree | ff89be9d6e542c3db00f07a240ac0ab4679c3bc1 /gcc | |
parent | 0850f694fb46cd1500ca89364c5240ddf29cfd9c (diff) | |
download | gcc-b2218da7a76e54ab5b82965cbb5dee3081012dc6.zip gcc-b2218da7a76e54ab5b82965cbb5dee3081012dc6.tar.gz gcc-b2218da7a76e54ab5b82965cbb5dee3081012dc6.tar.bz2 |
DR 686 PR c++/47450
DR 686
PR c++/47450
* parser.c (cp_parser_new_expression): Set
type_definition_forbidden_message.
From-SVN: r182975
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/parser.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/new5.C | 4 |
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 041722d..e31b386 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2012-01-06 Jason Merrill <jason@redhat.com> + DR 686 + PR c++/47450 + * parser.c (cp_parser_new_expression): Set + type_definition_forbidden_message. + PR c++/6057 PR c++/48051 PR c++/50855 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 0ae55a2..9be68d0 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6668,10 +6668,17 @@ cp_parser_new_expression (cp_parser* parser) if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) { cp_token *token; + const char *saved_message = parser->type_definition_forbidden_message; + /* Consume the `('. */ cp_lexer_consume_token (parser->lexer); + /* Parse the type-id. */ + parser->type_definition_forbidden_message + = G_("types may not be defined in a new-expression"); type = cp_parser_type_id (parser); + parser->type_definition_forbidden_message = saved_message; + /* Look for the closing `)'. */ cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN); token = cp_lexer_peek_token (parser->lexer); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8fc06e4..cedc882 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-01-06 Jason Merrill <jason@redhat.com> + + * g++.dg/parse/new5.C: New. + 2012-01-06 Patrick Marlier <patrick.marlier@gmail.com> PR testsuite/51655 diff --git a/gcc/testsuite/g++.dg/parse/new5.C b/gcc/testsuite/g++.dg/parse/new5.C new file mode 100644 index 0000000..83937c6 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/new5.C @@ -0,0 +1,4 @@ +// PR c++/47450 + +struct A { }; +A* ap = new(struct: A { }); // { dg-error "types may not be defined" } |