phase29am(p3): align core exit with frag exitmap
This commit is contained in:
@ -17,7 +17,7 @@
|
||||
//! - V8: Frag entry matches header_bb
|
||||
//! - V9: block_effects contains header_bb
|
||||
//! - V10: body_bb effects go in loop_plan.body (block_effects[body_bb] must be empty)
|
||||
//! - V11: Exit must be last in Seq/If branch
|
||||
//! - V11: Exit must be last in Seq/If branch (ExitMap alignment)
|
||||
//! - V12: Loop.body must be Effect-only (Seq-of-effects allowed)
|
||||
//!
|
||||
//! Phase 273 P3: V1 (Carrier completeness) removed with CoreCarrierInfo
|
||||
@ -473,6 +473,28 @@ mod tests {
|
||||
assert!(result.unwrap_err().contains("[V11]"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_verify_if_exit_not_last_fails() {
|
||||
let if_plan = CoreIfPlan {
|
||||
condition: ValueId(1),
|
||||
then_plans: vec![
|
||||
CorePlan::Exit(CoreExitPlan::Return(None)),
|
||||
CorePlan::Effect(CoreEffectPlan::Const {
|
||||
dst: ValueId(2),
|
||||
value: ConstValue::Integer(1),
|
||||
}),
|
||||
],
|
||||
else_plans: Some(vec![CorePlan::Effect(CoreEffectPlan::Const {
|
||||
dst: ValueId(3),
|
||||
value: ConstValue::Integer(2),
|
||||
})]),
|
||||
};
|
||||
let plan = CorePlan::If(if_plan);
|
||||
let result = PlanVerifier::verify(&plan);
|
||||
assert!(result.is_err());
|
||||
assert!(result.unwrap_err().contains("[V11]"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_v10_body_bb_effects_in_block_effects_fails() {
|
||||
// V10: body_bb effects must be empty in block_effects
|
||||
|
||||
Reference in New Issue
Block a user