ref: 269843206145fb19962dded89481391e937ee331
parent: 6b0e53468c9078efde8c5daaede91ea70bbd6e1d
author: Ori Bernstein <[email protected]>
date: Sat Jun 16 18:44:59 EDT 2012
Merge decls with the exported types.
--- a/parse/infer.c
+++ b/parse/infer.c
@@ -406,7 +406,7 @@
static void inferstab(Stab *s)
{
void **k;
- int n, i;
+ size_t n, i;
Type *t;
k = htkeys(s->ty, &n);
@@ -419,6 +419,7 @@
static void infernode(Node *n, Type *ret, int *sawret)
{
size_t i;
+ Sym *s;
if (!n)
return;
@@ -432,6 +433,9 @@
break;
case Ndecl:
inferdecl(n);
+ s = getdcl(file->file.exports, n->decl.sym->name);
+ if (s)
+ unify(n, type(n), s->type);
break;
case Nblock:
setsuper(n->block.scope, curstab());