From e0278405c0c7e85720d09222d4f2b5df538436c5 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Sun, 21 Dec 2025 09:56:56 +0900 Subject: [PATCH] fix(pattern2): return Ok(None) for unpromoted LoopBodyLocal instead of Err MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Pattern2 で処理できない LoopBodyLocal は Err ではなく処理続行 - Pattern1 等に fallback させる(detection→extract→lower SSOT 維持) - out-of-scope 変数(reassigned body-local)はreject不要 Fixes: core_direct_array_oob_set_rc_vm smoke test FAIL Fixes: phase263_p0_pattern2_seg_min (新規テスト) --- .../patterns/pattern2_steps/promote_step_box.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/mir/builder/control_flow/joinir/patterns/pattern2_steps/promote_step_box.rs b/src/mir/builder/control_flow/joinir/patterns/pattern2_steps/promote_step_box.rs index e3e7e0db..3bb05e0e 100644 --- a/src/mir/builder/control_flow/joinir/patterns/pattern2_steps/promote_step_box.rs +++ b/src/mir/builder/control_flow/joinir/patterns/pattern2_steps/promote_step_box.rs @@ -119,10 +119,17 @@ impl PromoteStepBox { inputs.read_only_body_local_slot = Some(slot); } PolicyDecision::Reject(reason) => { - return Err(error_messages::format_error_pattern2_promotion_failed( - &cond_body_local_vars, - &reason, - )); + // Phase 263 P0: Pattern2 cannot handle reassigned body-local variables. + // Return without error to allow Pattern1 or other patterns to handle this case + // without breaking detection→extract→lower SSOT. + #[cfg(debug_assertions)] + { + eprintln!( + "[pattern2/promote_step] Cannot promote LoopBodyLocal {:?}: {}", + cond_body_local_vars, reason + ); + } + // Skip promotion and continue (no-op, same as PolicyDecision::None) } PolicyDecision::None => {} }