original.name="OpenRecord_Valid_2"
======
>>> main.whiley
final int Short = 3
final int Int = 4
type string is int[]
type char is int
type Primitive is (int x) where x == Short || x == Int
type Class is {string[] classes, string pkg}
type Any is Primitive | Class
type Unit is {int op, int offset}
type FieldIndex is {int op, string name, Class owner, int offset, Any type}
type Bytecode is Unit | FieldIndex
type Attribute is {string name, ...}
type CodeAttribute is {string name, Bytecode[] data}
function codeLength(Attribute a) -> null | int:
if a is CodeAttribute:
return |a.data|
return null
public export method test() :
Attribute attr = {name: "Code", data: [{op: 2, offset: 1}]}
assume codeLength(attr) == 1
attr = {name: "Blah"}
assume codeLength(attr) == null
---