diff options
| author | Michael Goulet <michael@errs.io> | 2022-07-26 07:36:23 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-07-26 07:46:30 +0000 |
| commit | 82ad5c95b6cdfc404ca07cd5cf791b809c390671 (patch) | |
| tree | 2d9ce61dcfa8cc48bf314ba8806d2e6a3e21044e /compiler/rustc_borrowck/src | |
| parent | b629c85bd74dfb730a3e9308312b007c0bf027cb (diff) | |
Revert "use opaque_ty_origin_unchecked instead of destructuring HIR"
This reverts commit 5a4601fea56502e4f50df046c4205e678397599b.
Diffstat (limited to 'compiler/rustc_borrowck/src')
| -rw-r--r-- | compiler/rustc_borrowck/src/type_check/mod.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/compiler/rustc_borrowck/src/type_check/mod.rs b/compiler/rustc_borrowck/src/type_check/mod.rs index eb9df281e7d..1db1ec4a7bf 100644 --- a/compiler/rustc_borrowck/src/type_check/mod.rs +++ b/compiler/rustc_borrowck/src/type_check/mod.rs @@ -227,9 +227,17 @@ pub(crate) fn type_check<'mir, 'tcx>( let mut hidden_type = infcx.resolve_vars_if_possible(decl.hidden_type); // Check that RPITs are only constrained in their outermost // function, otherwise report a mismatched types error. - if let OpaqueTyOrigin::FnReturn(parent) | OpaqueTyOrigin::AsyncFn(parent) - = infcx.opaque_ty_origin_unchecked(opaque_type_key.def_id, hidden_type.span) - && parent.to_def_id() != body.source.def_id() + if let hir::Node::Item(hir::Item { + kind: + hir::ItemKind::OpaqueTy(hir::OpaqueTy { + origin: + hir::OpaqueTyOrigin::AsyncFn(parent) + | hir::OpaqueTyOrigin::FnReturn(parent), + .. + }), + .. + }) = infcx.tcx.hir().get_by_def_id(opaque_type_key.def_id.expect_local()) && + parent.to_def_id() != body.source.def_id() { infcx .report_mismatched_types( @@ -239,7 +247,7 @@ pub(crate) fn type_check<'mir, 'tcx>( body.source.def_id().expect_local(), ), ), - infcx.tcx.mk_opaque(opaque_type_key.def_id.to_def_id(), opaque_type_key.substs), + infcx.tcx.mk_opaque(opaque_type_key.def_id, opaque_type_key.substs), hidden_type.ty, ty::error::TypeError::Mismatch, ) |
