rust/tests/ui/resolve
Matthias Krüger 14663e09b7
Rollup merge of #116257 - estebank:issue-101351, r=b-naber
Suggest trait bounds for used associated type on type param

Fix #101351.

When an associated type on a type parameter is used, and the type parameter isn't constrained by the correct trait, suggest the appropriate trait bound:

```
error[E0220]: associated type `Associated` not found for `T`
 --> file.rs:6:15
  |
6 |     field: T::Associated,
  |               ^^^^^^^^^^ there is a similarly named associated type `Associated` in the trait `Foo`
  |
help: consider restricting type parameter `T`
  |
5 | struct Generic<T: Foo> {
  |                 +++++
  ```

When an associated type on a type parameter has a typo, suggest fixing
it:

```
error[E0220]: associated type `Baa` not found for `T`
  --> $DIR/issue-55673.rs:9:8
   |
LL |     T::Baa: std::fmt::Debug,
   |        ^^^ there is a similarly named associated type `Bar` in the trait `Foo`
   |
help: change the associated type name to use `Bar` from `Foo`
   |
LL |     T::Bar: std::fmt::Debug,
   |        ~~~
```
2023-10-16 19:10:49 +02:00
..
auxiliary
112590-2.fixed
112590-2.rs
112590-2.stderr
associated-fn-called-as-fn.rs
associated-fn-called-as-fn.stderr When suggesting self.x for S { x }, use S { x: self.x } 2023-09-25 15:56:36 +00:00
bad-env-capture2.rs
bad-env-capture2.stderr
bad-env-capture3.rs
bad-env-capture3.stderr
bad-env-capture.rs
bad-env-capture.stderr
bad-expr-path2.rs
bad-expr-path2.stderr rustc_hir_analysis: add a helper to check function the signature mismatches 2023-09-19 18:15:23 +02:00
bad-expr-path.rs
bad-expr-path.stderr rustc_hir_analysis: add a helper to check function the signature mismatches 2023-09-19 18:15:23 +02:00
bad-module.rs
bad-module.stderr
bad-type-env-capture.rs
bad-type-env-capture.stderr
blind-item-local-shadow.rs
blind-item-mixed-crate-use-item.rs
blind-item-mixed-use-item.rs
block-with-trait-parent.rs
crate-called-as-function.rs
crate-called-as-function.stderr
crate-in-paths.rs
crate-in-paths.stderr
derive-macro-1.rs
derive-macro-2.rs
disambiguate-identical-names.rs
disambiguate-identical-names.stderr
editions-crate-root-2015.rs
editions-crate-root-2015.stderr
editions-crate-root-2018.rs
editions-crate-root-2018.stderr
enums-are-namespaced-xc.rs
enums-are-namespaced-xc.stderr
enums-pats-not-idents.rs
enums-pats-not-idents.stderr
explicit-self-lowercase-param.rs
explicit-self-lowercase-param.stderr
export-fully-qualified-2018.rs
export-fully-qualified-2018.stderr
export-fully-qualified.rs
export-fully-qualified.stderr
extern-prelude-fail.rs
extern-prelude-fail.stderr
extern-prelude.rs
field-and-method-in-self-not-available-in-assoc-fn.rs When suggesting self.x for S { x }, use S { x: self.x } 2023-09-25 15:56:36 +00:00
field-and-method-in-self-not-available-in-assoc-fn.stderr Point at field definition when unresolved name exists in Self 2023-09-25 15:56:36 +00:00
filter-intrinsics.rs
filter-intrinsics.stderr
generic-params-from-outer-item-in-const-item.default.stderr
generic-params-from-outer-item-in-const-item.generic_const_items.stderr
generic-params-from-outer-item-in-const-item.rs
hidden_glob_reexports.rs
hidden_glob_reexports.stderr
impl-items-vis-unresolved.rs
impl-items-vis-unresolved.stderr
issue-2330.rs
issue-2330.stderr
issue-2356.rs
issue-2356.stderr Point at field definition when unresolved name exists in Self 2023-09-25 15:56:36 +00:00
issue-3021-c.rs
issue-3021-c.stderr
issue-3021.rs
issue-3021.stderr
issue-3099-a.rs
issue-3099-a.stderr
issue-3099-b.rs
issue-3099-b.stderr
issue-3907-2.rs
issue-3907-2.stderr
issue-3907.rs
issue-3907.stderr
issue-5035-2.rs
issue-5035-2.stderr
issue-5035.rs
issue-5035.stderr
issue-5099.rs
issue-5099.stderr
issue-5927.rs
issue-5927.stderr
issue-6642.rs
issue-6642.stderr
issue-6702.rs
issue-6702.stderr
issue-10200.rs
issue-10200.stderr
issue-12796.rs
issue-12796.stderr
issue-14254.rs
issue-14254.stderr When suggesting self.x for S { x }, use S { x: self.x } 2023-09-25 15:56:36 +00:00
issue-16058.rs
issue-16058.stderr
issue-17518.rs
issue-17518.stderr
issue-18252.rs
issue-18252.stderr
issue-19452.rs
issue-19452.stderr
issue-21221-1.rs
issue-21221-1.stderr
issue-21221-2.rs
issue-21221-2.stderr
issue-21221-3.rs
issue-21221-3.stderr
issue-21221-4.rs
issue-21221-4.stderr
issue-22692.rs
issue-22692.stderr
issue-23305.rs
issue-23305.stderr
issue-23716.rs
issue-23716.stderr
issue-24968.rs
issue-24968.stderr
issue-26545.rs
issue-26545.stderr
issue-30535.rs
issue-30535.stderr
issue-31845.rs
issue-31845.stderr
issue-33876.rs
issue-33876.stderr
issue-35675.rs
issue-35675.stderr
issue-39226.rs
issue-39226.stderr
issue-39559-2.rs
issue-39559-2.stderr
issue-39559.rs
issue-39559.stderr
issue-42944.rs
issue-42944.stderr
issue-49074.rs
issue-49074.stderr
issue-50599.rs
issue-50599.stderr
issue-54379.rs
issue-54379.stderr
issue-55673.fixed Suggest trait bounds for used associated type on type param 2023-10-13 19:13:56 +00:00
issue-55673.rs Suggest trait bounds for used associated type on type param 2023-10-13 19:13:56 +00:00
issue-55673.stderr Suggest trait bounds for used associated type on type param 2023-10-13 19:13:56 +00:00
issue-57523.rs
issue-60057.rs
issue-60057.stderr Point at field definition when unresolved name exists in Self 2023-09-25 15:56:36 +00:00
issue-65025-extern-static-parent-generics.rs
issue-65025-extern-static-parent-generics.stderr
issue-65035-static-with-parent-generics.rs
issue-65035-static-with-parent-generics.stderr
issue-69401-trait-fn-no-body-ty-local.rs
issue-69401-trait-fn-no-body-ty-local.stderr
issue-70736-async-fn-no-body-def-collector.rs Stabilize AFIT and RPITIT 2023-10-13 21:01:36 +00:00
issue-70736-async-fn-no-body-def-collector.stderr Stabilize AFIT and RPITIT 2023-10-13 21:01:36 +00:00
issue-73427.rs
issue-73427.stderr
issue-80079.rs
issue-80079.stderr
issue-81508.rs
issue-81508.stderr
issue-82156.rs
issue-82156.stderr
issue-82865.rs
issue-82865.stderr
issue-85348.rs
issue-85348.stderr
issue-85671.rs
issue-88472.rs
issue-88472.stderr
issue-90113.rs
issue-90113.stderr
issue-100365.rs
issue-100365.stderr
issue-101749-2.rs
issue-101749-2.stderr
issue-101749.fixed
issue-101749.rs
issue-101749.stderr
issue-102946.rs
issue-102946.stderr
issue-103202.rs
issue-103202.stderr
issue-103474.rs
issue-103474.stderr Tweak wording and logic 2023-09-23 01:54:05 +00:00
issue-104700-inner_scope.rs
issue-104700-inner_scope.stderr
issue-105069.rs
issue-105069.stderr
issue-107563-ambiguous-glob-reexports.rs
issue-107563-ambiguous-glob-reexports.stderr
issue-108529.rs
issue-108529.stderr
issue-109153.rs
issue-109153.stderr
issue-109250.rs
issue-109250.stderr
issue-111312.rs
issue-111312.stderr
issue-111727.rs
issue-111727.stderr
issue-112472-multi-generics-suggestion.fixed
issue-112472-multi-generics-suggestion.rs
issue-112472-multi-generics-suggestion.stderr
issue-113808-invalid-unused-qualifications-suggestion.fixed
issue-113808-invalid-unused-qualifications-suggestion.rs
issue-113808-invalid-unused-qualifications-suggestion.stderr
issue-114433-invalid-unused-qualifications-suggestion.rs
issue-116164.rs resolve: skip underscore character during candidate lookup 2023-09-28 19:47:58 +08:00
issue-116164.stderr resolve: skip underscore character during candidate lookup 2023-09-28 19:47:58 +08:00
levenshtein.rs
levenshtein.stderr
macro-determinacy-non-module.rs
missing-in-namespace.rs
missing-in-namespace.stderr
name-clash-nullary.rs
name-clash-nullary.stderr
name-collision-in-trait-fn-sig.rs
no-implicit-prelude-nested.rs
no-implicit-prelude-nested.stderr
no-implicit-prelude.rs
no-implicit-prelude.stderr
no-std-1.rs
no-std-2.rs
no-std-3.rs
pathless-extern-ok.rs
point-at-type-parameter-shadowing-another-type.rs
point-at-type-parameter-shadowing-another-type.stderr
privacy-enum-ctor.rs
privacy-enum-ctor.stderr
privacy-struct-ctor.rs
privacy-struct-ctor.stderr
raw-ident-in-path.rs
raw-ident-in-path.stderr
resolve-assoc-suggestions.rs
resolve-assoc-suggestions.stderr When suggesting self.x for S { x }, use S { x: self.x } 2023-09-25 15:56:36 +00:00
resolve-bad-import-prefix.rs
resolve-bad-import-prefix.stderr
resolve-bad-visibility.rs
resolve-bad-visibility.stderr
resolve-conflict-extern-crate-vs-extern-crate.rs
resolve-conflict-extern-crate-vs-extern-crate.stderr
resolve-conflict-import-vs-extern-crate.rs
resolve-conflict-import-vs-extern-crate.stderr
resolve-conflict-import-vs-import.fixed
resolve-conflict-import-vs-import.rs
resolve-conflict-import-vs-import.stderr
resolve-conflict-item-vs-extern-crate.rs
resolve-conflict-item-vs-extern-crate.stderr
resolve-conflict-item-vs-import.rs
resolve-conflict-item-vs-import.stderr
resolve-conflict-type-vs-import.rs
resolve-conflict-type-vs-import.stderr
resolve-hint-macro.fixed
resolve-hint-macro.rs
resolve-hint-macro.stderr
resolve-inconsistent-binding-mode.rs
resolve-inconsistent-binding-mode.stderr
resolve-inconsistent-names.rs
resolve-inconsistent-names.stderr Replace HashMap with IndexMap in pattern binding resolve 2023-10-02 19:12:42 +02:00
resolve-issue-2428.rs
resolve-label.rs
resolve-label.stderr
resolve-primitive-fallback.rs
resolve-primitive-fallback.stderr
resolve-pseudo-shadowing.rs
resolve-self-in-impl-2.rs
resolve-self-in-impl-2.stderr
resolve-self-in-impl.rs
resolve-self-in-impl.stderr
resolve-speculative-adjustment.rs
resolve-speculative-adjustment.stderr When suggesting self.x for S { x }, use S { x: self.x } 2023-09-25 15:56:36 +00:00
resolve-type-param-in-item-in-trait.rs
resolve-type-param-in-item-in-trait.stderr
resolve-unknown-trait.rs
resolve-unknown-trait.stderr
resolve-variant-assoc-item.rs
resolve-variant-assoc-item.stderr
shadow-const-param.rs
shadow-const-param.stderr
suggest-import-without-clobbering-attrs.fixed
suggest-import-without-clobbering-attrs.rs
suggest-import-without-clobbering-attrs.stderr
suggest-path-for-tuple-struct.rs
suggest-path-for-tuple-struct.stderr
suggest-path-instead-of-mod-dot-item.rs
suggest-path-instead-of-mod-dot-item.stderr
token-error-correct-2.rs
token-error-correct-2.stderr
token-error-correct-3.rs
token-error-correct-3.stderr
token-error-correct-4.rs
token-error-correct-4.stderr
token-error-correct.rs
token-error-correct.stderr
tool-import.rs
tool-import.stderr
tuple-struct-alias.rs
tuple-struct-alias.stderr
typo-suggestion-for-variable-with-name-similar-to-struct-field.rs
typo-suggestion-for-variable-with-name-similar-to-struct-field.stderr Point at field definition when unresolved name exists in Self 2023-09-25 15:56:36 +00:00
typo-suggestion-mistyped-in-path.rs
typo-suggestion-mistyped-in-path.stderr
typo-suggestion-named-underscore.rs
typo-suggestion-named-underscore.stderr
unboxed-closure-sugar-nonexistent-trait.rs
unboxed-closure-sugar-nonexistent-trait.stderr
unresolved_static_type_field.rs
unresolved_static_type_field.stderr Point at field definition when unresolved name exists in Self 2023-09-25 15:56:36 +00:00
unresolved-segments-visibility.rs
unresolved-segments-visibility.stderr
unused-qualifications-suggestion.fixed
unused-qualifications-suggestion.rs
unused-qualifications-suggestion.stderr
use_suggestion_placement.fixed
use_suggestion_placement.rs
use_suggestion_placement.stderr
use_suggestion.rs
use_suggestion.stderr
use-self-in-inner-fn.rs
use-self-in-inner-fn.stderr
visibility-indeterminate.rs
visibility-indeterminate.stderr