diff options
author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-12-29 14:10:06 +0100 |
---|---|---|
committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-12-29 14:12:43 +0100 |
commit | fa232154d6717107d2941498103f95e1e3ee4252 (patch) | |
tree | 1320ebe1aa4516673f858b7ee3f9a0562672f290 | |
parent | aef334a2ccad268c5511590356372393d37931d8 (diff) | |
download | sparse-fa232154d6717107d2941498103f95e1e3ee4252.tar.gz |
explain cause of 'incorrect type in conditional'
A conditional only make sense on a scalar type. If not, an
error is issued but the message doesn't explain the cause.
Fix this by adding the cause to the error message.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r-- | evaluate.c | 2 | ||||
-rw-r--r-- | validation/bad-type-twice0.c | 2 | ||||
-rw-r--r-- | validation/conditional-type.c | 16 |
3 files changed, 10 insertions, 10 deletions
@@ -910,7 +910,7 @@ static struct symbol *evaluate_conditional(struct expression *expr, int iterator if (Waddress) warning(expr->pos, "the address of %s will always evaluate as true", "an array"); } else if (!is_scalar_type(ctype)) { - sparse_error(expr->pos, "incorrect type in conditional"); + sparse_error(expr->pos, "incorrect type in conditional (non-scalar type)"); info(expr->pos, " got %s", show_typename(ctype)); return NULL; } diff --git a/validation/bad-type-twice0.c b/validation/bad-type-twice0.c index 7a9073c5..5d107a62 100644 --- a/validation/bad-type-twice0.c +++ b/validation/bad-type-twice0.c @@ -7,7 +7,7 @@ static int foo(a) * check-name: bad-type-twice0 * * check-error-start -bad-type-twice0.c:3:16: error: incorrect type in conditional +bad-type-twice0.c:3:16: error: incorrect type in conditional (non-scalar type) bad-type-twice0.c:3:16: got incomplete type a * check-error-end */ diff --git a/validation/conditional-type.c b/validation/conditional-type.c index a14c05ec..91267212 100644 --- a/validation/conditional-type.c +++ b/validation/conditional-type.c @@ -79,21 +79,21 @@ static int good_if_ptr(void *ptr) * check-name: conditional-type * * check-error-start -conditional-type.c:18:18: error: incorrect type in conditional +conditional-type.c:18:18: error: incorrect type in conditional (non-scalar type) conditional-type.c:18:18: got void -conditional-type.c:19:13: error: incorrect type in conditional +conditional-type.c:19:13: error: incorrect type in conditional (non-scalar type) conditional-type.c:19:13: got struct state s -conditional-type.c:24:18: error: incorrect type in conditional +conditional-type.c:24:18: error: incorrect type in conditional (non-scalar type) conditional-type.c:24:18: got void -conditional-type.c:29:21: error: incorrect type in conditional +conditional-type.c:29:21: error: incorrect type in conditional (non-scalar type) conditional-type.c:29:21: got void -conditional-type.c:30:16: error: incorrect type in conditional +conditional-type.c:30:16: error: incorrect type in conditional (non-scalar type) conditional-type.c:30:16: got struct state s -conditional-type.c:34:21: error: incorrect type in conditional +conditional-type.c:34:21: error: incorrect type in conditional (non-scalar type) conditional-type.c:34:21: got void -conditional-type.c:36:20: error: incorrect type in conditional +conditional-type.c:36:20: error: incorrect type in conditional (non-scalar type) conditional-type.c:36:20: got void -conditional-type.c:40:21: error: incorrect type in conditional +conditional-type.c:40:21: error: incorrect type in conditional (non-scalar type) conditional-type.c:40:21: got void * check-error-end */ |