Constructing a value of a singleton array type used to produce a for loop, but now just constructs the contentless RepVal instead;
Ix methods used to be able to sneak for loops past lowerFullySequential, but now they are lowered (and also optimized) like all other user code; and
The Imp pass used to construct for loops itself (and recursively lower them) when implementing a writer effect with an array-typed accumulator, but now directly emits Imp loops instead.
Turns out there were a few sneaky hidden ones:
for
loop, but now just constructs the contentlessRepVal
instead;for
loops pastlowerFullySequential
, but now they are lowered (and also optimized) like all other user code; andfor
loops itself (and recursively lower them) when implementing a writer effect with an array-typed accumulator, but now directly emits Imp loops instead.