diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-02-13 22:51:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-13 22:51:53 +0100 |
| commit | db9591cfb6c1c0883256a3bdc6bbb03dc485a58a (patch) | |
| tree | 84851bf3649bf75422a9122ea2b2e52ce0a2064f /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | |
| parent | a84bb95a1f65bfe25038f188763a18e096a86ab2 (diff) | |
| parent | 2b4a2b95dd1a6b85678537332045d122afda682f (diff) | |
| download | rust-db9591cfb6c1c0883256a3bdc6bbb03dc485a58a.tar.gz rust-db9591cfb6c1c0883256a3bdc6bbb03dc485a58a.zip | |
Rollup merge of #118882 - compiler-errors:normalized-sig-wf, r=lcnr
Check normalized call signature for WF in mir typeck Unfortunately we don't check that the built-in implementations for `Fn*` traits are actually well-formed in the same way that we do for user-provided impls. Essentially, when checking a call terminator, we end up with a signature that references an unnormalized `<[closure] as FnOnce<...>>::Output` in its output. That output type, due to the built-in impl, doesn't follow the expected rule that `WF(ty)` implies `WF(normalized(ty))`. We fix this by also checking the normalized signature here. **See** boxy's detailed and useful explanation comment which explains this in more detail: https://github.com/rust-lang/rust/issues/114936#issuecomment-1710388741 Fixes #114936 Fixes #118876 r? types cc ``@BoxyUwU`` ``@lcnr``
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
