fix(javascript): resolve exported callables through lexical bindings (#1351)

* fix(javascript): resolve exported callables through lexical bindings

* fix(javascript): preserve export scope and hoisted writes

* test(javascript): consolidate export binding assertions

* fix(javascript): account for skipped initializers and loop binding writes

* fix(javascript): preserve parameters copied into body variables
This commit is contained in:
You Wish authored and GitHub committed 2026-10-10 06:39:56 +08:00
1 parent 1c0cc8a675
commit a9f5dad5a8
6 files changed
+929 -96

No files matched your search

@@ -12,6 +12,7 @@ import type {
interface JavaScriptSemanticInitializer {
readonly node: t.Node;
readonly projection: readonly (string | number | null)[];
readonly entryBody?: t.BlockStatement;
}
/** Mutable binding state used only while constructing the immutable IR. */
@@ -46,6 +47,11 @@ export interface JavaScriptSemanticAnalysisState {
readonly callables: JavaScriptSemanticCallable[];
readonly callableNodesById: Map<string, t.Node>;
readonly moduleLinks: JavaScriptSemanticModuleLink[];
readonly moduleLinkBindings: WeakMap<
JavaScriptSemanticModuleLink,
JavaScriptSemanticBindingState
>;
readonly conditionalInitializers: WeakSet<t.Node>;
}
/** Return the active scope from a non-empty construction stack. */