docs(joinir): Phase 180 completion - Trim/P5 submodule refactoring
Phase 180-5: Update documentation and finalize Changes: - joinir-architecture-overview.md: Added TrimLoopLowerer section - phase180-trim-module-design.md: Pattern4 analysis and timeline update - CURRENT_TASK.md: Added Phase 180 completion entry Summary: - Task 180-1: Design document ✅ - Task 180-2: TrimLoopLowerer skeleton ✅ - Task 180-3: Pattern2 refactoring ✅ (-135 lines) - Task 180-4: Pattern4 analysis (skipped - detection only) - Task 180-5: Documentation update ✅ Impact: - Pattern2: 510 → 375 lines (-26%) - TrimLoopLowerer: 404 lines (new dedicated module) - Code organization: Single responsibility, high reusability - Behavior: 100% preserved, refactoring only - Build: SUCCESS (0 errors)
This commit is contained in:
@ -98,6 +98,22 @@ JoinIR ラインで守るべきルールを先に書いておくよ:
|
||||
- Pattern 1-4 の共通データ(loop_var_name, loop_var_id, carrier_info, loop_scope)を提供。
|
||||
- Pattern 2/4 専用データ(condition_env, carrier_updates, trim_helper)は Option<T> で保持。
|
||||
- **Analyzer-only dependencies**: 解析ロジックのみ依存、JoinIR emission ロジックは含まない。
|
||||
|
||||
- **TrimLoopLowerer (P5 Dedicated Module)** (Phase 180)
|
||||
- ファイル: `src/mir/builder/control_flow/joinir/patterns/trim_loop_lowering.rs`
|
||||
- 責務:
|
||||
- Trim/CharComparison (Pattern 5) 専用の lowering ロジックを一箇所に集約。
|
||||
- Pattern2/4 から呼ばれ、LoopBodyLocal 変数を carrier に昇格し、Trim パターンの break 条件を置き換える。
|
||||
- TrimPatternValidator/TrimPatternLowerer を内部で利用し、carrier 初期化コード生成・条件式置換を実行。
|
||||
- 入力:
|
||||
- MirBuilder, LoopScopeShape, loop_cond, break_cond, body, loop_var_name, carrier_info, alloc_join_value
|
||||
- 出力:
|
||||
- `Some(TrimLoweringResult)`: Trim パターン検出・lowering 成功時(置換後条件、更新 carrier_info、condition_bindings)
|
||||
- `None`: Trim パターンでない場合(通常ループ処理に戻る)
|
||||
- `Err`: Trim パターン検出したが lowering 失敗時
|
||||
- 使用元:
|
||||
- Pattern2 (pattern2_with_break.rs): Trim/P5 ロジックを完全委譲(~160 行削減)
|
||||
- Pattern4 (pattern4_with_continue.rs): 将来の Phase 172+ で Trim lowering 実装時に利用予定
|
||||
- デザイン原則:
|
||||
- Pure analysis container(前処理結果のみ保持、emission なし)
|
||||
- Pattern-specific variants(Option<T> でパターン固有データ管理)
|
||||
|
||||
Reference in New Issue
Block a user