Skip to content

Commit

Permalink
inference: fix typeof-tfunc impl (#31405)
Browse files Browse the repository at this point in the history
(cherry picked from commit 604c9b2)
  • Loading branch information
vtjnash authored and KristofferC committed Apr 20, 2019
1 parent 0bc6c5d commit adc798a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion base/compiler/tfuncs.jl
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ function typeof_tfunc(@nospecialize(t))
a = widenconst(typeof_tfunc(t.a))
b = widenconst(typeof_tfunc(t.b))
return Union{a, b}
elseif isa(t, TypeVar) && !(Any <: t.ub)
elseif isa(t, TypeVar) && !(Any === t.ub)
return typeof_tfunc(t.ub)
elseif isa(t, UnionAll)
return rewrap_unionall(widenconst(typeof_tfunc(unwrap_unionall(t))), t)
Expand Down
6 changes: 6 additions & 0 deletions test/compiler/inference.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1340,6 +1340,12 @@ let egal_tfunc
@test egal_tfunc(Union{Int64, Float64}, AbstractArray) === Const(false)
end

using Core.Compiler: typeof_tfunc
@test typeof_tfunc(Union{<:T, <:Real} where T<:Complex) == Union{Type{Complex{T}} where T<:Real, Type{<:Real}}

f_typeof_tfunc(x) = typeof(x)
@test Base.return_types(f_typeof_tfunc, (Union{<:T, Int} where T<:Complex,)) == Any[Union{Type{Int}, Type{Complex{T}} where T<:Real}]

function f23024(::Type{T}, ::Int) where T
1 + 1
end
Expand Down

0 comments on commit adc798a

Please sign in to comment.