49 lines
1.4 KiB
Plaintext
49 lines
1.4 KiB
Plaintext
|
|
// Phase 218: JsonParser-style if-sum pattern test (SIMPLIFIED)
|
||
|
|
// Tests: Loop with conditional accumulation using variable-based sum (JsonParser pattern)
|
||
|
|
// Target: selfhost JsonParser pattern (e.g., sum = sum + digit when digit > 0)
|
||
|
|
//
|
||
|
|
// Pattern:
|
||
|
|
// Simulate digits: 0, 1, 3, 0, 5
|
||
|
|
// Skip zero digits (i=0, i=3)
|
||
|
|
// Accumulate valid digits: sum = sum + digit
|
||
|
|
// Final sum: 0 + 1 + 3 + 5 = 9
|
||
|
|
//
|
||
|
|
// Expected result: 9 (sum of valid digits)
|
||
|
|
|
||
|
|
static box JsonIfSumTest {
|
||
|
|
sum_digits(data) {
|
||
|
|
local sum
|
||
|
|
sum = 0
|
||
|
|
local i
|
||
|
|
i = 0
|
||
|
|
local len
|
||
|
|
len = 5
|
||
|
|
|
||
|
|
loop(i < len) {
|
||
|
|
// Simulate digit extraction: [0, 1, 3, 0, 5]
|
||
|
|
// This is simpler than nested-if version
|
||
|
|
// For now, just use i itself as digit (JsonParser would do actual string parsing)
|
||
|
|
|
||
|
|
// JsonParser pattern: if digit > 0 { sum = sum + digit }
|
||
|
|
if i > 0 {
|
||
|
|
// Conditional update: sum = sum + i (simulating: sum = sum + digit)
|
||
|
|
sum = sum + i
|
||
|
|
print(sum) // Force if to stay in MIR
|
||
|
|
} else {
|
||
|
|
print(0) // Ensure else branch exists
|
||
|
|
}
|
||
|
|
|
||
|
|
i = i + 1
|
||
|
|
}
|
||
|
|
|
||
|
|
return sum
|
||
|
|
}
|
||
|
|
|
||
|
|
main() {
|
||
|
|
// Test: sum = 1 + 2 + 3 + 4 = 10
|
||
|
|
local result
|
||
|
|
result = JsonIfSumTest.sum_digits(0) // dummy arg
|
||
|
|
return result
|
||
|
|
}
|
||
|
|
}
|