Fix rustc_hidden_type_of_opaques for RPITITs with no default body
This commit is contained in:
parent
7b31983d55
commit
009feeb83e
3 changed files with 32 additions and 0 deletions
|
@ -11,6 +11,15 @@ pub(crate) fn opaque_hidden_types(tcx: TyCtxt<'_>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for id in tcx.hir_crate_items(()).opaques() {
|
for id in tcx.hir_crate_items(()).opaques() {
|
||||||
|
if let hir::OpaqueTyOrigin::FnReturn { parent: fn_def_id, .. }
|
||||||
|
| hir::OpaqueTyOrigin::AsyncFn { parent: fn_def_id, .. } =
|
||||||
|
tcx.hir().expect_opaque_ty(id).origin
|
||||||
|
&& let hir::Node::TraitItem(trait_item) = tcx.hir_node_by_def_id(fn_def_id)
|
||||||
|
&& let (_, hir::TraitFn::Required(..)) = trait_item.expect_fn()
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let ty = tcx.type_of(id).instantiate_identity();
|
let ty = tcx.type_of(id).instantiate_identity();
|
||||||
let span = tcx.def_span(id);
|
let span = tcx.def_span(id);
|
||||||
tcx.dcx().emit_err(crate::errors::TypeOf { span, ty });
|
tcx.dcx().emit_err(crate::errors::TypeOf { span, ty });
|
||||||
|
|
15
tests/ui/impl-trait/in-trait/dump.rs
Normal file
15
tests/ui/impl-trait/in-trait/dump.rs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
//@ compile-flags: -Zverbose-internals
|
||||||
|
|
||||||
|
#![feature(precise_capturing_in_traits, rustc_attrs)]
|
||||||
|
#![rustc_hidden_type_of_opaques]
|
||||||
|
|
||||||
|
trait Foo {
|
||||||
|
fn hello(&self) -> impl Sized;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn hello<'s, T: Foo>(x: &'s T) -> impl Sized + use<'s, T> {
|
||||||
|
//~^ ERROR <T as Foo>::{synthetic#0}<'s/#1>
|
||||||
|
x.hello()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
8
tests/ui/impl-trait/in-trait/dump.stderr
Normal file
8
tests/ui/impl-trait/in-trait/dump.stderr
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
error: <T as Foo>::{synthetic#0}<'s/#1>
|
||||||
|
--> $DIR/dump.rs:10:35
|
||||||
|
|
|
||||||
|
LL | fn hello<'s, T: Foo>(x: &'s T) -> impl Sized + use<'s, T> {
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue