fix: 顶层声明撞不可定义全局按规范抛 TypeError

This commit is contained in:
2026-09-14 14:32:39 +00:00
parent 91946f3fe3
commit d161b7cfe3
11 changed files with 332 additions and 57 deletions
+8 -1
View File
@@ -740,11 +740,18 @@ mod tests {
assert_group(&[OpCode::NEW_OBJECT, OpCode::NEW_SESSION_OBJECT, OpCode::NEW_ARRAY], Some(1), &[], true);
// define 语义属性写入 / arguments / rest
assert_group(
&[OpCode::DEFINE_PROP, OpCode::DEFINE_GLOBAL_PROP, OpCode::DEFINE_GLOBAL_PROP_IF_ABSENT],
&[
OpCode::DEFINE_PROP,
OpCode::DEFINE_GLOBAL_PROP,
OpCode::DEFINE_GLOBAL_PROP_IF_ABSENT,
OpCode::DEFINE_GLOBAL_FUNC_BIND,
],
None,
&[1, 2, 3],
false,
);
// 全局函数绑定声明检查:a 槽无操作数,use 集只含 rd/b。
assert_contract(OpCode::CAN_DECLARE_GLOBAL_FUNC, None, &[1, 3], false);
assert_group(&[OpCode::DEFINE_GLOBAL_PROP_C, OpCode::DEFINE_GLOBAL_PROP_C_IF_ABSENT], None, &[2], false);
// delete 全局内置:结果写 rd、镜像槽寄存器是 a 槽 use
assert_contract(OpCode::DELETE_GLOBAL_PROP_C, Some(1), &[2], false);