about summary refs log tree commit diff
path: root/compiler/rustc_parse/src
diff options
context:
space:
mode:
authorMatthew Maurer <mmaurer@google.com>2024-03-03 03:51:05 +0000
committerMatthew Maurer <mmaurer@google.com>2024-03-22 23:02:05 +0000
commitdec36c3d6eca67c900b7bdf03bd8d9dd68c4aa34 (patch)
treee34d4d81ee35aa67a1efd9e93e1821f8c4a14389 /compiler/rustc_parse/src
parent85e449a3237e82c9ade8936a82bd4fc64cfe1057 (diff)
downloadrust-dec36c3d6eca67c900b7bdf03bd8d9dd68c4aa34.tar.gz
rust-dec36c3d6eca67c900b7bdf03bd8d9dd68c4aa34.zip
CFI: Support self_cell-like recursion
Current `transform_ty` attempts to avoid cycles when normalizing
`#[repr(transparent)]` types to their interior, but runs afoul of this
pattern used in `self_cell`:

```
struct X<T> {
  x: u8,
  p: PhantomData<T>,
}

 #[repr(transparent)]
struct Y(X<Y>);
```

When attempting to normalize Y, it will still cycle indefinitely. By
using a types-visited list, this will instead get expanded exactly
one layer deep to X<Y>, and then stop, not attempting to normalize `Y`
any further.
Diffstat (limited to 'compiler/rustc_parse/src')
0 files changed, 0 insertions, 0 deletions