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