refactor(json_v0_bridge): Phase 25.1p - FunctionDefBuilder箱化+me予約修正

【変更内容】
1. FunctionDefBuilder 箱化(SSOT化)
   - インスタンスメソッド判定の一元化
   - パラメータ ValueId 生成の統一
   - 変数マップ初期化の統一

2. ValueId(0) me 予約バグ修正
   - is_instance_method() で box_name != "Main" 判定
   - インスタンスメソッドは me を ValueId(0) に予約
   - variable_map["me"] = ValueId(0) を自動設定

3. コード削減・可読性向上
   - 60行 → 40行(関数定義処理)
   - 重複ロジック削除
   - デバッグログ追加(is_instance表示)

【効果】
- json_v0_bridge 経路の ValueId(0) 未定義エラー解消
- Stage-B compiler で static box メソッドが正しく動作
- 設計の一貫性向上(me の扱いが明確)

【非スコープ】
- Rust MirBuilder 側は未修正(Phase 26で統一予定)
- lower_static_method_as_function は現状維持

関連: Phase 25.1m (静的メソッド修正), Phase 25.1c/k (SSA修正)

🐱 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-11-19 10:08:04 +09:00
parent 75f3df2505
commit 1747ec976c
5 changed files with 306 additions and 33 deletions

View File

@ -124,3 +124,6 @@ Status: completed静的メソッド / LoopForm v2 continue + PHI の根治完
- StageB 本体:
- `Main.main` 処理内で `String(...) > Integer(13)` のような異種型比較に起因する型エラーが残っているcontinue/PHI 修正とは独立)。
- これは StageB の JSON 生成 / body_src 構造に属する問題のため、25.1m では扱わず、25.1c 続き or 次フェーズで箱単位に切り出して対応する。
- Stage1 / StageB の JSON v0 defs については、25.1m で `src/runner/json_v0_bridge/lowering.rs` を調整し、
- `box_name != "Main"` の関数定義をインスタンスメソッドとして扱い、
- Bridge 側で暗黙 receiver `me` を先頭パラメータにバインドすることで、`me._push_module_entry(...)` のような呼び出し時に `me` が未定義にならないようにした。