Skip to content

Commit 0916616

Browse files
committed
drop_tracking_mir: diagnose recursive generator.
1 parent 0fbfc3e commit 0916616

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

compiler/rustc_hir_analysis/src/check/check.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,14 @@ fn opaque_type_cycle_error(
15111511
{
15121512
label_match(interior_ty.ty, interior_ty.span);
15131513
}
1514+
if tcx.sess.opts.unstable_opts.drop_tracking_mir
1515+
&& let DefKind::Generator = tcx.def_kind(closure_def_id)
1516+
{
1517+
let generator_layout = tcx.mir_generator_witnesses(closure_def_id);
1518+
for interior_ty in &generator_layout.field_tys {
1519+
label_match(interior_ty.ty, interior_ty.source_info.span);
1520+
}
1521+
}
15141522
}
15151523
}
15161524
}

tests/ui/impl-trait/recursive-impl-trait-type-indirect.drop_tracking_mir.stderr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ error[E0720]: cannot resolve opaque type
114114
|
115115
LL | fn generator_hold() -> impl Sized {
116116
| ^^^^^^^^^^ recursive opaque type
117+
...
118+
LL | let x = generator_hold();
119+
| - generator captures itself here
117120

118121
error[E0720]: cannot resolve opaque type
119122
--> $DIR/recursive-impl-trait-type-indirect.rs:90:26

0 commit comments

Comments
 (0)