shithub: mc

Download patch

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());