Skip to content

Commit 1c2f641

Browse files
authored
Rollup merge of #108764 - cjgillot:dpm-adapt, r=compiler-errors
Tweaks to -Zdrop-tracking-mir Split from #107421 3 commits: 1 diagnostic improvement and 2 ICEs.
2 parents b876232 + fba5d3d commit 1c2f641

File tree

4 files changed

+20
-7
lines changed

4 files changed

+20
-7
lines changed

compiler/rustc_hir_analysis/src/check/check.rs

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

compiler/rustc_mir_transform/src/generator.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -1872,12 +1872,14 @@ fn check_must_not_suspend_def(
18721872
data: SuspendCheckData<'_>,
18731873
) -> bool {
18741874
if let Some(attr) = tcx.get_attr(def_id, sym::must_not_suspend) {
1875-
let msg = format!(
1876-
"{}`{}`{} held across a suspend point, but should not be",
1877-
data.descr_pre,
1878-
tcx.def_path_str(def_id),
1879-
data.descr_post,
1880-
);
1875+
let msg = rustc_errors::DelayDm(|| {
1876+
format!(
1877+
"{}`{}`{} held across a suspend point, but should not be",
1878+
data.descr_pre,
1879+
tcx.def_path_str(def_id),
1880+
data.descr_post,
1881+
)
1882+
});
18811883
tcx.struct_span_lint_hir(
18821884
rustc_session::lint::builtin::MUST_NOT_SUSPEND,
18831885
hir_id,

compiler/rustc_trait_selection/src/solve/fulfill.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,6 @@ impl<'tcx> TraitEngine<'tcx> for FulfillmentCtxt<'tcx> {
149149
&mut self,
150150
_: &InferCtxt<'tcx>,
151151
) -> Vec<PredicateObligation<'tcx>> {
152-
unimplemented!()
152+
std::mem::take(&mut self.obligations)
153153
}
154154
}

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

+3
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)