Improve error message for unknown struct members
We now customize the error message to correctly refer to the '.' or
'->' operator , whichever one is actually being used when the error
occurs.
diff --git a/libacc/acc.cpp b/libacc/acc.cpp
index 7e6dde6..c52b992 100644
--- a/libacc/acc.cpp
+++ b/libacc/acc.cpp
@@ -4527,7 +4527,7 @@
pGen->forceR0RVal();
Type* pStruct = pGen->getR0Type();
if (pStruct->tag == TY_STRUCT) {
- doStructMember(pStruct);
+ doStructMember(pStruct, true);
} else {
error("expected a struct value to the left of '.'");
}
@@ -4536,7 +4536,7 @@
Type* pPtr = pGen->getR0Type();
if (pPtr->tag == TY_POINTER && pPtr->pHead->tag == TY_STRUCT) {
pGen->loadR0FromR0();
- doStructMember(pPtr->pHead);
+ doStructMember(pPtr->pHead, false);
} else {
error("Expected a pointer to a struct to the left of '->'");
}
@@ -4602,7 +4602,7 @@
}
}
- void doStructMember(Type* pStruct) {
+ void doStructMember(Type* pStruct, bool isDot) {
Type* pStructElement = lookupStructMember(pStruct, tok);
if (pStructElement) {
next();
@@ -4610,7 +4610,8 @@
} else {
String buf;
decodeToken(buf, tok, true);
- error("Expected a struct member to the right of '.', got %s", buf.getUnwrapped());
+ error("Expected a struct member to the right of '%s', got %s",
+ isDot ? "." : "->", buf.getUnwrapped());
}
}