From dc624eed08cbd4a4759eb7c5212a744e8df84e02 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Tue, 25 Dec 2007 13:41:01 +0000 Subject: [PATCH] Warn, when the initialisation or step expression of a for-statement has no effect. [r18816] --- parser.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/parser.c b/parser.c index fe527a4..4af9af6 100644 --- a/parser.c +++ b/parser.c @@ -5461,7 +5461,11 @@ static statement_t *parse_for(void) if(is_declaration_specifier(&token, false)) { parse_declaration(record_declaration); } else { - statement->fors.initialisation = parse_expression(); + expression_t *const init = parse_expression(); + statement->fors.initialisation = init; + if (warning.unused_value && !expression_has_effect(init)) { + warningf(init->base.source_position, "initialisation of 'for'-statement has no effect"); + } expect(';'); } } else { @@ -5473,7 +5477,11 @@ static statement_t *parse_for(void) } expect(';'); if(token.type != ')') { - statement->fors.step = parse_expression(); + expression_t *const step = parse_expression(); + statement->fors.step = step; + if (warning.unused_value && !expression_has_effect(step)) { + warningf(step->base.source_position, "step of 'for'-statement has no effect"); + } } expect(')'); statement->fors.body = parse_loop_body(statement); -- 2.20.1