-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Degradation from rustc 1.71.0 -> 1.79.0 ("infinite space" compile error not recognized anymore) #127910
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
Comments
Looks like this happened between 1.77 and 1.78 https://rust.godbolt.org/z/4Wcfa3zaa, still happens on nightly. The lint "cyclic type of infinite size" stopped catching this problem (recursive type between the tuple and the vector). Seems like something @compiler-errors might be able to ID
To be clear - it completes but there are errors, right? |
#119989 maybe? |
In 1.79.0: In 1.71.0: |
imagine changing the the assignment of The type of This ends up generalizing We now have two obligations If you have a tuple with one element you quickly get an overflow error. Once you have more than this you have an exponential blowup of obligations and get a hang instead. |
This feels sadly somewhat unavoidable to me unless we readd I am already considering to do so in general, but tracking them in the We removed them as they previously impacted the trait solver without being part of the cache key, resulting in caching bugs whose fix would have otherwise resulted in a significant performance penalty. |
(To confirm, it does indeed bisect to this PR, as was evident in lcnr's analysis about |
Behaviour in rust version 1.79.0 (the bug)
I found a program that does
cargo check
on rust version 1.79.0:
Behaviour in rust version 1.71.0 (before the degradation)
On rust version 1.71.0 this program failed the cargo check and build, which is the expected behaviour imo.
The minimum working example
The text was updated successfully, but these errors were encountered: