rust/compiler
Matthias Krüger efb8084672
Rollup merge of #135865 - zachs18:maybe_report_similar_assoc_fn_more, r=compiler-errors
For E0223, suggest associated functions that are similar to the path, even if the base type has multiple inherent impl blocks.

Currently, the "help: there is an associated function with a similar name `from_utf8`" suggestion for `String::from::utf8` is only given if `String` has exactly one inherent `impl` item. This PR makes the suggestion be emitted even if the base type has multiple inherent `impl` items.

Example:

```rust
struct Foo;
impl Foo {
    fn bar_baz() {}
}
impl Foo {} // load-bearing
fn main() {
    Foo::bar::baz;
}
```

Nightly/stable output:

```rust
error[E0223]: ambiguous associated type
 --> f.rs:7:5
  |
7 |     Foo::bar::baz;
  |     ^^^^^^^^
  |
help: if there were a trait named `Example` with associated type `bar` implemented for `Foo`, you could use the fully-qualified path
  |
7 |     <Foo as Example>::bar::baz;
  |     ~~~~~~~~~~~~~~~~~~~~~

error: aborting due to 1 previous error

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

Output with this PR, or without the load-bearing empty impl on nightly/stable:

```rust
error[E0223]: ambiguous associated type
 --> f.rs:7:5
  |
7 |     Foo::bar::baz;
  |     ^^^^^^^^
  |
help: there is an associated function with a similar name: `bar_baz`
  |
7 |     Foo::bar_baz;
  |          ~~~~~~~

error: aborting due to 1 previous error

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

Ideally, this suggestion would also work for non-ADT types like ~~`str::char::indices`~~ (edit: latest commit makes this work with primitives)  or `<dyn Any>::downcast::mut_unchecked`, but that seemed to be a harder change.

`@rustbot` label +A-diagnostics
2025-01-24 08:08:08 +01:00
..
rustc switch jemalloc-sys back to tikv-jemalloc-sys, and update to 0.6.0 2024-12-03 08:56:33 +00:00
rustc_abi Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_arena Add inherent versions of MaybeUninit methods for slices 2025-01-11 23:57:00 -05:00
rustc_ast Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors 2025-01-21 19:46:20 +00:00
rustc_ast_ir
rustc_ast_lowering Enforce that all spans are lowered in ast lowering 2025-01-22 11:38:42 +00:00
rustc_ast_passes Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors 2025-01-21 19:46:20 +00:00
rustc_ast_pretty Rename PatKind::Lit to Expr 2025-01-08 07:34:59 +00:00
rustc_attr_data_structures allowed_through_unstable_modules: support showing a deprecation message when the unstable module name is used 2025-01-15 09:41:33 +01:00
rustc_attr_parsing Run clippy --fix for unnecessary_map_or lint 2025-01-19 19:15:00 +00:00
rustc_baked_icu_data
rustc_borrowck Rename structurally_normalize to structurally_normalize_ty 2025-01-22 07:04:53 +00:00
rustc_builtin_macros Rollup merge of #135557 - estebank:wtf8, r=fee1-dead 2025-01-22 20:37:24 +01:00
rustc_codegen_cranelift Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors 2025-01-21 19:46:20 +00:00
rustc_codegen_gcc Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors 2025-01-21 19:46:20 +00:00
rustc_codegen_llvm rustc_codegen_llvm: remove outdated asm-to-obj codegen note 2025-01-22 17:58:50 -05:00
rustc_codegen_ssa Auto merge of #135674 - scottmcm:assume-better, r=estebank 2025-01-22 04:18:30 +00:00
rustc_const_eval Rollup merge of #134858 - estebank:issue-81370, r=Noratrieb 2025-01-19 11:48:15 +01:00
rustc_data_structures bumpt compiler and tools to windows 0.59 2025-01-21 16:48:44 +03:00
rustc_driver
rustc_driver_impl Rollup merge of #135880 - bjorn3:misc_driver_refactors, r=oli-obk 2025-01-23 19:54:26 +01:00
rustc_error_codes Refactor dyn-compatibility error and suggestions 2025-01-22 09:20:57 -08:00
rustc_error_messages Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_errors bumpt compiler and tools to windows 0.59 2025-01-21 16:48:44 +03:00
rustc_expand Auto merge of #134478 - compiler-errors:attr-span, r=oli-obk 2025-01-22 14:46:41 +00:00
rustc_feature Refactor dyn-compatibility error and suggestions 2025-01-22 09:20:57 -08:00
rustc_fluent_macro
rustc_fs_util
rustc_graphviz
rustc_hir Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors 2025-01-21 19:46:20 +00:00
rustc_hir_analysis Rollup merge of #135865 - zachs18:maybe_report_similar_assoc_fn_more, r=compiler-errors 2025-01-24 08:08:08 +01:00
rustc_hir_pretty Treat safe target_feature functions as unsafe by default 2025-01-15 08:58:17 +00:00
rustc_hir_typeck Rollup merge of #134746 - compiler-errors:autoderef-norm-non-wf-coerce-ice, r=lcnr 2025-01-23 09:49:18 +01:00
rustc_incremental turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_index Run clippy --fix for unnecessary_map_or lint 2025-01-19 19:15:00 +00:00
rustc_index_macros update rustc_index_macros feature handling 2024-12-19 20:32:12 +03:00
rustc_infer Remove Copy bound from enter_forall 2025-01-22 11:45:09 +00:00
rustc_interface Rollup merge of #135880 - bjorn3:misc_driver_refactors, r=oli-obk 2025-01-23 19:54:26 +01:00
rustc_lexer Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
rustc_lint Auto merge of #132666 - dingxiangfei2009:skip-if-let-rescope-lint, r=compiler-errors 2025-01-23 23:16:06 +00:00
rustc_lint_defs Rollup merge of #132397 - m-ou-se:warn-missing-abi, r=Nadrieril 2025-01-15 04:08:10 -05:00
rustc_llvm Make our DIFlags match LLVMDIFlags in the LLVM-C API 2025-01-21 14:41:44 +11:00
rustc_log Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_macros Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_metadata Manual cleanup of some is_{or_none|some_and} usages 2025-01-19 20:50:43 +00:00
rustc_middle Allow arena_cache queries to return Option<&'tcx T> 2025-01-23 13:25:37 +11:00
rustc_mir_build Rollup merge of #135409 - Shunpoco:issue-133117-ICE-never-false-edge-start-block, r=Nadrieril 2025-01-22 20:37:24 +01:00
rustc_mir_dataflow Run clippy --fix for unnecessary_map_or lint 2025-01-19 19:15:00 +00:00
rustc_mir_transform Run clippy --fix for unnecessary_map_or lint 2025-01-19 19:15:00 +00:00
rustc_monomorphize Make sure we actually use the right trivial lifetime substs when eagerly monomorphizing drop for structs 2025-01-15 04:20:25 +00:00
rustc_next_trait_solver Rollup merge of #135766 - lcnr:candidate-assembly-3, r=compiler-errors 2025-01-23 19:54:25 +01:00
rustc_parse Rollup merge of #135557 - estebank:wtf8, r=fee1-dead 2025-01-22 20:37:24 +01:00
rustc_parse_format Rollup merge of #135920 - hkBst:patch-16, r=SparrowLii 2025-01-23 19:54:28 +01:00
rustc_passes Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors 2025-01-21 19:46:20 +00:00
rustc_pattern_analysis rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_privacy Emit a single privacy error for multiple fields on the same struct expression 2025-01-18 20:33:15 +00:00
rustc_query_impl don't return an Option from try_find_dep_kind 2025-01-07 21:57:00 +01:00
rustc_query_system Properly note when query stack is being cut off 2025-01-16 19:12:22 +00:00
rustc_resolve rustc_resolve: don't open-code Option::filter 2025-01-21 13:44:53 +00:00
rustc_sanitizers Eliminate an unnecessary Symbol::to_string; use as_str 2025-01-07 14:24:47 +02:00
rustc_serialize
rustc_session Remove the need to manually call set_using_internal_features 2025-01-23 09:38:58 +00:00
rustc_smir Remove RunCompiler 2025-01-23 09:38:58 +00:00
rustc_span Auto merge of #134478 - compiler-errors:attr-span, r=oli-obk 2025-01-22 14:46:41 +00:00
rustc_symbol_mangling Fix legacy symbol mangling of closures 2025-01-14 16:33:03 +00:00
rustc_target Rollup merge of #135757 - no1wudi:master, r=compiler-errors 2025-01-24 08:08:07 +01:00
rustc_trait_selection Rollup merge of #135492 - metamuffin:bug-invalid-await-suggest, r=compiler-errors 2025-01-23 19:54:24 +01:00
rustc_traits
rustc_transmute add comment explaining why ty_and_layout_field is not used 2024-12-18 11:01:54 +01:00
rustc_ty_utils new solver: prefer trivial builtin impls over where-clauses 2025-01-17 18:50:29 +00:00
rustc_type_ir Auto merge of #133830 - compiler-errors:span-key, r=lcnr 2025-01-21 12:33:33 +00:00
rustc_type_ir_macros
stable_mir Add gpu-kernel calling convention 2025-01-16 00:26:55 +01:00