From: Christoph Mallon Date: Sat, 13 Sep 2008 11:02:05 +0000 (+0000) Subject: Small cleanup in parse_select_expression(), print unskipped type. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=8465e2b11bd5dbf2cc51e0fcb23e0a7afd0a5e35;p=cparser Small cleanup in parse_select_expression(), print unskipped type. [r21925] --- diff --git a/parser.c b/parser.c index 315d17c..b8e8fd7 100644 --- a/parser.c +++ b/parser.c @@ -6746,24 +6746,23 @@ static expression_t *parse_select_expression(unsigned precedence, type_t *const orig_type = compound->base.type; type_t *const type = skip_typeref(orig_type); - type_t *type_left = type; + type_t *type_left; bool saw_error = false; if (is_type_pointer(type)) { if (!is_pointer) { errorf(HERE, "request for member '%Y' in something not a struct or union, but '%T'", - symbol, type_left); + symbol, orig_type); saw_error = true; } - type_left = type->pointer.points_to; - } else if (is_pointer) { - if (is_type_valid(type)) { + type_left = skip_typeref(type->pointer.points_to); + } else { + if (is_pointer && is_type_valid(type)) { errorf(HERE, "left hand side of '->' is not a pointer, but '%T'", orig_type); saw_error = true; } type_left = type; } - type_left = skip_typeref(type_left); declaration_t *entry; if (type_left->kind == TYPE_COMPOUND_STRUCT ||