Closed
Description
Abstract
The proto fuzzer does not thoroughly test optimizations on for loop and switch shift statements. This issue tracks support for these statements. Once finished, this should improve proto fuzzers' test coverage
Motivation
- Extend current proto specification for the said statements
- for loops will be "hardcoded" for a fixed number of iterations e.g.,
for {let i := 0x00} lt(i,0x100) { i := add(i, 0x20)}
{
<blockStmt>
}
- for loops may contain break/continue statements inside the body of the for loop (see [Yul] introduce break/continue keywords. #6136 )
Here's the for
grammar (taken from the docs): ForLoop = 'for' Block Expression Block Block
- switch case is relatively straightforward
Specification
The technical spec. mirrors yul grammar