Infinite loop in compiler
Minimal example code which causes infinite compile times:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=13fec5b370c8046012770d2e2470c934
trait Bound { type Assoc; }
struct Recursive<'a, A: Bound> {
value: A,
rest: &'a Option<Recursive<'a, A::Assoc>>
}
I expected to see: the compiler finish executing.
Instead, this happened: the compiler hangs with modest CPU usage, seemingly indefinitely.
As an aside, the lack of a bound on the Assoc type should raise an error (otherwise the declaration is self-contradictory), but we never even get that far. So I have removed the bound in favor of making the example as minimal as possible. To be clear, the version with the correct bound hangs as well.
Meta
I have not done a thorough search over which versions hang.
The bug exists in stable: 1.73.0, 1.74.0, and possibly more versions of stable compiler.
The bug exists in beta 1.75.0-beta.3, and nightly 1.76.0-nightly, and possibly more versions of these compilers.
rustc --version --verbose:
rustc 1.73.0 (cc66ad468 2023-10-03)
binary: rustc
commit-hash: cc66ad468955717ab92600c770da8c1601a4ff33
commit-date: 2023-10-03
host: aarch64-apple-darwin
release: 1.73.0
LLVM version: 17.0.2
@rustbot assign
Error: Parsing assign command in comment failed: ...' assign' | error: specify user to assign to at >| ''...
Please file an issue on GitHub at triagebot if there's a problem with this bot, or reach out on #t-infra on Zulip.
@rustbot claim
Bump as this bug still exists in 1.80 stable + beta + nightly compilers
Bump as I just hit what I think is this problem (I have similar recursive trees), and am getting infinite compile times. Same playground in original issue report is unchanged in latest 1.94.0 nightly