diff --git a/src/tests/helpers/joinir_env.rs b/src/tests/helpers/joinir_env.rs index ce273faf..69538250 100644 --- a/src/tests/helpers/joinir_env.rs +++ b/src/tests/helpers/joinir_env.rs @@ -25,3 +25,14 @@ pub fn clear_joinir_flags() { pub fn is_experiment_enabled() -> bool { std::env::var("NYASH_JOINIR_EXPERIMENT").ok().as_deref() == Some("1") } + +/// Phase 72-B: HAKO_JOINIR_IF_SELECT SSOT ヘルパー +/// IfSelect/JoinIR If分岐選択モードをONにする +pub fn set_if_select_on() { + std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); +} + +/// IfSelect/JoinIR If分岐選択モードをOFFにする +pub fn set_if_select_off() { + std::env::remove_var("HAKO_JOINIR_IF_SELECT"); +} diff --git a/src/tests/mir_joinir_if_select.rs b/src/tests/mir_joinir_if_select.rs index 5af017c1..339d9ccb 100644 --- a/src/tests/mir_joinir_if_select.rs +++ b/src/tests/mir_joinir_if_select.rs @@ -7,6 +7,7 @@ mod tests { use crate::mir::join_ir::lowering::try_lower_if_to_joinir; use crate::mir::join_ir::JoinInst; use crate::mir::{BasicBlock, BasicBlockId, MirFunction, MirInstruction, MirModule, ValueId}; + use crate::tests::helpers::joinir_env; use std::collections::BTreeMap; use std::env; @@ -148,7 +149,7 @@ mod tests { clear_joinir_flags(); // ==== 1. Simple pattern (env ON) ==== - std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); + joinir_env::set_if_select_on(); let func = create_simple_pattern_mir(); let entry_block = func.entry_block; @@ -205,7 +206,7 @@ mod tests { // ==== 3. Disabled by default (env OFF) ==== set_core_off(); - std::env::remove_var("HAKO_JOINIR_IF_SELECT"); + joinir_env::set_if_select_off(); let func = create_simple_pattern_mir(); let entry_block = func.entry_block; @@ -219,7 +220,7 @@ mod tests { eprintln!("✅ If/Select lowering correctly disabled by default"); // ==== 4. Wrong function name (env ON) ==== - std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); + joinir_env::set_if_select_on(); let mut func = create_simple_pattern_mir(); func.signature.name = "WrongName.test/1".to_string(); @@ -545,7 +546,7 @@ mod tests { use crate::mir::join_ir::JoinInst; let _env = strict_if_env_guard(); - std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); + joinir_env::set_if_select_on(); let func = create_if_merge_simple_pattern_mir(); let entry_block = func.entry_block; @@ -578,7 +579,7 @@ mod tests { panic!("Expected JoinInst::IfMerge, got {:?}", result); } - std::env::remove_var("HAKO_JOINIR_IF_SELECT"); + joinir_env::set_if_select_off(); } /// Phase 33-7: Test IfMerge lowering for 3-variable pattern @@ -587,7 +588,7 @@ mod tests { use crate::mir::join_ir::JoinInst; let _env = strict_if_env_guard(); - std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); + joinir_env::set_if_select_on(); let func = create_if_merge_multiple_pattern_mir(); let entry_block = func.entry_block; @@ -620,7 +621,7 @@ mod tests { panic!("Expected JoinInst::IfMerge, got {:?}", result); } - std::env::remove_var("HAKO_JOINIR_IF_SELECT"); + joinir_env::set_if_select_off(); } /// Phase 63-2: Helper to create a simple pattern MIR with Const instructions @@ -683,7 +684,7 @@ mod tests { use crate::mir::MirType; let _env = strict_if_env_guard(); - std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); + joinir_env::set_if_select_on(); let func = create_simple_pattern_mir_with_const(); let entry_block = func.entry_block; @@ -708,7 +709,7 @@ mod tests { panic!("Expected Select instruction with type_hint"); } - std::env::remove_var("HAKO_JOINIR_IF_SELECT"); + joinir_env::set_if_select_off(); } /// Phase 63-6-4: A/B テスト - Route A (legacy) vs Route B (type hint) @@ -721,7 +722,7 @@ mod tests { use crate::mir::MirType; let _env = strict_if_env_guard(); - std::env::set_var("HAKO_JOINIR_IF_SELECT", "1"); + joinir_env::set_if_select_on(); // P1 Simple pattern で Select 生成 let func = create_simple_pattern_mir_with_const(); @@ -748,7 +749,7 @@ mod tests { eprintln!("✅ Phase 63-6-4 Step 2: P1 function name filter: IfSelectTest.* ✓"); eprintln!("✅ Phase 63-6-4: A/B test passed - JoinIR type hint available for lifecycle.rs"); - std::env::remove_var("HAKO_JOINIR_IF_SELECT"); + joinir_env::set_if_select_off(); } /// Phase 64-2-2: A/B テスト - P2 IfMerge Simple 型ヒント検証