103 lines
3.7 KiB
Markdown
103 lines
3.7 KiB
Markdown
|
|
# Codex向け質問 - Phase 15.5後のテスト戦略
|
|||
|
|
|
|||
|
|
## 📋 背景
|
|||
|
|
|
|||
|
|
Phase 15.5でCore Box完全削除を実施し、すべてのBoxをプラグイン化しました。その結果:
|
|||
|
|
- ✅ nyash.tomlのパス修正完了(13箇所)
|
|||
|
|
- ✅ プラグインは正常にロード(.soファイル20個存在)
|
|||
|
|
- ✅ 基本的な算術演算・制御構文は動作
|
|||
|
|
- ❌ StringBox/IntegerBoxのメソッドが動作しない
|
|||
|
|
|
|||
|
|
## 🔍 現在の問題
|
|||
|
|
|
|||
|
|
### StringBoxプラグインの状況
|
|||
|
|
```nyash
|
|||
|
|
local s = new StringBox("Hello") # ← オブジェクト生成OK(ハンドル返却)
|
|||
|
|
print(s) # ← 空文字列(toString失敗)
|
|||
|
|
s.length() # ← 0を返す(内部データなし)
|
|||
|
|
s.toString() # ← 空文字列を返す
|
|||
|
|
s.get() # ← 空文字列を返す
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 調査済み事項
|
|||
|
|
1. プラグインは正常にロード(plugin-testerで確認)
|
|||
|
|
2. nyash_plugin_invokeは実装済み(legacy v1 ABI)
|
|||
|
|
3. method_id衝突を修正済み(0-3 → 4+に変更)
|
|||
|
|
4. 通常の文字列リテラルは動作する
|
|||
|
|
5. 算術演算は問題なし
|
|||
|
|
|
|||
|
|
### 🔬 根本原因(Codex調査結果)
|
|||
|
|
**TypeBox v2のresolveブランチが欠落している**
|
|||
|
|
- `birth`メソッドの解決パスが未実装
|
|||
|
|
- `toString`メソッドの解決パスが未実装
|
|||
|
|
- プラグインメソッドは呼ばれるが、結果の処理に問題
|
|||
|
|
|
|||
|
|
## 🎯 質問
|
|||
|
|
|
|||
|
|
### 1. **StringBoxメソッドが動作しない原因は?**
|
|||
|
|
Phase 15.5でCore Boxを削除した影響で、プラグイン側の実装が不完全な可能性があります。
|
|||
|
|
- プラグインのnyash_plugin_invoke実装を確認すべき箇所は?
|
|||
|
|
- MIRビルダー側でプラグインメソッド呼び出しに特別な処理が必要?
|
|||
|
|
|
|||
|
|
### 2. **テスト戦略の方向性**
|
|||
|
|
現状でStringBox/IntegerBoxが動作しない中で:
|
|||
|
|
- A案: プラグインメソッド修正を優先
|
|||
|
|
- B案: 基本機能(算術・制御)のテストを先に充実
|
|||
|
|
- C案: 別のBoxプラグイン(FileBox等)でテスト
|
|||
|
|
|
|||
|
|
どの方向性が効率的でしょうか?
|
|||
|
|
|
|||
|
|
### 3. **プラグインメソッド呼び出しのデバッグ方法**
|
|||
|
|
```bash
|
|||
|
|
# 現在の確認方法
|
|||
|
|
./tools/plugin-tester/target/release/plugin-tester check --config nyash.toml
|
|||
|
|
# → プラグインロードはOK、でもメソッド実行時に問題
|
|||
|
|
|
|||
|
|
# より詳細なデバッグ方法は?
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔄 再現手順
|
|||
|
|
|
|||
|
|
### 最小再現コード
|
|||
|
|
```bash
|
|||
|
|
# test_stringbox.nyash
|
|||
|
|
local s = new StringBox("Hello World")
|
|||
|
|
print("StringBox created")
|
|||
|
|
print(s) # 期待: "Hello World", 実際: ""
|
|||
|
|
local len = s.length()
|
|||
|
|
print("Length: " + len) # 期待: 11, 実際: 0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 実行コマンド
|
|||
|
|
```bash
|
|||
|
|
# プラグインロード確認
|
|||
|
|
./tools/plugin-tester/target/release/plugin-tester check --config nyash.toml
|
|||
|
|
|
|||
|
|
# テスト実行
|
|||
|
|
NYASH_ENTRY_ALLOW_TOPLEVEL_MAIN=1 ./target/release/nyash test_stringbox.nyash
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### デバッグ情報収集
|
|||
|
|
```bash
|
|||
|
|
# 詳細ログ
|
|||
|
|
NYASH_CLI_VERBOSE=1 ./target/release/nyash test_stringbox.nyash
|
|||
|
|
|
|||
|
|
# MIRダンプ確認
|
|||
|
|
./target/release/nyash --dump-mir test_stringbox.nyash
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📁 関連ファイル
|
|||
|
|
|
|||
|
|
- `nyash.toml` - プラグイン設定(method_id修正済み)
|
|||
|
|
- `plugins/nyash-string-plugin/src/lib.rs` - StringBoxプラグイン実装
|
|||
|
|
- `tools/smokes/v2/` - 新スモークテストシステム
|
|||
|
|
- `src/box_factory/plugin.rs` - プラグインロード実装
|
|||
|
|
- `src/mir/builder/builder_calls.rs` - TypeBox v2 resolve実装(問題箇所)
|
|||
|
|
|
|||
|
|
## 🚀 期待する回答
|
|||
|
|
|
|||
|
|
1. StringBoxメソッドが動作しない根本原因の特定方法
|
|||
|
|
2. 効率的なテスト戦略の提案
|
|||
|
|
3. プラグインメソッド呼び出しのデバッグ手法
|
|||
|
|
|
|||
|
|
よろしくお願いします!
|