From b69b3d041ad7b8679bdc9c32afccfd961a7d28d2 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 16 Mar 2022 11:53:31 -0700 Subject: [PATCH] erase late-bound regions in dyn projection types for debuginfo --- compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs | 3 ++- src/test/ui/debuginfo/late-bound-projection.rs | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/debuginfo/late-bound-projection.rs diff --git a/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs b/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs index 4b1563ca3c9..f39f260225e 100644 --- a/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs +++ b/compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs @@ -217,7 +217,8 @@ fn push_debuginfo_type_name<'tcx>( let projection_bounds: SmallVec<[_; 4]> = trait_data .projection_bounds() .map(|bound| { - let ExistentialProjection { item_def_id, term, .. } = bound.skip_binder(); + let ExistentialProjection { item_def_id, term, .. } = + tcx.erase_late_bound_regions(bound); // FIXME(associated_const_equality): allow for consts here (item_def_id, term.ty().unwrap()) }) diff --git a/src/test/ui/debuginfo/late-bound-projection.rs b/src/test/ui/debuginfo/late-bound-projection.rs new file mode 100644 index 00000000000..6018078459c --- /dev/null +++ b/src/test/ui/debuginfo/late-bound-projection.rs @@ -0,0 +1,7 @@ +// build-pass +// compile-flags: -Cdebuginfo=2 --crate-type=rlib +// Fixes issue #94998 + +pub trait Trait {} + +pub fn run(_: &dyn FnOnce(&()) -> Box) {}