use crate::{run_test_actions, JsNativeErrorKind, TestAction};
use indoc::indoc;
#[test]
fn let_is_block_scoped() {
run_test_actions([TestAction::assert_native_error(
indoc! {r#"
{
let bar = "bar";
}
bar;
"#},
JsNativeErrorKind::Reference,
"bar is not defined",
)]);
}
#[test]
fn const_is_block_scoped() {
run_test_actions([TestAction::assert_native_error(
indoc! {r#"
{
const bar = "bar";
}
bar;
"#},
JsNativeErrorKind::Reference,
"bar is not defined",
)]);
}
#[test]
fn var_not_block_scoped() {
run_test_actions([TestAction::assert(indoc! {r#"
{
var bar = "bar";
}
bar == "bar";
"#})]);
}
#[test]
fn functions_use_declaration_scope() {
run_test_actions([TestAction::assert_native_error(
indoc! {r#"
function foo() {
bar;
}
{
let bar = "bar";
foo();
}
"#},
JsNativeErrorKind::Reference,
"bar is not defined",
)]);
}
#[test]
fn set_outer_var_in_block_scope() {
run_test_actions([TestAction::assert(indoc! {r#"
var bar;
{
bar = "foo";
}
bar == "foo";
"#})]);
}
#[test]
fn set_outer_let_in_block_scope() {
run_test_actions([TestAction::assert(indoc! {r#"
let bar;
{
bar = "foo";
}
bar == "foo";
"#})]);
}