phase29ao(p31): ssot shadow adopt routing in composer
This commit is contained in:
@ -336,140 +336,16 @@ pub(crate) fn route_loop_pattern(
|
||||
let strict_or_dev = crate::config::env::joinir_dev::strict_enabled()
|
||||
|| crate::config::env::joinir_dev_enabled();
|
||||
|
||||
if strict_or_dev
|
||||
&& matches!(
|
||||
domain_plan,
|
||||
crate::mir::builder::control_flow::plan::DomainPlan::Pattern1SimpleWhile(_)
|
||||
)
|
||||
{
|
||||
let facts = outcome
|
||||
.facts
|
||||
.as_ref()
|
||||
.ok_or_else(|| "pattern1 strict/dev adopt failed: facts missing".to_string())?;
|
||||
if facts.facts.pattern1_simplewhile.is_none() {
|
||||
return Err("pattern1 strict/dev adopt failed: facts mismatch".to_string());
|
||||
}
|
||||
let core_plan =
|
||||
composer::compose_coreplan_for_pattern1_simplewhile(builder, facts, ctx)?
|
||||
.ok_or_else(|| {
|
||||
"pattern1 strict/dev adopt failed: skeleton compose rejected".to_string()
|
||||
})?;
|
||||
if let Some(adopt) = composer::try_shadow_adopt_core_plan(
|
||||
builder,
|
||||
ctx,
|
||||
strict_or_dev,
|
||||
&domain_plan,
|
||||
&outcome,
|
||||
)? {
|
||||
let composer::ShadowAdoptOutcome { core_plan, tag } = adopt;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
eprintln!("[coreplan/shadow_adopt:pattern1_simplewhile]");
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
if strict_or_dev
|
||||
&& matches!(
|
||||
domain_plan,
|
||||
crate::mir::builder::control_flow::plan::DomainPlan::Pattern3IfPhi(_)
|
||||
)
|
||||
{
|
||||
let facts = outcome
|
||||
.facts
|
||||
.as_ref()
|
||||
.ok_or_else(|| "pattern3 strict/dev adopt failed: facts missing".to_string())?;
|
||||
if facts.facts.pattern3_ifphi.is_none() {
|
||||
return Err("pattern3 strict/dev adopt failed: facts mismatch".to_string());
|
||||
}
|
||||
let core_plan =
|
||||
composer::compose_coreplan_for_pattern3_ifphi(builder, facts, ctx)?
|
||||
.ok_or_else(|| {
|
||||
"pattern3 strict/dev adopt failed: compose rejected".to_string()
|
||||
})?;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
eprintln!("[coreplan/shadow_adopt:pattern3_ifphi]");
|
||||
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 = composer::compose_coreplan_for_pattern6_scan_with_init(builder, facts, ctx)?
|
||||
.ok_or_else(|| "pattern6 strict/dev adopt failed: compose rejected".to_string())?;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
eprintln!("[coreplan/shadow_adopt:pattern6_scan_with_init]");
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
if strict_or_dev
|
||||
&& matches!(
|
||||
domain_plan,
|
||||
crate::mir::builder::control_flow::plan::DomainPlan::SplitScan(_)
|
||||
)
|
||||
{
|
||||
let facts = outcome
|
||||
.facts
|
||||
.as_ref()
|
||||
.ok_or_else(|| "pattern7 strict/dev adopt failed: facts missing".to_string())?;
|
||||
if facts.facts.split_scan.is_none() {
|
||||
return Err("pattern7 strict/dev adopt failed: facts mismatch".to_string());
|
||||
}
|
||||
let core_plan = composer::compose_coreplan_for_pattern7_split_scan(builder, facts, ctx)?
|
||||
.ok_or_else(|| "pattern7 strict/dev adopt failed: compose rejected".to_string())?;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
eprintln!("[coreplan/shadow_adopt:pattern7_split_scan]");
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
if strict_or_dev
|
||||
&& matches!(
|
||||
domain_plan,
|
||||
crate::mir::builder::control_flow::plan::DomainPlan::Pattern5InfiniteEarlyExit(_)
|
||||
)
|
||||
{
|
||||
let facts = outcome
|
||||
.facts
|
||||
.as_ref()
|
||||
.ok_or_else(|| "pattern5 strict/dev adopt failed: facts missing".to_string())?;
|
||||
if facts.facts.pattern5_infinite_early_exit.is_none() {
|
||||
return Err("pattern5 strict/dev adopt failed: facts mismatch".to_string());
|
||||
}
|
||||
let core_plan =
|
||||
composer::compose_coreplan_for_pattern5_infinite_early_exit(builder, facts, ctx)?
|
||||
.ok_or_else(|| {
|
||||
"pattern5 strict/dev adopt failed: compose rejected".to_string()
|
||||
})?;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
eprintln!("[coreplan/shadow_adopt:pattern5_infinite_early_exit]");
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
if strict_or_dev
|
||||
&& matches!(
|
||||
domain_plan,
|
||||
crate::mir::builder::control_flow::plan::DomainPlan::Pattern2Break(_)
|
||||
)
|
||||
&& matches!(
|
||||
outcome.plan.as_ref(),
|
||||
Some(crate::mir::builder::control_flow::plan::DomainPlan::Pattern2Break(_))
|
||||
)
|
||||
{
|
||||
let facts = outcome
|
||||
.facts
|
||||
.as_ref()
|
||||
.ok_or_else(|| "pattern2 strict/dev adopt failed: facts missing".to_string())?;
|
||||
if facts.facts.pattern2_break.is_none() {
|
||||
return Err("pattern2 strict/dev adopt failed: facts mismatch".to_string());
|
||||
}
|
||||
let core_plan = composer::compose_coreplan_for_pattern2_break_subset(builder, facts, ctx)?
|
||||
.ok_or_else(|| "pattern2 strict/dev adopt failed: compose rejected".to_string())?;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
eprintln!("[coreplan/shadow_adopt:pattern2_break_subset]");
|
||||
eprintln!("{}", tag);
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user