rust/compiler
Trevor Gross 36ea06827b
Rollup merge of #126699 - Bryanskiy:delegation-coercion, r=compiler-errors
Delegation: support coercion for target expression

(solves https://github.com/rust-lang/rust/issues/118212#issuecomment-2160723092)

The implementation consist of 2 parts. Firstly, method call is generated instead of fully qualified call in AST->HIR lowering if there were no generic arguments or `Qpath` were provided. These restrictions are imposed due to the loss of information after desugaring. For example in

```rust
trait Trait {
  fn foo(&self) {}
}

reuse <u8 as Trait>::foo;
```

We would like to generate such a code:

```rust
fn foo<u8: Trait>(x: &u8) {
  x.foo(x)
}
```

however, the signature is inherited during HIR analysis where `u8` was discarded.

Then, we probe the single pre-resolved method.

P.S In the future, we would like to avoid restrictions on the callee path by `Self` autoref/autoderef in fully qualified calls, but at the moment it didn't work out.

r? `@petrochenkov`
2024-07-16 16:15:14 -05:00
..
rustc Change SIGPIPE ui from #[unix_sigpipe = "..."] to -Zon-broken-pipe=... 2024-05-02 19:48:29 +02:00
rustc_abi Fix unsafe_op_in_unsafe_fn in compiler 2024-07-16 00:02:44 -04:00
rustc_arena Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_ast Fix a bunch of sites that were walking instead of visiting, making it impossible for visitor impls to look at these values 2024-07-16 15:50:36 +00:00
rustc_ast_ir Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_ast_lowering Delegation: support coercion for target expression 2024-07-16 18:03:15 +03:00
rustc_ast_passes Remove a boilerplaty abstraction 2024-07-16 15:46:45 +00:00
rustc_ast_pretty Rollup merge of #127092 - compiler-errors:rtn-dots-redux, r=estebank 2024-07-03 23:30:07 +02:00
rustc_attr Use a dedicated type instead of a reference for the diagnostic context 2024-06-18 15:42:11 +00:00
rustc_baked_icu_data Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_borrowck Rollup merge of #120990 - chenyukang:yukang-fix-120327-dbg, r=oli-obk 2024-07-16 02:02:23 -05:00
rustc_builtin_macros Rollup merge of #127308 - nnethercote:Attribute-cleanups, r=petrochenkov 2024-07-07 14:22:01 +02:00
rustc_codegen_cranelift Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_codegen_gcc Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_codegen_llvm Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_codegen_ssa Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_const_eval Auto merge of #127638 - adwinwhite:cache_string, r=oli-obk 2024-07-16 02:41:07 +00:00
rustc_data_structures Use uplifted rustc-stable-hash crate in rustc_data_structures 2024-07-11 16:51:16 +02:00
rustc_driver Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_driver_impl Move codegen_and_build_linker from Queries to Linker 2024-07-01 11:00:49 +00:00
rustc_error_codes Correct description of E0502 2024-07-06 09:13:14 +03:00
rustc_error_messages Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_errors Rollup merge of #120248 - WaffleLapkin:bonk-ptr-object-casts, r=compiler-errors,oli-obk,lnicola 2024-07-08 16:28:15 +02:00
rustc_expand Rollup merge of #127558 - nnethercote:more-Attribute-cleanups, r=petrochenkov 2024-07-13 20:19:46 -07:00
rustc_feature Rollup merge of #127630 - compiler-errors:type-ascription, r=chenyukang 2024-07-14 20:24:59 +02:00
rustc_fluent_macro Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_fs_util Remove useless tidy-alphabetical markers. 2024-06-20 09:23:20 +10:00
rustc_graphviz Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_hir Stop using the gen keyword in the compiler 2024-07-14 14:01:01 -04:00
rustc_hir_analysis find_field does not need to be a query. 2024-07-14 13:25:25 +00:00
rustc_hir_pretty implement new effects desugaring 2024-06-28 10:57:35 +00:00
rustc_hir_typeck Delegation: support coercion for target expression 2024-07-16 18:03:15 +03:00
rustc_incremental Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_index Auto merge of #127170 - bjorn3:no_specialize_index_borrowck, r=michaelwoerister 2024-07-04 14:24:43 +00:00
rustc_index_macros Remove usage of specialization from newtype_index! 2024-06-30 16:42:53 +00:00
rustc_infer Rollup merge of #127619 - compiler-errors:precise-capturing-better-sugg, r=oli-obk 2024-07-12 13:47:09 -07:00
rustc_interface Rollup merge of #126502 - cuviper:dump-mir-exclude-alloc-bytes, r=estebank 2024-07-12 13:47:05 -07:00
rustc_lexer Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_lint Rollup merge of #127631 - compiler-errors:yeet-fully-norm, r=lcnr 2024-07-12 13:47:09 -07:00
rustc_lint_defs Auto merge of #127097 - compiler-errors:async-closure-lint, r=oli-obk 2024-07-11 06:59:10 +00:00
rustc_llvm Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_log Bump tracing-tree and allow rendering lines again 2024-06-12 10:11:41 +00:00
rustc_macros Suppress some fallout from gen in synstructure 2024-07-14 14:22:11 -04:00
rustc_metadata report pat no field error no recoverd struct variant 2024-07-11 00:18:47 +08:00
rustc_middle Rollup merge of #127808 - oli-obk:tainting_visitors2, r=lcnr,nnethercote 2024-07-16 18:09:12 +02:00
rustc_mir_build Rollup merge of #127707 - Zalathar:expand-until, r=Nadrieril 2024-07-16 18:09:09 +02:00
rustc_mir_dataflow Stop using the gen keyword in the compiler 2024-07-14 14:01:01 -04:00
rustc_mir_transform coverage: Restrict ExpressionUsed simplification to Code mappings 2024-07-15 20:54:28 +10:00
rustc_monomorphize Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung 2024-07-08 04:35:04 +00:00
rustc_next_trait_solver enable fuzzing of SearchGraph 2024-07-12 06:30:19 -04:00
rustc_parse Rollup merge of #127407 - estebank:parser-suggestions, r=oli-obk 2024-07-15 21:11:48 +02:00
rustc_parse_format Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_passes Report usage of lib features in ast validation 2024-07-10 16:53:41 -04:00
rustc_pattern_analysis Replace f16 and f128 pattern matching stubs with real implementations 2024-06-23 04:28:42 -05:00
rustc_privacy Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
rustc_query_impl Allow tracing through item_bounds query invocations on opaques 2024-06-19 08:47:55 +00:00
rustc_query_system enable fuzzing of SearchGraph 2024-07-12 06:30:19 -04:00
rustc_resolve Rollup merge of #127310 - chenyukang:yukang-fix-suggest-import-ice, r=estebank 2024-07-12 13:47:07 -07:00
rustc_sanitizers Split out IntoIterator and non-Iterator constructors for AliasTy/AliasTerm/TraitRef/projection 2024-06-24 11:28:21 -04:00
rustc_serialize chore: remove duplicate words 2024-07-02 11:25:31 +08:00
rustc_session Auto merge of #127670 - compiler-errors:no-type-length-limit, r=jackh726 2024-07-14 12:44:07 +00:00
rustc_smir Remove extern "wasm" ABI 2024-07-11 12:20:26 +02:00
rustc_span Fix unsafe_op_in_unsafe_fn in compiler 2024-07-16 00:02:44 -04:00
rustc_symbol_mangling Fix FnMut/Fn shim for coroutine-closures that capture references 2024-06-29 17:38:02 -04:00
rustc_target Auto merge of #127265 - harmou01:dev/harmou01/target-spec-metadata, r=Nilstrieb 2024-07-15 08:37:39 +00:00
rustc_trait_selection Fix the issue of invalid suggestion for a reference of iterator 2024-07-16 22:01:55 +08:00
rustc_traits Split out overflow handling into its own module 2024-07-09 09:51:56 -04:00
rustc_transmute safe transmute: support non-ZST, variantful, uninhabited enums 2024-06-14 21:11:08 +00:00
rustc_ty_utils Auto merge of #123351 - beetrees:x86-ret-snan-rust, r=nikic,workingjubilee 2024-07-12 20:36:43 +00:00
rustc_type_ir Remove an unnecessary impl 2024-07-16 14:15:44 +00:00
rustc_type_ir_macros Uplift TraitPredicate 2024-05-11 18:20:00 -04:00
stable_mir Remove extern "wasm" ABI 2024-07-11 12:20:26 +02:00