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 <[EMAIL PROTECTED]>
---
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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html