Improve error message if using a member of an incomplete struct or union
PATCH 1/1 Improve error message if using a member of an incomplete struct or union
sparse should distinguish two cases. One is when the structure or union is declared and the member is not found. Another is when the structure or union is not yet declared. In the later case, the message should indicate that the type is incomplete, rather than complain that the particular member is not found.
Mention the incomplete type like gcc does, but provide the member name too, it may be useful.
---
evaluate.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)
evaluate.c +7 -2
@@ -1723,8 +1723,13 @@ static struct symbol *evaluate_member_dereference(struct expression *expr) name = ctype->ident->name; namelen = ctype->ident->len; } -expression_error (expr,"no member '%s' in %s %.*s" , -show_ident (ident), type, namelen, name); +if (ctype->symbol_list) +expression_error (expr,"no member '%s' in %s %.*s" , +show_ident (ident), type, namelen, name); +else +expression_error (expr,"using member '%s' in " +"incomplete %s %.*s" ,show_ident (ident), + type, namelen, name);return NULL ; }
Josh Triplett
AppliedQuoted 8 lines · Pavel Roskin
sparse should distinguish two cases. One is when the structure or union is declared and the member is not found. Another is when the structure or union is not yet declared. In the later case, the message should indicate that the type is incomplete, rather than complain that the particular member is not found.
Mention the incomplete type like gcc does, but provide the member name too, it may be useful.
Applied; thanks.
- Josh Triplett