diff --git a/boa_engine/src/bytecompiler.rs b/boa_engine/src/bytecompiler.rs index 57e0d7f6599..cb5a3b45122 100644 --- a/boa_engine/src/bytecompiler.rs +++ b/boa_engine/src/bytecompiler.rs @@ -1480,11 +1480,12 @@ impl<'b> ByteCompiler<'b> { break; } } - assert!( - found, - "Undefined label '{}'", - self.interner().resolve_expect(label_name) - ); + if !found { + return self.context.throw_syntax_error(format!( + "Undefined label '{}'", + self.interner().resolve_expect(label_name) + )); + } } else { self.jump_info .last_mut() diff --git a/boa_engine/src/tests.rs b/boa_engine/src/tests.rs index 1d8176012a0..beb7d71af91 100644 --- a/boa_engine/src/tests.rs +++ b/boa_engine/src/tests.rs @@ -431,15 +431,14 @@ fn for_loop_iteration_variable_does_not_leak() { } #[test] -#[should_panic] fn test_invalid_break_target() { let src = r#" - while (false) { + while (true) { break nonexistent; } "#; - let _ = &exec(src); + assert!(matches!(Context::default().eval(src.as_bytes()), Err(_))); } #[test]