feat(joinir): Phase 84-5 if_phi.rs レガシーフォールバック完全削除

Phase 84-4-B で Case D を 0件に削減完了したことにより、
if_phi.rs のレガシーフォールバックが完全に不要になったため削除。

主な変更:
- if_phi.rs 削除(339行)
- test_utils.rs 新規作成(テスト専用ユーティリティ分離、127行)
- lifecycle.rs: if_phi 呼び出し削除、Phase 84-5 安全ガード追加
- env.rs: phi_fallback_disabled() を常に true に変更
- テスト: A/B テスト → GenericTypeResolver 単独テストに変更

検証結果:
- Case D: 0件(完全解消継続)
- Tests: 498 passed(Phase 84-4: 497 から +1)

Phase 84 プロジェクト完全達成: 15件 → 0件(100%削減)
純削減: 220行

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-02 21:09:15 +09:00
parent 21505b8b41
commit 7dbe0a682c
12 changed files with 334 additions and 394 deletions

View File

@ -162,7 +162,7 @@ fn phase40_joinir_detects_local_declarations() {
];
// JoinIR経由メイン経路
let vars = crate::mir::phi_core::if_phi::collect_assigned_vars_via_joinir(&then_body, None);
let vars = crate::mir::phi_core::test_utils::collect_assigned_vars_via_joinir(&then_body, None);
// Verify JoinIR detects Local declarations
assert!(vars.contains("x"), "JoinIR should detect x declaration");
@ -210,7 +210,7 @@ fn phase40_joinir_nested_if_local() {
];
// JoinIR経由
let vars = crate::mir::phi_core::if_phi::collect_assigned_vars_via_joinir(&then_body, None);
let vars = crate::mir::phi_core::test_utils::collect_assigned_vars_via_joinir(&then_body, None);
// Verify: inner (nested in if) and outer (top-level) detected
assert!(

View File

@ -138,17 +138,12 @@ fn phase67_ab_test_resolve_from_phi_equivalence() {
types.insert(v2, MirType::Integer);
types.insert(v3, MirType::Integer);
// A/B テスト: 両方の経路で同じ結果を返すことを確認
let result_a = crate::mir::phi_core::if_phi::infer_type_from_phi(&f, v4, &types);
let result_b = GenericTypeResolver::resolve_from_phi(&f, v4, &types);
// Phase 84-5: if_phi.rs 削除後、GenericTypeResolver のみをテスト
let result = GenericTypeResolver::resolve_from_phi(&f, v4, &types);
assert_eq!(
result_a, result_b,
"A/B test: both routes should return the same type"
);
assert_eq!(
result_a,
result,
Some(MirType::Integer),
"Type should be inferred as Integer"
"GenericTypeResolver should infer Integer type from PHI"
);
}