fix(joinir): Phase 133 P1 - Skip Trim promoted_pairs resolution (defer to TrimLoopLowerer SSOT)
This commit is contained in:
@ -276,7 +276,17 @@ fn promote_and_prepare_carriers(
|
|||||||
promoted_var,
|
promoted_var,
|
||||||
carrier_name,
|
carrier_name,
|
||||||
} => {
|
} => {
|
||||||
promoted_pairs.push((promoted_var.clone(), carrier_name.clone()));
|
// Phase 133 P1: Check if this is a Trim promotion (A-3 pattern)
|
||||||
|
// Trim promotions are handled by TrimLoopLowerer (apply_trim_and_normalize)
|
||||||
|
// which provides SSOT for env/join_id, so we defer to that path.
|
||||||
|
let is_trim_promotion = promoted_carrier.trim_helper().is_some();
|
||||||
|
|
||||||
|
// Phase 133 P1: Only add to promoted_pairs for non-Trim promotions
|
||||||
|
// (e.g., DigitPos/A-4). Trim carriers don't have join_id in carrier_info
|
||||||
|
// because they use loop_var_name instead of carriers vector.
|
||||||
|
if !is_trim_promotion {
|
||||||
|
promoted_pairs.push((promoted_var.clone(), carrier_name.clone()));
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "normalized_dev")]
|
#[cfg(feature = "normalized_dev")]
|
||||||
{
|
{
|
||||||
@ -339,6 +349,13 @@ fn promote_and_prepare_carriers(
|
|||||||
helper.carrier_name, helper.original_var, helper.whitespace_chars
|
helper.carrier_name, helper.original_var, helper.whitespace_chars
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
log_pattern2(
|
||||||
|
verbose,
|
||||||
|
"phase133",
|
||||||
|
format!(
|
||||||
|
"Phase 133 P1: Trim promotion deferred to TrimLoopLowerer (SSOT for env/join_id)"
|
||||||
|
),
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return Err(error_messages::format_error_pattern2_trim_not_safe(
|
return Err(error_messages::format_error_pattern2_trim_not_safe(
|
||||||
&helper.carrier_name,
|
&helper.carrier_name,
|
||||||
@ -347,20 +364,24 @@ fn promote_and_prepare_carriers(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inputs.break_condition_node = DigitPosConditionNormalizer::normalize(
|
// Phase 133 P1: Only normalize for non-Trim promotions
|
||||||
&inputs.break_condition_node,
|
// Trim promotions are normalized by TrimLoopLowerer
|
||||||
&promoted_var,
|
if !is_trim_promotion {
|
||||||
&carrier_name,
|
inputs.break_condition_node = DigitPosConditionNormalizer::normalize(
|
||||||
);
|
&inputs.break_condition_node,
|
||||||
|
&promoted_var,
|
||||||
|
&carrier_name,
|
||||||
|
);
|
||||||
|
|
||||||
log_pattern2(
|
log_pattern2(
|
||||||
verbose,
|
verbose,
|
||||||
"phase224e",
|
"phase224e",
|
||||||
format!(
|
format!(
|
||||||
"Normalized break condition for promoted variable '{}' → carrier '{}'",
|
"Normalized break condition for promoted variable '{}' → carrier '{}'",
|
||||||
promoted_var, carrier_name
|
promoted_var, carrier_name
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ConditionPromotionResult::CannotPromote { reason, vars } => {
|
ConditionPromotionResult::CannotPromote { reason, vars } => {
|
||||||
return Err(error_messages::format_error_pattern2_promotion_failed(
|
return Err(error_messages::format_error_pattern2_promotion_failed(
|
||||||
|
|||||||
Reference in New Issue
Block a user