parser.c (cp_parser_non_integral_constant_expression): Build error message with CONCAT rather than using "%s".

* parser.c (cp_parser_non_integral_constant_expression): Build error
	message with CONCAT rather than using "%s".
	(cp_parser_primary_expression): Fix quotation.
	(cp_parser_postfix_expression): Likewise.
	(cp_parser_postfix_dot_deref_expression): Likewise.
	(cp_parser_unary_expression): Likewise.
	(cp_parser_new_expression): Likewise.
	(cp_parser_delete_expression): Likewise.

From-SVN: r134128
This commit is contained in:
Volker Reichelt 2008-04-09 06:40:38 +00:00 committed by Volker Reichelt
parent 3a4833712f
commit 2a97bf746e
2 changed files with 25 additions and 11 deletions

View File

@ -1,5 +1,14 @@
2008-04-09 Volker Reichelt <v.reichelt@netcologne.de>
* parser.c (cp_parser_non_integral_constant_expression): Build error
message with CONCAT rather than using "%s".
(cp_parser_primary_expression): Fix quotation.
(cp_parser_postfix_expression): Likewise.
(cp_parser_postfix_dot_deref_expression): Likewise.
(cp_parser_unary_expression): Likewise.
(cp_parser_new_expression): Likewise.
(cp_parser_delete_expression): Likewise.
* parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
as `)', not as `('. Fix quotation.
(cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.

View File

@ -2264,7 +2264,13 @@ cp_parser_non_integral_constant_expression (cp_parser *parser,
{
if (!parser->allow_non_integral_constant_expression_p)
{
error ("%s cannot appear in a constant-expression", thing);
/* Don't use `%s' to print THING, because quotations (`%<', `%>')
in the message need to be interpreted. */
char *message = concat (thing,
" cannot appear in a constant-expression",
NULL);
error (message);
free (message);
return true;
}
}
@ -3230,8 +3236,7 @@ cp_parser_primary_expression (cp_parser *parser,
return error_mark_node;
}
/* Pointers cannot appear in constant-expressions. */
if (cp_parser_non_integral_constant_expression (parser,
"`this'"))
if (cp_parser_non_integral_constant_expression (parser, "%<this%>"))
return error_mark_node;
return finish_this_expr ();
@ -3276,7 +3281,7 @@ cp_parser_primary_expression (cp_parser *parser,
/* Using `va_arg' in a constant-expression is not
allowed. */
if (cp_parser_non_integral_constant_expression (parser,
"`va_arg'"))
"%<va_arg%>"))
return error_mark_node;
return build_x_va_arg (expression, type);
}
@ -4399,7 +4404,7 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
parser->type_definition_forbidden_message = saved_message;
/* `typeid' may not appear in an integral constant expression. */
if (cp_parser_non_integral_constant_expression(parser,
"`typeid' operator"))
"%<typeid%> operator"))
return error_mark_node;
}
break;
@ -4955,7 +4960,7 @@ cp_parser_postfix_dot_deref_expression (cp_parser *parser,
constant-expressions. */
if (!for_offsetof
&& (cp_parser_non_integral_constant_expression
(parser, token_type == CPP_DEREF ? "'->'" : "`.'")))
(parser, token_type == CPP_DEREF ? "%<->%>" : "%<.%>")))
postfix_expression = error_mark_node;
return postfix_expression;
@ -5368,13 +5373,13 @@ cp_parser_unary_expression (cp_parser *parser, bool address_p, bool cast_p)
switch (unary_operator)
{
case INDIRECT_REF:
non_constant_p = "`*'";
non_constant_p = "%<*%>";
expression = build_x_indirect_ref (cast_expression, "unary *",
tf_warning_or_error);
break;
case ADDR_EXPR:
non_constant_p = "`&'";
non_constant_p = "%<&%>";
/* Fall through. */
case BIT_NOT_EXPR:
expression = build_x_unary_op (unary_operator, cast_expression,
@ -5384,7 +5389,7 @@ cp_parser_unary_expression (cp_parser *parser, bool address_p, bool cast_p)
case PREINCREMENT_EXPR:
case PREDECREMENT_EXPR:
non_constant_p = (unary_operator == PREINCREMENT_EXPR
? "`++'" : "`--'");
? "%<++%>" : "%<--%>");
/* Fall through. */
case UNARY_PLUS_EXPR:
case NEGATE_EXPR:
@ -5505,7 +5510,7 @@ cp_parser_new_expression (cp_parser* parser)
/* A new-expression may not appear in an integral constant
expression. */
if (cp_parser_non_integral_constant_expression (parser, "`new'"))
if (cp_parser_non_integral_constant_expression (parser, "%<new%>"))
return error_mark_node;
/* Create a representation of the new-expression. */
@ -5768,7 +5773,7 @@ cp_parser_delete_expression (cp_parser* parser)
/* A delete-expression may not appear in an integral constant
expression. */
if (cp_parser_non_integral_constant_expression (parser, "`delete'"))
if (cp_parser_non_integral_constant_expression (parser, "%<delete%>"))
return error_mark_node;
return delete_sanity (expression, NULL_TREE, array_p, global_scope_p);