From 584bf4cd77d422d7f057c9ed167f824955a3c311 Mon Sep 17 00:00:00 2001 From: Luc Van Oostenryck Date: Sat, 11 Jul 2020 15:42:57 +0200 Subject: warn on empty assignments Currently sparse accepts an empty assignment like: a = ; Make this an error. Signed-off-by: Luc Van Oostenryck --- expression.c | 6 +++++- validation/bad-assignment.c | 1 + validation/empty-assign.c | 1 - 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/expression.c b/expression.c index 1160cd9c..ecbdd18e 100644 --- a/expression.c +++ b/expression.c @@ -937,10 +937,14 @@ struct token *assignment_expression(struct token *token, struct expression **tre for (i = 0; i < ARRAY_SIZE(assignments); i++) if (assignments[i] == op) { struct expression * expr = alloc_expression(token->pos, EXPR_ASSIGNMENT); + struct token *next = token->next; expr->left = *tree; expr->op = op; *tree = expr; - return assignment_expression(token->next, &expr->right); + token = assignment_expression(next, &expr->right); + if (token == next) + expression_error(expr, "expression expected before '%s'", show_token(token)); + return token; } } return token; diff --git a/validation/bad-assignment.c b/validation/bad-assignment.c index 71938db7..959712be 100644 --- a/validation/bad-assignment.c +++ b/validation/bad-assignment.c @@ -8,6 +8,7 @@ static int foo(int a) * check-name: bad assignment * * check-error-start +bad-assignment.c:3:11: error: expression expected before '\' bad-assignment.c:3:13: error: Expected ; at end of statement bad-assignment.c:3:13: error: got \ * check-error-end diff --git a/validation/empty-assign.c b/validation/empty-assign.c index 48ac626d..d1c3884f 100644 --- a/validation/empty-assign.c +++ b/validation/empty-assign.c @@ -6,7 +6,6 @@ static int foo(int a) /* * check-name: empty-assign - * check-known-to-fail * * check-error-start empty-assign.c:3:11: error: expression expected before ';' -- cgit 1.2.3-korg