diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-05-27 16:33:51 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-05-27 16:33:51 -0400 |
| commit | 4930c22acac2cebf7e51662fb50e7b36b4c7274e (patch) | |
| tree | 85c1fadb3ee086f266720f7871011c2003103557 | |
| parent | 937a559e7f1e83391769f3c367ea902df540f4ab (diff) | |
Don't capture modules in closures (they're not real values)
| -rw-r--r-- | compile.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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); } |
