Phase 27.9 で join_ir.rs (~1,336行) を以下のモジュール構造に分離:
## 新規ディレクトリ構造:
```
src/mir/join_ir/
├── mod.rs # 型定義・共通ユーティリティ (~330行)
└── lowering/
├── mod.rs # lowering インターフェース
├── min_loop.rs # lower_min_loop_to_joinir (~140行)
├── skip_ws.rs # skip_ws lowering 3関数 (~390行)
└── funcscanner_trim.rs # trim lowering (~480行)
```
## 技術的変更:
- **型定義統一**: JoinFuncId, JoinInst, JoinModule 等を mod.rs に集約
- **lowering 分離**: 3つの lowering 関数を個別モジュールに移動
- **後方互換性**: pub use で lowering 関数を re-export(既存コード影響なし)
- **削除**: src/mir/join_ir.rs (旧単一ファイル)
## テスト結果:
- **385 passed** (+1 from 384)
- **9 failed** (-1 from 10)
- **ビルド成功**: 0 errors, 18 warnings (変化なし)
## 効果:
- **保守性向上**: 1,336行 → 4ファイル(各300-500行)で可読性向上
- **モジュール境界明確化**: 型定義 vs lowering 実装の責務分離
- **将来の拡張容易**: 新 lowering 関数追加が簡単に
Phase 27.8 で実装した MIR 自動解析 lowering の基盤整備完了。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
JSON v0 Bridge
- 役割: Stage‑B / self‑host 側で生成した
Program(JSON v0)を、Rust 側のLoopFormBuilder + LoopSnapshotMergeBoxに渡して MIR を生成する薄いフロント。 - 責務:
- JSON を
ProgramV0にデシリアライズし、lower_stmt_with_vars/loop_.rsなどへ流す。 - ループについては
LoopFormJsonOpsを介して preheader/header/body/latch/continue_merge/exit のブロック ID とスナップショットを用意し、PHI 構築は LoopForm 側に委譲する。 - break / continue / exit の snapshot を
LoopSnapshotMergeBoxに渡して canonical continue_merge/backedge を構築する。
- JSON を
LoopForm/PHI の意味論を変更したい場合は、loopform_builder.rs / loop_snapshot_merge.rs を更新すること。loop_.rs 内での ad-hoc な PHI 実装は禁止。