use crate::assert::Assert;
use crate::tests::bc::golden::bc_golden_test;
#[test]
fn test_definitely_assigned_bug() {
let mut a = Assert::new();
a.module(
"a.star",
r"
def f(a):
# The bug was: compilation of `and` expression reassigned `10` to `a`.
noop(a and 10)
return a
",
);
a.eq("33", "load('a.star', 'f')\nf(33)");
}
#[test]
fn test_definitely_assigned_slot_range_in_list() {
bc_golden_test(
"definitely_assigned_slot_range_in_list",
"def test(x, y): return [x, y]",
);
}
#[test]
fn test_definitely_assigned_slot_range_in_call() {
bc_golden_test(
"definitely_assigned_slot_range_in_call",
"def test(x, y): noop(x, y)",
);
}
#[test]
fn test_mov_is_used() {
bc_golden_test(
"definitely_assigned_mov_is_used",
"def test(x, y): noop(y, x)",
);
}
#[test]
fn test_no_op_movs() {
bc_golden_test("definitely_assigned_no_op_movs", "def test(x): x = x");
}