Type Alias Unit

Unit:
    | { kind: "case"; matches: Expression }
    | { kind: "default" }
    | { kind: "comment"; text: string }
    | xir.Declaration
    | { kind: "enum_field"; name: string; type?: xir.Type; value?: xir.Value }
    | Expression
    | { action: Expression[]; init: Expression[]; kind: "for" } & Conditional
    | Function
    | { else?: Unit[]; kind: "if" } & Conditional
    | { kind: "goto"; target: string }
    | { kind: "label"; name: string }
    | { kind: "break" | "continue"; target?: string }
    | RecordLike
    | { kind: "return"; value: Expression[] }
    | { body: Unit[]; expression: Expression[]; kind: "switch" }
    | { kind: "type_alias"; name: string; value: xir.Type }
    | { isDo: boolean; kind: "while" } & Conditional