Julia 0.6.2
julia> test(::M) where M <: Tuple{2} = nothing
julia> test(::M) where M <: Tuple{3} = nothing
Julia 0.6.3
julia> test(::M) where M <: Tuple{2} = nothing
julia> test(::M) where M <: Tuple{3} = nothing
ERROR: TypeError: UnionAll: expected Type, got Int64
Same error for 0.7.0-alpha.0
@SimonDanisch: Despite the fact that behavior changed, does it actually make sense what you defined. What is Tuple{3}?
Isn't what you want this
julia> test(::M) where M <: NTuple{2,T} where T = nothing
julia> test(::M) where M <: NTuple{3,T} where T = nothing
Or am I on a completely wrong track here?
Well, it's just a minimal working example ;) The original bug is more of that nature (using StaticArrays).
Original issue: https://github.com/JuliaGL/GLAbstraction.jl/issues/91
I see
Sure, this can't be the (new) expected behaviour?
I did a bisect from v0.6.2 -- v0.6.3. Commit 7a836d157f introduced the behavior.
Thanks for the bisect, very helpful!
Can we get 0.6.4 or have the binaries of 0.6.2 on the julia page to download again? This problem crops up in more places, and some people installed 0.6.3 without being able to go back to 0.6.2....
cc: @ararslan
The 0.6.2 binaries are still available, they just aren't linked on the page. You can copy the 0.6.3 links and replace 3 with 2 and it should work fine.
I might do a 0.6.4 depending on the timeline for 0.7.
I'd be very much in favor of a quick 0.6.4, too. Otherwise, we may have to implement workarounds in packages. I know 0.7 is close (and I look forward to it very much), but, the ecosystem is, IMHO, far from ready for 0.7 - so it'll be a few months before it can be used productively. Besides, this issue is kinda serious, and it would be a shame to have it in the last 0.6 version. :-)
I have to agree with @oschulz here. We have seen it regularly during the transition from 0.1 to 0.6 that package ecosystem got unstable when a new Julia release is close. For those doing serious work with Julia this is not satisfying.
In this particular case there are two quick possibilities:
But letting a broken 0.6.3 be the latest "stable" release is the worst option.
Most helpful comment
I have to agree with @oschulz here. We have seen it regularly during the transition from 0.1 to 0.6 that package ecosystem got unstable when a new Julia release is close. For those doing serious work with Julia this is not satisfying.
In this particular case there are two quick possibilities:
But letting a broken 0.6.3 be the latest "stable" release is the worst option.