original.name="RecursiveType_Valid_14"
======
>>> main.whiley
final int ADD = 1
final int SUB = 2
final int MUL = 3
final int DIV = 4
type binop is ({int op, Expr left, Expr right} _this) where _this.op == ADD || _this.op == SUB || _this.op == MUL || _this.op == DIV
type asbinop is ({int op, Expr left, Expr right} _this) where _this.op == ADD || _this.op == SUB
type Expr is int | binop
public export method test() :
Expr bop1 = {op: ADD, left: 1, right: 2}
Expr bop2 = bop1
Expr e1 = bop1
Expr e2 = {op: SUB, left: bop1, right: 2}
assume e1 == {left:1,op:1,right:2}
assume e2 == {left:{left:1,op:1,right:2},op:2,right:2}
---