feat(phase72): Phase 72-C Step 2: JoinIR dev flags SSOT completion

Extended joinir_dev.rs with 11 remaining flag helpers (total 20 flags):
- NYASH_JOINIR_LOWER_FROM_MIR, NYASH_JOINIR_LLVM_EXPERIMENT (2 NYASH flags)
- HAKO_JOINIR_IF_TOPLEVEL, IF_TOPLEVEL_TRACE, IF_IN_LOOP_TRACE (3 if-related)
- HAKO_JOINIR_NESTED_IF, PRINT_TOKENS_MAIN, ARRAY_FILTER_MAIN (3 ast_lowerer)
- HAKO_JOINIR_READ_QUOTED, READ_QUOTED_IFMERGE (2 read_quoted)

Updated src/mir/join_ir/mod.rs env_flag_is_1() dispatcher:
- Routes all 16 known JoinIR dev flags to config::env::joinir_dev helpers
- Maintains fallback for backward compatibility
- Centralizes all body code ENV reads through SSOT layer

Achievement: Complete SSOT consolidation for JoinIR development flags
- Test side: joinir_env.rs (is_experiment_enabled, set_if_select_*)
- Body code: config::env::joinir_dev.rs (20 flag helpers)
- Dispatcher: env_flag_is_1() routes all reads to centralized layer

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-02 12:52:38 +09:00
parent 6842a72df1
commit 6b9cef9ee5
2 changed files with 75 additions and 1 deletions

View File

@ -102,8 +102,32 @@ impl JoinContId {
pub type VarId = ValueId;
/// 環境変数フラグが "1" かチェックするヘルパーJoinIR 実験経路用)
/// Phase 72-C Step 2: SSOT統一 - すべてのリードを config::env::joinir_dev 経由に
pub(crate) fn env_flag_is_1(name: &str) -> bool {
std::env::var(name).ok().as_deref() == Some("1")
use crate::config::env::joinir_dev;
match name {
"NYASH_JOINIR_LOWER_GENERIC" => joinir_dev::lower_generic_enabled(),
"NYASH_JOINIR_MAINLINE_DEBUG" => joinir_dev::mainline_debug_enabled(),
"NYASH_JOINIR_IF_MERGE" => joinir_dev::if_merge_enabled(),
"NYASH_JOINIR_DEBUG" => joinir_dev::debug_enabled(),
"NYASH_JOINIR_VM_BRIDGE" => joinir_dev::vm_bridge_enabled(),
"NYASH_JOINIR_STRICT" => joinir_dev::strict_enabled(),
"NYASH_JOINIR_SNAPSHOT_GENERATE" => joinir_dev::snapshot_generate_enabled(),
"NYASH_JOINIR_SNAPSHOT_TEST" => joinir_dev::snapshot_test_enabled(),
"NYASH_JOINIR_LOWER_FROM_MIR" => joinir_dev::lower_from_mir_enabled(),
"NYASH_JOINIR_LLVM_EXPERIMENT" => joinir_dev::llvm_experiment_enabled(),
"HAKO_JOINIR_IF_TOPLEVEL" => joinir_dev::if_toplevel_enabled(),
"HAKO_JOINIR_IF_TOPLEVEL_TRACE" => joinir_dev::if_toplevel_trace_enabled(),
"HAKO_JOINIR_IF_IN_LOOP_TRACE" => joinir_dev::if_in_loop_trace_enabled(),
"HAKO_JOINIR_NESTED_IF" => joinir_dev::nested_if_enabled(),
"HAKO_JOINIR_PRINT_TOKENS_MAIN" => joinir_dev::print_tokens_main_enabled(),
"HAKO_JOINIR_ARRAY_FILTER_MAIN" => joinir_dev::array_filter_main_enabled(),
"HAKO_JOINIR_READ_QUOTED" => joinir_dev::read_quoted_enabled(),
"HAKO_JOINIR_READ_QUOTED_IFMERGE" => joinir_dev::read_quoted_ifmerge_enabled(),
// Fallback for unknown flags (shouldn't happen in normal operation)
// NYASH_JOINIR_EXPERIMENT is handled by test helpers, not body code
_ => std::env::var(name).ok().as_deref() == Some("1"),
}
}
/// Phase 27.4-A: ループ header φ の意味を表す構造Pinned/Carrier 分類)