feat(phi): Phase 27.5 - JoinIR Exit φ 統合(LoopExitShape 雛形)
LoopExitShape 構造体を追加し、Exit φ の意味を JoinIR 側に固定: - LoopExitShape 追加 (src/mir/join_ir.rs:84-111) - exit_args: Vec<ValueId> で Exit φ の意味を表現 - minimal (exit_args=[i]), trim (exit_args=[e], Option A) - #[allow(dead_code)] で Phase 27.6 まで設計専用 - Exit φ コメント追加 - lower_skip_ws_to_joinir: 2箇所の exit パスに意味明記 - lower_funcscanner_trim_to_joinir: Option A として意味明記 - テストコメント更新 - mir_joinir_skip_ws.rs: Exit φ (i の合流) 検証を明記 - mir_joinir_funcscanner_trim.rs: Exit φ (e の合流+substring) を明記 - ドキュメント更新 - IMPLEMENTATION_LOG.md: Phase 27.5 セクション追加 - TASKS.md: Phase 27.5 完了マーク ExitPhiBuilder は Phase 27.6 まで保留。本線影響ゼロ。
This commit is contained in:
@ -15,6 +15,11 @@
|
||||
// - NYASH_JOINIR_HEADER_EXP=1 を併用すると Header φ bypass が有効化される
|
||||
// - bypass 時は MIR に Header φ が生成されないが、このテストでは JoinIR のみ検証するため問題なし
|
||||
// - 将来的に JoinIR runner 実行を追加する際は、bypass モードでも正しく動作することを確認する
|
||||
//
|
||||
// Phase 27.5 対応:
|
||||
// - このテストは Header φ だけでなく、Exit φ(e の合流+substring(b, e) 呼び出し)も JoinIR で k_exit として表現できることを検証
|
||||
// - trim のループには2箇所の break パスがあり、どちらも substring(b, e) の結果を返す
|
||||
// - ExitShape Option A として設計: exit_args = [e] で、ループ内で substring(b, e) を計算済み
|
||||
|
||||
use crate::ast::ASTNode;
|
||||
use crate::mir::join_ir::*;
|
||||
|
||||
@ -15,6 +15,10 @@
|
||||
// - NYASH_JOINIR_HEADER_EXP=1 を併用すると Header φ bypass が有効化される
|
||||
// - bypass 時は MIR に Header φ が生成されないが、このテストでは JoinIR のみ検証するため問題なし
|
||||
// - 将来的に JoinIR runner 実行を追加する際は、bypass モードでも正しく動作することを確認する
|
||||
//
|
||||
// Phase 27.5 対応:
|
||||
// - このテストは Header φ だけでなく、Exit φ(i の合流)も JoinIR で k_exit(i) として表現できていることを検証
|
||||
// - skip_ws は2箇所の break パスがあり、どちらも i を返す → LoopExitShape::exit_args = [i]
|
||||
|
||||
use crate::ast::ASTNode;
|
||||
use crate::mir::join_ir::*;
|
||||
|
||||
Reference in New Issue
Block a user