mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
test: 补 for 循环泄漏形完成值引擎钉
This commit is contained in:
@@ -303,6 +303,19 @@ fn compound_statement_completion_values() {
|
||||
assert_num(result, 5.0);
|
||||
let result = eval(&mut vm, "a: { try { throw 1; } catch (e) { 5; break a; } }").unwrap();
|
||||
assert_num(result, 5.0);
|
||||
// for 泄漏形完成值:体不读循环变量加常量尾,取末次迭代体值,前值不沿用。
|
||||
let result = eval(&mut vm, "for (var i = 0; i < 2; ++i) { 42 }").unwrap();
|
||||
assert_num(result, 42.0);
|
||||
let result = eval(&mut vm, "for (var i = 0; i < 2; ++i) { 'bad completion' }").unwrap();
|
||||
let rendered = vm.lookup_str(result).unwrap_or_default();
|
||||
assert_eq!(rendered, "bad completion");
|
||||
let result = eval(&mut vm, "7; for (var i = 0; i < 2; ++i) { 42 }").unwrap();
|
||||
assert_num(result, 42.0);
|
||||
let result = eval(&mut vm, "9; for (var i = 0; i < 2; ++i) { i; 42 }").unwrap();
|
||||
assert_num(result, 42.0);
|
||||
// 0 迭代块体:完成值 undefined(前值不沿用)。
|
||||
let result = eval(&mut vm, "9; for (var i = 0; false;) { 42 }").unwrap();
|
||||
assert_eq!(result, JsValue::undefined());
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user