rust/compiler
León Orell Valerian Liehr 7b7a7fc891
Rollup merge of #122564 - Bryanskiy:delegation-fixes, r=compiler-errors
Delegation: fix ICE on duplicated associative items

Currently, functions delegation is only supported for delegation items with early resolved paths e.g. free functions and trait methods. During name resolution, information about function signatures is collected, including the number of parameters and whether there are self arguments. This information is then used when lowering from a delegation item into a regular function(`rustc_ast_lowering/src/delegation.rs`). The signature is usually inherited from path resolution id(`path_id`). However, in the case of trait impls `path_id` and `item_id` may be different:

```rust
trait Trait {
    fn foo(&self) -> u32 { 0 }
}

struct S;

mod to_reuse {
    use crate::S;

    pub fn foo(_: &S) -> u32 { 0 }
}

impl Trait for S {
    reuse to_reuse::foo { self }
    //~^ The signature should be inherited from item id instead of resolution id
}

```

Let's now consider an example from [issue](https://github.com/rust-lang/rust/issues/119920). Due to duplicated associative elements partial resolution for one of them will not be recorded:

9023f908cf/compiler/rustc_resolve/src/late.rs (L3153-L3162)

Which leads to an incorrect `is_in_trait_impl`

9023f908cf/compiler/rustc_ast_lowering/src/item.rs (L981-L986)

Which leads to an incorrect id for signature inheritance

9023f908cf/compiler/rustc_ast_lowering/src/delegation.rs (L99-L105)

Which lead to an ICE from original issue.

This patch fixes wrong `is_in_trait_impl`  calculation.

fixes https://github.com/rust-lang/rust/issues/119920
2024-03-16 23:28:48 +01:00
..
rustc
rustc_abi Auto merge of #121668 - erikdesjardins:commonprim, r=scottmcm,oli-obk 2024-03-13 15:25:35 +00:00
rustc_arena rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
rustc_ast Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_ast_ir Fix typo in VisitorResult 2024-03-08 23:20:29 -05:00
rustc_ast_lowering Rollup merge of #122564 - Bryanskiy:delegation-fixes, r=compiler-errors 2024-03-16 23:28:48 +01:00
rustc_ast_passes Rollup merge of #121545 - gvozdvmozgu:fix-attribute-validation-associated-items, r=fmease 2024-03-16 23:28:47 +01:00
rustc_ast_pretty Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_attr Rename IntoDiagnostic as Diagnostic. 2024-03-11 09:15:09 +11:00
rustc_baked_icu_data
rustc_borrowck Rollup merge of #122254 - estebank:issue-48677, r=oli-obk 2024-03-15 21:51:56 +01:00
rustc_builtin_macros delay expand macro bang when there has indeterminate path 2024-03-13 16:11:16 +08:00
rustc_codegen_cranelift Merge commit '4cf4ffc6ba514f171b3f52d1c731063e4fc45be3' into sync_cg_clif-2024-03-16 2024-03-16 17:23:11 +00:00
rustc_codegen_gcc Some comment nits 2024-03-12 08:51:20 +00:00
rustc_codegen_llvm Rollup merge of #122322 - Zalathar:branch, r=oli-obk 2024-03-14 20:00:19 +01:00
rustc_codegen_ssa Auto merge of #121297 - michaelwoerister:set-pdb-alt-path, r=wesleywiser 2024-03-15 14:14:34 +00:00
rustc_const_eval Rename some things around validation error reporting to signal that it is in fact about validation failures 2024-03-14 12:21:35 +00:00
rustc_data_structures Issue 122262: MAP_PRIVATE for more reliability on virtualised filesystems. 2024-03-15 18:31:07 -04:00
rustc_driver
rustc_driver_impl Rollup merge of #121764 - Zoxc:incr-sess-no-source, r=oli-obk 2024-03-14 20:00:18 +01:00
rustc_error_codes Improve error message for opaque captures 2024-03-08 19:08:13 +00:00
rustc_error_messages Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_errors Make SubdiagMessageOp well-formed 2024-03-14 13:13:08 -04:00
rustc_expand Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_feature Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_fluent_macro Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_fs_util Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_graphviz Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_hir Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_hir_analysis Rollup merge of #121720 - tmandry:split-refining, r=compiler-errors 2024-03-16 23:28:47 +01:00
rustc_hir_pretty Rollup merge of #122487 - GuillaumeGomez:rename-stmtkind-local, r=oli-obk 2024-03-14 20:00:21 +01:00
rustc_hir_typeck Rollup merge of #122543 - WaffleLapkin:never-flags, r=compiler-errors 2024-03-15 21:51:57 +01:00
rustc_incremental Make incremental sessions identity no longer depend on the crate names provided by source code 2024-03-13 16:40:02 +01:00
rustc_index doc: Add better explanation 2024-03-06 16:54:42 +01:00
rustc_index_macros Step all bootstrap cfgs forward 2024-02-08 07:44:34 -05:00
rustc_infer Rollup merge of #122513 - petrochenkov:somehir4, r=fmease 2024-03-15 17:24:09 +01:00
rustc_interface Rollup merge of #121764 - Zoxc:incr-sess-no-source, r=oli-obk 2024-03-14 20:00:18 +01:00
rustc_lexer Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_lint Rollup merge of #121720 - tmandry:split-refining, r=compiler-errors 2024-03-16 23:28:47 +01:00
rustc_lint_defs Rollup merge of #121720 - tmandry:split-refining, r=compiler-errors 2024-03-16 23:28:47 +01:00
rustc_llvm llvm-wrapper: adapt for LLVM API changes 2024-03-12 12:39:25 +00:00
rustc_log rustc_log: expose tracing-tree "wraparound" in an env var 2024-03-03 12:33:26 +01:00
rustc_macros Rename diagnostic derive things. 2024-03-11 10:06:34 +11:00
rustc_metadata Rollup merge of #117918 - daxpedda:wasm-c-abi-warning, r=workingjubilee 2024-03-16 23:28:46 +01:00
rustc_middle Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_mir_build Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_mir_dataflow Distinguish between library and lang UB in assert_unsafe_precondition 2024-03-08 18:53:58 -05:00
rustc_mir_transform Rollup merge of #122471 - RalfJung:const-eval-span, r=oli-obk 2024-03-15 10:14:54 +01:00
rustc_monomorphize preserve span when evaluating mir::ConstOperand 2024-03-14 21:55:07 +01:00
rustc_next_trait_solver Allow a way to add constructors for rustc_type_ir types 2024-03-04 15:39:59 +00:00
rustc_parse Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_parse_format remove a couple of redundant clones 2024-02-17 12:46:18 +01:00
rustc_passes Auto merge of #122371 - oli-obk:visit_nested_body, r=tmiasko 2024-03-16 04:35:02 +00:00
rustc_pattern_analysis Rollup merge of #122437 - Nadrieril:no-after-max, r=compiler-errors 2024-03-13 20:01:57 +01:00
rustc_privacy Test and implement reachability for trait objects and generic parameters of functions 2024-03-14 14:10:45 +00:00
rustc_query_impl Verify that query keys result in unique dep nodes 2024-03-12 05:31:41 +01:00
rustc_query_system Rollup merge of #122245 - saethlin:check-dep-graph-size, r=petrochenkov 2024-03-12 09:04:00 -07:00
rustc_resolve Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_serialize Replace NonZero::<_>::new with NonZero::new. 2024-02-15 08:09:42 +01:00
rustc_session Rollup merge of #121207 - chriswailes:z-external-clangrt, r=michaelwoerister 2024-03-15 10:14:53 +01:00
rustc_smir preserve span when evaluating mir::ConstOperand 2024-03-14 21:55:07 +01:00
rustc_span Add rustc_never_type_mode = "no_fallback" 2024-03-15 17:48:26 +00:00
rustc_symbol_mangling Rename IntoDiagnostic as Diagnostic. 2024-03-11 09:15:09 +11:00
rustc_target Rollup merge of #122212 - erikdesjardins:byval-align2, r=wesleywiser 2024-03-14 20:00:18 +01:00
rustc_trait_selection Auto merge of #122571 - matthiaskrgr:rollup-36wwovk, r=matthiaskrgr 2024-03-15 21:18:36 +00:00
rustc_traits Merge check_mod_impl_wf and check_mod_type_wf 2024-03-07 06:27:09 +00:00
rustc_transmute Safe Transmute: Use 'not yet supported', not 'unspecified' in errors 2024-03-15 17:42:29 +00:00
rustc_ty_utils Rollup merge of #122513 - petrochenkov:somehir4, r=fmease 2024-03-15 17:24:09 +01:00
rustc_type_ir Remove Ord from ClosureKind 2024-03-09 21:16:43 +08:00
stable_mir Rollup merge of #122405 - celinval:smir-new-const, r=oli-obk 2024-03-14 11:09:58 +01:00