refactor: 移除 lexical 预声明函数的死参数 global_lexical

This commit is contained in:
2026-09-28 19:12:13 +00:00
parent 55133c0057
commit 2b565a4996
7 changed files with 18 additions and 28 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ impl Emitter {
// 命中已存在的函数绑定自然报重复声明错,不被静默覆盖破坏 TDZ。
self.predeclare_block_function_declarations(&block.body, ctx, false);
// 块 lexical 声明是局部绑定:不做受限全局名检查(重复声明错在 emit 期报)。
let _ = self.predeclare_lexical_declarations(&block.body, ctx, false);
let _ = self.predeclare_lexical_declarations(&block.body, ctx);
// 块级函数声明的块入口初始化:直接子(含标签直接子体)闭包物化入预
// 声明块槽,声明语句前读命中函数对象(sloppy 与 strict 同形);声明
// 点不再重编闭包,只处理外层 var 写回(见 emit_function_declaration)。
@@ -37,7 +37,7 @@ impl Emitter {
// 函数预声明先于 lexical:同名 let 命中已有函数绑定报重复声明错。
self.predeclare_block_function_declarations(&ts.block.body, ctx, false);
// try 块 lexical 声明是局部绑定:不做受限全局名检查(重复声明错在 emit 期报)。
let _ = self.predeclare_lexical_declarations(&ts.block.body, ctx, false);
let _ = self.predeclare_lexical_declarations(&ts.block.body, ctx);
// 块级函数声明的块入口初始化:声明点前读命中函数对象,声明点复用入口槽。
ctx.block_fn_entry_mats.push(HashMap::new());
for s in &ts.block.body {
@@ -85,7 +85,7 @@ impl Emitter {
// catch 块函数预声明先于 lexical,块入口物化与 try/普通块同口径。
self.predeclare_block_function_declarations(&catch.body.body, ctx, false);
// catch 块 lexical 声明同为局部绑定:不做受限全局名检查。
let _ = self.predeclare_lexical_declarations(&catch.body.body, ctx, false);
let _ = self.predeclare_lexical_declarations(&catch.body.body, ctx);
ctx.block_fn_entry_mats.push(HashMap::new());
for s in &catch.body.body {
self.emit_block_fn_entry_init_stmt(s, ctx)?;
@@ -123,7 +123,7 @@ impl Emitter {
// finally 块函数预声明先于 lexical,块入口物化与 try/普通块同口径。
self.predeclare_block_function_declarations(&ts.finalizer.as_ref().unwrap().body, ctx, false);
// finally 块 lexical 声明同为局部绑定:不做受限全局名检查。
let _ = self.predeclare_lexical_declarations(&ts.finalizer.as_ref().unwrap().body, ctx, false);
let _ = self.predeclare_lexical_declarations(&ts.finalizer.as_ref().unwrap().body, ctx);
ctx.block_fn_entry_mats.push(HashMap::new());
for s in &ts.finalizer.as_ref().unwrap().body {
self.emit_block_fn_entry_init_stmt(s, ctx)?;
+1 -1
View File
@@ -34,7 +34,7 @@ impl Emitter {
ctx.push_scope();
for case in cases.iter() {
self.predeclare_block_function_declarations(&case.consequent, ctx, false);
self.predeclare_lexical_declarations(&case.consequent, ctx, false)?;
self.predeclare_lexical_declarations(&case.consequent, ctx)?;
}
// case 内函数声明的块入口初始化:同名重复声明按源序物化,末次声明成为
// 入口值;声明点复用块槽写回外层 var(见 emit_function_declaration)。