rust/compiler/rustc_middle
Matthias Krüger 0468462538
Rollup merge of #123962 - oli-obk:define_opaque_types5, r=lcnr
change method resolution to constrain hidden types instead of rejecting method candidates

Some of these are in probes and may affect inference. This is therefore a breaking change.

This allows new code to compile on stable:

```rust
trait Trait {}

impl Trait for u32 {}

struct Bar<T>(T);

impl Bar<u32> {
    fn foo(self) {}
}

fn foo(x: bool) -> Bar<impl Sized> {
    if x {
        let x = foo(false);
        x.foo();
        //^ this used to not find the `foo` method, because while we did equate `x`'s type with possible candidates, we didn't allow opaque type inference while doing so
    }
    todo!()
}
```

r? ```````@compiler-errors```````

fixes  #121404

cc https://github.com/rust-lang/rust/issues/116652
2024-06-14 08:35:46 +02:00
..
src Rollup merge of #123962 - oli-obk:define_opaque_types5, r=lcnr 2024-06-14 08:35:46 +02:00
Cargo.toml Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
messages.ftl Port DeprecatedMacro to diag structs 2024-05-21 20:16:39 +00:00
README.md

For more information about how rustc works, see the rustc dev guide.