julia
53f328df - inference: allows conditional object to propagate constraint multiple times (#39936)

Commit
4 years ago
inference: allows conditional object to propagate constraint multiple times (#39936) Currently we always `widenconditional` conditional var state, which makes us unable to propagate constraints from conditional object multiple times: ```julia @test Base.return_types((Union{Nothing,Int},)) do a b = a === nothing c = b ? 0 : a # c::Int d = !b ? a : 0 # d::Int ideally, but Union{Int,Nothing} c, d end == Any[Tuple{Int,Int}] # fail ``` This PR keeps conditional var state when the update is came from a conditional branching, and allows a conditional object to propagate constraint multiple times as far as the subject of condition doesn't change. AFAIU this is safe because the update from conditional branching doesn't change the condition itself.
Author
Parents
Loading