if (((Flags & SC_AUTO) || (Flags & SC_STATIC)) && (Flags & SC_EXTERN) == 0) {
if ((Flags & SC_DEF) && !(Flags & SC_REF)) {
if (Flags & SC_PARAM) {
- Warning (WARN_UNUSED_PARM, Entry->Name);
+ Warning ("Parameter `%s' is never used", Entry->Name);
} else {
- Warning (WARN_UNUSED_ITEM, Entry->Name);
+ Warning ("`%s' is defined but never used", Entry->Name);
}
}
}
if (Flags & SC_LABEL) {
if ((Flags & SC_DEF) == 0) {
/* Undefined label */
- Error (ERR_UNDEFINED_LABEL, Entry->Name);
+ Error ("Undefined label: `%s'", Entry->Name);
} else if ((Flags & SC_REF) == 0) {
/* Defined but not used */
- Warning (WARN_UNUSED_ITEM, Entry->Name);
+ Warning ("`%s' is defined but never used", Entry->Name);
}
}
/* We do have an entry. This may be a forward, so check it. */
if ((Entry->Flags & SC_STRUCT) == 0) {
/* Existing symbol is not a struct */
- Error (ERR_SYMBOL_KIND);
+ Error ("Symbol `%s' is already different kind", Name);
} else if (Size > 0 && Entry->V.S.Size > 0) {
/* Both structs are definitions. */
- Error (ERR_MULTIPLE_DEFINITION, Name);
+ Error ("Multiple definition for `%s'", Name);
} else {
/* Define the struct size if it is given */
if (Size > 0) {
SymEntry* Entry = FindSymInTable (SymTab, Name, HashStr (Name));
if (Entry) {
if (Entry->Flags != SC_ENUM) {
- Error (ERR_SYMBOL_KIND);
+ Error ("Symbol `%s' is already different kind", Name);
} else {
- Error (ERR_MULTIPLE_DEFINITION, Name);
+ Error ("Multiple definition for `%s'", Name);
}
return Entry;
}
if ((Entry->Flags & SC_DEF) != 0 && (Flags & SC_DEF) != 0) {
/* Trying to define the label more than once */
- Error (ERR_MULTIPLE_DEFINITION, Name);
+ Error ("Label `%s' is defined more than once", Name);
}
Entry->Flags |= Flags;
if (Entry) {
/* We have a symbol with this name already */
- Error (ERR_MULTIPLE_DEFINITION, Name);
+ Error ("Multiple definition for `%s'", Name);
} else {
/* We have a symbol with this name already */
if (Entry->Flags & SC_TYPE) {
- Error (ERR_MULTIPLE_DEFINITION, Name);
+ Error ("Multiple definition for `%s'", Name);
return Entry;
}
if ((Size != 0 && ESize != 0) ||
TypeCmp (Type+DECODE_SIZE+1, EType+DECODE_SIZE+1) < TC_EQUAL) {
/* Types not identical: Conflicting types */
- Error (ERR_CONFLICTING_TYPES, Name);
+ Error ("Conflicting types for `%s'", Name);
+ return Entry;
} else {
/* Check if we have a size in the existing definition */
if (ESize == 0) {
} else {
/* New type must be identical */
if (TypeCmp (EType, Type) < TC_EQUAL) {
- Error (ERR_CONFLICTING_TYPES, Name);
+ Error ("Conflicting types for `%s'", Name);
+ return Entry;
}
/* In case of a function, use the new type descriptor, since it
* an actual function definition follows.
*/
if (IsTypeFunc (Type)) {
- CopyEncode (Type+1, EType+1);
+ CopyEncode (Type+1, EType+1);
}
}
if (Entry) {
Entry->Flags |= SC_ZEROPAGE;
} else {
- Error (ERR_UNDEFINED_SYMBOL, Name);
+ Error ("Undefined symbol: `%s'", Name);
}
}