aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-05-27 16:33:51 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-05-27 16:33:51 -0400
commit4930c22acac2cebf7e51662fb50e7b36b4c7274e (patch)
tree85c1fadb3ee086f266720f7871011c2003103557
parent937a559e7f1e83391769f3c367ea902df540f4ab (diff)
Don't capture modules in closures (they're not real values)
-rw-r--r--compile.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/compile.c b/compile.c
index 891d22c8..d67715c0 100644
--- a/compile.c
+++ b/compile.c
@@ -1544,6 +1544,8 @@ CORD compile(env_t *env, ast_t *ast)
userdata = CORD_all("new(", name, "$userdata_t");
for (int64_t i = 1; i <= Table$length(*fn_ctx.closed_vars); i++) {
struct { const char *name; binding_t *b; } *entry = Table$entry(*fn_ctx.closed_vars, i);
+ if (entry->b->type->tag == ModuleType)
+ continue;
def = CORD_all(def, compile_declaration(env, entry->b->type, entry->name), "; ");
userdata = CORD_all(userdata, ", ", entry->b->code);
}