diff options
Diffstat (limited to 'parse/stab.c')
-rw-r--r-- | parse/stab.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/parse/stab.c b/parse/stab.c index 7e1b8c0..0319d13 100644 --- a/parse/stab.c +++ b/parse/stab.c @@ -663,13 +663,17 @@ bindtype_rec(Tyenv *e, Type *t, Bitset *visited) switch (t->type) { case Typaram: tt = htget(e->tab, t); - if (tt && tt != t) + if (tt && tt != t) { tytab[t->tid] = tt; - else if (!boundtype(t)) + for (i = 0; i < t->nspec; i++) + lappend(&tt->spec, &tt->nspec, t->spec[i]); + } else if (!boundtype(t)) { htput(e->tab, t, t); - for (i = 0; i < t->nspec; i++) + } + for (i = 0; i < t->nspec; i++) { if (t->spec[i]->aux) bindtype_rec(e, t->spec[i]->aux, visited); + } break; case Tygeneric: for (i = 0; i < t->ngparam; i++) |