feat: Phase 9.78d部分達成 - InstanceBox統合でBuiltinBox作成成功
🎯 Phase 9.78d: InstanceBox簡素化統一実装の主要マイルストーン達成 主要成果: ✅ Rustスコープ問題をシンプル解決 - `use crate::InstanceBox;` ✅ StringBox → InstanceBox統合完了 - BuiltinBoxFactory経由 ✅ 統一レジストリ経由での動的Box作成が動作 ✅ 基本機能テスト成功(文字列作成・連結) 技術詳細: - BuiltinBoxFactory内でInstanceBox::from_any_box()による統合実装 - lib.rsのpub useを活用した最軽量import戦略 - 🏭 Unified registry created: StringBoxログで統合動作確認 - StringBox基本機能(連結演算子等)は正常動作 次の課題: ⚠️ メソッド呼び出し統合(str.type_name()等)は別途対応 ファイル変更: - src/box_factory/builtin.rs: StringBoxのInstanceBox統合実装 - src/lib.rs: コメント整理 - docs/CURRENT_TASK.md: 進捗状況更新 - local_tests/: 統合動作テスト追加 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -9,6 +9,8 @@ use super::BoxFactory;
|
||||
use crate::box_trait::NyashBox;
|
||||
use crate::interpreter::RuntimeError;
|
||||
use crate::boxes::*;
|
||||
// 🎯 最軽量アプローチ: lib.rsのpub useを活用
|
||||
use crate::InstanceBox;
|
||||
use std::collections::HashMap;
|
||||
|
||||
type BoxCreator = Box<dyn Fn(&[Box<dyn NyashBox>]) -> Result<Box<dyn NyashBox>, RuntimeError> + Send + Sync>;
|
||||
@ -47,7 +49,10 @@ impl BuiltinBoxFactory {
|
||||
Some(arg) => arg.to_string_box().value,
|
||||
None => String::new(),
|
||||
};
|
||||
Ok(Box::new(StringBox::new(value)))
|
||||
// 🎯 シンプルアプローチ: instance_v2統合
|
||||
let inner = StringBox::new(value);
|
||||
let instance = InstanceBox::from_any_box("StringBox".to_string(), Box::new(inner));
|
||||
Ok(Box::new(instance) as Box<dyn NyashBox>)
|
||||
});
|
||||
|
||||
// IntegerBox
|
||||
|
||||
@ -71,8 +71,8 @@ pub use type_box::{TypeBox, TypeRegistry, MethodSignature}; // 🌟 TypeBox exp
|
||||
pub use ast::{ASTNode, BinaryOperator, LiteralValue};
|
||||
pub use parser::{NyashParser, ParseError};
|
||||
pub use interpreter::{NyashInterpreter, RuntimeError};
|
||||
// pub use instance::InstanceBox; // 旧実装
|
||||
pub use instance_v2::InstanceBox; // 🎯 新実装テスト
|
||||
// pub use instance::InstanceBox; // 旧実装
|
||||
pub use instance_v2::InstanceBox; // 🎯 新実装テスト(nyash_rustパス使用)
|
||||
pub use channel_box::{ChannelBox, MessageBox};
|
||||
pub use boxes::math_box::{MathBox, FloatBox, RangeBox};
|
||||
pub use boxes::time_box::{TimeBox, DateTimeBox, TimerBox};
|
||||
|
||||
Reference in New Issue
Block a user