fix(joinir): Phase 133 P1 - Skip Trim promoted_pairs resolution (defer to TrimLoopLowerer SSOT)

This commit is contained in:
nyash-codex
2025-12-15 13:02:21 +09:00
parent 7b675a6a27
commit b3c832b28a

View File

@ -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(