From 0d63048c5b05fff144a7b3b8103cedf14839cac4 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 23 Dec 2004 22:07:01 +0000 Subject: [PATCH] re PR c++/17595 (Unfriendly error message/rejects legal #pragmas in the middle of a parameter list) PR c++/17595 * parser.c (cp_parser_error): Issue better messages about #pragma in locations where it is not permitted. From-SVN: r92572 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/parser.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 04ec9463dd95..cf9a42c9f8a8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2004-12-23 Mark Mitchell + 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 5654f11dcd45..2a72a5ed3352 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 -- 2.43.5