## Legacy Pattern5 削除 (488行) - pattern5_infinite_early_exit.rs 完全削除 - LOOP_PATTERNS テーブルからエントリ削除 - Plan extractor が SSOT ## Normalizer 分割 (3294行 → 12ファイル) - helpers.rs: 共通ヘルパー関数 - pattern*.rs: 各パターン専用ファイル - mod.rs: ディスパッチャ ## ドキュメント更新 - Phase 286 README: クリーンアップ完了・Fail-Fast方針記載 - Phase 287 README: 将来計画 quick smoke 154/154 PASS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
Phase 287: Normalizer Hygiene(正規化器整理)
Status: Planning Date: 2025-12-26 Previous: Phase 286 (Plan Line完全運用化)
概要
Phase 286 でPlan lineへの移行が完了したため、legacy Pattern5 削除とnormalizer.rs の整理を実施。
Phase 286 完了作業(本セッション)
✅ Legacy Pattern5 削除(488行)
削除理由: Plan line 完全運用化により、legacy Pattern5 は完全にデッドコード化
削除ファイル:
src/mir/builder/control_flow/joinir/patterns/pattern5_infinite_early_exit.rs(488行)
関連削除:
router.rsのLOOP_PATTERNSテーブルから Pattern5 エントリ削除mod.rsからpub mod pattern5_infinite_early_exit;削除router.rsのドキュメント更新(Pattern5 → Pattern4 優先順位へ)
影響範囲:
- Pattern5 は Plan line の
extract_pattern5_plan()経由で処理されるため、機能退行なし LOOP_PATTERNSテーブルの優先順位: Pattern5 → Pattern4 → Pattern8... から Pattern4 → Pattern8... に変更
✅ Warning クリーンアップ
実行コマンド:
cargo fix --lib -p nyash-rust --allow-dirty
修正内容:
- 1件の自動修正(
normalizer.rs) - 未使用 import などを自動修正
✅ ビルド&テスト確認
ビルド結果:
cargo build --release
# → 成功(130 warnings、エラーなし)
テスト結果:
tools/smokes/v2/run.sh --profile quick
# → 154/154 PASS ✅
退行なし: quick smoke 154/154 PASS を維持
削除前後の統計
コード削減
| 項目 | 削減数 |
|---|---|
| ソースファイル | 1ファイル (pattern5_infinite_early_exit.rs) |
| 総削減行数 | 488行 |
| router.rs エントリ | 5行(Pattern5 エントリ) |
| mod.rs 宣言 | 1行 |
Pattern優先順位の変更
削除前(Phase 131-11+):
Pattern5 (most specific) → Pattern4 → Pattern3 → Pattern1 → Pattern2
削除後(Phase 286+):
Pattern4 → Pattern8 → Pattern9 → Pattern3 → Pattern1 → Pattern2
注: Pattern5/6/7 は Plan line 経由で処理(PLAN_EXTRACTORS テーブル)
Phase 287 計画(後回し)
P0: normalizer.rs 分割計画
現状: src/mir/builder/control_flow/plan/normalizer.rs が大きすぎる(推定 1,500+ 行)
分割案:
1. Pattern5 正規化ロジック分離(430行)
normalizer/pattern5.rs- Pattern5 専用正規化- Pattern5 の複雑な構造展開ロジックを独立モジュール化
2. Helper 関数共通化(700行)
normalizer/helpers.rs- 共通ヘルパー関数- 複数パターンで使用される変換ロジック
3. コアロジック残存(300行)
normalizer.rs- PlanNormalizer struct & normalize() エントリーポイント- パターン横断的な正規化インターフェース
期待効果:
- メンテナンス性向上
- テスト分離(Pattern5 正規化のみをユニットテスト)
- 責任分離(SRP原則)
P1: LOOP_PATTERNS テーブル完全削除
背景: 全Pattern が Plan line 経由になれば、LOOP_PATTERNS テーブルは不要
前提条件:
- Pattern1-4 の Plan line 移行完了(Phase 286 でPattern1-4はPlan line化済み)
- Pattern8-9 の Plan line 移行完了(Phase 286 でPlan line化済み)
削除対象:
router.rsのLOOP_PATTERNSstatic テーブル(40行程度)LoopPatternEntrystruct(不要化)
残存:
PLAN_EXTRACTORSテーブルのみ(SSOT)
期待効果:
- 二重管理解消(LOOP_PATTERNS vs PLAN_EXTRACTORS)
- ルーティングロジック一本化
実装方針
フェーズ分割
- Phase 286(完了): Legacy Pattern5 削除 + Warning クリーンアップ
- Phase 287-P0(保留): normalizer.rs 分割(P0優先度は低い)
- Phase 287-P1(将来): LOOP_PATTERNS テーブル削除(全Pattern Plan line化後)
段階的移行
- 急がない:normalizer.rs 分割は緊急度低(機能的に問題なし)
- 機会を待つ:P1 はPattern1-4完全移行のタイミングで実施
関連ドキュメント
- Phase 286 計画 - Plan Line完全運用化
- Plan Line アーキテクチャ - Extractor → Normalizer → Verifier → Lowerer
- Pattern移行ログ - Pattern6/7 Plan line移行(Phase 273)
検証項目
✅ Phase 286 完了検証
- Pattern5 ファイル削除(488行)
- router.rs の LOOP_PATTERNS から Pattern5 エントリ削除
- mod.rs から Pattern5 宣言削除
cargo fix実行(Warning クリーンアップ)cargo build --release成功(0エラー)- quick smoke 154/154 PASS
- Phase 287 ドキュメント作成
📋 Phase 287-P0/P1 検証(将来)
- normalizer.rs 分割完了(P0)
- pattern5.rs 独立(430行)
- helpers.rs 共通化(700行)
- normalizer.rs 縮小(300行)
- LOOP_PATTERNS テーブル削除(P1)
- 全Pattern Plan line経由確認
LOOP_PATTERNSstatic削除LoopPatternEntrystruct削除
備考
注意: normalizer.rs の分割は行わない(本Phase完了時点では保留)
理由:
- 機能的に問題なし(現在の構造で動作)
- 緊急度低(開発速度への影響なし)
- 別Phase対応が適切(Phase 287-P0として計画のみ)