# Phase 282 P9a 完了 (Scope-Limited Integration) ## 実装内容 - **common_helpers.rs 作成**: 4グループの共通ヘルパー統合 (316行) - Group 1: Control Flow Counting (count_control_flow - 汎用カウンター) - Group 2: Control Flow Detection (has_break/continue/return_statement) - Group 3: Condition Validation (extract_loop_variable, is_true_literal) - Group 4: Pattern5専用ヘルパー (validate_continue_at_end, validate_break_in_simple_if) - **Pattern統合完了**: Pattern5 → Pattern4 → Pattern2 → Pattern1 - Pattern5: ~90行削減 (5 tests PASS) - Pattern4: ~66行削減 (5 tests PASS) - Pattern2: ~67行削減 (4 tests PASS) - Pattern1: ~28行削減 (3 tests PASS) - Pattern3: 別フェーズに延期(pattern固有ロジック除外) ## 成果 - **コード削減**: ~251行(Pattern3除く、total ~400行見込み) - **テスト**: 40 unit tests PASS (23 common_helpers + 17 extractors) - **スモークテスト**: 45 PASS, 1 pre-existing FAIL(退行ゼロ) - **ビルド警告**: 130 → 120 (-10) ## USER CORRECTIONS適用済み 1. ✅ スコープ限定(共通ロジックのみ、pattern固有除外) 2. ✅ Placeholder禁止(SSOT違反排除) 3. ✅ 統合順序変更(Pattern3を最後/別フェーズへ) ## 追加ドキュメント - Phase 284 計画追加(Return as ExitKind SSOT) - 10-Now.md, 30-Backlog.md 更新 🎯 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
Phase 284 P0(docs-only): Return as ExitKind SSOT
目的: return を pattern 個別実装へ散らさず、ExitKind::Return と compose::* / emit_frag() に収束させるための SSOT を固定する。
このP0でやること(コード変更なし)
- SSOT を 1 枚にまとめる
docs/development/current/main/phases/phase-284/README.mdを SSOT として整える(用語・責務・境界)。
- 既存SSOTとの整合を取る
- Phase 282 の “SSOT=extract / pattern_kind=safety valve / lower re-extract” と矛盾しないこと。
- “移行期間の穴” を塞ぐ言い方にする
- close-but-unsupported は
Ok(None)ではなくErr(Fail-Fast)であることを明記。
- close-but-unsupported は
文書に必ず入れる事項(チェックリスト)
return exprはExitKind::Returnで表現する(pattern の特例は禁止)- Return edge の返り値は
EdgeArgs(または Return 用 args)で運ぶ - terminator 生成は
emit_frag()が SSOT(Return も例外なし) - extractor の返り値境界:
Ok(None)とErrの意味を固定(黙殺禁止) - Phase 284 の P1+(実装)で “どこを触る” かの導線を箇条書きで残す(ただしコードは書かない)
SSOTリンク
docs/development/current/main/phases/phase-284/README.mddocs/development/current/main/design/edgecfg-fragments.mdsrc/mir/builder/control_flow/edgecfg/api/compose.rssrc/mir/builder/control_flow/edgecfg/api/emit.rsdocs/development/current/main/phases/phase-282/README.md