about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorMatthias Krüger <476013+matthiaskrgr@users.noreply.github.com>2025-04-17 00:16:24 +0200
committerGitHub <noreply@github.com>2025-04-17 00:16:24 +0200
commit9e0be6c15bbc70cd106cd3a2c64a79120c46e339 (patch)
tree6d578d47cdb99eee053b8c4939466e3e0f36b81f /compiler/rustc_codegen_llvm/src
parent848ec5888f49385792817b3bf3641028a2dbd4f5 (diff)
parent48e119ef5a8b46ce8db8d362a6d94668c6deb541 (diff)
downloadrust-9e0be6c15bbc70cd106cd3a2c64a79120c46e339.tar.gz
rust-9e0be6c15bbc70cd106cd3a2c64a79120c46e339.zip
Rollup merge of #139900 - lcnr:normalizes-to-where-bounds-unproductive, r=compiler-errors
stepping into impls for normalization is unproductive

See the inline comment. This builds on the reasoning from #136824 (https://gist.github.com/lcnr/c49d887bbd34f5d05c36d1cf7a1bf5a5). Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/176.

Looking at the end of the gist:
> The only ways to project out of a constructor are the following:
> - accessing an associated item, either its type or its item bounds
> - accessing super predicates

Detecting cases where we accessing the type of an associated item is easy, it's simply when we normalize. I don't yet know how to detect whether we step out of an impl by accessing item bounds. Once we also detect these cases we should be able to soundly support arbitrary coinductive traits. Luckily this does not matter for this PR :>

r? `@compiler-errors` cc `@nikomatsakis`
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions