-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unreachable reached once again #31115
Comments
Having looked at this, I think the bisect is a red herring and just enabled a bit more type info that exposed the bug. I think the underlying issue is a type intersection bug. WIP:
I don't think those |
Reduction for that method match:
Interestingly, the |
I attempted to make this somewhat smaller: julia> T = Tuple{Val{<:Val{<:Tuple{B,AbstractVector{T}}}} where B where T}
Tuple{Val{#s2} where #s2<:(Val{#s1} where #s1<:Tuple{B,AbstractArray{T,1}}) where B where T}
julia> S = Tuple{RO} where RO<:Val{<:Val{<:Tuple{B,<:AbstractArray}}} where B<:Matrix
Tuple{RO} where RO<:(Val{#s3} where #s3<:(Val{#s2} where #s2<:(Tuple{B,#s1} where #s1<:AbstractArray))) where B<:(Array{T,2} where T)
julia> typeintersect(T, S)
Tuple{RO} where RO<:(Val{#s2} where #s2<:Val{Union{}}) but I think that Union{} is correct, and is simply resulting from typeintersect(Val{<:Vector}, Val{<:Matrix}) = Val{Union{}} |
Ok, but the plain type intersection, doesn't show the
so something is definitely strange. |
And in particular, the thing that method matching returns is too small:
|
@vtjnash points out that reversing the order of the arguments to the type intersect, gives the incorrect result we see from the method matcher:
|
Just noting as an FYI here that @JeffBezanson is currently on vacation, so resolution might take another week or so. |
FYI, I believe this is because it makes one type not a subtype of the other, so we have to switch to the full intersection algorithm (if A<:B we just return A). |
Possible reduced case that also happens going back to 0.6:
Changing |
Thanks for the quick fix! |
Getting the following "Unreachable reached" error on master (1.0, 1.1 are fine) with Atoms.jl:
Unfortunately, I was not able to reduce it down to a nice MWE, but instantiating the environment and running the
bisect.jl
file in this gist should reproduce it consistently.Bisect blames e456a72 from #30577 (cc @JeffBezanson).
cc @jagot
The text was updated successfully, but these errors were encountered: