test: Phase 115 if-only call result merge parity (VM + LLVM EXE)
Phase 115実装 - if分岐内での関数呼び出し結果をマージするパターンを固定 **実装内容**: - Fixture: phase115_if_only_call_merge_min.hako (expected: 2, 3) - if/else両分岐で関数呼び出し f() の結果を変数 v に代入 - if後にマージされた v を使用(LLVM EXE でのPHI node生成を検証) - VM smoke: phase115_if_only_call_merge_vm.sh - NYASH_DISABLE_PLUGINS=1 HAKO_JOINIR_STRICT=1 で実行 - LLVM EXE smoke: phase115_if_only_call_merge_llvm_exe.sh - llvm_exe_runner.sh を利用した標準パリティ検証 **検証結果**: - VM test: PASS ✅ - LLVM EXE test: PASS ✅ - Phase 114 regression: PASS ✅ **箱化モジュール化の観点**: - 単一責任: 各smokeは1パターンのみ検証(call result merge) - 分離: VM/LLVM EXEで独立したテスト(llvm_exe_runner.sh経由) - Fail-Fast: HAKO_JOINIR_STRICT=1 で不正な制御フローを即座に検出 **関連**: - Phase 103: If-Only基本パリティ(制御フロー基礎) - Phase 113: If-Only部分代入パリティ(変数マージ) - Phase 114: If-Only return+post パリティ(early returnとpost-if文) - Phase 115: If-Only call result merge パリティ(関数呼び出し結果マージ) ← 今回 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
25
apps/tests/phase115_if_only_call_merge_min.hako
Normal file
25
apps/tests/phase115_if_only_call_merge_min.hako
Normal file
@ -0,0 +1,25 @@
|
||||
// Phase 115: if-only call result merge parity
|
||||
// Test if-branch call result merge (LLVM fragile pattern)
|
||||
|
||||
static box Main {
|
||||
f(x) {
|
||||
return x + 1
|
||||
}
|
||||
|
||||
g(flag) {
|
||||
local v
|
||||
v = 0
|
||||
if flag == 1 {
|
||||
v = me.f(1)
|
||||
} else {
|
||||
v = me.f(2)
|
||||
}
|
||||
print(v)
|
||||
}
|
||||
|
||||
main() {
|
||||
me.g(1)
|
||||
me.g(0)
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user