## 変更内容 ### src/mir/phi_core/mod.rs - Trio Legacy Boxes (3箱) の削除方針をコメント追加 - LoopVarClassBox (578行) - LoopExitLivenessBox (414行) - LocalScopeInspectorBox (361行) - 外部依存2箇所を明記: 1. loop_form_intake.rs (~30行) 2. loop_snapshot_merge.rs (~60行) - TODO(Phase 70) マーカー設置(削減見込み ~1,443行) ### docs/development/current/main/phase69-4-trio-deletion-plan.md - Phase 69-4 全体計画文書作成 - Phase 69-4.1: Trio callsite 棚卸し結果記録 ✅ - Phase 69-4.2: phi_core 公開面削減完了記録 ✅ - Phase 69-4.3-5: 未実施タスク整理 ⏳ ## Phase 69-4.2 達成内容 **達成**: - ✅ Trio 削除計画の明文化 - ✅ 外部依存箇所の記録 - ✅ Phase 70 削除条件の TODO 化 **未達成(Phase 70 で実施)**: - ❌ pub 公開除去(外部依存残存のため継続) - ❌ phi_core 内部化(LoopScopeShape 移行後に実現) ## 次のステップ Phase 69-4.3: json_v0_bridge の Trio 依存を LoopScopeShape に寄せる設計 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
8.2 KiB
Phase 69-4: Trio 3箱整理・削除プラン
目的: Trio Legacy Boxes (LoopVarClassBox, LoopExitLivenessBox, LocalScopeInspectorBox) の Phase 70 完全削除に向けた準備
方針: このフェーズは「Trio 3箱をいつ・どう消すかを完全に文章で固める」ところまで。実コード削除は Phase 70 で json_v0_bridge の置き換えとセットで実施。
Phase 69-4.1: Trio 残存 callsite の最終棚卸し ✅ 完了
実施日: 2025-11-30 実施方法: Task agent による全コードベース調査
📊 棚卸し結果サマリー
Trio 定義ファイル (1,353行):
src/mir/phi_core/loop_var_classifier.rs: 578行src/mir/phi_core/loop_exit_liveness.rs: 414行src/mir/phi_core/local_scope_inspector.rs: 361行
外部依存箇所 (2箇所):
-
src/mir/join_ir/lowering/loop_form_intake.rs (~30行)
- 3箱すべてを使用(変数分類・Exit後生存分析・定義位置追跡)
- LoopScopeShape への移行が必要
-
src/mir/phi_core/loop_snapshot_merge.rs (~60行)
- LocalScopeInspectorBox と LoopVarClassBox を使用
- Exit PHI 生成で使用中
内部依存 (隠蔽済み):
src/mir/join_ir/lowering/loop_scope_shape/builder.rsfrom_existing_boxes_legacy()メソッド内で使用- すでに phi_core 内部に隠蔽済み
合計削減見込み: ~1,443行
- 定義ファイル: 1,353行
- loop_form_intake.rs 使用箇所: ~30行
- loop_snapshot_merge.rs 使用箇所: ~60行
Phase 69-4.2: phi_core 側の公開面を絞る ✅ 完了
実施日: 2025-11-30
実施内容: src/mir/phi_core/mod.rs にドキュメント追加
📝 追加したドキュメント
Trio 公開面削減方針 (L17-40):
// Phase 69-4.2: Trio 公開面削減方針
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ⚠️ Trio Legacy Boxes (Phase 70 削除予定):
// - LocalScopeInspectorBox (361行) - 変数定義位置追跡(LoopScopeShapeで代替済み)
// - LoopVarClassBox (578行) - 変数分類(LoopScopeShapeで代替済み)
// - LoopExitLivenessBox (414行) - Exit後生存変数分析(LoopScopeShapeで代替済み)
//
// 現在の外部依存(Phase 69-4.1棚卸し済み):
// 1. src/mir/join_ir/lowering/loop_form_intake.rs (~30行) - LoopScopeShape移行待ち
// 2. src/mir/phi_core/loop_snapshot_merge.rs (~60行) - Exit PHI生成で使用中
//
// Phase 69-4.2 方針:
// - ✅ pub 公開継続(外部依存2箇所が残存)
// - 🎯 目標: phi_core 内部+テストのみが知る状態(現在達成できず)
// - 📋 Phase 70 実装時: json_v0_bridge 移行後に完全削除
//
// TODO(Phase 70): json_v0_bridge の LoopScopeShape 移行完了後、以下を削除:
// - pub mod local_scope_inspector; (361行)
// - pub mod loop_var_classifier; (578行)
// - pub mod loop_exit_liveness; (414行)
// - loop_snapshot_merge.rs 内の Trio 使用箇所 (~60行)
// - loop_form_intake.rs 内の Trio 使用箇所 (~30行)
// 合計削減見込み: ~1,443行
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
loop_exit_liveness への追加マーカー (L64-66):
// ⚠️ Phase 69-4.2: Trio Legacy Box (Phase 70 削除予定)
// - 現在の外部依存: loop_form_intake.rs が使用中
// - TODO(Phase 70): LoopScopeShape 移行後に削除
🎯 現状認識
達成できた点:
- ✅ Trio 3箱の削除計画をコード内に明文化
- ✅ 外部依存2箇所を明記
- ✅ Phase 70 削除条件を TODO として記録
達成できなかった点:
- ❌ pub 公開の除去(外部依存が残存するため継続)
- ❌ 「phi_core 内部+テストのみが知る」状態(Phase 70 で達成)
結論: Phase 69-4.2 の目標「方針の明文化」は達成。pub 除去は Phase 70 で実施。
Phase 69-4.3: json_v0_bridge の Trio 依存設計 ⏳ 未実施
目標: loop_form_intake.rs の Trio 依存を LoopScopeShape に置き換える設計を固める
現在の Trio 使用パターン (loop_form_intake.rs L169-182):
// 現在: Trio を直接使用
let mut inspector = LocalScopeInspectorBox::new();
inspector.record_snapshot(loop_form.header, &header_vals_mir);
for (bb, snap) in &loop_form.break_snapshots { ... }
for (bb, snap) in &loop_form.continue_snapshots { ... }
let mut var_classes = LoopVarClassBox::new();
let mut liveness = LoopExitLivenessBox::new();
liveness.analyze_exit_usage(&loop_form.exit_checks, &loop_form.exit_snapshots);
let classified = var_classes.classify_all(
&loop_form.pinned_vars,
&loop_form.carrier_vars,
&inspector,
&exit_preds_set
);
移行案 (Task agent 提案):
// 移行後: LoopScopeShape を使用
let scope_shape = LoopScopeShape::from_loop_form(loop_form, intake, query)?;
let ordered_pinned = scope_shape.pinned;
let ordered_carriers = scope_shape.carriers;
// 必要な情報はすべて LoopScopeShape から取得
設計方針:
- LoopScopeShape が Trio の機能を完全にカバーしていることを確認
- loop_form_intake.rs の Trio 使用箇所を LoopScopeShape 経由に書き換え
- loop_snapshot_merge.rs の Exit PHI 生成も LoopScopeShape 経由に移行
Phase 69-4.4: Trio 削除条件を固定 ⏳ 未実施
削除条件:
- ✅ LoopScopeShape が Trio 機能を完全にカバー(Phase 48-4 達成済み)
- ⏳ loop_form_intake.rs が LoopScopeShape 経由に移行
- ⏳ loop_snapshot_merge.rs が LoopScopeShape 経由に移行
- ⏳ 上記2箇所の移行テスト完了(既存テスト退行なし)
削除手順 (Phase 70):
- loop_form_intake.rs の Trio 使用箇所を LoopScopeShape に置き換え (~30行削減)
- loop_snapshot_merge.rs の Trio 使用箇所を LoopScopeShape に置き換え (~60行削減)
- 既存テスト実行(14 loopform tests + 関連テスト)
- Trio 3箱定義ファイル削除 (1,353行削減)
- phi_core/mod.rs から pub mod 削除
- 最終テスト実行・リグレッション確認
合計削減: ~1,443行
Phase 69-4.5: Phase 70 への橋渡し ⏳ 未実施
Phase 70 実装タスク:
Step 1: loop_form_intake.rs 移行
- LoopScopeShape::from_loop_form() の実装確認
- Trio 使用箇所 (L169-182) を LoopScopeShape 経由に書き換え
- テスト実行(loopform 14テスト)
Step 2: loop_snapshot_merge.rs 移行
- merge_exit_with_classification() を LoopScopeShape 経由に書き換え
- Exit PHI 生成ロジックの移行
- テスト実行(loopform 14テスト + Exit PHI テスト)
Step 3: Trio 完全削除
- loop_var_classifier.rs 削除 (578行)
- loop_exit_liveness.rs 削除 (414行)
- local_scope_inspector.rs 削除 (361行)
- phi_core/mod.rs から pub mod 削除
- 最終テスト実行
Step 4: ドキュメント更新
- CURRENT_TASK.md 更新(Phase 70 完了記録)
- コミットメッセージ作成(削減行数・移行内容)
まとめ
Phase 69-4 達成状況
| タスク | 状態 | 成果 |
|---|---|---|
| 69-4.1: Trio callsite 棚卸し | ✅ 完了 | 1,443行削減計画確定 |
| 69-4.2: phi_core 公開面削減 | ✅ 完了 | 削除方針・TODO 明文化 |
| 69-4.3: json_v0_bridge 設計 | ⏳ 未実施 | LoopScopeShape 移行設計 |
| 69-4.4: 削除条件固定 | ⏳ 未実施 | 削除手順・テスト計画 |
| 69-4.5: Phase 70 橋渡し | ⏳ 未実施 | 実装タスク整理 |
Phase 70 への引き継ぎ事項
確定済み:
- ✅ Trio 削減見込み: ~1,443行
- ✅ 外部依存: 2箇所(loop_form_intake.rs, loop_snapshot_merge.rs)
- ✅ 削除方針: LoopScopeShape 移行後に完全削除
- ✅ ドキュメント: phi_core/mod.rs に TODO(Phase 70) マーカー設置
未確定:
- ⏳ json_v0_bridge の具体的な移行実装
- ⏳ テスト戦略(退行防止)
- ⏳ 削除順序の最終確定
Phase 70 開始条件: Phase 69-4.3 ~ 69-4.5 完了後