rust/compiler
nils 7e90732abe
Rollup merge of #109470 - compiler-errors:gat-normalize-bound, r=jackh726
Correctly substitute GAT's type used in `normalize_param_env` in `check_type_bounds`

Given:

```rust
trait Foo {
    type Assoc<T>: PartialEq<Self::Assoc<i32>>;
}

impl Foo for () {
    type Assoc<T> = Wrapper<T>;
}

struct Wrapper<T>(T);

impl<T> PartialEq<Wrapper<i32>> for Wrapper<T> { }
```

We add an additional predicate in the `normalize_param_env` in `check_type_bounds` that is used to normalize the GAT's bounds to check them in the impl. Problematically, though, that predicate is constructed to be `for<^0> <() as Foo>::Assoc<^0> => Wrapper<T>`, instead of `for<^0> <() as Foo>::Assoc<^0> => Wrapper<^0>`.

That means `Self::Assoc<i32>` in the bounds that we're checking normalizes to `Wrapper<T>`, instead of `Wrapper<i32>`, and so the bound `Self::Assoc<T>: PartialEq<Self::Assoc<i32>>` normalizes to `Wrapper<T>: PartialEq<Wrapper<T>>`, which does not hold.

Fixes this by properly substituting the RHS of that normalizes predicate that we add to the `normalize_param_env`. That means the bound is properly normalized to `Wrapper<T>: PartialEq<Wrapper<i32>>`, which *does* hold.

---

The second commit in this PR just cleans up some substs stuff and some naming.

r? `@jackh726` cc #87900
2023-03-28 12:51:13 +02:00
..
rustc fix link 2023-03-11 10:53:47 -06:00
rustc_abi Refactor: VariantIdx::from_u32(0) -> FIRST_VARIANT 2023-03-25 18:58:25 -07:00
rustc_apfloat
rustc_arena
rustc_ast Rollup merge of #109354 - Swatinem:rm-closureid, r=compiler-errors 2023-03-27 18:56:19 +02:00
rustc_ast_lowering Rollup merge of #109354 - Swatinem:rm-closureid, r=compiler-errors 2023-03-27 18:56:19 +02:00
rustc_ast_passes rustc: Remove unused Session argument from some attribute functions 2023-03-22 13:55:55 +04:00
rustc_ast_pretty Remove the NodeId of ast::ExprKind::Async 2023-03-19 19:01:31 +01:00
rustc_attr Bless tidy 2023-03-27 18:58:07 +00:00
rustc_baked_icu_data
rustc_borrowck Refactor: VariantIdx::from_u32(0) -> FIRST_VARIANT 2023-03-25 18:58:25 -07:00
rustc_builtin_macros Rollup merge of #109354 - Swatinem:rm-closureid, r=compiler-errors 2023-03-27 18:56:19 +02:00
rustc_codegen_cranelift Rollup merge of #108480 - Zoxc:rayon-tlv, r=cuviper 2023-03-28 12:51:12 +02:00
rustc_codegen_gcc Use poison instead of undef 2023-03-16 15:07:04 +01:00
rustc_codegen_llvm Rollup merge of #109635 - Nilstrieb:debrrruginfo, r=compiler=errors 2023-03-27 08:46:54 +02:00
rustc_codegen_ssa Bless tidy 2023-03-27 18:58:07 +00:00
rustc_const_eval Refactor: VariantIdx::from_u32(0) -> FIRST_VARIANT 2023-03-25 18:58:25 -07:00
rustc_data_structures Update indexmap and rayon crates 2023-03-25 02:12:13 +01:00
rustc_driver
rustc_driver_impl Rollup merge of #107718 - Zoxc:z-time, r=nnethercote 2023-03-23 19:55:43 +01:00
rustc_error_codes Rollup merge of #109565 - WaffleLapkin:better_docs_for_e0223, r=oli-obk 2023-03-28 07:01:08 +02:00
rustc_error_messages Simplify message paths 2023-03-11 22:51:57 +01:00
rustc_errors Rollup merge of #109403 - chenyukang:yukang/fix-109396, r=estebank 2023-03-21 19:00:13 +01:00
rustc_expand Separate find_*_stability. 2023-03-23 19:52:27 +00:00
rustc_feature Rollup merge of #108549 - clubby789:fix-link-cfg-issue, r=eholk 2023-03-23 19:55:44 +01:00
rustc_fs_util Add try_canonicalize to rustc_fs_util and use it over fs::canonicalize 2023-03-16 21:50:23 +01:00
rustc_graphviz
rustc_hir Rollup merge of #109179 - llogiq:intrinsically-option-as-slice, r=eholk 2023-03-23 00:00:31 +05:30
rustc_hir_analysis Rollup merge of #109470 - compiler-errors:gat-normalize-bound, r=jackh726 2023-03-28 12:51:13 +02:00
rustc_hir_pretty Remove box expressions from HIR 2023-03-14 17:18:26 +00:00
rustc_hir_typeck Rollup merge of #109641 - compiler-errors:dont-elaborate-non-obl, r=oli-obk 2023-03-27 08:46:55 +02:00
rustc_incremental Rollup merge of #109231 - Zoxc:fs-non-canon, r=eholk 2023-03-23 19:55:45 +01:00
rustc_index Use SmallVec in bitsets 2023-03-21 22:20:09 +01:00
rustc_infer Rollup merge of #102472 - lcnr:static-in-eval, r=jackh726 2023-03-28 12:51:12 +02:00
rustc_interface Rollup merge of #108480 - Zoxc:rayon-tlv, r=cuviper 2023-03-28 12:51:12 +02:00
rustc_lexer fix(lexer): not skipped whitespace warning for '\x0c' 2023-03-09 22:44:58 +08:00
rustc_lint Rollup merge of #109354 - Swatinem:rm-closureid, r=compiler-errors 2023-03-27 18:56:19 +02:00
rustc_lint_defs Rollup merge of #108588 - ehuss:lint-docs-produces, r=eholk 2023-03-23 19:55:45 +01:00
rustc_llvm Link against libc++ on AIX 2023-03-23 16:33:54 +08:00
rustc_log
rustc_macros Allow using bool for optional diagnostics 2023-02-27 12:54:11 +00:00
rustc_metadata Auto merge of #109547 - matthiaskrgr:rollup-zczqgdk, r=matthiaskrgr 2023-03-24 02:29:48 +00:00
rustc_middle Rollup merge of #108480 - Zoxc:rayon-tlv, r=cuviper 2023-03-28 12:51:12 +02:00
rustc_mir_build Rollup merge of #108548 - jamen:master, r=compiler-errors 2023-03-28 07:01:08 +02:00
rustc_mir_dataflow Refactor: VariantIdx::from_u32(0) -> FIRST_VARIANT 2023-03-25 18:58:25 -07:00
rustc_mir_transform Rollup merge of #109641 - compiler-errors:dont-elaborate-non-obl, r=oli-obk 2023-03-27 08:46:55 +02:00
rustc_monomorphize Erase impl regions when checking for impossible to eagerly monomorphize items 2023-03-28 02:07:35 +00:00
rustc_parse Rollup merge of #109354 - Swatinem:rm-closureid, r=compiler-errors 2023-03-27 18:56:19 +02:00
rustc_parse_format Improve heuristics for format_args literal being suggestable 2023-03-14 13:20:39 +00:00
rustc_passes Separate find_*_stability. 2023-03-23 19:52:27 +00:00
rustc_plugin_impl expand: Pass ast::Crate by reference to AST transforming passes 2023-03-23 14:20:55 +04:00
rustc_privacy Rename AliasEq -> AliasRelate 2023-03-23 05:56:40 +00:00
rustc_query_impl Update indexmap and rayon crates 2023-03-25 02:12:13 +01:00
rustc_query_system Rollup merge of #108480 - Zoxc:rayon-tlv, r=cuviper 2023-03-28 12:51:12 +02:00
rustc_resolve Rollup merge of #109354 - Swatinem:rm-closureid, r=compiler-errors 2023-03-27 18:56:19 +02:00
rustc_serialize Update indexmap and rayon crates 2023-03-25 02:12:13 +01:00
rustc_session Rollup merge of #109231 - Zoxc:fs-non-canon, r=eholk 2023-03-23 19:55:45 +01:00
rustc_smir Change item collection to be on demand 2023-03-07 12:47:25 -08:00
rustc_span Update indexmap and rayon crates 2023-03-25 02:12:13 +01:00
rustc_symbol_mangling Use local key in providers 2023-03-21 15:38:51 +00:00
rustc_target Rollup merge of #109231 - Zoxc:fs-non-canon, r=eholk 2023-03-23 19:55:45 +01:00
rustc_trait_selection Rollup merge of #102472 - lcnr:static-in-eval, r=jackh726 2023-03-28 12:51:12 +02:00
rustc_traits Rename AliasEq -> AliasRelate 2023-03-23 05:56:40 +00:00
rustc_transmute rustc_middle: Remove trait DefIdTree 2023-03-02 23:46:44 +04:00
rustc_ty_utils Refactor: VariantIdx::from_u32(0) -> FIRST_VARIANT 2023-03-25 18:58:25 -07:00
rustc_type_ir Generate simpler MIR for shifts 2023-03-22 13:32:12 -07:00