|
|
b7c7e48526
|
feat(joinir): Phase 27.14 - FuncScannerBox._append_defs JoinIR lowering完了 + コード品質改善
## Phase 27.14: FuncScannerBox._append_defs/2 JoinIR lowering
- **新規実装**: `funcscanner_append_defs.rs` (322行)
- Shared Builder Pattern採用
- MIR-based lowering with CFG sanity checks
- ValueId range 9000-10999 割り当て
- **テスト**: `mir_joinir_funcscanner_append_defs.rs` (3テスト)
- type_sanity, empty_module_returns_none, auto_lowering (ignored)
- **最小.hako**: `funcscanner_append_defs_minimal.hako`
## コード品質改善 (5項目完了)
1. **CFG Sanity Checks強化** (`common.rs`)
- `has_array_method()`: ArrayBox操作検出
- `has_loop_increment()`: i+1パターン検出
2. **ValueIdテスト自動化** (`value_id_ranges.rs`)
- マクロ化 + 自動overlap検証で30→15行に削減
3. **モジュール名統一確認** (作業不要、既に統一済み)
4. **Shared Builder命名統一** (`funcscanner_trim.rs`)
- `build_trim_joinir` → `build_funcscanner_trim_joinir`
5. **全テストPASS確認**
- value_id_ranges, funcscanner_trim, funcscanner_append_defs全てPASS ✅
## 効果
- CFG検証関数: 1個 → 3個 (200%↑)
- テストコード: 50%削減 (保守性向上)
- 命名一貫性: 75% → 100%
- ビルド成功率: 100%維持
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-24 05:23:26 +09:00 |
|
|
|
bc42da30b0
|
feat(joinir): Phase 27.11 - FuncScannerBox.trim/1 MIR-based lowering 完了
実装内容:
- build_trim_joinir() 共通関数を作成 (handwritten/MIR 両方から使用)
- lower_trim_handwritten() を薄いラッパーに変更
- lower_trim_from_mir() が CFG checks 後に build_trim_joinir() を呼ぶように更新
技術成果:
- Shared Builder Pattern の確立
- テスト退行なし (baseline/MIR 両方で PASS)
- コード重複ゼロ (448行の実装が1箇所に集約)
テスト結果:
- cargo build --release: ✅ 成功
- cargo test (toggle OFF): ✅ PASS
- NYASH_JOINIR_LOWER_FROM_MIR=1 cargo test (toggle ON): ✅ PASS
|
2025-11-23 23:18:49 +09:00 |
|
|
|
ff9ea58e59
|
refactor(joinir): Phase 27.10 - CFG sanity checks + dispatcher pattern 共通化
- common.rs 新規作成(162行):
- CFG sanity check helpers: ensure_entry_has_succs, has_const_int, has_const_string, has_string_method, has_binop
- Logging helper: log_fallback
- Dispatcher: dispatch_lowering
- skip_ws.rs: CFG checks (-25行) + dispatcher (-2行) = -27行削減
- funcscanner_trim.rs: CFG checks (-25行) + dispatcher (-4行) = -29行削減
- mod.rs: pub mod common 追加
設計原則:
- 軽量パターンマッチング(命令の存在確認のみ)
- Graceful degradation(予期しない構造で即座にfallback)
- DRY原則(重複コード1箇所に集約)
🎉 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-23 22:51:30 +09:00 |
|
|
|
3d5979c78e
|
refactor(joinir): Phase 27.9 - Modular separation of join_ir.rs into directory structure
Phase 27.9 で join_ir.rs (~1,336行) を以下のモジュール構造に分離:
## 新規ディレクトリ構造:
```
src/mir/join_ir/
├── mod.rs # 型定義・共通ユーティリティ (~330行)
└── lowering/
├── mod.rs # lowering インターフェース
├── min_loop.rs # lower_min_loop_to_joinir (~140行)
├── skip_ws.rs # skip_ws lowering 3関数 (~390行)
└── funcscanner_trim.rs # trim lowering (~480行)
```
## 技術的変更:
- **型定義統一**: JoinFuncId, JoinInst, JoinModule 等を mod.rs に集約
- **lowering 分離**: 3つの lowering 関数を個別モジュールに移動
- **後方互換性**: pub use で lowering 関数を re-export(既存コード影響なし)
- **削除**: src/mir/join_ir.rs (旧単一ファイル)
## テスト結果:
- **385 passed** (+1 from 384)
- **9 failed** (-1 from 10)
- **ビルド成功**: 0 errors, 18 warnings (変化なし)
## 効果:
- **保守性向上**: 1,336行 → 4ファイル(各300-500行)で可読性向上
- **モジュール境界明確化**: 型定義 vs lowering 実装の責務分離
- **将来の拡張容易**: 新 lowering 関数追加が簡単に
Phase 27.8 で実装した MIR 自動解析 lowering の基盤整備完了。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-23 16:49:49 +09:00 |
|