diff --git a/crates/oxide_builtins/src/proxy.rs b/crates/oxide_builtins/src/proxy.rs index 070db8d4..566c5425 100644 --- a/crates/oxide_builtins/src/proxy.rs +++ b/crates/oxide_builtins/src/proxy.rs @@ -82,10 +82,7 @@ fn proxy_create_invariants( ) -> 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"); diff --git a/crates/oxide_vm/src/proxy.rs b/crates/oxide_vm/src/proxy.rs index 7ebaca96..85f53409 100644 --- a/crates/oxide_vm/src/proxy.rs +++ b/crates/oxide_vm/src/proxy.rs @@ -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 调用结果须原样返回"); } diff --git a/crates/oxide_vm/src/vm_dispatch_misc.rs b/crates/oxide_vm/src/vm_dispatch_misc.rs index c4247464..947ee287 100644 --- a/crates/oxide_vm/src/vm_dispatch_misc.rs +++ b/crates/oxide_vm/src/vm_dispatch_misc.rs @@ -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 { // Proxy [[Construct]]:construct trap 权威(target, argumentsList,