fix: String 替换臂收口 GetSubstitution 并补齐 $ 展开

This commit is contained in:
2026-09-22 02:04:11 +00:00
parent a12daebea6
commit 49c10ba20a
3 changed files with 323 additions and 441 deletions
+5
View File
@@ -400,6 +400,11 @@ pub fn to_units_full<H: VmHost>(val: JsValue, host: &mut H) -> Result<Vec<u16>,
return Err(host.error_message_text("TypeError", "Cannot convert a Symbol value to a string"));
}
let prim = to_primitive(val, ToPrimitiveHint::String, host)?;
// ToPrimitive 的基元结果可为 Symbol(toString/valueOf 返回 Symbol):
// ToString(Symbol) 按规范须抛 TypeError。
if prim.is_symbol() {
return Err(host.error_message_text("TypeError", "Cannot convert a Symbol value to a string"));
}
if prim.is_string() {
return Ok(host.string_units(prim).into_owned());
}