refactor: MIR Builder Phase 1 - モジュール分割準備完了

【Phase 1完了内容】
- src/mir/builder/ ディレクトリ構造作成
- MirBuilder コア機能を core.rs に分離(8関数実装済み)
- 責務別モジュール準備(expressions/statements/control_flow/box_handlers)
- ビルド確認: 新構造でコンパイル正常完了

【技術詳細】
- MirBuilder本体 + emit_instruction/emit_type_check等コア機能
- プレースホルダー実装でビルド安全性確保
- CURRENT_TASK.md更新(Phase 1完了状況記録)
- 49関数/1547行の段階的分割準備

【次のPhase】
- Phase 2: 実際の関数移動(expressions.rs最優先)
- 慎重アプローチ: デッドコード削除は後回し

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-08-25 17:49:21 +09:00
parent 36cfa6bf60
commit cff58dbc0a
7 changed files with 374 additions and 2 deletions

View File

@ -1,7 +1,88 @@
# 🎯 CURRENT TASK - 2025年8月23日(刷新
# 🎯 CURRENT TASK - 2025年8月25日(状況整理
## 🚨 現在の状況2025-08-25
1. **✅ MIRビルダーリファクタリング Phase 1完了🔧**
- mir/builder.rs: 1547行の大規模モジュール → **モジュール分割準備完了**
- 新構造: `src/mir/builder/` ディレクトリ作成
- `mod.rs`: 公開API定義
- `core.rs`: MirBuilder本体 + コア機能 (8関数実装済み)
- `expressions.rs`: 式変換処理 (プレースホルダー)
- `statements.rs`: 文変換処理 (プレースホルダー)
- `control_flow.rs`: 制御フロー構築 (プレースホルダー)
- `box_handlers.rs`: Box関連処理 (プレースホルダー)
- **ビルド確認**: 新構造でコンパイル正常完了 ✅
- 責務分離の準備: AST→MIR変換、SSA構築、最適化ヒント、型推論
- nekocodeでの分析結果: MirBuilder構造体のみ検出メソッドの登録に問題
### 🎯 次のリファクタリング計画
**MIRビルダーの分割案40関数を機能別に分類**:
1. **`mir/builder/core.rs`**: MirBuilder本体とコア機能8関数
- `new()`, `emit_instruction()`, `ensure_block_exists()`, `start_new_block()`
- `emit_type_check()`, `emit_cast()`, `emit_weak_new()`, `emit_weak_load()`
- `emit_barrier_read()`, `emit_barrier_write()`
2. **`mir/builder/expressions.rs`**: 式の変換処理11関数
- `build_expression()`, `build_literal()`, `build_binary_op()`, `build_unary_op()`
- `build_variable_access()`, `build_function_call()`, `build_field_access()`
- `build_me_expression()`, `build_method_call()`, `build_from_expression()`
- `build_await_expression()`
3. **`mir/builder/statements.rs`**: 文の変換処理9関数
- `build_module()`, `build_block()`, `build_assignment()`, `build_field_assignment()`
- `build_print_statement()`, `build_local_statement()`, `build_return_statement()`
- `build_throw_statement()`, `build_nowait_statement()`
4. **`mir/builder/control_flow.rs`**: 制御フロー構築3関数
- `build_if_statement()`, `build_loop_statement()`, `build_try_catch_statement()`
5. **`mir/builder/box_handlers.rs`**: Box関連の特殊処理3関数
- `build_new_expression()`, `build_box_declaration()`, `build_static_main_box()`
### 📊 分析結果
- **最も大きい関数**: `build_method_call()` (157行)
- **複雑度が高い関数**: `build_expression()` (183行のmatch文)
- **特に分離すべき部分**: 式ビルダー全体の27.5%
### 🔧 実装計画
1. **✅ Phase 1完了**: モジュール構造の作成
-`mir/builder/`ディレクトリ作成
-`mod.rs`で公開APIを定義
- ✅ 各サブモジュールファイルを作成
- ✅ ビルド確認: 新構造でコンパイル成功
2. **Phase 2 (次回)**: 段階的な関数移動
- まずcore.rsに基本機能を移動
- 次にexpressions.rsに式処理を移動
- 依存関係を調整しながら進める
3. **Phase 3**: テストとビルド確認
- 各段階でビルドが通ることを確認
- 既存のMIRテストが動作することを確認
### ⚠️ リファクタリング時の注意点
- `pub(super)`の可視性に注意(モジュール間で調整が必要)
- `self`参照が多いため、トレイトの導入も検討
- SSA構築に関わる`variable_map`等の共有状態に注意
- **nekocodeの精度について**: 60%信頼度は誤検出が多いため参考程度に
- 外部ツールcargo clippy等が使えない環境では精度が低下
- 実際に使われている関数も未使用と判定される可能性高い
2. **VMの既知の問題**
- 論理演算子and, orがBinOpとして未実装
- エラー: `Type error: Unsupported binary operation: And on Bool(true) and Bool(false)`
- インタープリターでは動作するがVMで動作しない
- **新発見**: BoxRef(IntegerBox) + BoxRef(IntegerBox)のような演算も未対応
- execute_binary_opにBoxRef同士の演算ケースが不足
## ✅ 直近の完了
1. ドキュメント再編成の完了(構造刷新
1. VMモジュールのリファクタリング完了2025-08-25
- execute_instruction関数を29個のハンドラーに分割
- vm_instructions.rsモジュール作成487行
- execute_instruction_old削除691行削減
- vm.rs: 2075行→1382行33%削減)
2. ドキュメント再編成の完了(構造刷新)
2. VM×プラグインのE2E整備FileBox/Net
- FileBox: open/write/read, copyFrom(handle)VM
- Net: GET/POSTVM、404/500Ok(Response)、unreachableErr(ErrorBox)