rust/compiler/rustc_hir_analysis/src
bors b4c4664167 Auto merge of #118118 - spastorino:do-not-erase-late-bound-regions-on-iat, r=compiler-errors
Do not erase late bound regions when selecting inherent associated types

In the fix for #97156 we would want the following code:

```rust
#![feature(inherent_associated_types)]
#![allow(incomplete_features)]

struct Foo<T>(T);

impl Foo<fn(&'static ())> {
    type Assoc = u32;
}

trait Other {}
impl Other for u32 {}

// FIXME(inherent_associated_types): Avoid emitting two diagnostics (they only differ in span).
// FIXME(inherent_associated_types): Enhancement: Spruce up the diagnostic by saying something like
// "implementation is not general enough" as is done for traits via
// `try_report_trait_placeholder_mismatch`.

fn bar(_: Foo<for<'a> fn(&'a ())>::Assoc) {}
//~^ ERROR mismatched types
//~| ERROR mismatched types

fn main() {}
```

to fail with ...

```
error[E0220]: associated type `Assoc` not found for `Foo<for<'a> fn(&'a ())>` in the current scope
  --> tests/ui/associated-inherent-types/issue-109789.rs:18:36
   |
4  | struct Foo<T>(T);
   | ------------- associated item `Assoc` not found for this struct
...
18 | fn bar(_: Foo<for<'a> fn(&'a ())>::Assoc) {}
   |                                    ^^^^^ associated item not found in `Foo<for<'a> fn(&'a ())>`
   |
   = note: the associated type was found for
           - `Foo<fn(&'static ())>`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0220`.
```

This PR fixes the ICE we are currently getting "was a subtype of Foo<Binder(fn(&ReStatic ()), [])> during selection but now it is not"

Also fixes #112631

r? `@lcnr`
2023-11-27 17:11:35 +00:00
..
astconv Auto merge of #118118 - spastorino:do-not-erase-late-bound-regions-on-iat, r=compiler-errors 2023-11-27 17:11:35 +00:00
check Rollup merge of #118311 - bvanjoi:merge_coroutinue_into_closure, r=petrochenkov 2023-11-26 15:44:54 +01:00
coherence rustc: hir().local_def_id_to_hir_id() -> tcx.local_def_id_to_hir_id() cleanup 2023-11-26 12:41:21 +03:00
collect rustc: hir().local_def_id_to_hir_id() -> tcx.local_def_id_to_hir_id() cleanup 2023-11-26 12:41:21 +03:00
impl_wf_check Format all the let chains in compiler 2023-10-13 08:59:36 +00:00
outlives rustc: hir().local_def_id_to_hir_id() -> tcx.local_def_id_to_hir_id() cleanup 2023-11-26 12:41:21 +03:00
structured_errors Rollup merge of #116553 - gurry:116464-assoc-type-invalid-suggestion, r=compiler-errors 2023-10-25 23:37:09 +02:00
variance finish RegionKind rename 2023-11-14 13:13:27 +00:00
autoderef.rs Fix clippy::needless_borrow in the compiler 2023-11-21 20:13:40 +01:00
bounds.rs Don't compare host param by name 2023-10-18 02:38:54 +00:00
check_unused.rs inline format!() args from rustc_codegen_llvm to the end (4) 2023-07-25 23:20:28 +02:00
collect.rs rustc: hir().local_def_id_to_hir_id() -> tcx.local_def_id_to_hir_id() cleanup 2023-11-26 12:41:21 +03:00
constrained_generic_params.rs finish RegionKind rename 2023-11-14 13:13:27 +00:00
errors.rs Improve some diagnostics around ?Trait bounds 2023-10-30 17:47:07 +00:00
hir_wf_check.rs rustc: hir().local_def_id_to_hir_id() -> tcx.local_def_id_to_hir_id() cleanup 2023-11-26 12:41:21 +03:00
impl_wf_check.rs Use {Local}ModDefId in many queries 2023-08-14 07:22:48 +00:00
lib.rs Use rustc_fluent_macro::fluent_messages! directly. 2023-11-26 08:38:40 +11:00
structured_errors.rs