diff options
| -rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/cp/parser.c | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 04ec946..cf9a42c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2004-12-23 Mark Mitchell <mark@codesourcery.com> + PR c++/17595 + * parser.c (cp_parser_error): Issue better messages about + #pragma in locations where it is not permitted. + PR c++/17413 * pt.c (check_instantiated_args): Remove bogus SFINAE code. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 5654f11..2a72a5e 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -1784,6 +1784,12 @@ cp_parser_error (cp_parser* parser, const char* message) /* This diagnostic makes more sense if it is tagged to the line of the token we just peeked at. */ cp_lexer_set_source_position_from_token (token); + if (token->type == CPP_PRAGMA) + { + error ("%<#pragma%> is not allowed here"); + cp_lexer_purge_token (parser->lexer); + return; + } c_parse_error (message, /* Because c_parser_error does not understand CPP_KEYWORD, keywords are treated like |
