-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
fix another case where we might return free TypeVar #47877
Conversation
4c7aeab
to
d33a849
Compare
d33a849
to
6b7e286
Compare
@nanosoldier |
Your package evaluation job has completed - possible new issues were detected. A full report can be found here. |
This has a somewhat high rate of 'Internal error: stack overflow in type inference', so that will require further investigation (and probably some good new test cases to add) |
Otherwise, we would write NULL here immediately when handling intersect_all, and may fail to restore this array correctly.
6b7e286
to
d01c691
Compare
This now dropped the easiest and hardest commits, so it should be okay to merge this now (though the top description is now incorrect) |
Your package evaluation job has completed - possible new issues were detected. A full report can be found here. |
Turns out Ripserer is intentionally defining a method incorrectly to segfault Julia, so that package can be ignored (@maleadt @KristofferC) https://github.com/mtsch/Ripserer.jl/blob/be521a24bdb8bf0b9a6a7e226ba361a12145847f/test/base/primefield.jl#L56 I have a bugfix for VectorizedRNG. Impressive it is the only package that hit this bug, due to use of excess Union declarations. |
The other original part of this change is failing on this test:
Which is a pre-existing bug in intersection, but gets exposed by that commit |
We had an environment here that looked like while computing the upper bound for J{S} where S:
where S=T
where T
where I{T}
where J{S} where S
Then we started handling those, and filling in the values:
First replacing S with T, which creates a
res
ofJ{T}
where T
where I{T}
where J{S} where S
Then we handled T, which is also going to set
wrap=0
, so our result forJ{T}
will not be made intoJ{T} where T
.where I{T} (wrap 0)
where J{S} where S
Here we then had finished handling all the dependencies for J{S} where S, which resulted in an upper bound assignment of J{T}
where I{T}
where J{T}
Next, we handle I{T}, though it is now unused, so while we will make
I{T} where T
(via innervars) here for it, this goes unuesd.And finally, we had our resulting clause:
where J{T}
But it is missing the
where T
, sinceI
(from lhs) was discarded.Thus we need to add that back now, when handling some innervars, if we see our term got duplicated to a higher part of the bounds before reaching this handling for its placement movement.