phase29ao(p27): strict/dev adopt pattern6 scan_with_init subset from facts

This commit is contained in:
2025-12-30 13:41:18 +09:00
parent d9afc803ef
commit bbd1194a26
7 changed files with 74 additions and 13 deletions

View File

@ -379,6 +379,29 @@ pub(crate) fn route_loop_pattern(
return PlanLowerer::lower(builder, core_plan, ctx);
}
if strict_or_dev
&& matches!(
domain_plan,
crate::mir::builder::control_flow::plan::DomainPlan::ScanWithInit(_)
)
&& matches!(
outcome.plan.as_ref(),
Some(crate::mir::builder::control_flow::plan::DomainPlan::ScanWithInit(_))
)
{
let facts = outcome
.facts
.as_ref()
.ok_or_else(|| "pattern6 strict/dev adopt failed: facts missing".to_string())?;
if facts.facts.scan_with_init.is_none() {
return Err("pattern6 strict/dev adopt failed: facts mismatch".to_string());
}
let core_plan = PlanNormalizer::normalize_scan_with_init_from_facts(builder, facts, ctx)?
.ok_or_else(|| "pattern6 strict/dev adopt failed: compose rejected".to_string())?;
PlanVerifier::verify(&core_plan)?;
return PlanLowerer::lower(builder, core_plan, ctx);
}
if strict_or_dev
&& matches!(
domain_plan,