feat(phi): Phase 25.1 - LoopForm v2 テスト・最小再現ケース追加
- ✅ 最小再現ケース作成 - apps/tests/minimal_ssa_skip_ws.hako: 確実に再現する10-30行ケース - apps/tests/minimal_ssa_bug*.hako: 段階的簡略化版 - apps/tests/loopform_*.hako: LoopForm v2 各ケーステスト - ✅ Rustテストスイート追加 - src/tests/mir_loopform_conditional_reassign.rs: 4ケース(Case A/B/C/D) - src/tests/mir_loopform_complex.rs: 複雑なパターン - 全テストPASS確認済み - ✅ SSAバグ分析ドキュメント - docs/development/analysis/minimal_ssa_bug_analysis.md - エラー詳細・原因・ワークアラウンド記録 🎯 成果: SSAバグの構造を完全特定、デバッグ準備完了
This commit is contained in:
40
apps/tests/loopform_continue_break_scan.hako
Normal file
40
apps/tests/loopform_continue_break_scan.hako
Normal file
@ -0,0 +1,40 @@
|
||||
// loopform_continue_break_scan.hako
|
||||
// 目的: Region+next_i 型の scan ループで continue + break 混在パターンをスモークする
|
||||
|
||||
static box Main {
|
||||
scan(s) {
|
||||
local i = 0
|
||||
local n = s.length()
|
||||
// Case C-ish: constant-true + continue/backedge + break
|
||||
loop(1 == 1) {
|
||||
if i >= n { break }
|
||||
|
||||
// Region+next_i: この周回での「次の i」を 1 箇所に集約
|
||||
local next_i = i
|
||||
local ch = s.substring(i, i + 1)
|
||||
|
||||
if ch == " " {
|
||||
next_i = i + 1
|
||||
i = next_i
|
||||
continue
|
||||
}
|
||||
if ch == "\t" {
|
||||
next_i = i + 2
|
||||
i = next_i
|
||||
continue
|
||||
}
|
||||
// その他の文字で終了
|
||||
break
|
||||
}
|
||||
return i
|
||||
}
|
||||
|
||||
main(args) {
|
||||
// 先頭に space + tab を並べたケースで scan が 3 を返すことを想定
|
||||
local s = " \tX"
|
||||
local r = Main.scan(s)
|
||||
print(r)
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user