Files
hakorune/src/backend/mir_interpreter/utils/mod.rs

13 lines
387 B
Rust
Raw Normal View History

//! MIR Interpreter共通ユーティリティ
pub mod destination_helpers;
pub mod arg_validation;
pub mod receiver_helpers;
refactor: unify error message generation (Phase 3) Add ErrorBuilder utility and migrate 35 error generation sites Phase 3: Error Message Generation Unification ============================================ Infrastructure: - Add src/backend/mir_interpreter/utils/error_helpers.rs (255 lines) - Implement ErrorBuilder with 7 standardized error patterns - Add MirInterpreter convenience methods (err_invalid, err_type_mismatch, etc.) Migration Results: - Total patterns migrated: 35 instances (80 → 45, 44% reduction) - calls.rs: 37 → 13 patterns (65% reduction) - extern_provider.rs: 20 → 9 patterns (55% reduction) - Lines saved: 33 lines (1.0% of handlers) Error Patterns Unified: 1. Invalid instruction errors → ErrorBuilder::invalid_instruction() 2. Type mismatch errors → ErrorBuilder::type_mismatch() 3. Argument count errors → ErrorBuilder::arg_count_mismatch() 4. Method not found → ErrorBuilder::method_not_found() 5. Unsupported operations → ErrorBuilder::unsupported_operation() 6. Context errors → ErrorBuilder::with_context() 7. Bounds errors → ErrorBuilder::out_of_bounds() Benefits: - Consistent error message formatting across all handlers - Single point of change for error improvements - Better IDE autocomplete support - Easier future i18n integration - Reduced code duplication Cumulative Impact (Phase 1+2+3): - Total lines saved: 150-187 lines (4.5-5.7% of handlers) - Total patterns unified: 124 instances * Phase 1: 37 destination patterns * Phase 2: 52 argument validation patterns * Phase 3: 35 error generation patterns Remaining Work: - 45 error patterns still to migrate (estimated 50-80 lines) - Complex cases requiring manual review Testing: - Build: ✅ 0 errors, 0 new warnings - Smoke tests: ⚠️ 8/9 passed (1 timeout unrelated) - Core functionality: ✅ Verified Related: Phase 21.0 MIR Interpreter refactoring Risk: Low (error messages only, behavior preserved) Impact: High (maintainability, consistency, i18n-ready) Co-authored-by: Claude Code <claude@anthropic.com>
2025-11-06 23:18:10 +09:00
pub mod error_helpers;
pub mod conversion_helpers;
pub mod naming;
Phase 21.2 Complete: VM Adapter正規実装 + devブリッジ完全撤去 ## 🎉 Phase 21.2完全達成 ### ✅ 実装完了 - VM static box 永続化(singleton infrastructure) - devブリッジ完全撤去(adapter_dev.rs削除、by-name dispatch削除) - .hako正規実装(MirCallV1Handler, AbiAdapterRegistry等) - text-merge経路完全動作 - 全phase2120 adapter reps PASS(7テスト) ### 🐛 バグ修正 1. strip_local_decl修正 - トップレベルのみlocal削除、メソッド内は保持 - src/runner/modes/common_util/hako.rs:29 2. static box フィールド永続化 - MirInterpreter singleton storage実装 - me parameter binding修正(1:1マッピング) - getField/setField string→singleton解決 - src/backend/mir_interpreter/{mod,exec,handlers/boxes_object_fields}.rs 3. Map.len alias rc=0修正 - [map/missing]パターン検出でnull扱い(4箇所) - lang/src/vm/boxes/mir_call_v1_handler.hako:91-93,131-133,151-153,199-201 ### 📁 主要変更ファイル #### Rust(VM Runtime) - src/backend/mir_interpreter/mod.rs - static box singleton storage - src/backend/mir_interpreter/exec.rs - parameter binding fix - src/backend/mir_interpreter/handlers/boxes_object_fields.rs - singleton resolution - src/backend/mir_interpreter/handlers/calls.rs - dev bridge removal - src/backend/mir_interpreter/utils/mod.rs - adapter_dev module removal - src/backend/mir_interpreter/utils/adapter_dev.rs - DELETED (7555 bytes) - src/runner/modes/vm.rs - static box declaration collection - src/runner/modes/common_util/hako.rs - strip_local_decl fix - src/instance_v2.rs - Clone implementation #### Hako (.hako実装) - lang/src/vm/boxes/mir_call_v1_handler.hako - [map/missing] detection - lang/src/vm/boxes/abi_adapter_registry.hako - NEW (adapter registry) - lang/src/vm/helpers/method_alias_policy.hako - method alias support #### テスト - tools/smokes/v2/profiles/quick/core/phase2120/s3_vm_adapter_*.sh - 7 new tests ### 🎯 テスト結果 ``` ✅ s3_vm_adapter_array_len_canary_vm.sh ✅ s3_vm_adapter_array_len_per_recv_canary_vm.sh ✅ s3_vm_adapter_array_length_alias_canary_vm.sh ✅ s3_vm_adapter_array_size_alias_canary_vm.sh ✅ s3_vm_adapter_map_len_alias_state_canary_vm.sh ✅ s3_vm_adapter_map_length_alias_state_canary_vm.sh ✅ s3_vm_adapter_map_size_struct_canary_vm.sh ``` 環境フラグ: HAKO_ABI_ADAPTER=1 HAKO_ABI_ADAPTER_DEV=0 ### 🏆 設計品質 - ✅ ハードコード禁止(AGENTS.md 5.1)完全準拠 - ✅ 構造的・一般化設計(特定Box名のif分岐なし) - ✅ 後方互換性保持(既存コード破壊ゼロ) - ✅ text-merge経路(.hako依存関係正しくマージ) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 19:32:44 +09:00
// Phase 21.2: adapter_dev removed - all adapter functions now in .hako implementation
// Selective re-export (only naming is widely used via utils::normalize_arity_suffix)
pub use naming::*;