type ParseRes = Result<[]Token, ParseErr>

// Token type is unknown
//struct Token {}

struct ParseErr {}

type Opt<T> = None<T> | Some<T>

struct None<T> {}

struct Some<T> {
	value T
}

type Result<T, U> = Err<U> | Ok<T>

struct Ok<T> {
	value T
}

struct Err<U> {
	value U
}

fn test_report() {
	r := Opt<ParseRes>(None<ParseRes>{})
	match r {
		Some<ParseRes> {
			rx := r.value
		}
		None<ParseRes> {}
	}
}
