Files
hakorune/test_me_workaround.nyash

70 lines
1.6 KiB
Plaintext
Raw Normal View History

🎨 feat: EguiBox GUI開発基盤完成 + パーサー無限ループバグ修正 ## 🚀 主要機能追加 ### EguiBox - GUI開発基盤 - Windows版GUIメモ帳アプリ (simple_notepad.rs, nyash_notepad_jp.rs) - 日本語フォント対応 (NotoSansJP-VariableFont_wght.ttf) - BMPアイコン表示システム (c_drive_icon.bmp) - Windowsエクスプローラー風アプリ (nyash_explorer.rs) - アイコン抽出システム (test_icon_extraction.rs) ### ビジュアルプログラミング準備 - NyashFlow プロジェクト設計完成 (NYASHFLOW_PROJECT_HANDOVER.md) - ビジュアルノードプロトタイプ基盤 - WebAssembly対応準備 ## 🔧 重大バグ修正 ### パーサー無限ループ問題 (3引数メソッド呼び出し) - 原因: メソッドパラメータ解析ループの予約語処理不備 - 修正: src/parser/mod.rs - 非IDENTIFIERトークンのエラーハンドリング追加 - 効果: "from"等の予約語で適切なエラー報告、ハング→瞬時エラー ### MapBoxハング問題調査 - MapBox+3引数メソッド呼び出し組み合わせ問題特定 - バグレポート作成 (MAPBOX_HANG_BUG_REPORT.md) - 事前評価vs必要時評価の設計問題明確化 ## 🧹 コード品質向上 - box_methods.rs を8モジュールに機能分離 - 一時デバッグコード全削除 (eprintln\!, unsafe等) - 構文チェック通過確認済み ## 📝 ドキュメント整備 - CLAUDE.md にGUI開発セクション追加 - Gemini/ChatGPT先生相談ログ保存 (sessions/) - 段階的デバッグ手法確立 ## 🎯 次の目標 - must_advance\!マクロ実装 (無限ループ早期検出) - コマンド引数でデバッグ制御 (--debug-fuel) - MapBox問題の根本修正 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-10 07:54:03 +09:00
// me回避策テスト
print("=== Me Workaround Test ===")
box TargetBox {
init { name }
deliver(messageType, data, from) {
print("deliver: " + from + " -> " + messageType + " = " + data)
}
}
box CallerBox {
init { target, nodeId }
setup(targetRef) {
me.target = targetRef
me.nodeId = "TestNode"
print("CallerBox setup completed")
}
getNodeId() {
return me.nodeId
}
// 方法1: me.nodeIdを直接使用元の問題のある方法
testDirect() {
print("Test 1: Direct me.nodeId usage...")
me.target.deliver("hello", "data1", me.nodeId)
print("Direct test completed")
}
// 方法2: local変数経由
testViaLocal() {
print("Test 2: Via local variable...")
local nodeIdCopy
nodeIdCopy = me.nodeId
me.target.deliver("hello", "data2", nodeIdCopy)
print("Local variable test completed")
}
// 方法3: getterメソッド経由
testViaGetter() {
print("Test 3: Via getter method...")
me.target.deliver("hello", "data3", me.getNodeId())
print("Getter method test completed")
}
}
// テスト実行
print("Creating boxes...")
local target
target = new TargetBox()
local caller
caller = new CallerBox()
caller.setup(target)
print("Testing via local variable...")
caller.testViaLocal()
print("Testing via getter method...")
caller.testViaGetter()
print("Testing direct me access...")
caller.testDirect()
print("If you see this, direct me access worked!")
print("All me workaround tests completed!")