forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#64085 - estebank:hrtb-errors, r=oli-obk
Tweak unsatisfied HRTB errors r? @oli-obk Close rust-lang#35180.
- Loading branch information
Showing
11 changed files
with
145 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,26 @@ | ||
error: implementation of `Foo` is not general enough | ||
--> $DIR/auto-trait-regions.rs:30:5 | ||
| | ||
LL | auto trait Foo {} | ||
| ----------------- trait `Foo` defined here | ||
... | ||
LL | assert_foo(gen); | ||
| ^^^^^^^^^^ | ||
| ^^^^^^^^^^ implementation of `Foo` is not general enough | ||
| | ||
= note: `Foo` would have to be implemented for the type `&'0 OnlyFooIfStaticRef`, for any lifetime `'0` | ||
= note: but `Foo` is actually implemented for the type `&'1 OnlyFooIfStaticRef`, for some specific lifetime `'1` | ||
= note: `Foo` would have to be implemented for the type `&'0 OnlyFooIfStaticRef`, for any lifetime `'0`... | ||
= note: ...but `Foo` is actually implemented for the type `&'1 OnlyFooIfStaticRef`, for some specific lifetime `'1` | ||
|
||
error: implementation of `Foo` is not general enough | ||
--> $DIR/auto-trait-regions.rs:48:5 | ||
| | ||
LL | auto trait Foo {} | ||
| ----------------- trait `Foo` defined here | ||
... | ||
LL | assert_foo(gen); | ||
| ^^^^^^^^^^ | ||
| ^^^^^^^^^^ implementation of `Foo` is not general enough | ||
| | ||
= note: `Foo` would have to be implemented for the type `A<'0, '1>`, for any two lifetimes `'0` and `'1` | ||
= note: but `Foo` is actually implemented for the type `A<'_, '2>`, for some specific lifetime `'2` | ||
= note: `Foo` would have to be implemented for the type `A<'0, '1>`, for any two lifetimes `'0` and `'1`... | ||
= note: ...but `Foo` is actually implemented for the type `A<'_, '2>`, for some specific lifetime `'2` | ||
|
||
error: aborting due to 2 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
fn main() { | ||
test::<FooS>(&mut 42); //~ ERROR implementation of `Foo` is not general enough | ||
} | ||
|
||
trait Foo<'a> {} | ||
|
||
struct FooS<'a> { | ||
data: &'a mut u32, | ||
} | ||
|
||
impl<'a, 'b: 'a> Foo<'b> for FooS<'a> {} | ||
|
||
fn test<'a, F>(data: &'a mut u32) where F: for<'b> Foo<'b> {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
error: implementation of `Foo` is not general enough | ||
--> $DIR/due-to-where-clause.rs:2:5 | ||
| | ||
LL | test::<FooS>(&mut 42); | ||
| ^^^^^^^^^^^^ doesn't satisfy where-clause | ||
... | ||
LL | trait Foo<'a> {} | ||
| ---------------- trait `Foo` defined here | ||
... | ||
LL | fn test<'a, F>(data: &'a mut u32) where F: for<'b> Foo<'b> {} | ||
| ------------------------------------------------------------- due to a where-clause on `test`... | ||
| | ||
= note: ...`FooS<'_>` must implement `Foo<'0>`, for any lifetime `'0`... | ||
= note: ...but `FooS<'_>` actually implements `Foo<'1>`, for some specific lifetime `'1` | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,14 @@ | ||
error: implementation of `Deserialize` is not general enough | ||
--> $DIR/hrtb-cache-issue-54302.rs:19:5 | ||
| | ||
LL | trait Deserialize<'de> {} | ||
| ------------------------- trait `Deserialize` defined here | ||
... | ||
LL | assert_deserialize_owned::<&'static str>(); | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Deserialize` is not general enough | ||
| | ||
= note: `&'static str` must implement `Deserialize<'0>`, for any lifetime `'0` | ||
= note: but `&str` actually implements `Deserialize<'1>`, for some specific lifetime `'1` | ||
= note: `&'static str` must implement `Deserialize<'0>`, for any lifetime `'0`... | ||
= note: ...but `&str` actually implements `Deserialize<'1>`, for some specific lifetime `'1` | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,17 @@ | ||
error: implementation of `Stream` is not general enough | ||
--> $DIR/issue-30786.rs:108:22 | ||
| | ||
LL | let map = source.map(|x: &_| x); | ||
| ^^^ | ||
LL | / pub trait Stream { | ||
LL | | type Item; | ||
LL | | fn next(self) -> Option<Self::Item>; | ||
LL | | } | ||
| |_- trait `Stream` defined here | ||
... | ||
LL | let map = source.map(|x: &_| x); | ||
| ^^^ implementation of `Stream` is not general enough | ||
| | ||
= note: `Stream` would have to be implemented for the type `&'0 mut Map<Repeat, [closure@$DIR/issue-30786.rs:108:26: 108:35]>`, for any lifetime `'0` | ||
= note: but `Stream` is actually implemented for the type `&'1 mut Map<Repeat, [closure@$DIR/issue-30786.rs:108:26: 108:35]>`, for some specific lifetime `'1` | ||
= note: `Stream` would have to be implemented for the type `&'0 mut Map<Repeat, [closure@$DIR/issue-30786.rs:108:26: 108:35]>`, for any lifetime `'0`... | ||
= note: ...but `Stream` is actually implemented for the type `&'1 mut Map<Repeat, [closure@$DIR/issue-30786.rs:108:26: 108:35]>`, for some specific lifetime `'1` | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,58 @@ | ||
error: implementation of `Foo` is not general enough | ||
--> $DIR/issue-54302-cases.rs:63:5 | ||
| | ||
LL | <u32 as RefFoo<u32>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
= note: `Foo<'static, u32>` would have to be implemented for the type `&'0 u32`, for any lifetime `'0` | ||
= note: but `Foo<'_, u32>` is actually implemented for the type `&'1 u32`, for some specific lifetime `'1` | ||
LL | / trait Foo<'x, T> { | ||
LL | | fn foo(self) -> &'x T; | ||
LL | | } | ||
| |_- trait `Foo` defined here | ||
... | ||
LL | <u32 as RefFoo<u32>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Foo` is not general enough | ||
| | ||
= note: `Foo<'static, u32>` would have to be implemented for the type `&'0 u32`, for any lifetime `'0`... | ||
= note: ...but `Foo<'_, u32>` is actually implemented for the type `&'1 u32`, for some specific lifetime `'1` | ||
|
||
error: implementation of `Foo` is not general enough | ||
--> $DIR/issue-54302-cases.rs:69:5 | ||
| | ||
LL | <i32 as RefFoo<i32>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
LL | / trait Foo<'x, T> { | ||
LL | | fn foo(self) -> &'x T; | ||
LL | | } | ||
| |_- trait `Foo` defined here | ||
... | ||
LL | <i32 as RefFoo<i32>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Foo` is not general enough | ||
| | ||
= note: `Foo<'static, i32>` would have to be implemented for the type `&'0 i32`, for any lifetime `'0` | ||
= note: but `Foo<'_, i32>` is actually implemented for the type `&'1 i32`, for some specific lifetime `'1` | ||
= note: `Foo<'static, i32>` would have to be implemented for the type `&'0 i32`, for any lifetime `'0`... | ||
= note: ...but `Foo<'_, i32>` is actually implemented for the type `&'1 i32`, for some specific lifetime `'1` | ||
|
||
error: implementation of `Foo` is not general enough | ||
--> $DIR/issue-54302-cases.rs:75:5 | ||
| | ||
LL | <u64 as RefFoo<u64>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
LL | / trait Foo<'x, T> { | ||
LL | | fn foo(self) -> &'x T; | ||
LL | | } | ||
| |_- trait `Foo` defined here | ||
... | ||
LL | <u64 as RefFoo<u64>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Foo` is not general enough | ||
| | ||
= note: `Foo<'static, u64>` would have to be implemented for the type `&'0 u64`, for any lifetime `'0` | ||
= note: but `Foo<'_, u64>` is actually implemented for the type `&'1 u64`, for some specific lifetime `'1` | ||
= note: `Foo<'static, u64>` would have to be implemented for the type `&'0 u64`, for any lifetime `'0`... | ||
= note: ...but `Foo<'_, u64>` is actually implemented for the type `&'1 u64`, for some specific lifetime `'1` | ||
|
||
error: implementation of `Foo` is not general enough | ||
--> $DIR/issue-54302-cases.rs:81:5 | ||
| | ||
LL | <i64 as RefFoo<i64>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
LL | / trait Foo<'x, T> { | ||
LL | | fn foo(self) -> &'x T; | ||
LL | | } | ||
| |_- trait `Foo` defined here | ||
... | ||
LL | <i64 as RefFoo<i64>>::ref_foo(a) | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Foo` is not general enough | ||
| | ||
= note: `Foo<'static, i64>` would have to be implemented for the type `&'0 i64`, for any lifetime `'0` | ||
= note: but `Foo<'_, i64>` is actually implemented for the type `&'1 i64`, for some specific lifetime `'1` | ||
= note: `Foo<'static, i64>` would have to be implemented for the type `&'0 i64`, for any lifetime `'0`... | ||
= note: ...but `Foo<'_, i64>` is actually implemented for the type `&'1 i64`, for some specific lifetime `'1` | ||
|
||
error: aborting due to 4 previous errors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,14 @@ | ||
error: implementation of `Deserialize` is not general enough | ||
--> $DIR/issue-54302.rs:13:5 | ||
| | ||
LL | trait Deserialize<'de> {} | ||
| ------------------------- trait `Deserialize` defined here | ||
... | ||
LL | assert_deserialize_owned::<&'static str>(); | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Deserialize` is not general enough | ||
| | ||
= note: `&'static str` must implement `Deserialize<'0>`, for any lifetime `'0` | ||
= note: but `&str` actually implements `Deserialize<'1>`, for some specific lifetime `'1` | ||
= note: `&'static str` must implement `Deserialize<'0>`, for any lifetime `'0`... | ||
= note: ...but `&str` actually implements `Deserialize<'1>`, for some specific lifetime `'1` | ||
|
||
error: aborting due to previous error | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,16 @@ | ||
error: implementation of `DistributedIteratorMulti` is not general enough | ||
--> $DIR/issue-55731.rs:48:5 | ||
| | ||
LL | multi(Map { | ||
| ^^^^^ | ||
LL | / trait DistributedIteratorMulti<Source> { | ||
LL | | type Item; | ||
LL | | } | ||
| |_- trait `DistributedIteratorMulti` defined here | ||
... | ||
LL | multi(Map { | ||
| ^^^^^ implementation of `DistributedIteratorMulti` is not general enough | ||
| | ||
= note: `DistributedIteratorMulti<&'0 ()>` would have to be implemented for the type `Cloned<&()>`, for any lifetime `'0` | ||
= note: but `DistributedIteratorMulti<&'1 ()>` is actually implemented for the type `Cloned<&'1 ()>`, for some specific lifetime `'1` | ||
= note: `DistributedIteratorMulti<&'0 ()>` would have to be implemented for the type `Cloned<&()>`, for any lifetime `'0`... | ||
= note: ...but `DistributedIteratorMulti<&'1 ()>` is actually implemented for the type `Cloned<&'1 ()>`, for some specific lifetime `'1` | ||
|
||
error: aborting due to previous error | ||
|