feat: emit 模块编译(快照式链接:依赖子模块闭包 + import/export 域)
- emit_program_module:模块顶层编译(is_global_scope=false,顶层 this undefined 由 VM 按标志绑定) - emit_module_into_ctx:预声明/闭包分析识别 export 包裹声明与 import 绑定 - 依赖收集:import/re-export/star 的 source 去重、循环检测、json/text 数据模块 - 导入绑定初始化:__moduleLinkGet 链接期检查;self-import 别名语义(export 处回写) - export 域:声明/重导出/export */export default 就地注册命名空间 - re-export 链接检查移至 prelude(先于 body 求值) - emit_module_call 参数打包连续寄存器(CALL_NATIVE 契约) - CompileCtx 增 module_ns_reg/module_dep_ns_regs/self-import 映射 - 拆分 declaration helper(export 声明复用);function/class 表达式 emitter 提升可见性
This commit is contained in:
@@ -50,7 +50,7 @@ impl Emitter {
|
||||
|
||||
/// 绑定单个标识符到槽位。`fresh_cell` 为 true 时对被捕获绑定用 MAKE_CELL_FRESH
|
||||
/// (循环每迭代绑定:无条件新建 cell,本迭代闭包捕获新 cell)。
|
||||
fn emit_bind_target(
|
||||
pub(crate) fn emit_bind_target(
|
||||
&self, name: &str, src_reg: u32, kind: VariableDeclarationKind, is_const: bool, fresh_cell: bool,
|
||||
ctx: &mut CompileCtx,
|
||||
) -> Result<(), String> {
|
||||
|
||||
Reference in New Issue
Block a user