ref: 40d35cd1593d7da63ddfef94dad1ca3fcd68ff12
parent: c9ffabb3d4425533371659bed8bbda68712122e7
author: Ori Bernstein <[email protected]>
date: Thu Dec 12 15:40:49 EST 2013
Update all names in a namespace. We forgot to write out 'std.' when we wrote out the type. This lead to a mismatched type name when resolving.
--- a/parse/stab.c
+++ b/parse/stab.c
@@ -244,6 +244,7 @@
{
void **k;
size_t i, nk;
+ Tydefn *td;
if (st->name)
die("Stab %s already has namespace; Can't set to %s", namestr(st->name), name);
@@ -255,6 +256,11 @@
k = htkeys(st->ty, &nk);
for (i = 0; i < nk; i++)
setns(k[i], name);
+ for (i = 0; i < nk; i++) {
+ td = htget(st->ty, k[i]);
+ if (td->type && td->type->type == Tyname)
+ setns(td->type->name, name);
+ }
free(k);
k = htkeys(st->ns, &nk);
for (i = 0; i < nk; i++)