whiley_test_file 0.6.2

An API for manipulating test files for the Whiley Programming Language.
Documentation
original.name="TypeEquals_Valid_30"
======
>>> main.whiley
final BOp ADD = 0
final BOp SUB = 1
final BOp MUL = 2
final BOp DIV = 3

type BOp is (int x) where ADD <= x && x <= DIV

type BinOp is {BOp op, Expr rhs, Expr lhs}

type ListAccess is {Expr index, Expr src}

type Expr is int | BinOp | Expr[] | ListAccess

function evaluate(Expr e) -> int:
    if e is int:
        return e
    else:
        if e is BinOp:
            return 2
        else:
            if e is Expr[]:
                return 3
            else:
                int src = evaluate(e.src)
                int index = evaluate(e.index)
                return src + index

public export method test() :
    Expr e = 1
    assume evaluate(e) == 1
    e = {op: ADD, rhs: e, lhs: e}
    assume evaluate(e) == 2
    e = [e]
    assume evaluate(e) == 3
    e = {index: 1, src: e}
    assume evaluate(e) == 4

---