From 7138c98da8c9aeae28e68dc755195afc8a2557bd Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Thu, 10 Sep 2026 02:30:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A1=B6=E5=B1=82=E5=8F=AA=E8=AF=BB?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E8=B5=8B=E5=80=BC=E5=BC=B1=E6=96=AD=E8=A8=80?= =?UTF-8?q?=E5=B9=B6=E5=85=A5=E5=80=BC=E4=BF=9D=E6=8C=81=E5=BC=BA=E6=96=AD?= =?UTF-8?q?=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_vm/tests/sloppy_assignment_silent_tests.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/oxide_vm/tests/sloppy_assignment_silent_tests.rs b/crates/oxide_vm/tests/sloppy_assignment_silent_tests.rs index 0326f1a8..02ad9d8c 100644 --- a/crates/oxide_vm/tests/sloppy_assignment_silent_tests.rs +++ b/crates/oxide_vm/tests/sloppy_assignment_silent_tests.rs @@ -191,6 +191,11 @@ fn strict_chained_write_through_readonly_middle_throws() { // ── 顶层脚本 sloppy 赋值只读全局属性(undefined)不抛错 ── #[test] fn sloppy_top_level_assign_to_readonly_global_no_throw() { + // 值保持强断言:写被拦截后 typeof 读回 'undefined',全局对象属性不被修改。 let r = eval_many(&["undefined = 1", "typeof undefined"]).unwrap(); assert!(r.is_string(), "sloppy 顶层对只读全局属性赋值不得抛错,实际 {:?}", r); + let s = eval_str("undefined = 1; typeof undefined"); + assert_eq!(s, "undefined", "sloppy 顶层 undefined 赋值应静默 no-op,typeof 读回 'undefined'"); + let b = eval("undefined = 1; globalThis.undefined === undefined").unwrap(); + assert!(b.is_bool() && b.as_bool(), "全局对象 undefined 属性不应被赋值修改,实际 {:?}", b); }