mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-25 02:52:06 +00:00
better type mismatch error reporting
This commit is contained in:
parent
5fac3e6f3a
commit
bfaa07c726
1 changed files with 12 additions and 12 deletions
|
@ -248,6 +248,15 @@ add_relocs (qfo_t *qfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
linker_type_mismatch (qfo_def_t *def, qfo_def_t *d)
|
||||||
|
{
|
||||||
|
def_error (def, "type mismatch for `%s' `%s'",
|
||||||
|
TYPE_STRING (def->name),
|
||||||
|
TYPE_STRING (def->full_type));
|
||||||
|
def_error (d, "previous definition `%s'", TYPE_STRING (d->full_type));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
process_def (qfo_def_t *def)
|
process_def (qfo_def_t *def)
|
||||||
{
|
{
|
||||||
|
@ -260,10 +269,7 @@ process_def (qfo_def_t *def)
|
||||||
if ((_d = Hash_Find (defined_defs, STRING (def->name)))) {
|
if ((_d = Hash_Find (defined_defs, STRING (def->name)))) {
|
||||||
d = deref_def (_d, &global_defs);
|
d = deref_def (_d, &global_defs);
|
||||||
if (d->full_type != def->full_type) {
|
if (d->full_type != def->full_type) {
|
||||||
def_error (def, "type mismatch `%s' `%s'",
|
linker_type_mismatch (def, d);
|
||||||
TYPE_STRING (def->full_type),
|
|
||||||
TYPE_STRING (d->full_type));
|
|
||||||
def_error (d, "previous definition");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
def->ofs = d->ofs;
|
def->ofs = d->ofs;
|
||||||
|
@ -279,10 +285,7 @@ process_def (qfo_def_t *def)
|
||||||
int i, size;
|
int i, size;
|
||||||
|
|
||||||
if (d->full_type != def->full_type) {
|
if (d->full_type != def->full_type) {
|
||||||
def_error (def, "type mismatch `%s' `%s'",
|
linker_type_mismatch (def, d);
|
||||||
TYPE_STRING (def->full_type),
|
|
||||||
TYPE_STRING (d->full_type));
|
|
||||||
def_error (d, "previous definition");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
d->flags &= ~QFOD_SYSTEM;
|
d->flags &= ~QFOD_SYSTEM;
|
||||||
|
@ -308,10 +311,7 @@ process_def (qfo_def_t *def)
|
||||||
Hash_Add (defined_defs, _d);
|
Hash_Add (defined_defs, _d);
|
||||||
d = deref_def (_d, &global_defs);
|
d = deref_def (_d, &global_defs);
|
||||||
if (d->full_type != def->full_type) {
|
if (d->full_type != def->full_type) {
|
||||||
def_error (def, "type mismatch `%s' `%s'",
|
linker_type_mismatch (def, d);
|
||||||
TYPE_STRING (def->full_type),
|
|
||||||
TYPE_STRING (d->full_type));
|
|
||||||
def_error (d, "previous definition");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
d->ofs = def->ofs;
|
d->ofs = def->ofs;
|
||||||
|
|
Loading…
Reference in a new issue