fix: Reflect 族属性键转换异常原值传播接传播变体

This commit is contained in:
2026-09-23 22:30:55 +00:00
parent 9a161290f3
commit c8fda6132b
4 changed files with 86 additions and 9 deletions
+11 -1
View File
@@ -1115,7 +1115,17 @@ pub fn object_get_own_property_descriptor<H: VmHost>(vm: &mut H, args: &[u8]) ->
Err(msg) => return NativeResult::Err(crate::error::create_type_error(vm, &msg)),
};
let obj_ptr = obj_val.as_js_object_ptr();
let key = vm.property_key_si(vm.reg(args[2]));
// 键转换异常原值传播(ToPropertyKey 步先于 GetOwnProperty):Reflect 委托面
// 与 Object 同核,须按规范传播。
let key = match vm.to_property_key_si(vm.reg(args[2])) {
Ok(si) => si,
Err(e) => {
let exc = vm
.take_uncaught_value()
.unwrap_or_else(|| crate::error::create_type_error(vm, &e));
return NativeResult::Err(exc);
}
};
let obj = unsafe { &*obj_ptr };
match own_descriptor_of(vm, obj, key) {
Ok(Some(desc)) => NativeResult::Ok(desc),