feat(joinir): Phase 65-2-A StringBox メソッド型ヒント実装
Phase 65-2-A 完了:P3-A(StringBox メソッド)型ヒント実装 ## 実装内容 ### 1. type_inference.rs 新規作成 - `infer_method_return_type()`: StringBox/ArrayBox/MapBox メソッド型推論 - `infer_box_type()`: Box コンストラクタ型推論(Phase 65-2-B 用) - 8 テスト全て PASS ### 2. JoinInst::MethodCall に type_hint 追加 - `src/mir/join_ir/mod.rs`: `type_hint: Option<MirType>` フィールド追加 - 段階的拡大のため Optional 設計(既存コード破壊なし) ### 3. read_quoted.rs で型ヒント設定 - substring() → String(4箇所) - length() → Integer(1箇所) - read_quoted 系関数で完全な型ヒント供給 ### 4. 汎用経路は None で後方互換性維持 - expr.rs: 汎用 MethodCall は `type_hint: None` - convert.rs: 型ヒント追加(Phase 65-3 で活用予定) - json.rs: JSON シリアライズ対応 ## テスト結果 - ✅ type_inference モジュール: 8/8 PASS - ✅ ビルド: 0 エラー ## 次のステップ - Phase 65-2-B: Box コンストラクタ型ヒント実装 --- 🌟 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -295,13 +295,14 @@
|
||||
- conservative.rs: ConservativeMerge::analyze が phi_merge.rs/phi.rs から使用中
|
||||
- Phase 43 推奨: NestedIfMerge 適用範囲拡大 → phi_merge.rs JoinIR 移行
|
||||
- docs: `docs/private/roadmap2/phases/phase-42-if-phi-level3-removal/README.md`
|
||||
- **Phase 43+: If 側 PHI 本体削除**
|
||||
- if_phi.rs / conservative.rs の残存関数は全て parse_loop 以外からも呼ばれている
|
||||
- 他の関数(print_tokens 等)も JoinIR 経路に乗せてから本体削除
|
||||
- **Phase 61-7+: If PHI 大型統合(P2 候補)**
|
||||
- `compute_modified_names_if`: 変更変数検出を JoinIR の modified 変数集合解析に統合(~75行)
|
||||
- `get_conservative_if_values`: incoming 値解決を PhiSpec に移行、void fallback 削除(~70行)
|
||||
- 期待削減: 合計 145行
|
||||
- **Phase 65: P3-A/B 型ヒント実装(Method/Box 最小対応)**
|
||||
- P3-A: StringBox メソッド(substring/length 等)の戻り値型に JoinIR type_hint を付与
|
||||
- P3-B: Box コンストラクタ(new ArrayBox/new MapBox 等)に JoinIR type_hint を付与
|
||||
- lifecycle.rs の `is_type_hint_target()` に P3-A/B を追加し、P1/P2 と同じ経路に乗せる
|
||||
- 代表ケースベースでは削除条件 5/5 達成 → infer_type_from_phi は P3-C(ジェネリック型)向けフォールバックのみ残す
|
||||
- **Phase 66+: P3-C / If PHI 本体削除**
|
||||
- ArrayBox.get などジェネリック型の扱いを別フェーズで設計(必要なら型システム拡張)
|
||||
- P3-C まで JoinIR 型ヒント化が完了した段階で infer_type_from_phi 本体削除と if_phi.rs の大掃除に入る
|
||||
- **Classifier Trio**
|
||||
- LoopVarClassBox / LoopExitLivenessBox / LocalScopeInspectorBox を LoopScopeShape に吸収し、JoinIR lowering / LoopForm 側から直接 LoopScopeShape を見る構造に整理。
|
||||
- **Mir 決定性(小フェーズ予定)**
|
||||
|
||||
Reference in New Issue
Block a user