|
|
96a17c616d
|
refactor(builder): Boxification Phase 2 - CalleeResolverBox実装完了
箱理論の実践:Callee解決ロジックを独立した箱に集約
- 単一責務:CallTarget → Callee の型安全な解決のみ
- 状態最小:型情報参照のみ保持(変更なし)
- ピュア関数的:入力→解決・検証→出力
実装内容:
1. 新規ファイル作成
- src/mir/builder/calls/resolver.rs
- CalleeResolverBox構造体(~300行、テスト含む)
- 3つの主要メソッド:resolve/classify_box_kind/validate_args
2. 既存関数の移動・統合
- call_unified::convert_target_to_callee → CalleeResolverBox::resolve
- call_unified::classify_box_kind → CalleeResolverBox::classify_box_kind
- call_unified::validate_call_args → CalleeResolverBox::validate_args
3. emit.rs更新
- CalleeResolverBoxを使用するように変更
- 2箇所でインスタンス化(resolve用、validate用)
4. call_unified.rs整理
- 旧関数をDEPRECATEDコメントに置き換え(参照用に残す)
- ~150行削減
5. テスト完備
- 5つのユニットテスト(all passed ✅)
- 既存テスト互換性維持(guard tests, mir_stageb tests passed)
箱化効果:
- 責務分離:Callee解決ロジックが独立したモジュールに
- 再利用性:CalleeResolverBoxは他のコンテキストでも使用可能
- テスト容易性:モックや型情報を簡単に注入できる設計
- 保守性向上:変更箇所が明確(resolver.rs のみ)
Phase 25.1d 進捗:
- Phase 1: CalleeGuardBox ✅ 完了
- Phase 2: CalleeResolverBox ✅ 完了(本コミット)
- 次候補: 統合的boxification(オプショナル)
ビルド・テスト:
- cargo build --release: ✅ 成功
- guard tests (3): ✅ all passed
- resolver tests (5): ✅ all passed
- mir_stageb tests (5/6): ✅ passed(1つは既存のusing問題)
|
2025-11-17 23:35:04 +09:00 |
|