diff options
| author | Michael Goulet <michael@errs.io> | 2022-03-16 11:53:31 -0700 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-03-16 11:56:29 -0700 |
| commit | b69b3d041ad7b8679bdc9c32afccfd961a7d28d2 (patch) | |
| tree | 3172cb5d2cc4c76787d5911589dc242ff3ed6471 | |
| parent | 461e8078010433ff7de2db2aaae8a3cfb0847215 (diff) | |
| download | rust-b69b3d041ad7b8679bdc9c32afccfd961a7d28d2.tar.gz rust-b69b3d041ad7b8679bdc9c32afccfd961a7d28d2.zip | |
erase late-bound regions in dyn projection types for debuginfo
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/debuginfo/late-bound-projection.rs | 7 |
2 files changed, 9 insertions, 1 deletions
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<dyn Trait + '_>) {} |
