diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-10-30 21:03:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-30 21:03:40 +0100 |
| commit | c5aec964405a9b5d769e74a8869326d321d5008f (patch) | |
| tree | 00f56e54746c55f625926bab929788bde20c5d09 /tests/rustdoc-js-std/osstring-to-string.js | |
| parent | 3e95c6ab036a705ce166695351c61ae74b984244 (diff) | |
| parent | c91f60e22fccbd1ee7701b2a1b88457985f9df0b (diff) | |
| download | rust-c5aec964405a9b5d769e74a8869326d321d5008f.tar.gz rust-c5aec964405a9b5d769e74a8869326d321d5008f.zip | |
Rollup merge of #117414 - compiler-errors:tait-forevert, r=oli-obk
Don't normalize to an un-revealed opaque when we hit the recursion limit Currently, we will normalize `Opaque := Option<&Opaque>` to something like `Option<&Option<&Option<&...Opaque>>>`, hitting a limit and bottoming out in an unnormalized opaque after the recursion limit gets hit. Unfortunately, during `layout_of`, we'll simply recurse and try again if the type normalizes to something different than the type: https://github.com/rust-lang/rust/blob/e6e931dda5fffbae0fd87c5b1af753cc95556880/compiler/rustc_ty_utils/src/layout.rs#L58-L60 That means then we'll try to normalize `Option<&Option<&Option<&...Opaque>>>` again, substituting `Opaque` into itself even deeper. Eventually this will get to the point that we're just stack-overflowing on a really deep type before even hitting an opaque again. To fix this, we just bottom out into `ty::Error` instead of the unrevealed opaque type. Fixes #117412 r? `@oli-obk`
Diffstat (limited to 'tests/rustdoc-js-std/osstring-to-string.js')
0 files changed, 0 insertions, 0 deletions
