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. Signed-off-by: Pavel Roskin <proski@xxxxxxx> --- evaluate.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/evaluate.c b/evaluate.c index 80ac7d1..f68b55e 100644 --- a/evaluate.c +++ b/evaluate.c @@ -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; } - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html