refactor(mir): Phase 25.1o - do_break/continue 共通化(LoopExitKind型統一)
【変更内容】 1. LoopExitKind enum定義 - Break / Continue の型安全な区別 2. do_loop_exit() 共通メソッド作成(47行) - スナップショット取得(共通処理) - kind別のスナップショット保存 - kind別のジャンプターゲット - unreachable ブロック切り替え(共通処理) 3. do_break/continue をthin wrapperに変換 - do_break: 13行 → 4行 - do_continue: 12行 → 4行 - 合計21行削減 【効果】 - 構造改善: break/continue の共通ロジック一箇所に集約 - 保守性向上: デバッグログなどの共通処理が統一管理 - 拡張性向上: labeled break/continue等の将来拡張が容易 【検証結果】 - ビルド成功(警告なし) - mir_stageb_loop_break_continue_verifies: PASS - /tmp/loop_continue_fixed.hako: RC=3(期待通り) 関連: Phase 25.1m (continue PHI修正), Phase 25.1n (レガシー削除)
This commit is contained in:
@ -10,8 +10,8 @@ use crate::mir::{MirCompiler, MirVerifier};
|
||||
|
||||
#[test]
|
||||
fn test_loopform_exit_phi_single_break() {
|
||||
// Enable LoopForm PHI v2 and MIR verification
|
||||
std::env::set_var("NYASH_LOOPFORM_PHI_V2", "1");
|
||||
// LoopForm PHI v2 はデフォルト実装(フラグ不要)
|
||||
// Enable MIR verification and debug traces
|
||||
std::env::set_var("NYASH_VM_VERIFY_MIR", "1");
|
||||
std::env::set_var("NYASH_LOOPFORM_DEBUG", "1");
|
||||
std::env::set_var("NYASH_PARSER_STAGE3", "1");
|
||||
@ -70,7 +70,7 @@ static box TestExitPhi {
|
||||
|
||||
#[test]
|
||||
fn test_loopform_exit_phi_multiple_breaks() {
|
||||
std::env::set_var("NYASH_LOOPFORM_PHI_V2", "1");
|
||||
// LoopForm PHI v2 はデフォルト実装(フラグ不要)
|
||||
std::env::set_var("NYASH_VM_VERIFY_MIR", "1");
|
||||
std::env::set_var("NYASH_LOOPFORM_DEBUG", "1");
|
||||
std::env::set_var("NYASH_PARSER_STAGE3", "1");
|
||||
@ -108,7 +108,7 @@ static box TestMultiBreak {
|
||||
|
||||
#[test]
|
||||
fn test_loopform_exit_phi_nested_if_break() {
|
||||
std::env::set_var("NYASH_LOOPFORM_PHI_V2", "1");
|
||||
// LoopForm PHI v2 はデフォルト実装(フラグ不要)
|
||||
std::env::set_var("NYASH_VM_VERIFY_MIR", "1");
|
||||
std::env::set_var("NYASH_LOOPFORM_DEBUG", "1");
|
||||
std::env::set_var("NYASH_PARSER_STAGE3", "1");
|
||||
@ -151,7 +151,7 @@ static box TestNestedBreak {
|
||||
|
||||
#[test]
|
||||
fn test_loopform_exit_phi_multiple_vars() {
|
||||
std::env::set_var("NYASH_LOOPFORM_PHI_V2", "1");
|
||||
// LoopForm PHI v2 はデフォルト実装(フラグ不要)
|
||||
std::env::set_var("NYASH_VM_VERIFY_MIR", "1");
|
||||
std::env::set_var("NYASH_LOOPFORM_DEBUG", "1");
|
||||
std::env::set_var("NYASH_PARSER_STAGE3", "1");
|
||||
|
||||
Reference in New Issue
Block a user