use vyre::ir::{BufferDecl, DataType, Expr, Node, Program};
fn program_with_region() -> Program {
let region = Node::Region {
generator: "test".into(),
source_region: None,
body: std::sync::Arc::new(vec![Node::store("out", Expr::u32(0), Expr::u32(42))]),
};
Program::wrapped(
vec![BufferDecl::read_write("out", 0, DataType::U32).with_count(1)],
[1, 1, 1],
vec![region],
)
}
#[test]
fn region_inline_clears_validated_flag() {
let program = program_with_region();
let errors = vyre_foundation::validate::validate(&program);
assert!(errors.is_empty(), "base program must validate");
program.mark_structurally_validated();
assert!(program.is_structurally_validated());
let optimized = vyre_foundation::optimizer::passes::cleanup::region_inline_engine::run(program);
assert!(
!optimized.is_structurally_validated(),
"region_inline must reset Program.validated so dispatchers re-validate the flattened shape"
);
}
#[test]
fn region_inline_of_already_flat_program_still_invalidates() {
let program = Program::wrapped(
vec![BufferDecl::read_write("out", 0, DataType::U32).with_count(1)],
[1, 1, 1],
vec![Node::store("out", Expr::u32(0), Expr::u32(1))],
);
program.mark_structurally_validated();
let optimized = vyre_foundation::optimizer::passes::cleanup::region_inline_engine::run(program);
assert!(
!optimized.is_structurally_validated(),
"region_inline must always reset validated; even the no-op path"
);
}