ref: 9c1dd3355d31004cc2875f1ed055372e9b8b6d50
parent: a2c579cf237bd9b76acda6862a5c52976bbbc66c
author: Ori Bernstein <[email protected]>
date: Fri Apr 5 16:41:24 EDT 2013
Don't double-name types in usefiles.
--- a/parse/use.c
+++ b/parse/use.c
@@ -40,7 +40,6 @@
Stab *s;
Node *dcl;
Type *t;
- Node *n;
int c;
if (fgetc(f) != 'U')
@@ -70,9 +69,9 @@
putdcl(s, dcl);
break;
case 'T':
- n = mkname(-1, rdstr(f));
t = tyunpickle(f);
- puttype(s, n, t);
+ assert(t->type == Tyname || t->type == Tygeneric);
+ puttype(s, t->name, t);
break;
case EOF:
break;
@@ -113,7 +112,7 @@
/* Usefile format:
* U<pkgname>
- * T<typename><pickled-type>
+ * T<pickled-type>
* D<picled-decl>
* G<pickled-decl><pickled-initializer>
* Z
@@ -136,8 +135,8 @@
k = htkeys(st->ty, &n);
for (i = 0; i < n; i++) {
t = gettype(st, k[i]);
+ assert(t->type == Tyname || t->type == Tygeneric);
wrbyte(f, 'T');
- wrstr(f, namestr(k[i]));
typickle(t, f);
}
free(k);