Skip to content

Commit 0b3d1c4

Browse files
committed
Use js_to_py_with_this
1 parent e4f247a commit 0b3d1c4

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

wasm/lib/src/objjsvalue.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ use rustpython_vm::VirtualMachine;
88

99
use crate::convert;
1010

11-
fn get_prop(value: &JsValue, name: &str, vm: &VirtualMachine) -> Option<PyObjectRef> {
11+
fn get_prop(value: JsValue, name: &str, vm: &VirtualMachine) -> Option<PyObjectRef> {
1212
let name: &JsString = &name.into();
13-
if Reflect::has(value, name).expect("Reflect.has failed") {
14-
Some(convert::js_to_py(
13+
if Reflect::has(&value, name).expect("Reflect.has failed") {
14+
Some(convert::js_to_py_with_this(
1515
vm,
16-
Reflect::get(value, name).expect("Reflect.get failed"),
16+
Reflect::get(&value, name).expect("Reflect.get failed"),
17+
Some(value),
1718
))
1819
} else {
1920
None
@@ -48,7 +49,7 @@ impl PyJsValue {
4849

4950
#[pymethod(name = "__getattr__")]
5051
fn getattr(&self, attr_name: PyStringRef, vm: &VirtualMachine) -> PyResult {
51-
get_prop(self.value(), attr_name.as_str(), vm).ok_or_else(|| {
52+
get_prop(self.value().clone(), attr_name.as_str(), vm).ok_or_else(|| {
5253
vm.new_attribute_error(format!("JS value has no property {:?}", attr_name.as_str()))
5354
})
5455
}
@@ -113,14 +114,14 @@ impl PyJsProps {
113114
default: OptionalArg,
114115
vm: &VirtualMachine,
115116
) -> PyObjectRef {
116-
get_prop(&self.value, item_name.as_str(), vm)
117+
get_prop(self.value.clone(), item_name.as_str(), vm)
117118
.or(default.into_option())
118119
.unwrap_or_else(|| vm.get_none())
119120
}
120121

121122
#[pymethod(name = "__getitem__")]
122123
fn getitem(&self, item_name: PyStringRef, vm: &VirtualMachine) -> PyResult {
123-
get_prop(&self.value, item_name.as_str(), vm)
124+
get_prop(self.value.clone(), item_name.as_str(), vm)
124125
.ok_or_else(|| vm.new_key_error(format!("{:?}", item_name.as_str())))
125126
}
126127
}

0 commit comments

Comments
 (0)