- Created 4 representative test cases for Pattern3 patterns: * test_pattern3_if_phi_no_break.hako - Core Pattern3 (if-else PHI, no break/continue) * test_pattern3_skip_whitespace.hako - Pattern3+break style (routed to Pattern2) * test_pattern3_trim_leading.hako - Pattern3+break style (routed to Pattern2) * test_pattern3_trim_trailing.hako - Pattern3+break style (routed to Pattern2) - Validated Pattern3_WithIfPhi detection: * Pattern routing: Pattern3_WithIfPhi MATCHED confirmed * JoinIR lowering: 3 functions, 20 blocks → 8 blocks (successful) * [joinir/freeze] elimination: Complete (no errors on any test) - Clarified pattern classification: * Pattern3_WithIfPhi handles if-else PHI without break/continue * Loops with "if-else PHI + break" are routed to Pattern2_WithBreak * Break takes priority over if-else PHI in pattern detection - Cumulative achievement (Phase 162-164): * Pattern1: 6 loops working ✅ * Pattern2: 5 loops working ✅ * Pattern3 (no break): 1 loop working ✅ * Pattern3+break (as Pattern2): 3 loops working ✅ * Total: 15 loops covered, zero [joinir/freeze] errors - Updated CURRENT_TASK.md with Phase 164 section and findings Next: Phase 165 Pattern4 (continue) validation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
// Phase 164: Test trim_trailing from JsonParserBox (Pattern3 with if-else PHI + break)
|
|
// Simulates: loop(end > start) { if is_whitespace(ch) { end-- } else { break } }
|
|
|
|
static box Main {
|
|
main(args) {
|
|
// Simulate trimming trailing whitespace
|
|
local s = "hello world \t\n"
|
|
local start = 0
|
|
local end = s.length()
|
|
|
|
// Loop with if-else PHI: end is updated conditionally with break
|
|
// Note: working backwards from end
|
|
loop(end > start) {
|
|
local ch = s.substring(end - 1, end)
|
|
// Check if whitespace
|
|
local is_ws = 0
|
|
if ch == " " {
|
|
is_ws = 1
|
|
} else if ch == "\t" {
|
|
is_ws = 1
|
|
} else if ch == "\n" {
|
|
is_ws = 1
|
|
} else if ch == "\r" {
|
|
is_ws = 1
|
|
}
|
|
|
|
if is_ws == 1 {
|
|
end = end - 1
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
|
|
// Output result
|
|
local trimmed = s.substring(start, end)
|
|
print("Trimmed trailing whitespace")
|
|
print("End position: " + ("" + end))
|
|
print("Trimmed string: " + trimmed)
|
|
print("Expected end: 11")
|
|
print("Expected string: hello world")
|
|
return 0
|
|
}
|
|
}
|