refactor(builder): me-call構造クリーンアップ - 無駄な委譲削除
🎯 箱理論改善: 責務の重複と無駄な中間レイヤー削除 ## 問題 - handle_me_method_call → try_handle_me_direct_call → try_build_me_method_call - 3層の委譲で責務が重複 - try_handle_me_direct_call が単なる委譲で独自の責務なし ## 改善 ✅ try_handle_me_direct_call を削除 ✅ try_build_me_method_call の処理を handle_me_method_call に統合 ✅ 責務を1箇所に集約(method_call_handlers.rs) ## 効果 - 🎯 責務の明確化(1つの関数が1つの責務) - ⚡ 無駄な関数呼び出し削減 - 📖 可読性向上 - 🐛 循環依存の構造的根絶 ## ファイル変更 - builder_calls.rs: try_handle_me_direct_call削除(-15行) - build.rs: try_build_me_method_call削除(-47行) - method_call_handlers.rs: handle_me_method_call統合(+43行) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -213,6 +213,22 @@ impl MirInterpreter {
|
||||
let val = std::env::var(&key).ok();
|
||||
Some(Ok(match val { Some(s) => VMValue::String(s), None => VMValue::Void }))
|
||||
}
|
||||
"env.set" => {
|
||||
if args.len() < 2 {
|
||||
return Some(Err(ErrorBuilder::arg_count_mismatch("env.set", 2, args.len())));
|
||||
}
|
||||
let key = match self.reg_load(args[0]) {
|
||||
Ok(v) => v.to_string(),
|
||||
Err(e) => return Some(Err(e)),
|
||||
};
|
||||
let val = match self.reg_load(args[1]) {
|
||||
Ok(VMValue::Void) => String::new(),
|
||||
Ok(v) => v.to_string(),
|
||||
Err(e) => return Some(Err(e)),
|
||||
};
|
||||
std::env::set_var(&key, &val);
|
||||
Some(Ok(VMValue::Void))
|
||||
}
|
||||
// Direct env.box_introspect.kind extern (ExternCall form)
|
||||
"env.box_introspect.kind" => {
|
||||
use crate::box_trait::{NyashBox, StringBox};
|
||||
|
||||
Reference in New Issue
Block a user