From c0ea2d3eb154d0000c32dd2a1f2afb0cecd52535 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Fri, 7 Aug 2026 12:22:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=87=BD=E6=95=B0=20name=20=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E4=B8=8E=20harness=20=E9=87=8D=E5=A4=8D=20Test262Erro?= =?UTF-8?q?r=20=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_emit/src/stmt/declaration/var.rs | 6 ++++-- crates/oxide_test262/src/main.rs | 14 ++------------ crates/oxide_vm/src/dispatch/call.rs | 6 ++++++ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/oxide_emit/src/stmt/declaration/var.rs b/crates/oxide_emit/src/stmt/declaration/var.rs index 74136f28..b901966d 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 106326c3..28c192b4 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