-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
typeintersect: fix incorrect innervar handling under circular env #54545
Conversation
@nanosoldier |
The package evaluation job you requested has completed - possible new issues were detected. |
@nanosoldier |
The package evaluation job you requested has completed - possible new issues were detected. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is amazing
…4545) The infinite loop encountered in #54516 has been traced back to a circular bound during `finish_unionall`. As we insert innervar more eagerly now, the direct `jl_has_typevar` could not find all circularity. To address this, `has_typevar_via_flatten_env` is added to perform thorough check. Although there is some code duplication with `reachable_var`, it could be improved in future refactoring. #54516 also highlighted another free var escaping regression since v1.10. This regression is not solely the result of incomplete checks, it is also caused by the missing final substitution of `vb`'s bound, which has now been corrected. At last, this PR adds an assertion of sorting complexity, which should facilitate the detection of similar issues by PkgEval. close #54516 (cherry picked from commit 92dfdca)
…4545) The infinite loop encountered in #54516 has been traced back to a circular bound during `finish_unionall`. As we insert innervar more eagerly now, the direct `jl_has_typevar` could not find all circularity. To address this, `has_typevar_via_flatten_env` is added to perform thorough check. Although there is some code duplication with `reachable_var`, it could be improved in future refactoring. #54516 also highlighted another free var escaping regression since v1.10. This regression is not solely the result of incomplete checks, it is also caused by the missing final substitution of `vb`'s bound, which has now been corrected. At last, this PR adds an assertion of sorting complexity, which should facilitate the detection of similar issues by PkgEval. close #54516
The infinite loop encountered in #54516 has been traced back to a circular bound during
finish_unionall
.As we insert innervar more eagerly now, the direct
jl_has_typevar
could not find all circularity.To address this,
has_typevar_via_flatten_env
is added to perform thorough check.Although there is some code duplication with
reachable_var
, it could be improved in future refactoring.#54516 also highlighted another free var escaping regression since v1.10. This regression is not solely
the result of incomplete checks, it is also caused by the missing final substitution of
vb
's bound, which has now been corrected.At last, this PR adds an assertion of sorting complexity, which should facilitate the detection of similar issues by PkgEval.
close #54516