refactor(mir): Phase 137-6-S1 - choose_pattern_kind SSOT入口を新設
## 目的 Pattern 選択ロジックを SSOT 化し、将来の Canonicalizer 委譲に備える ## 変更内容 ### 新規関数: `choose_pattern_kind()` - 場所: `src/mir/builder/control_flow/joinir/routing.rs` - 責務: Pattern 選択の SSOT 入口 - 実装: 既存の LoopFeatures ベース選択ロジックを集約 ### LoopPatternContext の更新 - `new()` で `choose_pattern_kind()` を使用 - 既存の分散した選択ロジックを SSOT に統一 ## 効果 - ✅ Pattern 選択ロジックの SSOT 化(1箇所に集約) - ✅ 将来の Canonicalizer 委譲に備えた構造確立 - ✅ 既定挙動完全不変(既存テスト全て PASS) ## テスト結果 - ✅ `cargo build --release`: 成功 - ✅ スモークテスト(simple_*): 5/5 PASS - ✅ 退行なし 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -88,11 +88,7 @@ impl<'a> LoopProcessingContext<'a> {
|
||||
///
|
||||
/// This should be called after running the canonicalizer.
|
||||
/// After this call, `verify_parity()` can be used to check consistency.
|
||||
pub fn set_canonicalizer_result(
|
||||
&mut self,
|
||||
skeleton: LoopSkeleton,
|
||||
decision: RoutingDecision,
|
||||
) {
|
||||
pub fn set_canonicalizer_result(&mut self, skeleton: LoopSkeleton, decision: RoutingDecision) {
|
||||
self.skeleton = Some(skeleton);
|
||||
self.decision = Some(decision);
|
||||
}
|
||||
@ -304,8 +300,10 @@ mod tests {
|
||||
let mut ctx = make_simple_context(&condition, &body);
|
||||
|
||||
// Set canonicalizer result with fail-fast decision
|
||||
let decision =
|
||||
RoutingDecision::fail_fast(vec![CapabilityTag::ConstStep], "Test fail-fast".to_string());
|
||||
let decision = RoutingDecision::fail_fast(
|
||||
vec![CapabilityTag::ConstStep],
|
||||
"Test fail-fast".to_string(),
|
||||
);
|
||||
ctx.set_canonicalizer_result(
|
||||
LoopSkeleton {
|
||||
steps: vec![],
|
||||
|
||||
Reference in New Issue
Block a user