feat: ToPropertyKey 改走 ToPrimitive,Symbol 键与描述符,转换错误可捕获

This commit is contained in:
2026-08-12 09:59:56 +08:00
parent c287708ddc
commit af61dcf6fc
16 changed files with 265 additions and 86 deletions
+3 -3
View File
@@ -115,7 +115,7 @@ impl Vm {
let Some(obj_ptr) = self.checked_object_ptr(self.regs[rd], error_msg)? else {
return Err(String::new());
};
let prop_name_si = self.property_key_si(self.regs[b]);
let prop_name_si = self.property_key_si(self.regs[b])?;
Ok((obj_ptr, prop_name_si))
}
@@ -156,7 +156,7 @@ impl Vm {
};
let receiver = self.regs[rd];
let obj = unsafe { &mut *obj_ptr };
let prop_name_si = self.property_key_si(self.regs[a]);
let prop_name_si = self.property_key_si(self.regs[a])?;
let prop_val = self.ordinary_get(obj, prop_name_si, receiver)?;
let n = self.coerce_number_bounded(prop_val)?;
let new_val = JsValue::float(n + 1.0);
@@ -172,7 +172,7 @@ impl Vm {
};
let receiver = self.regs[rd];
let obj = unsafe { &mut *obj_ptr };
let prop_name_si = self.property_key_si(self.regs[a]);
let prop_name_si = self.property_key_si(self.regs[a])?;
let prop_val = self.ordinary_get(obj, prop_name_si, receiver)?;
let n = self.coerce_number_bounded(prop_val)?;
let new_val = JsValue::float(n - 1.0);