mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Avoid ICE in printing RPITIT type
This commit is contained in:
parent
39323a5877
commit
90a8d67491
@ -927,7 +927,7 @@ pub trait PrettyPrinter<'tcx>:
|
||||
// unless we can find out what generator return type it comes from.
|
||||
let term = if let Some(ty) = term.skip_binder().ty()
|
||||
&& let ty::Projection(proj) = ty.kind()
|
||||
&& let assoc = tcx.associated_item(proj.item_def_id)
|
||||
&& let Some(assoc) = tcx.opt_associated_item(proj.item_def_id)
|
||||
&& assoc.trait_container(tcx) == tcx.lang_items().gen_trait()
|
||||
&& assoc.name == rustc_span::sym::Return
|
||||
{
|
||||
|
24
src/test/ui/impl-trait/in-trait/issue-102571.rs
Normal file
24
src/test/ui/impl-trait/in-trait/issue-102571.rs
Normal file
@ -0,0 +1,24 @@
|
||||
#![feature(return_position_impl_trait_in_trait)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
use std::fmt::Display;
|
||||
use std::ops::Deref;
|
||||
|
||||
trait Foo {
|
||||
fn bar(self) -> impl Deref<Target = impl Display + ?Sized>;
|
||||
}
|
||||
|
||||
struct A;
|
||||
|
||||
impl Foo for A {
|
||||
fn bar(self) -> &'static str {
|
||||
"Hello, world"
|
||||
}
|
||||
}
|
||||
|
||||
fn foo<T: Foo>(t: T) {
|
||||
let () = t.bar();
|
||||
//~^ ERROR mismatched types
|
||||
}
|
||||
|
||||
fn main() {}
|
14
src/test/ui/impl-trait/in-trait/issue-102571.stderr
Normal file
14
src/test/ui/impl-trait/in-trait/issue-102571.stderr
Normal file
@ -0,0 +1,14 @@
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-102571.rs:20:9
|
||||
|
|
||||
LL | let () = t.bar();
|
||||
| ^^ ------- this expression has type `impl Deref<Target = impl std::fmt::Display + ?Sized>`
|
||||
| |
|
||||
| expected associated type, found `()`
|
||||
|
|
||||
= note: expected associated type `impl Deref<Target = impl std::fmt::Display + ?Sized>`
|
||||
found unit type `()`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
Loading…
Reference in New Issue
Block a user