Skip to content

Commit 394e71a

Browse files
committed
fix #32607, bug in typeintersect of X{<:Tuple1} vs. X{Tuple2}
1 parent 86c2126 commit 394e71a

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/subtype.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2688,8 +2688,8 @@ static jl_value_t *intersect_invariant(jl_value_t *x, jl_value_t *y, jl_stenv_t
26882688
first normalize types so that all `where` expressions in covariant position
26892689
are pulled out to the top level.
26902690
*/
2691-
if ((jl_is_typevar(x) && !jl_is_typevar(y) && lookup(e, (jl_tvar_t*)x) == NULL) ||
2692-
(jl_is_typevar(y) && !jl_is_typevar(x) && lookup(e, (jl_tvar_t*)y) == NULL))
2691+
if ((jl_is_typevar(x) && !jl_is_typevar(y)) ||
2692+
(jl_is_typevar(y) && !jl_is_typevar(x)))
26932693
return ii;
26942694
jl_value_t *root=NULL;
26952695
jl_savedenv_t se;

test/subtype.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -991,6 +991,14 @@ function test_intersection()
991991
@test_broken typeintersect(Tuple{Type{Z},Z} where Z,
992992
Tuple{Type{Ref{T}} where T, Ref{Float64}}) ==
993993
Tuple{Type{Ref{Float64}},Ref{Float64}}
994+
995+
# issue #32607
996+
@testintersect(Type{<:Tuple{Integer,Integer}},
997+
Type{Tuple{Int,T}} where T,
998+
Type{Tuple{Int, T}} where T<:Integer)
999+
@testintersect(Type{<:Tuple{Any,Vararg{Any}}},
1000+
Type{Tuple{Vararg{Int,N}}} where N,
1001+
Type{Tuple{Int,Vararg{Int,N}}} where N)
9941002
end
9951003

9961004
function test_intersection_properties()

0 commit comments

Comments
 (0)