mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
style: 格式化 oxide_builtins 六文件消除 fmt 漂移
This commit is contained in:
@@ -509,9 +509,7 @@ pub fn data_view_set_big_uint64<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeRes
|
||||
/// 取 BigInt 值低 64 位位模式:与 2^64-1 掩码后恒非负且可转 u64。
|
||||
fn low64<H: VmHost>(vm: &mut H, val: JsValue) -> u64 {
|
||||
let v = vm.bigint_value(val);
|
||||
(v & (BigInt::from(u64::MAX)))
|
||||
.to_u64()
|
||||
.unwrap_or(u64::MAX)
|
||||
(v & (BigInt::from(u64::MAX))).to_u64().unwrap_or(u64::MAX)
|
||||
}
|
||||
|
||||
/// `DataView.prototype.toString`:校验 receiver 后返回 `[object DataView]`。
|
||||
|
||||
@@ -55,9 +55,7 @@ pub fn walk_own_keys<H: VmHost>(vm: &H, obj: &JsObject) -> Vec<(u32, u32)> {
|
||||
}
|
||||
for id in shape_ids.iter().rev() {
|
||||
if let Some(shape) = vm.kernel_core().shape_forge().get_shape(*id) {
|
||||
if !is_symbol_key(shape.property_name)
|
||||
&& !is_private_name_key(shape.property_name)
|
||||
{
|
||||
if !is_symbol_key(shape.property_name) && !is_private_name_key(shape.property_name) {
|
||||
// 绝对存储索引:数组命名属性位于元素区之后。
|
||||
let store = if obj.is_array() { obj.array_prop_count + pos } else { pos };
|
||||
keys.push((shape.property_name, store));
|
||||
@@ -1092,9 +1090,7 @@ pub fn object_get_own_property_descriptors<H: VmHost>(vm: &mut H, args: &[u8]) -
|
||||
/// # 边界与前提
|
||||
/// - 空串:仅返回 length 描述符
|
||||
/// - 非字符串被包值:退化为零键
|
||||
fn string_exotic_get_own_property_descriptors<H: VmHost>(
|
||||
vm: &mut H, obj_ptr: *mut JsObject,
|
||||
) -> NativeResult {
|
||||
fn string_exotic_get_own_property_descriptors<H: VmHost>(vm: &mut H, obj_ptr: *mut JsObject) -> NativeResult {
|
||||
let obj = unsafe { &*obj_ptr };
|
||||
// 取被包字符串值:优先 boxed_value,回退 hash_props[0]。
|
||||
let raw = obj.boxed_value();
|
||||
@@ -1123,11 +1119,17 @@ fn string_exotic_get_own_property_descriptors<H: VmHost>(
|
||||
let desc_obj = unsafe { &mut *desc };
|
||||
let desc_obj_ptr = JsValue::from_js_object(desc);
|
||||
// 构造描述符对象:value + writable/enumerable/configurable。
|
||||
vm.define_data_property(desc_obj, value_si, char_val, PropAttributes::DEFAULT_DATA).ok();
|
||||
vm.define_data_property(desc_obj, writable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA).ok();
|
||||
vm.define_data_property(desc_obj, enumerable_si, JsValue::bool(true), PropAttributes::DEFAULT_DATA).ok();
|
||||
vm.define_data_property(desc_obj, configurable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA).ok();
|
||||
if let Err(err) = vm.define_data_property(unsafe { &mut *result }, si, desc_obj_ptr, PropAttributes::DEFAULT_DATA) {
|
||||
vm.define_data_property(desc_obj, value_si, char_val, PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
vm.define_data_property(desc_obj, writable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
vm.define_data_property(desc_obj, enumerable_si, JsValue::bool(true), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
vm.define_data_property(desc_obj, configurable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
if let Err(err) =
|
||||
vm.define_data_property(unsafe { &mut *result }, si, desc_obj_ptr, PropAttributes::DEFAULT_DATA)
|
||||
{
|
||||
return NativeResult::Err(crate::error::create_type_error(vm, &err));
|
||||
}
|
||||
}
|
||||
@@ -1136,11 +1138,17 @@ fn string_exotic_get_own_property_descriptors<H: VmHost>(
|
||||
let desc = alloc_desc_object(vm);
|
||||
let desc_obj = unsafe { &mut *desc };
|
||||
let desc_obj_ptr = JsValue::from_js_object(desc);
|
||||
vm.define_data_property(desc_obj, value_si, JsValue::int(len as i32), PropAttributes::DEFAULT_DATA).ok();
|
||||
vm.define_data_property(desc_obj, writable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA).ok();
|
||||
vm.define_data_property(desc_obj, enumerable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA).ok();
|
||||
vm.define_data_property(desc_obj, configurable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA).ok();
|
||||
if let Err(err) = vm.define_data_property(unsafe { &mut *result }, length_si, desc_obj_ptr, PropAttributes::DEFAULT_DATA) {
|
||||
vm.define_data_property(desc_obj, value_si, JsValue::int(len as i32), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
vm.define_data_property(desc_obj, writable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
vm.define_data_property(desc_obj, enumerable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
vm.define_data_property(desc_obj, configurable_si, JsValue::bool(false), PropAttributes::DEFAULT_DATA)
|
||||
.ok();
|
||||
if let Err(err) =
|
||||
vm.define_data_property(unsafe { &mut *result }, length_si, desc_obj_ptr, PropAttributes::DEFAULT_DATA)
|
||||
{
|
||||
return NativeResult::Err(crate::error::create_type_error(vm, &err));
|
||||
}
|
||||
|
||||
|
||||
@@ -210,13 +210,8 @@ fn advance_string_index(units: &[u16], p: usize, unicode: bool) -> usize {
|
||||
/// `$n` 越界(含 $0 与两位回退后仍越界)或未匹配组(None)按字面输出。
|
||||
/// `$<name>` 从 named_captures 对象读取;不存在时字面输出 `$<` 开头部分。
|
||||
fn get_substitution_units<H: VmHost>(
|
||||
vm: &mut H,
|
||||
matched: &[u16],
|
||||
s: &[u16],
|
||||
position: usize,
|
||||
captured: &[Option<Vec<u16>>],
|
||||
named_captures: Option<&JsObject>,
|
||||
replacement: &[u16],
|
||||
vm: &mut H, matched: &[u16], s: &[u16], position: usize, captured: &[Option<Vec<u16>>],
|
||||
named_captures: Option<&JsObject>, replacement: &[u16],
|
||||
) -> Vec<u16> {
|
||||
let mut out = Vec::new();
|
||||
let pos = position.min(s.len());
|
||||
|
||||
@@ -850,10 +850,12 @@ pub fn string_match_all<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeResult {
|
||||
};
|
||||
// RequireObjectCoercible:flags 为 undefined/null 时抛 TypeError。
|
||||
// rx_get_flags 已将 undefined 转为 "undefined" 字符串,需额外检查。
|
||||
let flags_val = match vm.ordinary_get(unsafe { &*re_ptr }, vm.kernel_core().perm_interner().intern("flags").0, pattern_val) {
|
||||
Ok(v) => v,
|
||||
Err(e) => return NativeResult::err(crate::iterator::engine_error(vm, &e)),
|
||||
};
|
||||
let flags_val =
|
||||
match vm.ordinary_get(unsafe { &*re_ptr }, vm.kernel_core().perm_interner().intern("flags").0, pattern_val)
|
||||
{
|
||||
Ok(v) => v,
|
||||
Err(e) => return NativeResult::err(crate::iterator::engine_error(vm, &e)),
|
||||
};
|
||||
if flags_val.is_undefined() || flags_val.is_null() {
|
||||
return NativeResult::Err(crate::error::create_type_error(
|
||||
vm,
|
||||
@@ -906,10 +908,7 @@ pub fn string_match_all<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeResult {
|
||||
}
|
||||
}
|
||||
// 无 callable @@matchAll:规范 Invoke 抛 TypeError。
|
||||
NativeResult::Err(crate::error::create_type_error(
|
||||
vm,
|
||||
"RegExp.prototype[Symbol.matchAll] is not a function",
|
||||
))
|
||||
NativeResult::Err(crate::error::create_type_error(vm, "RegExp.prototype[Symbol.matchAll] is not a function"))
|
||||
} else {
|
||||
// 非 RegExp:先查 @@matchAll(规范步骤 6-8,IsRegExp 为 false 时
|
||||
// 先 ToString(pattern) 转正则,但规范步骤 8 是 Invoke(rx, @@matchAll)。
|
||||
@@ -933,7 +932,11 @@ pub fn string_match_all<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeResult {
|
||||
let pattern_units = try_string!(as_units(vm, pattern_val)).into_owned();
|
||||
let pattern_str = String::from_utf16_lossy(&pattern_units);
|
||||
let escaped = regress::escape(&pattern_str);
|
||||
let rx_str = if escaped.is_empty() { String::from("(?:)") } else { format!("(?:{})", escaped) };
|
||||
let rx_str = if escaped.is_empty() {
|
||||
String::from("(?:)")
|
||||
} else {
|
||||
format!("(?:{})", escaped)
|
||||
};
|
||||
let compiled = match regress::Regex::new(&rx_str) {
|
||||
Ok(rx) => rx,
|
||||
Err(e) => {
|
||||
@@ -1105,11 +1108,7 @@ pub fn string_match_all_next<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeResult
|
||||
|
||||
/// 构建 matchAll 结果数组:元素为匹配字符串值,附带 index/input/groups 属性。
|
||||
fn make_match_result_array<H: VmHost>(
|
||||
vm: &mut H,
|
||||
parts: Vec<Vec<u16>>,
|
||||
match_index: i32,
|
||||
input_val: JsValue,
|
||||
m: Option<®ress::Match>,
|
||||
vm: &mut H, parts: Vec<Vec<u16>>, match_index: i32, input_val: JsValue, m: Option<®ress::Match>,
|
||||
text: &MatchText,
|
||||
) -> JsValue {
|
||||
let values: Vec<JsValue> = parts.into_iter().map(|u| vm.new_string_units_owned(u)).collect();
|
||||
|
||||
@@ -42,30 +42,22 @@ fn is_ambiguous_date_string(s: &str) -> bool {
|
||||
day >= 1 && day <= max
|
||||
};
|
||||
match s.len() {
|
||||
4 if all_digits(0..4) => {
|
||||
match (two_digits(0), two_digits(2)) {
|
||||
(Some(month), Some(day)) => day_in_month(month, day),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
6 if all_digits(0..6) => {
|
||||
match two_digits(4) {
|
||||
Some(m) => (1..=12).contains(&m),
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
5 if bytes[2] == b'-' && all_digits(0..2) && all_digits(3..5) => {
|
||||
match (two_digits(0), two_digits(3)) {
|
||||
(Some(month), Some(day)) => day_in_month(month, day),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
7 if bytes[4] == b'-' && all_digits(0..4) && all_digits(5..7) => {
|
||||
match two_digits(5) {
|
||||
Some(m) => (1..=12).contains(&m),
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
4 if all_digits(0..4) => match (two_digits(0), two_digits(2)) {
|
||||
(Some(month), Some(day)) => day_in_month(month, day),
|
||||
_ => false,
|
||||
},
|
||||
6 if all_digits(0..6) => match two_digits(4) {
|
||||
Some(m) => (1..=12).contains(&m),
|
||||
None => false,
|
||||
},
|
||||
5 if bytes[2] == b'-' && all_digits(0..2) && all_digits(3..5) => match (two_digits(0), two_digits(3)) {
|
||||
(Some(month), Some(day)) => day_in_month(month, day),
|
||||
_ => false,
|
||||
},
|
||||
7 if bytes[4] == b'-' && all_digits(0..4) && all_digits(5..7) => match two_digits(5) {
|
||||
Some(m) => (1..=12).contains(&m),
|
||||
None => false,
|
||||
},
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -327,9 +327,7 @@ fn read_element<H: VmHost>(vm: &mut H, kind: TypedArrayKind, bytes: &[u8], offse
|
||||
match kind {
|
||||
TypedArrayKind::Int8 => JsValue::int(bytes[offset] as i8 as i32),
|
||||
TypedArrayKind::Uint8 | TypedArrayKind::Uint8Clamped => JsValue::int(bytes[offset] as i32),
|
||||
TypedArrayKind::Int16 => {
|
||||
JsValue::int(read_bytes!(&bytes[offset..offset + 2], i16) as i32)
|
||||
}
|
||||
TypedArrayKind::Int16 => JsValue::int(read_bytes!(&bytes[offset..offset + 2], i16) as i32),
|
||||
TypedArrayKind::Uint16 => JsValue::int(read_bytes!(&bytes[offset..offset + 2], u16) as i32),
|
||||
TypedArrayKind::Int32 => JsValue::int(read_bytes!(&bytes[offset..offset + 4], i32)),
|
||||
TypedArrayKind::Uint32 => JsValue::float(read_bytes!(&bytes[offset..offset + 4], u32) as f64),
|
||||
|
||||
Reference in New Issue
Block a user