
`hir::AssocItem` currently has a boolean `fn_has_self_parameter` field, which is misplaced, because it's only relevant for associated fns, not for associated consts or types. This commit moves it (and renames it) to the `AssocKind::Fn` variant, where it belongs. This requires introducing a new C-style enum, `AssocTag`, which is like `AssocKind` but without the fields. This is because `AssocKind` values are passed to various functions like `find_by_ident_and_kind` to indicate what kind of associated item should be searched for, and having to specify `has_self` isn't relevant there. New methods: - Predicates `AssocItem::is_fn` and `AssocItem::is_method`. - `AssocItem::as_tag` which converts `AssocItem::kind` to `AssocTag`. Removed `find_by_name_and_kinds`, which is unused. `AssocItem::descr` can now distinguish between methods and associated functions, which slightly improves some error messages.
51 lines
1.6 KiB
Text
51 lines
1.6 KiB
Text
error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc: A<T>`
|
|
--> $DIR/normalize-param-env-2.rs:24:22
|
|
|
|
|
LL | Self::Assoc: A<T>,
|
|
| ^^^^
|
|
|
|
|
note: the requirement `<() as A<T>>::Assoc: A<T>` appears on the `impl`'s associated function `f` but not on the corresponding trait's associated function
|
|
--> $DIR/normalize-param-env-2.rs:12:8
|
|
|
|
|
LL | trait A<T> {
|
|
| - in this trait
|
|
...
|
|
LL | fn f()
|
|
| ^ this trait's associated function doesn't have the requirement `<() as A<T>>::Assoc: A<T>`
|
|
|
|
error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc: A<T>`
|
|
--> $DIR/normalize-param-env-2.rs:24:22
|
|
|
|
|
LL | Self::Assoc: A<T>,
|
|
| ^^^^
|
|
|
|
error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc well-formed`
|
|
--> $DIR/normalize-param-env-2.rs:24:22
|
|
|
|
|
LL | Self::Assoc: A<T>,
|
|
| ^^^^
|
|
|
|
error[E0275]: overflow evaluating the requirement `(): A<T>`
|
|
--> $DIR/normalize-param-env-2.rs:27:10
|
|
|
|
|
LL | <() as A<T>>::f();
|
|
| ^^
|
|
|
|
error[E0275]: overflow evaluating the requirement `<() as A<T>>::Assoc: A<T>`
|
|
--> $DIR/normalize-param-env-2.rs:27:9
|
|
|
|
|
LL | <() as A<T>>::f();
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
|
note: required by a bound in `A::f`
|
|
--> $DIR/normalize-param-env-2.rs:14:22
|
|
|
|
|
LL | fn f()
|
|
| - required by a bound in this associated function
|
|
LL | where
|
|
LL | Self::Assoc: A<T>,
|
|
| ^^^^ required by this bound in `A::f`
|
|
|
|
error: aborting due to 5 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0275`.
|