feat(joinir): Phase 34-6 MethodCall 構造と本物の substring 意味論
**Phase 34-6 実装完了**: MethodCall 構造を JoinIR に追加し、本物の substring
呼び出しを通すことに成功。
## 主要変更
### 1. MethodCall 構造追加 (34-6.1)
- `src/mir/join_ir/mod.rs`: JoinInst::MethodCall バリアント (+8 lines)
- 構造: `{ dst, receiver, method, args }`
- 設計原則: JoinIR は構造のみ、意味論は MIR レベル
### 2. extract_value 更新 (34-6.2)
- `src/mir/join_ir/frontend/ast_lowerer.rs`: Method 処理本物化 (+37 lines)
- receiver/args を extract_value で再帰処理
- ダミー Const(0) 削除 → 本物の MethodCall 生成
- cond 処理修正: ValueId(0) ハードコード → extract_value で取得
### 3. JoinIR→MIR 変換実装 (34-6.3)
- `src/mir/join_ir_vm_bridge.rs`: MethodCall → BoxCall 変換 (+12 lines)
- `src/mir/join_ir/json.rs`: MethodCall JSON シリアライゼーション (+16 lines)
- `src/mir/join_ir_runner.rs`: MethodCall 未対応エラー (+7 lines)
### 4. テスト更新 (34-6.4)
- `docs/.../fixtures/json_shape_read_value.program.json`: 本物の substring 構造
- `src/tests/joinir_frontend_if_select.rs`: run_joinir_via_vm 使用
- テスト成功: v="hello", at=3 → "hel" ✅
## 成果
- ✅ テスト全通過(1 passed; 0 failed)
- ✅ 設計原則確立: JoinIR = 構造 SSOT、意味論 = MIR レベル
- ✅ Phase 33-10 原則との整合性: Method でも同じ原則適用
**ドキュメント更新**: CURRENT_TASK.md + TASKS.md(Phase 34-6 完了記録)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
16
CLAUDE.md
16
CLAUDE.md
@ -55,6 +55,22 @@ done
|
||||
- **解決**: `BTreeSet`/`BTreeMap`で決定的イテレーション保証
|
||||
- **残課題**: `variable_map: HashMap<String, ValueId>` (builder.rs等)
|
||||
|
||||
### 🎊 **Phase 33-10完了!JoinIR If Lowering箱化モジュール化達成** (2025-11-27)
|
||||
- **✅ 箱化モジュール化完了**: if_dry_runner.rs作成(176行)、vm.rs 83行→9行(89%削減)
|
||||
- **✅ PHI guard実装**: 早期PHIチェック(パターンマッチング前)でJoinIR設計原則確立
|
||||
- **✅ Local pattern対応**: Const命令許容(実用MIR完全対応)
|
||||
- **✅ 設計原則確立**: JoinIR = PHI生成器(SSOT)、PHI変換器ではない
|
||||
- **テスト結果**:
|
||||
- Simple pattern: ✅ Lowered=1 (100%) - 後方互換性維持
|
||||
- Local pattern: ✅ Lowered=0 (0%) with "PHI already exists, skipping" - 設計原則動作
|
||||
- **修正ファイル**:
|
||||
- `if_dry_runner.rs`: 新規作成(+176行)
|
||||
- `if_select.rs`: PHI guard追加(+50行)
|
||||
- `vm.rs`: 箱化で大幅削減(-74行)
|
||||
- `if_joinir_design.md`: Section 13追加(+113行)
|
||||
- **Phase 33完了判定基準**: ✅ 達成(Simple pattern動作、箱化完成、設計原則確立)
|
||||
- **次のステップ**: Phase 34移行 or IfMerge実装継続
|
||||
|
||||
### 🎉 **Phase 25 MVP 完全成功!** (2025-11-15)
|
||||
- **numeric_core BoxCall→Call変換** 完全動作!
|
||||
- **2つの重大バグ修正**:
|
||||
|
||||
Reference in New Issue
Block a user