diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index b854e55f..00cb91b7 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -279,7 +279,7 @@ - **P1/P2 両方で JoinIR 型ヒント → lifecycle.rs → 型推論の経路確立** - `is_type_hint_target()` で関数名フィルタを箱化 - 箱理論「まず箱に切り出す」原則の実践 -- 次のステップ: Phase 65 で P3 ケース実装、削除条件 5/5 達成へ +- 次のステップ: Phase 65 で P3-A/B ケース実装(Method/Box 戻り値)、P3-C は Phase 66+ に分離 --- diff --git a/src/mir/builder/lifecycle.rs b/src/mir/builder/lifecycle.rs index 45f63396..ba8cb8c0 100644 --- a/src/mir/builder/lifecycle.rs +++ b/src/mir/builder/lifecycle.rs @@ -61,7 +61,7 @@ fn get_phi_type_hint( None } -/// Phase 64-3: P1/P2 型ヒント対象判定 +/// Phase 65-3: P1/P2/P3-A/P3-B 型ヒント対象判定 /// /// 関数名が型ヒント使用対象かどうかを判定する。 /// 箱理論: 段階的拡大のため、関数名フィルタで制御 @@ -72,6 +72,12 @@ fn get_phi_type_hint( /// # P2 対象(Phase 64-3 追加) /// - `IfMergeTest.*` - If Merge パターンのテスト関数 /// - `read_quoted*` - selfhost の read_quoted 系関数 +/// +/// # P3-A 対象(Phase 65-3 追加) +/// - `read_quoted*` - StringBox メソッド (substring/length) 使用(P2 と重複) +/// +/// # P3-B 対象(Phase 65-3 追加) +/// - `NewBoxTest.*` - NewBox コンストラクタテスト関数 fn is_type_hint_target(func_name: &str) -> bool { // P1: If Select テスト関数 if func_name.starts_with("IfSelectTest.") { @@ -81,10 +87,14 @@ fn is_type_hint_target(func_name: &str) -> bool { if func_name.starts_with("IfMergeTest.") { return true; } - // P2: selfhost read_quoted 系関数 + // P2/P3-A: selfhost read_quoted 系関数(StringBox メソッドも含む) if func_name.contains("read_quoted") { return true; } + // P3-B: NewBox コンストラクタテスト関数 + if func_name.starts_with("NewBoxTest.") { + return true; + } false }