Files
hakorune/src/mir/builder/builder_calls.rs

45 lines
1.9 KiB
Rust
Raw Normal View History

refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成! 🎯 目標75%削減を大幅に超える94%削減を達成! ## Phase 2 成果 ✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減) ✅ calls/emit.rs: 415行(新規、Call命令発行専用) ✅ calls/build.rs: 505行(新規、Call構築専用) ✅ ビルド・テスト成功(0エラー) ## 累積削減効果 Phase 1: 982行 → 766行(216行削減、22%削減) Phase 2: 766行 → 60行(706行削減、92%削減) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 合計: 982行 → 60行(922行削減、94%削減達成!) ## 箱理論実装詳細 ### 1. 責務ごとに箱に分離 - emit.rs: Call命令発行専用 - emit_unified_call, emit_legacy_call等 - 統一Call/LegacyCallの明確な分離 - build.rs: Call構築専用 - build_function_call, build_method_call等 - 関数Call/メソッドCallの段階的構築 - lowering.rs: 関数lowering専用(Phase 1) - utils.rs: ユーティリティ専用(Phase 1) ### 2. 境界を明確に - 各モジュールで公開インターフェース明確化 - calls/mod.rs で統一的にre-export - 内部関数は適切に隠蔽 ### 3. いつでも戻せる - builder_calls.rs で既存API完全保持 - re-exportによる完全な後方互換性 - 段階的移行で各ステップでビルド確認 ### 4. 巨大関数は分割 **emit.rs**: - emit_unified_call (元231行) → 複数の小関数に分割 - try_global_fallback_handlers (~50行) - materialize_receiver_in_callee (~30行) - emit_global_unified (~20行) **build.rs**: - build_function_call (元134行) → 7つの小関数に分割 - try_build_typeop_function (~25行) - try_handle_math_function (~60行) - build_call_args (~7行) - 各関数30-60行に収まる - build_method_call (元107行) → 5つの小関数に分割 - try_build_static_method_call (~10行) - try_build_me_method_call (~35行) - 各関数が単一の明確な責務 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ ├── emit.rs # Call発行(415行)✨ NEW │ ├── build.rs # Call構築(505行)✨ NEW │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 最小限(60行、94%削減!) ## 技術的成果 - 可読性向上: 100行超 → 30-60行の小関数 - 保守性向上: 責務分離で影響範囲最小化 - 再利用性向上: 明確なIF定義で安全使用 - テスト容易性: 小さな単位でテスト可能 ## 次のステップ候補 - Phase 3: handlers.rs 作成(オプション) - さらなる細分化(emit/unified.rs 等) - ValueId(6)エラーの根本原因調査 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:11:21 +09:00
//! 🎯 箱理論 Phase 2完了: builder_calls.rs → calls/* 完全移行
//!
//! **削減実績**:
//! - Phase 1: 982行 → 766行216行削減、22%削減)
//! - Phase 2: 766行 → 49行717行削減、94%削減)
//! - **合計削減**: 933行95%削減達成!)
//!
//! **移行先**:
//! - `calls/emit.rs`: Call命令発行emit_unified_call, emit_legacy_call等
//! - `calls/build.rs`: Call構築build_function_call, build_method_call等
//! - `calls/lowering.rs`: 関数loweringPhase 1で既に移行済み
//! - `calls/utils.rs`: ユーティリティPhase 1で既に移行済み
//!
//! **箱理論の原則**:
//! 1. ✅ 責務ごとに箱に分離: emit発行、build構築を明確に分離
//! 2. ✅ 境界を明確に: 各モジュールで公開インターフェース明確化
//! 3. ✅ いつでも戻せる: re-exportで既存API完全保持
//! 4. ✅ 巨大関数は分割: 100行超える関数を30-50行目標で分割
refactor(builder): 箱理論リファクタリング Phase 1完了 🎯 builder_calls.rs (982行) を箱理論で責務別にモジュール分割 ## 成果 ✅ builder_calls.rs: 982行 → 766行(-216行、22%削減) ✅ calls/lowering.rs: 354行(新規、箱理論6段階パターン) ✅ calls/utils.rs: 45行(新規、ユーティリティ統一) ✅ ビルド・テスト完全成功(0エラー) ## 箱理論の実装 1. 責務ごとに箱に分離: - lowering: 関数lowering専用 - utils: ユーティリティ統一 - emit/build: Phase 2で実装予定 2. 境界を明確に: - mod.rs で公開インターフェース定義 - pub(in crate::mir::builder) で適切な可視性制御 3. いつでも戻せる: - 段階的移行、各ステップでビルド確認 - 既存API完全保持(互換性100%) 4. 巨大関数は分割: - lower_static_method_as_function: 125行 → 6段階に分解 - lower_method_as_function: 80行 → 6段階に分解 ## 箱理論6段階パターン 1. prepare_lowering_context - Context準備 2. create_function_skeleton - 関数スケルトン作成 3. setup_function_params - パラメータ設定 4. lower_function_body - 本体lowering 5. finalize_function - 関数finalize 6. restore_lowering_context - Context復元 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 削減版(766行) ## 次のステップ Phase 2: emit.rs 作成(~500行移行) Phase 3: build.rs 作成(~350行移行) 最終目標: builder_calls.rs を200行以内に 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:02:01 +09:00
// Import from new modules (refactored with Box Theory)
pub use super::calls::call_target::CallTarget;
refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成! 🎯 目標75%削減を大幅に超える94%削減を達成! ## Phase 2 成果 ✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減) ✅ calls/emit.rs: 415行(新規、Call命令発行専用) ✅ calls/build.rs: 505行(新規、Call構築専用) ✅ ビルド・テスト成功(0エラー) ## 累積削減効果 Phase 1: 982行 → 766行(216行削減、22%削減) Phase 2: 766行 → 60行(706行削減、92%削減) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 合計: 982行 → 60行(922行削減、94%削減達成!) ## 箱理論実装詳細 ### 1. 責務ごとに箱に分離 - emit.rs: Call命令発行専用 - emit_unified_call, emit_legacy_call等 - 統一Call/LegacyCallの明確な分離 - build.rs: Call構築専用 - build_function_call, build_method_call等 - 関数Call/メソッドCallの段階的構築 - lowering.rs: 関数lowering専用(Phase 1) - utils.rs: ユーティリティ専用(Phase 1) ### 2. 境界を明確に - 各モジュールで公開インターフェース明確化 - calls/mod.rs で統一的にre-export - 内部関数は適切に隠蔽 ### 3. いつでも戻せる - builder_calls.rs で既存API完全保持 - re-exportによる完全な後方互換性 - 段階的移行で各ステップでビルド確認 ### 4. 巨大関数は分割 **emit.rs**: - emit_unified_call (元231行) → 複数の小関数に分割 - try_global_fallback_handlers (~50行) - materialize_receiver_in_callee (~30行) - emit_global_unified (~20行) **build.rs**: - build_function_call (元134行) → 7つの小関数に分割 - try_build_typeop_function (~25行) - try_handle_math_function (~60行) - build_call_args (~7行) - 各関数30-60行に収まる - build_method_call (元107行) → 5つの小関数に分割 - try_build_static_method_call (~10行) - try_build_me_method_call (~35行) - 各関数が単一の明確な責務 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ ├── emit.rs # Call発行(415行)✨ NEW │ ├── build.rs # Call構築(505行)✨ NEW │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 最小限(60行、94%削減!) ## 技術的成果 - 可読性向上: 100行超 → 30-60行の小関数 - 保守性向上: 責務分離で影響範囲最小化 - 再利用性向上: 明確なIF定義で安全使用 - テスト容易性: 小さな単位でテスト可能 ## 次のステップ候補 - Phase 3: handlers.rs 作成(オプション) - さらなる細分化(emit/unified.rs 等) - ValueId(6)エラーの根本原因調査 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:11:21 +09:00
// ========================================
// Re-exports for backward compatibility
// ========================================
refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成! 🎯 目標75%削減を大幅に超える94%削減を達成! ## Phase 2 成果 ✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減) ✅ calls/emit.rs: 415行(新規、Call命令発行専用) ✅ calls/build.rs: 505行(新規、Call構築専用) ✅ ビルド・テスト成功(0エラー) ## 累積削減効果 Phase 1: 982行 → 766行(216行削減、22%削減) Phase 2: 766行 → 60行(706行削減、92%削減) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 合計: 982行 → 60行(922行削減、94%削減達成!) ## 箱理論実装詳細 ### 1. 責務ごとに箱に分離 - emit.rs: Call命令発行専用 - emit_unified_call, emit_legacy_call等 - 統一Call/LegacyCallの明確な分離 - build.rs: Call構築専用 - build_function_call, build_method_call等 - 関数Call/メソッドCallの段階的構築 - lowering.rs: 関数lowering専用(Phase 1) - utils.rs: ユーティリティ専用(Phase 1) ### 2. 境界を明確に - 各モジュールで公開インターフェース明確化 - calls/mod.rs で統一的にre-export - 内部関数は適切に隠蔽 ### 3. いつでも戻せる - builder_calls.rs で既存API完全保持 - re-exportによる完全な後方互換性 - 段階的移行で各ステップでビルド確認 ### 4. 巨大関数は分割 **emit.rs**: - emit_unified_call (元231行) → 複数の小関数に分割 - try_global_fallback_handlers (~50行) - materialize_receiver_in_callee (~30行) - emit_global_unified (~20行) **build.rs**: - build_function_call (元134行) → 7つの小関数に分割 - try_build_typeop_function (~25行) - try_handle_math_function (~60行) - build_call_args (~7行) - 各関数30-60行に収まる - build_method_call (元107行) → 5つの小関数に分割 - try_build_static_method_call (~10行) - try_build_me_method_call (~35行) - 各関数が単一の明確な責務 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ ├── emit.rs # Call発行(415行)✨ NEW │ ├── build.rs # Call構築(505行)✨ NEW │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 最小限(60行、94%削減!) ## 技術的成果 - 可読性向上: 100行超 → 30-60行の小関数 - 保守性向上: 責務分離で影響範囲最小化 - 再利用性向上: 明確なIF定義で安全使用 - テスト容易性: 小さな単位でテスト可能 ## 次のステップ候補 - Phase 3: handlers.rs 作成(オプション) - さらなる細分化(emit/unified.rs 等) - ValueId(6)エラーの根本原因調査 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:11:21 +09:00
impl super::MirBuilder {
// 🎯 Phase 2移行完了マーカー: すべての実装は calls/* に移行済み
refactor(builder): 箱理論リファクタリング Phase 1完了 🎯 builder_calls.rs (982行) を箱理論で責務別にモジュール分割 ## 成果 ✅ builder_calls.rs: 982行 → 766行(-216行、22%削減) ✅ calls/lowering.rs: 354行(新規、箱理論6段階パターン) ✅ calls/utils.rs: 45行(新規、ユーティリティ統一) ✅ ビルド・テスト完全成功(0エラー) ## 箱理論の実装 1. 責務ごとに箱に分離: - lowering: 関数lowering専用 - utils: ユーティリティ統一 - emit/build: Phase 2で実装予定 2. 境界を明確に: - mod.rs で公開インターフェース定義 - pub(in crate::mir::builder) で適切な可視性制御 3. いつでも戻せる: - 段階的移行、各ステップでビルド確認 - 既存API完全保持(互換性100%) 4. 巨大関数は分割: - lower_static_method_as_function: 125行 → 6段階に分解 - lower_method_as_function: 80行 → 6段階に分解 ## 箱理論6段階パターン 1. prepare_lowering_context - Context準備 2. create_function_skeleton - 関数スケルトン作成 3. setup_function_params - パラメータ設定 4. lower_function_body - 本体lowering 5. finalize_function - 関数finalize 6. restore_lowering_context - Context復元 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 削減版(766行) ## 次のステップ Phase 2: emit.rs 作成(~500行移行) Phase 3: build.rs 作成(~350行移行) 最終目標: builder_calls.rs を200行以内に 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:02:01 +09:00
/// Map a user-facing type name to MIR type
refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成! 🎯 目標75%削減を大幅に超える94%削減を達成! ## Phase 2 成果 ✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減) ✅ calls/emit.rs: 415行(新規、Call命令発行専用) ✅ calls/build.rs: 505行(新規、Call構築専用) ✅ ビルド・テスト成功(0エラー) ## 累積削減効果 Phase 1: 982行 → 766行(216行削減、22%削減) Phase 2: 766行 → 60行(706行削減、92%削減) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 合計: 982行 → 60行(922行削減、94%削減達成!) ## 箱理論実装詳細 ### 1. 責務ごとに箱に分離 - emit.rs: Call命令発行専用 - emit_unified_call, emit_legacy_call等 - 統一Call/LegacyCallの明確な分離 - build.rs: Call構築専用 - build_function_call, build_method_call等 - 関数Call/メソッドCallの段階的構築 - lowering.rs: 関数lowering専用(Phase 1) - utils.rs: ユーティリティ専用(Phase 1) ### 2. 境界を明確に - 各モジュールで公開インターフェース明確化 - calls/mod.rs で統一的にre-export - 内部関数は適切に隠蔽 ### 3. いつでも戻せる - builder_calls.rs で既存API完全保持 - re-exportによる完全な後方互換性 - 段階的移行で各ステップでビルド確認 ### 4. 巨大関数は分割 **emit.rs**: - emit_unified_call (元231行) → 複数の小関数に分割 - try_global_fallback_handlers (~50行) - materialize_receiver_in_callee (~30行) - emit_global_unified (~20行) **build.rs**: - build_function_call (元134行) → 7つの小関数に分割 - try_build_typeop_function (~25行) - try_handle_math_function (~60行) - build_call_args (~7行) - 各関数30-60行に収まる - build_method_call (元107行) → 5つの小関数に分割 - try_build_static_method_call (~10行) - try_build_me_method_call (~35行) - 各関数が単一の明確な責務 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ ├── emit.rs # Call発行(415行)✨ NEW │ ├── build.rs # Call構築(505行)✨ NEW │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 最小限(60行、94%削減!) ## 技術的成果 - 可読性向上: 100行超 → 30-60行の小関数 - 保守性向上: 責務分離で影響範囲最小化 - 再利用性向上: 明確なIF定義で安全使用 - テスト容易性: 小さな単位でテスト可能 ## 次のステップ候補 - Phase 3: handlers.rs 作成(オプション) - さらなる細分化(emit/unified.rs 等) - ValueId(6)エラーの根本原因調査 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:11:21 +09:00
/// 実装: calls/utils.rs
pub(super) fn parse_type_name_to_mir(name: &str) -> super::MirType {
refactor(builder): 箱理論リファクタリング Phase 1完了 🎯 builder_calls.rs (982行) を箱理論で責務別にモジュール分割 ## 成果 ✅ builder_calls.rs: 982行 → 766行(-216行、22%削減) ✅ calls/lowering.rs: 354行(新規、箱理論6段階パターン) ✅ calls/utils.rs: 45行(新規、ユーティリティ統一) ✅ ビルド・テスト完全成功(0エラー) ## 箱理論の実装 1. 責務ごとに箱に分離: - lowering: 関数lowering専用 - utils: ユーティリティ統一 - emit/build: Phase 2で実装予定 2. 境界を明確に: - mod.rs で公開インターフェース定義 - pub(in crate::mir::builder) で適切な可視性制御 3. いつでも戻せる: - 段階的移行、各ステップでビルド確認 - 既存API完全保持(互換性100%) 4. 巨大関数は分割: - lower_static_method_as_function: 125行 → 6段階に分解 - lower_method_as_function: 80行 → 6段階に分解 ## 箱理論6段階パターン 1. prepare_lowering_context - Context準備 2. create_function_skeleton - 関数スケルトン作成 3. setup_function_params - パラメータ設定 4. lower_function_body - 本体lowering 5. finalize_function - 関数finalize 6. restore_lowering_context - Context復元 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 削減版(766行) ## 次のステップ Phase 2: emit.rs 作成(~500行移行) Phase 3: build.rs 作成(~350行移行) 最終目標: builder_calls.rs を200行以内に 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:02:01 +09:00
crate::mir::builder::calls::utils::parse_type_name_to_mir(name)
}
refactor(builder): 箱理論リファクタリング Phase 1完了 🎯 builder_calls.rs (982行) を箱理論で責務別にモジュール分割 ## 成果 ✅ builder_calls.rs: 982行 → 766行(-216行、22%削減) ✅ calls/lowering.rs: 354行(新規、箱理論6段階パターン) ✅ calls/utils.rs: 45行(新規、ユーティリティ統一) ✅ ビルド・テスト完全成功(0エラー) ## 箱理論の実装 1. 責務ごとに箱に分離: - lowering: 関数lowering専用 - utils: ユーティリティ統一 - emit/build: Phase 2で実装予定 2. 境界を明確に: - mod.rs で公開インターフェース定義 - pub(in crate::mir::builder) で適切な可視性制御 3. いつでも戻せる: - 段階的移行、各ステップでビルド確認 - 既存API完全保持(互換性100%) 4. 巨大関数は分割: - lower_static_method_as_function: 125行 → 6段階に分解 - lower_method_as_function: 80行 → 6段階に分解 ## 箱理論6段階パターン 1. prepare_lowering_context - Context準備 2. create_function_skeleton - 関数スケルトン作成 3. setup_function_params - パラメータ設定 4. lower_function_body - 本体lowering 5. finalize_function - 関数finalize 6. restore_lowering_context - Context復元 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 削減版(766行) ## 次のステップ Phase 2: emit.rs 作成(~500行移行) Phase 3: build.rs 作成(~350行移行) 最終目標: builder_calls.rs を200行以内に 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:02:01 +09:00
/// Extract string literal from AST node if possible
refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成! 🎯 目標75%削減を大幅に超える94%削減を達成! ## Phase 2 成果 ✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減) ✅ calls/emit.rs: 415行(新規、Call命令発行専用) ✅ calls/build.rs: 505行(新規、Call構築専用) ✅ ビルド・テスト成功(0エラー) ## 累積削減効果 Phase 1: 982行 → 766行(216行削減、22%削減) Phase 2: 766行 → 60行(706行削減、92%削減) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 合計: 982行 → 60行(922行削減、94%削減達成!) ## 箱理論実装詳細 ### 1. 責務ごとに箱に分離 - emit.rs: Call命令発行専用 - emit_unified_call, emit_legacy_call等 - 統一Call/LegacyCallの明確な分離 - build.rs: Call構築専用 - build_function_call, build_method_call等 - 関数Call/メソッドCallの段階的構築 - lowering.rs: 関数lowering専用(Phase 1) - utils.rs: ユーティリティ専用(Phase 1) ### 2. 境界を明確に - 各モジュールで公開インターフェース明確化 - calls/mod.rs で統一的にre-export - 内部関数は適切に隠蔽 ### 3. いつでも戻せる - builder_calls.rs で既存API完全保持 - re-exportによる完全な後方互換性 - 段階的移行で各ステップでビルド確認 ### 4. 巨大関数は分割 **emit.rs**: - emit_unified_call (元231行) → 複数の小関数に分割 - try_global_fallback_handlers (~50行) - materialize_receiver_in_callee (~30行) - emit_global_unified (~20行) **build.rs**: - build_function_call (元134行) → 7つの小関数に分割 - try_build_typeop_function (~25行) - try_handle_math_function (~60行) - build_call_args (~7行) - 各関数30-60行に収まる - build_method_call (元107行) → 5つの小関数に分割 - try_build_static_method_call (~10行) - try_build_me_method_call (~35行) - 各関数が単一の明確な責務 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ ├── emit.rs # Call発行(415行)✨ NEW │ ├── build.rs # Call構築(505行)✨ NEW │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 最小限(60行、94%削減!) ## 技術的成果 - 可読性向上: 100行超 → 30-60行の小関数 - 保守性向上: 責務分離で影響範囲最小化 - 再利用性向上: 明確なIF定義で安全使用 - テスト容易性: 小さな単位でテスト可能 ## 次のステップ候補 - Phase 3: handlers.rs 作成(オプション) - さらなる細分化(emit/unified.rs 等) - ValueId(6)エラーの根本原因調査 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:11:21 +09:00
/// 実装: calls/utils.rs
pub(super) fn extract_string_literal(node: &crate::ast::ASTNode) -> Option<String> {
refactor(builder): 箱理論リファクタリング Phase 1完了 🎯 builder_calls.rs (982行) を箱理論で責務別にモジュール分割 ## 成果 ✅ builder_calls.rs: 982行 → 766行(-216行、22%削減) ✅ calls/lowering.rs: 354行(新規、箱理論6段階パターン) ✅ calls/utils.rs: 45行(新規、ユーティリティ統一) ✅ ビルド・テスト完全成功(0エラー) ## 箱理論の実装 1. 責務ごとに箱に分離: - lowering: 関数lowering専用 - utils: ユーティリティ統一 - emit/build: Phase 2で実装予定 2. 境界を明確に: - mod.rs で公開インターフェース定義 - pub(in crate::mir::builder) で適切な可視性制御 3. いつでも戻せる: - 段階的移行、各ステップでビルド確認 - 既存API完全保持(互換性100%) 4. 巨大関数は分割: - lower_static_method_as_function: 125行 → 6段階に分解 - lower_method_as_function: 80行 → 6段階に分解 ## 箱理論6段階パターン 1. prepare_lowering_context - Context準備 2. create_function_skeleton - 関数スケルトン作成 3. setup_function_params - パラメータ設定 4. lower_function_body - 本体lowering 5. finalize_function - 関数finalize 6. restore_lowering_context - Context復元 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 削減版(766行) ## 次のステップ Phase 2: emit.rs 作成(~500行移行) Phase 3: build.rs 作成(~350行移行) 最終目標: builder_calls.rs を200行以内に 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:02:01 +09:00
crate::mir::builder::calls::utils::extract_string_literal(node)
}
refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成! 🎯 目標75%削減を大幅に超える94%削減を達成! ## Phase 2 成果 ✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減) ✅ calls/emit.rs: 415行(新規、Call命令発行専用) ✅ calls/build.rs: 505行(新規、Call構築専用) ✅ ビルド・テスト成功(0エラー) ## 累積削減効果 Phase 1: 982行 → 766行(216行削減、22%削減) Phase 2: 766行 → 60行(706行削減、92%削減) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 合計: 982行 → 60行(922行削減、94%削減達成!) ## 箱理論実装詳細 ### 1. 責務ごとに箱に分離 - emit.rs: Call命令発行専用 - emit_unified_call, emit_legacy_call等 - 統一Call/LegacyCallの明確な分離 - build.rs: Call構築専用 - build_function_call, build_method_call等 - 関数Call/メソッドCallの段階的構築 - lowering.rs: 関数lowering専用(Phase 1) - utils.rs: ユーティリティ専用(Phase 1) ### 2. 境界を明確に - 各モジュールで公開インターフェース明確化 - calls/mod.rs で統一的にre-export - 内部関数は適切に隠蔽 ### 3. いつでも戻せる - builder_calls.rs で既存API完全保持 - re-exportによる完全な後方互換性 - 段階的移行で各ステップでビルド確認 ### 4. 巨大関数は分割 **emit.rs**: - emit_unified_call (元231行) → 複数の小関数に分割 - try_global_fallback_handlers (~50行) - materialize_receiver_in_callee (~30行) - emit_global_unified (~20行) **build.rs**: - build_function_call (元134行) → 7つの小関数に分割 - try_build_typeop_function (~25行) - try_handle_math_function (~60行) - build_call_args (~7行) - 各関数30-60行に収まる - build_method_call (元107行) → 5つの小関数に分割 - try_build_static_method_call (~10行) - try_build_me_method_call (~35行) - 各関数が単一の明確な責務 ## ファイル構成 src/mir/builder/ ├── calls/ │ ├── mod.rs # 公開インターフェース │ ├── lowering.rs # 関数lowering(354行) │ ├── emit.rs # Call発行(415行)✨ NEW │ ├── build.rs # Call構築(505行)✨ NEW │ └── utils.rs # ユーティリティ(45行) └── builder_calls.rs # 最小限(60行、94%削減!) ## 技術的成果 - 可読性向上: 100行超 → 30-60行の小関数 - 保守性向上: 責務分離で影響範囲最小化 - 再利用性向上: 明確なIF定義で安全使用 - テスト容易性: 小さな単位でテスト可能 ## 次のステップ候補 - Phase 3: handlers.rs 作成(オプション) - さらなる細分化(emit/unified.rs 等) - ValueId(6)エラーの根本原因調査 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Task先生 <task@anthropic.com>
2025-11-17 17:11:21 +09:00
// Note: All other methods (emit_unified_call, build_function_call, etc.)
// are automatically available via `pub use super::calls::*;`
}