feat(naming): Phase 25.4-A NamingBox SSOT統一化完了

Task A: NamingBox SSOT化(static/global名前決定の一元化)

## 変更内容

### 1. Builder側をNamingBoxに統一
- `src/mir/builder/decls.rs:46`
  - 手動string組み立て → `encode_static_method()`使用に変更
  - "Main.main" → "Main.main/N" (arity付き正規形)

### 2. VM側の構造確認・ドキュメント強化
- `src/backend/mir_interpreter/handlers/calls/global.rs:145-149`
  - NamingBox SSOT原則をコメントで明示
  - レガシーフォールバック廃止を明記

## テスト結果
 cargo test mir_static_box_naming: 2 passed
 cargo test stage1_cli_entry_ssa_smoke: 2 passed

## 技術的成果
- static box / global 呼び出しの名前決定を `src/mir/naming.rs` に一本化
- 手動文字列組み立て(`format!("{}.{}", box, method)`)を排除
- 正規化ルール(main→Main等)をNamingBox経由で統一

## 参考
- Phase 25.4計画: docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/
- NamingBox SSOT: src/mir/naming.rs

🎉 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-21 09:16:27 +09:00
parent 2f07ab6a30
commit fa9cea51b6
2 changed files with 7 additions and 4 deletions

View File

@ -142,9 +142,11 @@ impl MirInterpreter {
}
Ok(VMValue::Void)
}
_ => Err(
self.err_with_context("global function", &format!("Unknown: {}", func_name)),
),
_ => {
// NamingBox SSOT: ここで canonical に失敗したら素直に Unknown とする。
// レガシーフォールバックfunctions.get(func_name) 再探索)は Phase 25.x で廃止済み。
Err(self.err_with_context("global function", &format!("Unknown: {}", func_name)))
}
}
}
}

View File

@ -42,7 +42,8 @@ impl super::MirBuilder {
.as_deref()
== Some("1")
{
let func_name = format!("{}.{}", box_name, "main");
// NamingBox SSOT: Use encode_static_method for main/arity entry
let func_name = crate::mir::naming::encode_static_method(&box_name, "main", params.len());
eprintln!(
"[DEBUG] build_static_main_box: Before lower_static_method_as_function"
);