ola-parser 1.0.1

Ola Language Parser
Documentation
contract C {
    fn f(u256[]  x, u256 start, u256 end)   {
        x[start:end];
    }
    fn g(u256[]  x, u256 start, u256 end, u256 index) -> (u256, u256, u256) {
        return (x[start:end][index], x[start:][0:end-start][index], x[:end][start:][index]);
    }
}
// ====
// compileToEwasm: also
// compileViaYul: also
// ----
// f(u256[],u256,u256): 0x80, 0, 0, 0, 1, 42  ->
// f(u256[],u256,u256): 0x80, 0, 1, 0, 1, 42  ->
// f(u256[],u256,u256): 0x80, 0, 2, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 1, 0, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 1, 1, 0, 1, 42  ->
// f(u256[],u256,u256): 0x80, 1, 2, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 2, 0, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 2, 1, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 2, 2, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 0, 2, 1, 0, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, 1, 2, 0, 2, 42, 23  ->
// f(u256[],u256,u256): 0x80, 1, 3, 0, 2, 42, 23  -> FAILURE
// f(u256[],u256,u256): 0x80, -1, 0, 0, 1, 42  -> FAILURE
// f(u256[],u256,u256): 0x80, -1, -1, 0, 1, 42  -> FAILURE
// g(u256[],u256,u256,u256): 0x80, 0, 1, 0, 1, 42  -> 42, 42, 42
// g(u256[],u256,u256,u256): 0x80, 0, 1, 1, 1, 42  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 0, 0, 0, 1, 42  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 1, 1, 0, 1, 42  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 0, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4201, 0x4201, 0x4201
// g(u256[],u256,u256,u256): 0x80, 0, 5, 4, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4205, 0x4205, 0x4205
// g(u256[],u256,u256,u256): 0x80, 0, 5, 5, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 1, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4202, 0x4202, 0x4202
// g(u256[],u256,u256,u256): 0x80, 1, 5, 3, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4205, 0x4205, 0x4205
// g(u256[],u256,u256,u256): 0x80, 1, 5, 4, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 4, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4205, 0x4205, 0x4205
// g(u256[],u256,u256,u256): 0x80, 4, 5, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 5, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 0, 1, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4201, 0x4201, 0x4201
// g(u256[],u256,u256,u256): 0x80, 0, 1, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 0, 1, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4201, 0x4201, 0x4201
// g(u256[],u256,u256,u256): 0x80, 0, 1, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 1, 2, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4202, 0x4202, 0x4202
// g(u256[],u256,u256,u256): 0x80, 1, 2, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32
// g(u256[],u256,u256,u256): 0x80, 4, 5, 0, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> 0x4205, 0x4205, 0x4205
// g(u256[],u256,u256,u256): 0x80, 4, 5, 1, 5, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205  -> FAILURE, hex"4e487b71", 0x32