rust/tests/ui/associated-types/substs-ppaux.verbose.stderr

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

97 lines
3.4 KiB
Plaintext
Raw Normal View History

2018-08-08 12:28:26 +00:00
error[E0308]: mismatched types
2024-03-12 15:53:35 +00:00
--> $DIR/substs-ppaux.rs:23:17
2018-08-08 12:28:26 +00:00
|
2024-03-12 15:53:35 +00:00
LL | / fn bar<'a, T>()
LL | | where
LL | | T: 'a,
| |______________- associated function `bar` defined here
...
2024-03-12 15:53:35 +00:00
LL | let x: () = <i8 as Foo<'static, 'static, u8>>::bar::<'static, char>;
| -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item
| |
| expected due to this
2018-08-08 12:28:26 +00:00
|
2019-11-14 22:08:08 +00:00
= note: expected unit type `()`
2024-03-12 15:53:35 +00:00
found fn item `fn() {<i8 as Foo<'static, 'static, u8>>::bar::<'static, char>}`
help: use parentheses to call this associated function
|
2024-03-12 15:53:35 +00:00
LL | let x: () = <i8 as Foo<'static, 'static, u8>>::bar::<'static, char>();
| ++
2018-08-08 12:28:26 +00:00
error[E0308]: mismatched types
2024-03-12 15:53:35 +00:00
--> $DIR/substs-ppaux.rs:31:17
2018-08-08 12:28:26 +00:00
|
2024-03-12 15:53:35 +00:00
LL | / fn bar<'a, T>()
LL | | where
LL | | T: 'a,
| |______________- associated function `bar` defined here
...
2024-03-12 15:53:35 +00:00
LL | let x: () = <i8 as Foo<'static, 'static, u32>>::bar::<'static, char>;
| -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item
| |
| expected due to this
2018-08-08 12:28:26 +00:00
|
2019-11-14 22:08:08 +00:00
= note: expected unit type `()`
2024-03-12 15:53:35 +00:00
found fn item `fn() {<i8 as Foo<'static, 'static>>::bar::<'static, char>}`
help: use parentheses to call this associated function
|
2024-03-12 15:53:35 +00:00
LL | let x: () = <i8 as Foo<'static, 'static, u32>>::bar::<'static, char>();
| ++
2018-08-08 12:28:26 +00:00
error[E0308]: mismatched types
2024-03-12 15:53:35 +00:00
--> $DIR/substs-ppaux.rs:39:17
2018-08-08 12:28:26 +00:00
|
LL | fn baz() {}
| -------- associated function `baz` defined here
...
2024-03-12 15:53:35 +00:00
LL | let x: () = <i8 as Foo<'static, 'static, u8>>::baz;
| -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found fn item
| |
| expected due to this
2018-08-08 12:28:26 +00:00
|
2019-11-14 22:08:08 +00:00
= note: expected unit type `()`
2024-03-12 15:53:35 +00:00
found fn item `fn() {<i8 as Foo<'static, 'static, u8>>::baz}`
help: use parentheses to call this associated function
|
2024-03-12 15:53:35 +00:00
LL | let x: () = <i8 as Foo<'static, 'static, u8>>::baz();
| ++
2018-08-08 12:28:26 +00:00
error[E0308]: mismatched types
2024-03-12 15:53:35 +00:00
--> $DIR/substs-ppaux.rs:47:17
2018-08-08 12:28:26 +00:00
|
2024-03-12 15:53:35 +00:00
LL | / fn foo<'z>()
LL | | where
LL | | &'z (): Sized,
| |__________________- function `foo` defined here
...
2024-03-12 15:53:35 +00:00
LL | let x: () = foo::<'static>;
| -- ^^^^^^^^^^^^^^ expected `()`, found fn item
| |
| expected due to this
2018-08-08 12:28:26 +00:00
|
2019-11-14 22:08:08 +00:00
= note: expected unit type `()`
2024-03-12 15:53:35 +00:00
found fn item `fn() {foo::<'static>}`
help: use parentheses to call this function
|
LL | let x: () = foo::<'static>();
| ++
2018-08-08 12:28:26 +00:00
Use root obligation on E0277 for some cases When encountering trait bound errors that satisfy some heuristics that tell us that the relevant trait for the user comes from the root obligation and not the current obligation, we use the root predicate for the main message. This allows to talk about "X doesn't implement Pattern<'_>" over the most specific case that just happened to fail, like "char doesn't implement Fn(&mut char)" in `tests/ui/traits/suggest-dereferences/root-obligation.rs` The heuristics are: - the type of the leaf predicate is (roughly) the same as the type from the root predicate, as a proxy for "we care about the root" - the leaf trait and the root trait are different, so as to avoid talking about `&mut T: Trait` and instead remain talking about `T: Trait` instead - the root trait is not `Unsize`, as to avoid talking about it in `tests/ui/coercion/coerce-issue-49593-box-never.rs`. ``` error[E0277]: the trait bound `&char: Pattern<'_>` is not satisfied --> $DIR/root-obligation.rs:6:38 | LL | .filter(|c| "aeiou".contains(c)) | -------- ^ the trait `Fn<(char,)>` is not implemented for `&char`, which is required by `&char: Pattern<'_>` | | | required by a bound introduced by this call | = note: required for `&char` to implement `FnOnce<(char,)>` = note: required for `&char` to implement `Pattern<'_>` note: required by a bound in `core::str::<impl str>::contains` --> $SRC_DIR/core/src/str/mod.rs:LL:COL help: consider dereferencing here | LL | .filter(|c| "aeiou".contains(*c)) | + ``` Fix #79359, fix #119983, fix #118779, cc #118415 (the suggestion needs to change).
2024-02-29 00:35:59 +00:00
error[E0277]: the trait bound `str: Foo<'?0, '?1, u8>` is not satisfied
2024-03-12 15:53:35 +00:00
--> $DIR/substs-ppaux.rs:55:6
2018-08-08 12:28:26 +00:00
|
LL | <str as Foo<u8>>::bar;
Use root obligation on E0277 for some cases When encountering trait bound errors that satisfy some heuristics that tell us that the relevant trait for the user comes from the root obligation and not the current obligation, we use the root predicate for the main message. This allows to talk about "X doesn't implement Pattern<'_>" over the most specific case that just happened to fail, like "char doesn't implement Fn(&mut char)" in `tests/ui/traits/suggest-dereferences/root-obligation.rs` The heuristics are: - the type of the leaf predicate is (roughly) the same as the type from the root predicate, as a proxy for "we care about the root" - the leaf trait and the root trait are different, so as to avoid talking about `&mut T: Trait` and instead remain talking about `T: Trait` instead - the root trait is not `Unsize`, as to avoid talking about it in `tests/ui/coercion/coerce-issue-49593-box-never.rs`. ``` error[E0277]: the trait bound `&char: Pattern<'_>` is not satisfied --> $DIR/root-obligation.rs:6:38 | LL | .filter(|c| "aeiou".contains(c)) | -------- ^ the trait `Fn<(char,)>` is not implemented for `&char`, which is required by `&char: Pattern<'_>` | | | required by a bound introduced by this call | = note: required for `&char` to implement `FnOnce<(char,)>` = note: required for `&char` to implement `Pattern<'_>` note: required by a bound in `core::str::<impl str>::contains` --> $SRC_DIR/core/src/str/mod.rs:LL:COL help: consider dereferencing here | LL | .filter(|c| "aeiou".contains(*c)) | + ``` Fix #79359, fix #119983, fix #118779, cc #118415 (the suggestion needs to change).
2024-02-29 00:35:59 +00:00
| ^^^ the trait `Sized` is not implemented for `str`, which is required by `str: Foo<'?0, '?1, u8>`
2018-08-08 12:28:26 +00:00
|
2023-04-22 00:08:38 +00:00
note: required for `str` to implement `Foo<'?0, '?1, u8>`
2024-03-12 15:53:35 +00:00
--> $DIR/substs-ppaux.rs:15:20
|
2024-03-12 15:53:35 +00:00
LL | impl<'a, 'b, T, S> Foo<'a, 'b, S> for T {}
| - ^^^^^^^^^^^^^^ ^
| |
| unsatisfied trait bound introduced here
2018-08-08 12:28:26 +00:00
error: aborting due to 5 previous errors
Some errors have detailed explanations: E0277, E0308.
2018-08-08 12:28:26 +00:00
For more information about an error, try `rustc --explain E0277`.