[PATCH] Improve error message if using a member of an incomplete struct or union

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux