refactor(mir): Remove TypeContext legacy fields (Phase 2-3/7)
完全移行→削除の安全順序(Option C)に従い、TypeContext の deprecated フィールドと sync helpers を完全削除。 ⚠️ 危険ゾーン: TypeFactsBox 等の同名フィールドと混同しないよう、 ファイル単位で手作業移行を実施。 ## Changes - Migrated all MirBuilder access sites to type_ctx.* (manual, 40+ files) - Removed 3 deprecated fields (value_types, value_kinds, value_origin_newbox) - Removed 2 sync helpers (sync_type_ctx_to_legacy, sync_legacy_to_type_ctx) - Verified TypeFactsBox, CalleeGuardBox unchanged (no false positives) ## Tests - cargo test --release --lib: 1029/1033 PASS - TypeFactsBox integration: PASS (borrowed references unchanged) - Deprecation warnings: 456 → 255 (-201, -44%) ## Safety Verification ✅ TypeFactsBox unchanged (still uses &'a BTreeMap borrowed references) ✅ CalleeGuardBox unchanged ✅ CalleeResolverBox unchanged ✅ BoxCompilationContext unchanged Phase 2 Progress: 3/7 contexts complete (43%) - ✅ MetadataContext - ✅ CoreContext - ✅ TypeContext (this commit) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -185,7 +185,7 @@ impl super::MirBuilder {
|
||||
use crate::runtime::{CoreBoxId, CoreMethodId};
|
||||
|
||||
// 1. box_val の型を取得
|
||||
let box_ty = self.value_types.get(&box_val)?;
|
||||
let box_ty = self.type_ctx.value_types.get(&box_val)?;
|
||||
|
||||
// 2. Box 型名を取得
|
||||
let box_name = match box_ty {
|
||||
@ -255,9 +255,9 @@ impl super::MirBuilder {
|
||||
// Check environment variable for unified call usage, with safe overrides for core/user boxes
|
||||
let use_unified_env = super::calls::call_unified::is_unified_call_enabled();
|
||||
// First, try to determine the box type
|
||||
let mut box_type: Option<String> = self.value_origin_newbox.get(&box_val).cloned();
|
||||
let mut box_type: Option<String> = self.type_ctx.value_origin_newbox.get(&box_val).cloned();
|
||||
if box_type.is_none() {
|
||||
if let Some(t) = self.value_types.get(&box_val) {
|
||||
if let Some(t) = self.type_ctx.value_types.get(&box_val) {
|
||||
match t {
|
||||
super::MirType::String => box_type = Some("StringBox".to_string()),
|
||||
super::MirType::Box(name) => box_type = Some(name.clone()),
|
||||
@ -316,9 +316,9 @@ impl super::MirBuilder {
|
||||
effects,
|
||||
})?;
|
||||
if let Some(d) = dst {
|
||||
let mut recv_box: Option<String> = self.value_origin_newbox.get(&box_val).cloned();
|
||||
let mut recv_box: Option<String> = self.type_ctx.value_origin_newbox.get(&box_val).cloned();
|
||||
if recv_box.is_none() {
|
||||
if let Some(t) = self.value_types.get(&box_val) {
|
||||
if let Some(t) = self.type_ctx.value_types.get(&box_val) {
|
||||
match t {
|
||||
super::MirType::String => recv_box = Some("StringBox".to_string()),
|
||||
super::MirType::Box(name) => recv_box = Some(name.clone()),
|
||||
@ -328,12 +328,12 @@ impl super::MirBuilder {
|
||||
}
|
||||
if let Some(bt) = recv_box {
|
||||
if let Some(mt) = self.plugin_method_sigs.get(&(bt.clone(), method.clone())) {
|
||||
self.value_types.insert(d, mt.clone());
|
||||
self.type_ctx.value_types.insert(d, mt.clone());
|
||||
} else {
|
||||
// Phase 84-4-B: ビルトイン Box のメソッド戻り値型推論
|
||||
// plugin_method_sigs に登録されていない場合のフォールバック
|
||||
if let Some(ret_ty) = self.infer_boxcall_return_type(box_val, &method) {
|
||||
self.value_types.insert(d, ret_ty.clone());
|
||||
self.type_ctx.value_types.insert(d, ret_ty.clone());
|
||||
|
||||
if std::env::var("NYASH_BOXCALL_TYPE_TRACE").ok().as_deref() == Some("1") {
|
||||
eprintln!(
|
||||
|
||||
Reference in New Issue
Block a user