diff --git a/crates/oxide_emit/src/stmt/declaration/var.rs b/crates/oxide_emit/src/stmt/declaration/var.rs index 74136f2..b901966 100644 --- a/crates/oxide_emit/src/stmt/declaration/var.rs +++ b/crates/oxide_emit/src/stmt/declaration/var.rs @@ -24,9 +24,11 @@ impl Emitter { let val_reg = self.emit_expression(init, ctx)?; self.emit_binding_pattern(&d.id, val_reg, decl.kind, is_const, ctx)?; if let BindingPattern::BindingIdentifier(bi) = &d.id { - if matches!(*init, Expression::ArrowFunctionExpression(_)) { + if matches!(*init, Expression::ArrowFunctionExpression(_) | Expression::FunctionExpression(_)) { if let Some(sub_mod) = ctx.nested.last_mut() { - sub_mod.function_name = Some(bi.name.to_string()); + if sub_mod.function_name.is_none() { + sub_mod.function_name = Some(bi.name.to_string()); + } } } } diff --git a/crates/oxide_test262/src/main.rs b/crates/oxide_test262/src/main.rs index 106326c..28c192b 100644 --- a/crates/oxide_test262/src/main.rs +++ b/crates/oxide_test262/src/main.rs @@ -246,17 +246,6 @@ fn is_blacklisted_harness(name: &str) -> bool { } /// 生成 `Test262Error` 的 JS prelude(供测试脚本 `assert` 失败时抛出)。 -fn test262_error_prelude() -> &'static str { - r#" -function Test262Error(message) { - this.message = message; - this.name = "Test262Error"; -} -Test262Error.prototype = new Error(); -Test262Error.prototype.constructor = Test262Error; -"# -} - /// 向拼接源码追加一段带注释标记的 harness 代码块。 fn append_source_chunk(out: &mut String, name: &str, source: &str) { out.push_str("\n// ---- test262 harness: "); @@ -282,7 +271,8 @@ fn build_harness_source(meta: &TestMeta, harness: &HarnessSources) -> Result