-
Notifications
You must be signed in to change notification settings - Fork 12.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
2 changed files
with
61 additions
and
0 deletions.
There are no files selected for viewing
30 changes: 30 additions & 0 deletions
30
tests/ui/impl-trait/ice-unexpected-param-type-whensubstituting-in-region-112823.rs
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,30 @@ | ||
// test for ICE #112823 | ||
// Unexpected parameter Type(Repr) when substituting in region | ||
|
||
#![feature(impl_trait_in_assoc_type)] | ||
|
||
use std::future::Future; | ||
|
||
trait Stream {} | ||
|
||
trait X { | ||
type LineStream<'a, Repr> | ||
where | ||
Self: 'a; | ||
type LineStreamFut<'a, Repr> | ||
where | ||
Self: 'a; | ||
} | ||
|
||
struct Y; | ||
|
||
impl X for Y { | ||
type LineStream<'c, 'd> = impl Stream; | ||
//~^ ERROR type `LineStream` has 0 type parameters but its trait declaration has 1 type parameter | ||
type LineStreamFut<'a, Repr> = impl Future<Output = Self::LineStream<'a, Repr>>; | ||
fn line_stream<'a, Repr>(&'a self) -> Self::LineStreamFut<'a, Repr> {} | ||
//~^ ERROR `()` is not a future | ||
//~^^ method `line_stream` is not a member of trait `X` | ||
} | ||
|
||
pub fn main() {} |
31 changes: 31 additions & 0 deletions
31
tests/ui/impl-trait/ice-unexpected-param-type-whensubstituting-in-region-112823.stderr
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,31 @@ | ||
error[E0407]: method `line_stream` is not a member of trait `X` | ||
--> $DIR/ice-unexpected-param-type-whensubstituting-in-region-112823.rs:25:5 | ||
| | ||
LL | fn line_stream<'a, Repr>(&'a self) -> Self::LineStreamFut<'a, Repr> {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a member of trait `X` | ||
|
||
error[E0049]: type `LineStream` has 0 type parameters but its trait declaration has 1 type parameter | ||
--> $DIR/ice-unexpected-param-type-whensubstituting-in-region-112823.rs:22:21 | ||
| | ||
LL | type LineStream<'a, Repr> | ||
| -- ---- | ||
| | | ||
| expected 1 type parameter | ||
... | ||
LL | type LineStream<'c, 'd> = impl Stream; | ||
| ^^ ^^ | ||
| | | ||
| found 0 type parameters | ||
|
||
error[E0277]: `()` is not a future | ||
--> $DIR/ice-unexpected-param-type-whensubstituting-in-region-112823.rs:25:43 | ||
| | ||
LL | fn line_stream<'a, Repr>(&'a self) -> Self::LineStreamFut<'a, Repr> {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `()` is not a future | ||
| | ||
= help: the trait `Future` is not implemented for `()` | ||
|
||
error: aborting due to 3 previous errors | ||
|
||
Some errors have detailed explanations: E0049, E0277, E0407. | ||
For more information about an error, try `rustc --explain E0049`. |