feat(joinir): route balanced depth-scan via Pattern2 policy

This commit is contained in:
nyash-codex
2025-12-17 22:32:43 +09:00
parent f1a570fd45
commit bf80789757
4 changed files with 59 additions and 3 deletions

View File

@ -17,8 +17,20 @@ pub(in crate::mir::builder) fn choose_pattern_kind(
body: &[ASTNode],
) -> crate::mir::loop_pattern_detection::LoopPatternKind {
use crate::mir::builder::control_flow::joinir::patterns::ast_feature_extractor as ast_features;
use crate::mir::builder::control_flow::joinir::patterns::policies::balanced_depth_scan_policy::classify_balanced_depth_scan_array_end;
use crate::mir::builder::control_flow::joinir::patterns::policies::PolicyDecision;
use crate::mir::loop_pattern_detection;
// Phase 107: Route balanced depth-scan (return-in-loop) to Pattern2 via policy.
//
// This keeps Pattern routing structural: no by-name dispatch, no silent fallback.
if matches!(
classify_balanced_depth_scan_array_end(condition, body),
PolicyDecision::Use(_)
) {
return loop_pattern_detection::LoopPatternKind::Pattern2Break;
}
// Phase 193: Use AST Feature Extractor Box for break/continue detection
let has_continue = ast_features::detect_continue_in_body(body);
let has_break = ast_features::detect_break_in_body(body);