Wrap more into into closure_typeinfo query.
This commit is contained in:
@@ -6,7 +6,7 @@ use rustc_errors::{
|
||||
struct_span_err, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed, MultiSpan,
|
||||
};
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::Res;
|
||||
use rustc_hir::def::{DefKind, Res};
|
||||
use rustc_hir::intravisit::{walk_block, walk_expr, Visitor};
|
||||
use rustc_hir::{AsyncGeneratorKind, GeneratorKind, LangItem};
|
||||
use rustc_infer::infer::TyCtxtInferExt;
|
||||
@@ -236,10 +236,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
||||
let ty = used_place.ty(self.body, self.infcx.tcx).ty;
|
||||
let needs_note = match ty.kind() {
|
||||
ty::Closure(id, _) => {
|
||||
let tables = self.infcx.tcx.typeck(id.expect_local());
|
||||
let hir_id = self.infcx.tcx.hir().local_def_id_to_hir_id(id.expect_local());
|
||||
|
||||
tables.closure_kind_origins().get(hir_id).is_none()
|
||||
self.infcx.tcx.closure_kind_origin(id.expect_local()).is_none()
|
||||
}
|
||||
_ => true,
|
||||
};
|
||||
@@ -1670,7 +1667,6 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
||||
format!("`{}` would have to be valid for `{}`...", name, region_name),
|
||||
);
|
||||
|
||||
let fn_hir_id = self.mir_hir_id();
|
||||
err.span_label(
|
||||
drop_span,
|
||||
format!(
|
||||
@@ -1678,19 +1674,12 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
||||
name,
|
||||
self.infcx
|
||||
.tcx
|
||||
.hir()
|
||||
.opt_name(fn_hir_id)
|
||||
.opt_item_name(self.mir_def_id().to_def_id())
|
||||
.map(|name| format!("function `{}`", name))
|
||||
.unwrap_or_else(|| {
|
||||
match &self
|
||||
.infcx
|
||||
.tcx
|
||||
.typeck(self.mir_def_id())
|
||||
.node_type(fn_hir_id)
|
||||
.kind()
|
||||
{
|
||||
ty::Closure(..) => "enclosing closure",
|
||||
ty::Generator(..) => "enclosing generator",
|
||||
match &self.infcx.tcx.def_kind(self.mir_def_id()) {
|
||||
DefKind::Closure => "enclosing closure",
|
||||
DefKind::Generator => "enclosing generator",
|
||||
kind => bug!("expected closure or generator, found {:?}", kind),
|
||||
}
|
||||
.to_string()
|
||||
|
||||
Reference in New Issue
Block a user