refactor: emit 冗余标志参数收敛为内部推导

This commit is contained in:
2026-10-12 16:30:51 +00:00
parent 2d5cba7e98
commit 3d7e8edd75
22 changed files with 151 additions and 187 deletions
+8 -13
View File
@@ -30,7 +30,7 @@ impl Emitter {
None => "*default*".to_string(),
};
let reg = ctx.alloc_reg();
let _ = ctx.declare_initialized(name.as_str(), reg, VariableDeclarationKind::Var, false);
let _ = ctx.declare_initialized(name.as_str(), reg, VariableDeclarationKind::Var);
}
}
@@ -52,7 +52,7 @@ impl Emitter {
continue;
};
let reg = ctx.alloc_reg();
let _ = ctx.declare_initialized(identifier.name.as_str(), reg, VariableDeclarationKind::Var, false);
let _ = ctx.declare_initialized(identifier.name.as_str(), reg, VariableDeclarationKind::Var);
}
}
@@ -66,7 +66,7 @@ impl Emitter {
let _ = ctx.lookup_or_builtin(name);
} else {
let reg = ctx.alloc_reg();
let _ = ctx.declare_initialized(name, reg, VariableDeclarationKind::Var, false);
let _ = ctx.declare_initialized(name, reg, VariableDeclarationKind::Var);
}
}
@@ -233,7 +233,7 @@ impl Emitter {
continue;
}
let reg = ctx.alloc_reg();
let _ = ctx.declare_initialized(identifier.name.as_str(), reg, VariableDeclarationKind::Let, false);
let _ = ctx.declare_initialized(identifier.name.as_str(), reg, VariableDeclarationKind::Let);
}
Statement::BlockStatement(bs) => {
ctx.push_scope();
@@ -336,7 +336,7 @@ impl Emitter {
Statement::ClassDeclaration(cd) => {
if let Some(id) = &cd.id {
let reg = ctx.alloc_reg();
let _ = ctx.declare_predeclared(id.name.as_str(), reg, VariableDeclarationKind::Let, false);
let _ = ctx.declare_predeclared(id.name.as_str(), reg, VariableDeclarationKind::Let);
}
}
Statement::ExportNamedDeclaration(exp) => {
@@ -354,12 +354,8 @@ impl Emitter {
Declaration::ClassDeclaration(cd) => {
if let Some(id) = &cd.id {
let reg = ctx.alloc_reg();
let _ = ctx.declare_predeclared(
id.name.as_str(),
reg,
VariableDeclarationKind::Let,
false,
);
let _ =
ctx.declare_predeclared(id.name.as_str(), reg, VariableDeclarationKind::Let);
}
}
_ => {}
@@ -372,7 +368,7 @@ impl Emitter {
if let ExportDefaultDeclarationKind::ClassDeclaration(cd) = &exp.declaration {
if let Some(id) = &cd.id {
let reg = ctx.alloc_reg();
let _ = ctx.declare_predeclared(id.name.as_str(), reg, VariableDeclarationKind::Let, false);
let _ = ctx.declare_predeclared(id.name.as_str(), reg, VariableDeclarationKind::Let);
}
}
}
@@ -397,7 +393,6 @@ impl Emitter {
} else {
VariableDeclarationKind::Let
},
is_const,
);
// 块级遮蔽绑定:名字在捕获集且最内层为块作用域时,追加新 cell
// 索引并发未初始化 MAKE_CELL(TDZ 占位)。声明点与闭包捕获据