Types · The Julia Language has the very relevent warning
This last point is very important: even though
Float64 <: Realwe DO NOT havePoint{Float64} <: Point{Real}.
Adapting for this case, what you want is function x1(Array{<:SuperType,1}) which can be written more simply as function x1(Vector{<:SuperType})