From 1ebf2c311526bfd016172b6ef3fe0b234910f1d9 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Fri, 7 Aug 2026 19:39:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20String()=20=E5=AF=B9=E8=B1=A1=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=B5=B0=20ToString=20=E5=AE=8C=E6=95=B4=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=EF=BC=88=E6=95=B0=E7=BB=84=E2=86=92join=20=E7=AD=89?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_builtins/src/string.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/oxide_builtins/src/string.rs b/crates/oxide_builtins/src/string.rs index 860a401f..b3f6c415 100644 --- a/crates/oxide_builtins/src/string.rs +++ b/crates/oxide_builtins/src/string.rs @@ -58,7 +58,11 @@ pub fn string_value_of(vm: &mut H, args: &[u8]) -> NativeResult { /// JS `String()` 构造逻辑:把参数转成字符串;new 语义返回 `[[StringData]]` 包装对象。 pub fn string_constructor(vm: &mut H, args: &[u8]) -> NativeResult { let s = if args.len() > 1 { - oxide_runtime_api::to_string(vm.reg(args[1])) + // 对象参数须经 ToPrimitive/ToString 完整转换(数组 → join,对象 → toString)。 + match oxide_runtime_api::to_string_full(vm.reg(args[1]), vm) { + Ok(s) => s, + Err(e) => return NativeResult::Err(crate::error::create_error(vm, &e)), + } } else { String::new() };