feat(joinir): Phase 286 P3.2 - Pattern5 Plan line (loop(true) + early exit)
- Pattern5InfiniteEarlyExitPlan (Return/Break variants)
- extract_pattern5_plan() for loop(true) literal only
- normalize_pattern5_return(): 5 blocks CFG (header→body→found/step)
- normalize_pattern5_break(): 6 blocks CFG with carrier PHI
- NormalizationPlanBox exclusion for Pattern5-style loops
- Fixtures: phase286_pattern5_{return,break}_min.hako
- quick smoke 154/154 PASS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -59,13 +59,12 @@ Related:
|
||||
- 既存の `apps/tests/*.hako` fixture を再利用し、VM/LLVM parity のスモークが維持される。
|
||||
- weak の語彙(`weak <expr>` / `weak_to_strong()`)が同じ意味で動作する(cycleは当面リーク仕様でも可)。
|
||||
|
||||
- **Phase 286(planned, design-first): JoinIR Line Absorption(JoinIR→CorePlan/Frag 収束)**
|
||||
- **Phase 286(✅ complete): JoinIR Line Absorption(JoinIR→CorePlan/Frag 収束)**
|
||||
- 目的: 移行期間に残っている「2本の lowering(Plan line / JoinIR line)」を、構造で 1 本に収束させる
|
||||
- ねらい: `return/break/continue` のような “大きな出口語彙” の実装場所が揺れない状態にする
|
||||
- 入口: `docs/development/current/main/phases/phase-286/README.md`
|
||||
- P0(docs-only): `docs/development/current/main/phases/phase-286/P0-INSTRUCTIONS.md`
|
||||
- 状況: P2(Pattern4)/P2.1(Pattern1)/P2.2(hygiene)/P2.3(Pattern9)/P2.4.1(Pattern8 Plan完走)まで完了。現在は P2.6(Pattern3 Plan化)進行中。
|
||||
- 次の実装指示(Pattern3完走): `docs/development/current/main/phases/phase-286/P2.6.1-INSTRUCTIONS.md`
|
||||
- 状況: Pattern1–9 の主要ループ形が Plan/Frag SSOT に吸収され、quick gate は green を維持。
|
||||
- 将来の設計相談(Phase 286 の範囲外で、別フェーズでSSOT化してから): `docs/development/current/main/investigations/phase-286-plan-normalization-consult.md`
|
||||
- SSOT:
|
||||
- Plan/Frag: `compose::*` + `emit_frag()`(Phase 280/281)
|
||||
|
||||
Reference in New Issue
Block a user