julia
239f9037 - inference: fix recursion limit heuristic

Commit
7 years ago
inference: fix recursion limit heuristic There's several related issues here: 1. Covariant kinds provide no meaningful information for the type size limit heuristic. We should be just ignoring those and walking through to the actual structural information of any real substance. This seems to also make type_more_complex, _limit_type_size, and is_derived_type more similar, which is probably always preferable. 2. Allowing type intersection to revise our type later can cause it to reintroduce complexity (constraints) according to our metric, while we want to only move up the type-hierarchy, which can allow us to accidentally escape from the limit. So if we've limited the type, we don't want to use a different type that was derived by type-intersection and may not have our limits applied anymore. 3. Inside `is_derived_type`, the var field of a UnionAll should not increase the nesting depth, since `T<:(Ref{S} where S<:Any)`, should observe the same depth as `{S<:Any, T<:Ref{S}}`. fix #26665
Author
Committer
Parents
Loading