Pattern 4 handles loops with `continue` statements that skip to the next iteration. This is the most complex loop pattern due to additional control flow requirements.
## Why Deferred?
1.**Continue semantics require additional PHI and control flow analysis**
- Continue creates an additional edge to the loop header
- Requires phi nodes for both continue and normal paths
- More complex than break (which exits the loop)
2.**Pattern 3 covers most practical cases**
- Pattern 1: Simple while loops
- Pattern 2: Loops with break
- Pattern 3: Loops with if + PHI (most common complex pattern)
- Pattern 4: Loops with continue (less common in practice)
3.**Lower priority than break/if patterns**
- Break patterns (Pattern 2) are more common
- If + PHI patterns (Pattern 3) handle complex control flow
- Continue can often be refactored using if statements
## Example Use Case
```nyash
local i = 0
local sum = 0
loop(i <10){
i = i + 1
if (i % 2 == 0) {
continue // Skip even numbers
}
sum = sum + i
}
// sum = 25 (1+3+5+7+9)
```
## Implementation Requirements
When implemented, Pattern 4 lowering will need to:
1.**Detect continue statements** in the loop body
2.**Generate PHI nodes** for continue target (loop header)
3.**Handle carrier variables** (i, sum) across continue boundaries
4.**Generate exit PHI nodes** for final values after loop
## Control Flow Diagram
```
header
|
v
body
|
/----+----\
/ \
v v
continue normal
| |
\-----+-------/
|
v
latch
|
/---+---\
/ \
v v
loop exit
```
## Workaround
Until Pattern 4 is implemented, use Pattern 3 (if + PHI) instead:
```nyash
local i = 0
local sum = 0
loop(i <10){
i = i + 1
if (not (i % 2 == 0)) { // Invert condition
sum = sum + i
}
}
```
## Migration Path
1.**Pattern 1**: Simple while loops (no break/continue)
2.**Pattern 2**: Loops with break
3.**Pattern 3**: Loops with if + PHI
4.**Pattern 4**: (FUTURE) Loops with continue statements