feat(joinir): Phase 40-4.1 delete collect_assigned_vars (35 lines)
Breaking: collect_assigned_vars function removed from if_phi.rs Changes: - Delete collect_assigned_vars() function (35 lines) - Make JoinIR route the default in loop_builder.rs - Rewrite collect_assigned_vars_via_joinir() with ast_to_json support - Now detects both Local declarations and Assignment nodes - Add extract_vars_from_json_stmts/stmt helpers - Update tests to use new implementation - phase40_joinir_detects_local_declarations - phase40_joinir_nested_if_local Test results: 407 passed, 11 failed (same as before, no regression) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -1061,31 +1061,12 @@ impl<'a> LoopBuilder<'a> {
|
||||
.debug_push_region(format!("join#{}", join_id) + "/join");
|
||||
|
||||
// Phase 25.1: HashSet → BTreeSet(決定性確保)
|
||||
// Phase 40-3.5: JoinIR route switching
|
||||
// Phase 40-4.1: JoinIR経路をデフォルト化(collect_assigned_vars削除)
|
||||
let vars: std::collections::BTreeSet<String> =
|
||||
if crate::config::env::use_joinir_for_array_filter() {
|
||||
// Route B: JoinIR Frontend経由
|
||||
crate::mir::phi_core::if_phi::collect_assigned_vars_via_joinir(
|
||||
&then_body,
|
||||
else_body.as_ref(),
|
||||
)
|
||||
} else {
|
||||
// Route A: Legacy AST→MIR経由
|
||||
let mut vars = std::collections::BTreeSet::new();
|
||||
let then_prog = ASTNode::Program {
|
||||
statements: then_body.clone(),
|
||||
span: crate::ast::Span::unknown(),
|
||||
};
|
||||
crate::mir::phi_core::if_phi::collect_assigned_vars(&then_prog, &mut vars);
|
||||
if let Some(es) = &else_body {
|
||||
let else_prog = ASTNode::Program {
|
||||
statements: es.clone(),
|
||||
span: crate::ast::Span::unknown(),
|
||||
};
|
||||
crate::mir::phi_core::if_phi::collect_assigned_vars(&else_prog, &mut vars);
|
||||
}
|
||||
vars
|
||||
};
|
||||
crate::mir::phi_core::if_phi::collect_assigned_vars_via_joinir(
|
||||
&then_body,
|
||||
else_body.as_ref(),
|
||||
);
|
||||
|
||||
// Phase 26-E: PhiBuilderBox 統合
|
||||
// Ops構造体: PhiMergeOps(Legacy)と PhiBuilderOps(新)の両対応
|
||||
|
||||
Reference in New Issue
Block a user