- fixes: improved POINTER TO IDENT mechanism, prevent core dump when

definition module not found, corrected typo.
- changed mechanism for variables that have their address given.
- added option for symmetric integer ranges
This commit is contained in:
ceriel
1987-06-29 12:46:00 +00:00
parent ab2cea7a0f
commit 08216f3d5d
11 changed files with 57 additions and 21 deletions

View File

@@ -117,21 +117,31 @@ chk_forw(pdf)
while (df = *pdf) {
if (df->df_kind == D_FORWTYPE) {
register struct def *df1 = df;
register struct node *nd = df->df_forw_node;
*pdf = df->df_nextinscope;
RemoveFromIdList(df);
df = lookfor(df->df_forw_node, CurrVis, 1);
df = lookfor(nd, CurrVis, 1);
if (! df->df_kind & (D_ERROR|D_FTYPE|D_TYPE)) {
node_error(df1->df_forw_node, "\"%s\" is not a type", df1->df_idf->id_text);
node_error(nd, "\"%s\" is not a type", df1->df_idf->id_text);
}
while (nd) {
nd->nd_type->next = df->df_type;
nd = nd->nd_right;
}
df1->df_forw_type->next = df->df_type;
FreeNode(df1->df_forw_node);
free_def(df1);
continue;
}
else if (df->df_kind == D_FTYPE) {
register struct node *nd = df->df_forw_node;
df->df_kind = D_TYPE;
df->df_forw_type->next = df->df_type;
while (nd) {
nd->nd_type->next = df->df_type;
nd = nd->nd_right;
}
FreeNode(df->df_forw_node);
}
else if (df->df_kind & (D_FORWARD|D_FORWMODULE)) {
/* These definitions must be found in