fix #104513, Use node_ty_opt to avoid ICE in visit_ty

This commit is contained in:
yukang 2022-11-17 20:27:28 +08:00
parent bebd57a960
commit ecea94e6a4
3 changed files with 30 additions and 3 deletions

View file

@ -363,9 +363,12 @@ impl<'cx, 'tcx> Visitor<'tcx> for WritebackCx<'cx, 'tcx> {
fn visit_ty(&mut self, hir_ty: &'tcx hir::Ty<'tcx>) {
intravisit::walk_ty(self, hir_ty);
let ty = self.fcx.node_ty(hir_ty.hir_id);
let ty = self.resolve(ty, &hir_ty.span);
self.write_ty_to_typeck_results(hir_ty.hir_id, ty);
// If there are type checking errors, Type privacy pass will stop,
// so we may not get the type from hid_id, see #104513
if let Some(ty) = self.fcx.node_ty_opt(hir_ty.hir_id) {
let ty = self.resolve(ty, &hir_ty.span);
self.write_ty_to_typeck_results(hir_ty.hir_id, ty);
}
}
fn visit_infer(&mut self, inf: &'tcx hir::InferArg) {