From c257d8a5c1e84af063ecfb11638f4737244be012 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Wed, 16 Sep 2026 19:01:15 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20bigint=20=E6=B3=A8=E9=87=8A=E9=BB=91?= =?UTF-8?q?=E8=AF=9D=E6=B8=85=E6=89=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_builtins/src/bigint.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/oxide_builtins/src/bigint.rs b/crates/oxide_builtins/src/bigint.rs index 6d7be2ac..9ac68889 100644 --- a/crates/oxide_builtins/src/bigint.rs +++ b/crates/oxide_builtins/src/bigint.rs @@ -2,7 +2,7 @@ use num_bigint::BigInt; use oxide_runtime_api::{to_primitive, NativeResult, ToPrimitiveHint, VmHost}; use oxide_types::value::JsValue; -/// JS `BigInt(value)` 构造逻辑(ES2020 §20.2.1.1): +/// JS `BigInt(value)` 构造逻辑: /// - `new BigInt()` 抛 TypeError(BigInt 不可 new) /// - 无参 → `0n` /// - 其余参数先 ToPrimitive(number),Number 走 NumberToBigInt,其余走 ToBigInt。 @@ -20,7 +20,7 @@ pub fn bigint_constructor(vm: &mut H, args: &[u8]) -> NativeResult { } let val = vm.reg(args[1]); // ToPrimitive(value, number):对象先出盒,用户 @@toPrimitive/valueOf/toString - // 抛出的异常要原样传播(只触发一次,见 constructor-coercion 测试)。 + // 抛出的异常原样传播,且装箱转换的异常只触发一次。 let prim = match to_primitive(val, ToPrimitiveHint::Number, vm) { Ok(p) => p, Err(_) => { @@ -201,7 +201,7 @@ fn coerce_number_or_throw(vm: &mut H, value: JsValue) -> Result(vm: &mut H, args: &[u8]) -> Result { // ToIndex 作用在第一个参数(bits)上;缺省为 undefined。 let value = if args.len() > 1 { vm.reg(args[1]) } else { JsValue::undefined() }; @@ -232,7 +232,7 @@ fn bigint_arg(vm: &mut H, args: &[u8]) -> JsValue { } } -/// ToBigInt 抽象操作(§7.1.14):BigInt 原样;String → StringToBigInt; +/// ToBigInt 抽象操作:BigInt 原样;String → StringToBigInt; /// Boolean → 0/1;Number/Symbol/undefined/null → TypeError;对象先 ToPrimitive 再递归。 /// /// 语义主体在 `oxide_runtime_api::to_bigint_full`,此处只把 String 错误恢复为