docs(joinir): Phase 222-5 documentation updates
Phase 222: If Condition Normalization - Part 5 (Documentation)
Updates:
1. joinir-architecture-overview.md:
- Section 2.2 ConditionPatternBox: Added Phase 222 normalization features
* normalize_comparison() for left-right flip (0 < i → i > 0)
* var CmpOp var support (i > j)
- Section 4.3 JsonParser constraints:
* Marked Phase 221 'if condition pattern' constraint as RESOLVED ✅
* Added Phase 222 resolution summary with test reference
2. CURRENT_TASK.md:
- Added Phase 222 completion summary (4 lines)
- ConditionPatternBox extension, if-sum integration, test results
- Phase 221 constraint resolution
Phase 222 Complete Summary:
- ✅ Design document (phase222-if-cond-normalization.md)
- ✅ Implementation (condition_pattern.rs +160 lines, 9 tests)
- ✅ Integration (pattern_pipeline.rs, loop_with_if_phi_if_sum.rs)
- ✅ E2E test (phase222_if_cond_left_literal_min.hako → RC=2)
- ✅ Documentation (architecture overview + CURRENT_TASK)
Status: Phase 222 完了 🎉
This commit is contained in:
@ -283,15 +283,18 @@ Local Region (1000+):
|
||||
- 条件式の各変数を LoopParam / OuterLocal / LoopBodyLocal に分類。
|
||||
- 関数パラメータ誤分類バグは `condition_var_analyzer.rs` の修正で解消済み(OuterLocal として扱う)。
|
||||
|
||||
- **ConditionPatternBox(Phase 219-fix 実装済み)**
|
||||
- **ConditionPatternBox(Phase 219-fix / Phase 222 拡張完了)**
|
||||
- ファイル: `src/mir/join_ir/lowering/condition_pattern.rs`
|
||||
- 責務:
|
||||
- if 条件の複雑度を判定(SimpleComparison vs Complex)。
|
||||
- `is_simple_comparison(cond)` で `var CmpOp literal` パターンのみ true。
|
||||
- **Phase 222**: 条件を正規化(var on left の canonical form)。
|
||||
- `normalize_comparison()` で左右反転をサポート:
|
||||
- `0 < i` → `i > 0` (literal < var → var > literal)
|
||||
- `i > j` (var CmpOp var) - そのまま受理
|
||||
- 複雑条件(`i % 2 == 1`、MethodCall 等)は false を返し、legacy P3 経路へルーティング。
|
||||
- 使用箇所:
|
||||
- PatternPipelineContext.is_if_sum_pattern() で条件複雑度をチェック。
|
||||
- P3 if-sum mode は単純条件のみ受理、複雑条件は PoC lowerer へフォールバック。
|
||||
- P3 if-sum mode は単純比較のみ受理、複雑条件は PoC lowerer へフォールバック。
|
||||
|
||||
- **LoopBodyCarrierPromoter(Phase 171-C-2 実装済み)**
|
||||
- ファイル: `src/mir/loop_pattern_detection/loop_body_carrier_promoter.rs`
|
||||
@ -638,7 +641,13 @@ Phase 210–221 で「数値ループ+if-sum」を実戦投入し、JoinIR イ
|
||||
- **Phase 221 制約発見** (2025-12-09):
|
||||
- ⚠️ **LoopBodyLocal in condition**: break/continue 条件で loop-body-local 変数を使用(Pattern 5+ 必要)
|
||||
- ⚠️ **MethodCall whitelist**: body-local init で `substring` 未対応(Phase 193: indexOf/get/toString のみ)
|
||||
- ⚠️ **if condition pattern**: if-sum mode は `var CmpOp literal` のみ(`i > 0` は OK、`0 < i` や `i > j` は NG)
|
||||
- ~~⚠️ **if condition pattern**: if-sum mode は `var CmpOp literal` のみ(`i > 0` は OK、`0 < i` や `i > j` は NG)~~ → **Phase 222 で解決済み✅**
|
||||
|
||||
- **Phase 222 解決済み制約** (2025-12-10):
|
||||
- ✅ **if condition pattern**: ConditionPatternBox 正規化で左リテラル・変数同士の比較をサポート
|
||||
- `0 < i`, `len > i` → `i > 0`, `i < len` に正規化
|
||||
- `i > j` (var CmpOp var) - 直接サポート
|
||||
- テスト: phase222_if_cond_left_literal_min.hako → RC=2 達成
|
||||
|
||||
- **残りループ** (Phase 222+ で段階的対応予定):
|
||||
- `_parse_array`, `_parse_object` (MethodCall 複数)
|
||||
|
||||
Reference in New Issue
Block a user