From: Christoph Mallon Date: Sat, 17 Nov 2007 17:20:21 +0000 (+0000) Subject: Unary * handles arrays, too. Improve the error message, when the argument is neither... X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=e9b50bf5bd1addc58c2f8cb12abcff139529fef4;p=cparser Unary * handles arrays, too. Improve the error message, when the argument is neither an array nor a pointer. [r18450] --- diff --git a/parser.c b/parser.c index 560fa4d..ccb7789 100644 --- a/parser.c +++ b/parser.c @@ -2850,15 +2850,21 @@ static void semantic_dereference(unary_expression_t *expression) return; type_t *type = skip_typeref(orig_type); - if(type->type != TYPE_POINTER) { - /* TODO: improve error message */ - parser_print_error_prefix(); - fprintf(stderr, "operation needs a pointer type\n"); - return; - } + switch (type->type) { + case TYPE_ARRAY: + case TYPE_POINTER: { + pointer_type_t *pointer_type = (pointer_type_t*)type; + expression->expression.datatype = pointer_type->points_to; + break; + } - pointer_type_t *pointer_type = (pointer_type_t*) type; - expression->expression.datatype = pointer_type->points_to; + default: + parser_print_error_prefix(); + fputs("'Unary *' needs pointer or arrray type, but type ", stderr); + print_type_quoted(orig_type); + fputs(" given.\n", stderr); + return; + } } static void semantic_take_addr(unary_expression_t *expression)