Found an ugly bug in function type resolving. When it was meant
to resolve to an array (:int 3 nil) it would resolve to
(:int nil nil) as the 3 tells it to look at the third in-var for its
component. This comes down to bad design and the type system needs
a thorough go over.