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問題)
This commit is contained in:
nyash-codex
2025-11-17 23:35:04 +09:00
parent e67c8dc8d5
commit 96a17c616d
4 changed files with 359 additions and 167 deletions

View File

@ -19,9 +19,10 @@ pub mod special_handlers;
// New refactored modules (Box Theory Phase 1 & 2 & 25.1d)
pub mod lowering;
pub mod utils;
pub mod emit; // Phase 2: Call emission
pub mod build; // Phase 2: Call building
pub mod guard; // Phase 25.1d: Structural guard (static/runtime box separation)
pub mod emit; // Phase 2: Call emission
pub mod build; // Phase 2: Call building
pub mod guard; // Phase 25.1d: Structural guard (static/runtime box separation)
pub mod resolver; // Phase 25.1d: Callee resolution (CallTarget → Callee)
// Re-export public interfaces
pub use call_target::CallTarget;