mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
32 lines
788 B
Solidity
32 lines
788 B
Solidity
contract test {
|
|
function f(uint256[] calldata seq) external pure returns (uint256) {
|
|
uint i = 0;
|
|
uint sum = 0;
|
|
while (i < seq.length)
|
|
{
|
|
uint idx = i;
|
|
if (idx >= 10) break;
|
|
uint x = seq[idx];
|
|
if (x >= 1000) {
|
|
uint n = i + 1;
|
|
i = n;
|
|
continue;
|
|
}
|
|
else {
|
|
uint y = sum + x;
|
|
sum = y;
|
|
}
|
|
if (sum >= 500) return sum;
|
|
i++;
|
|
}
|
|
return sum;
|
|
}
|
|
}
|
|
// ====
|
|
// compileViaYul: also
|
|
// compileToEwasm: also
|
|
// ----
|
|
// f(uint256[]): 32, 3, 1000, 1, 2 -> 3
|
|
// f(uint256[]): 32, 3, 100, 500, 300 -> 600
|
|
// f(uint256[]): 32, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 111 -> 55
|