Files
hakorune/src/mir/join_ir/lowering/loop_scope_shape
nyash-codex 4170500c51 feat(joinir): Phase 170-C-2b LoopUpdateSummary wiring into shape detection
Wire LoopUpdateSummary box into real code paths:

- Add `update_summary: Option<LoopUpdateSummary>` field to LoopFeatures
- Add `detect_with_updates()` method to CaseALoweringShape
  - Uses UpdateKind (CounterLike/AccumulationLike) for classification
  - Single CounterLike carrier → StringExamination
  - AccumulationLike present → ArrayAccumulation or IterationWithAccumulation
- Update loop_to_join.rs to use detect_with_updates()
- Update deprecated detect() to use detect_with_updates() internally
- Set update_summary: None in AST-based feature extraction

Carrier name heuristics now encapsulated in LoopUpdateSummary box.
No regression: 15/16 loop smoke tests pass (1 failure is pre-existing).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-07 14:33:54 +09:00
..

loop_scope_shape

LoopScopeShape を箱化し、JoinIR lowering からの質問をここに集約するよ。

  • shape.rs: 変数分類の SSOT。pinned/carrier/body_local/exit_live と API を提供。
  • builder.rs: LoopForm + Trio を受け取って LoopScopeShape を組み立て。Case-A ルーティング込み。
  • case_a.rs: Case-A minimal ターゲット判定Phase 30 F-3.1 のハードコード集合)。
  • context.rs: generic_case_a 共通の CaseAContext。
  • tests.rs: 既存仕様の回帰テスト。

責務の境界:

  • 解析・分類の仕様は shape.rs に閉じ込める(他層は API で参照)。
  • 新しい入力経路を足すときは builder.rs に箱を追加し、shape.rs の SSOT を崩さないこと。