mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
style: 自动格式化
This commit is contained in:
@@ -82,10 +82,7 @@ fn proxy_create_invariants<H: VmHost>(
|
||||
) -> Result<(), JsValue> {
|
||||
// target 可调用且不可扩展:函数代理的不变量无法满足,抛 TypeError。
|
||||
if crate::iterator::is_callable(target) && !target_obj.is_extensible() {
|
||||
return Err(crate::error::create_type_error(
|
||||
vm,
|
||||
"Proxy target must be extensible if it is callable",
|
||||
));
|
||||
return Err(crate::error::create_type_error(vm, "Proxy target must be extensible if it is callable"));
|
||||
}
|
||||
// isExtensible trap:handler 报 true 时 target 须可扩展,报 false 时须不可扩展。
|
||||
let si_is_extensible = vm.perm_intern("isExtensible");
|
||||
|
||||
@@ -85,16 +85,10 @@ pub(crate) fn call_trap(
|
||||
// trap 值须可调用(规范 Call 语义):非可调用抛 TypeError 而非落入
|
||||
// call_function_sync 的通用「accessor is not callable」文本(kind 丢失)。
|
||||
if !trap_val.is_object() {
|
||||
return Err(oxide_runtime_api::format_error_message(
|
||||
"TypeError",
|
||||
"Proxy trap is not callable",
|
||||
));
|
||||
return Err(oxide_runtime_api::format_error_message("TypeError", "Proxy trap is not callable"));
|
||||
}
|
||||
if !unsafe { &*trap_val.as_js_object_ptr() }.is_function() {
|
||||
return Err(oxide_runtime_api::format_error_message(
|
||||
"TypeError",
|
||||
"Proxy trap is not callable",
|
||||
));
|
||||
return Err(oxide_runtime_api::format_error_message("TypeError", "Proxy trap is not callable"));
|
||||
}
|
||||
let result = vm.call_function_sync(trap_val, handler, args)?;
|
||||
Ok(Some(result))
|
||||
@@ -407,9 +401,8 @@ mod tests {
|
||||
let target = native_fn_obj(&mut vm, target_return_7);
|
||||
let handler = vm.alloc_object(JsObject::new_empty(EMPTY_SHAPE_ID, JsValue::undefined()));
|
||||
let proxy = proxy_with_state(&mut vm, JsValue::from_js_object(target), JsValue::from_js_object(handler));
|
||||
let result =
|
||||
proxy_apply_call(&mut vm, unsafe { &*proxy }, JsValue::undefined(), &[JsValue::int(1)])
|
||||
.expect("落穿 target 应成功");
|
||||
let result = proxy_apply_call(&mut vm, unsafe { &*proxy }, JsValue::undefined(), &[JsValue::int(1)])
|
||||
.expect("落穿 target 应成功");
|
||||
assert_eq!(result, JsValue::int(7), "target 调用结果须原样返回");
|
||||
}
|
||||
|
||||
|
||||
@@ -110,12 +110,7 @@ impl Vm {
|
||||
/// - `ctor_obj` 为待分派的构造器(native / 字节码臂);`new_target` 为
|
||||
/// newTarget(原型读源与 new.target 槽),非代理路径两者恒同一值。
|
||||
pub(crate) fn dispatch_new_target(
|
||||
&mut self,
|
||||
ctor_obj: &JsObject,
|
||||
constructor: JsValue,
|
||||
new_target: JsValue,
|
||||
rd: usize,
|
||||
args: &[JsValue],
|
||||
&mut self, ctor_obj: &JsObject, constructor: JsValue, new_target: JsValue, rd: usize, args: &[JsValue],
|
||||
call_window: u8,
|
||||
) -> Result<bool, String> {
|
||||
// Proxy [[Construct]]:construct trap 权威(target, argumentsList,
|
||||
|
||||
Reference in New Issue
Block a user