Skip to contentSkip to conversation

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

PATCH Applied Pavel Roskin 2 participants 2 messages Jun 5, 2007 – Jun 9, 2007 Sparse checker

lore
Share & tools
lore
#0 lore raw

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
index 80ac7d1..f68b55e 100644
@@ -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;
 	}
 
#1 lore raw
Quoted 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