ola-parser 1.0.1

Ola Language Parser
Documentation
contract Test {
    struct S {
        u32 x;
        u32 y;
        u256 z;
    }
    struct X {
        u32 x;
        S s;
    }

    fn test()

    -> (u256 a, u256 x, u256 y, u256 z)
    {
        X  d = combine(1, 2, 3, 4);
        a = extract(d, 0);
        x = extract(d, 1);
        y = extract(d, 2);
        z = extract(d, 3);
    }

    fn extract(X  s, u256 which) -> (u256 x) {
        if (which == 0) return s.x;
        else if (which == 1) return s.s.x;
        else if (which == 2) return s.s.y;
        else return s.s.z;
    }

    fn combine(u32 a, u32 x, u32 y, u256 z)

    -> (X  s)
    {
        s.x = a;
        s.s.x = x;
        s.s.y = y;
        s.s.z = z;
    }
}

// ====
// compileToEwasm: also
// compileViaYul: also
// ----
// test()  -> 1, 2, 3, 4