fix: 修复 throw 未支持静默失败问题

This commit is contained in:
爱特每羊队
2026-06-07 19:35:12 +08:00
parent 3e8b601121
commit 77bf00233b
4 changed files with 15 additions and 0 deletions
+3
View File
@@ -195,6 +195,9 @@ impl Compiler {
// FD emits LOAD_CONST(BytecodeFunc) + STORE_VAR // FD emits LOAD_CONST(BytecodeFunc) + STORE_VAR
ctx.projected_pc += 2; ctx.projected_pc += 2;
} }
Statement::ThrowStatement(_) => {
// throw not yet implemented; emit pass will error
}
_ => {} _ => {}
} }
} }
+1
View File
@@ -371,6 +371,7 @@ impl Compiler {
Ok(None) Ok(None)
} }
Statement::ThrowStatement(_) => Err("throw statement not supported".into()),
_ => Ok(None), _ => Ok(None),
} }
} }
+3
View File
@@ -116,6 +116,9 @@ fn hash_statement(stmt: &Statement, h: &mut rustc_hash::FxHasher) {
} }
} }
} }
Statement::ThrowStatement(_ts) => {
14u8.hash(h);
}
_ => { _ => {
std::mem::discriminant(stmt).hash(h); std::mem::discriminant(stmt).hash(h);
} }
@@ -56,3 +56,11 @@ fn regression_recursion_depth_limit() {
"vm error: RangeError: Maximum call stack size exceeded" "vm error: RangeError: Maximum call stack size exceeded"
); );
} }
#[test]
fn regression_throw_statement_errors() {
assert_eq!(
eval("throw 'error'"),
"compile error: throw statement not supported"
);
}