fix: class 方法/访问器/constructor/prototype 属性描述符(非枚举/只读),新增 DEFINE_PROP_ATTRS/DEFINE_ACCESSOR_ATTRS
- opcode.rs/inst.rs/contract.rs/vm.rs/vm_dispatch_ctrl.rs:新增两个带 attrs 扩展字的 define 指令 (attrs bit0=writable, bit1=enumerable, bit2=configurable,与 PropAttributes 一致) - class/method.rs:方法与非计算访问器改按规范非枚举安装(DefineMethod 语义) - class/prototype.rs:proto.constructor 非枚举;ctor.prototype 三标志全 false(MakeConstructor) - 效果:language/statements/class 1782 pass/948 fail -> 1910 pass/716 fail(+128/-232)
This commit is contained in:
@@ -761,6 +761,8 @@ mod tests {
|
||||
assert_group(&[OpCode::NEW_OBJECT, OpCode::NEW_ARRAY], Some(1), &[], true);
|
||||
// define 语义属性写入 / arguments / rest
|
||||
assert_group(&[OpCode::DEFINE_PROP, OpCode::DEFINE_GLOBAL_PROP], None, &[1, 2, 3], false);
|
||||
assert_contract(OpCode::DEFINE_PROP_ATTRS, None, &[1, 2, 3], false);
|
||||
assert_contract(OpCode::DEFINE_ACCESSOR_ATTRS, None, &[1, 2, 3], false);
|
||||
assert_group(&[OpCode::CREATE_ARGUMENTS, OpCode::CREATE_REST_ARRAY], Some(1), &[], false);
|
||||
// 成员更新:val 槽原地写(a/b 槽)
|
||||
assert_group(&[OpCode::MEMBER_INC, OpCode::MEMBER_DEC], Some(2), &[1, 3], false);
|
||||
|
||||
Reference in New Issue
Block a user