about summary refs log tree commit diff
path: root/compiler/rustc_mir/src/transform/validate.rs
diff options
context:
space:
mode:
authorBastian Kauschke <bastian_kauschke@hotmail.de>2020-11-06 19:21:17 +0100
committerBastian Kauschke <bastian_kauschke@hotmail.de>2020-11-06 22:37:16 +0100
commite06785b676bb639fef071feca302432c61fbddcc (patch)
treeb6a3fcd68aaa04a10f384b7cdba65c2b5b7694ec /compiler/rustc_mir/src/transform/validate.rs
parentcc19df627ea87e199163e0e487a251976ea7897e (diff)
downloadrust-e06785b676bb639fef071feca302432c61fbddcc.tar.gz
rust-e06785b676bb639fef071feca302432c61fbddcc.zip
improve fixme
Diffstat (limited to 'compiler/rustc_mir/src/transform/validate.rs')
-rw-r--r--compiler/rustc_mir/src/transform/validate.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/rustc_mir/src/transform/validate.rs b/compiler/rustc_mir/src/transform/validate.rs
index c9905b34a12..e1e6e71acb5 100644
--- a/compiler/rustc_mir/src/transform/validate.rs
+++ b/compiler/rustc_mir/src/transform/validate.rs
@@ -85,9 +85,12 @@ pub fn equal_up_to_regions(
             param_env,
             ty.fold_with(&mut BottomUpFolder {
                 tcx,
-                // We just erase all late-bound lifetimes, but this is not fully correct (FIXME):
-                // lifetimes in invariant positions could matter (e.g. through associated types).
-                // We rely on the fact that layout was confirmed to be equal above.
+                // FIXME: We erase all late-bound lifetimes, but this is not fully correct.
+                // If you have a type like `<for<'a> fn(&'a u32) as SomeTrait>::Assoc`,
+                // this is not necessarily equivalent to `<fn(&'static u32) as SomeTrait>::Assoc`,
+                // since one may have an `impl SomeTrait for fn(&32)` and
+                // `impl SomeTrait for fn(&'static u32)` at the same time which
+                // specify distinct values for Assoc. (See also #56105)
                 lt_op: |_| tcx.lifetimes.re_erased,
                 // Leave consts and types unchanged.
                 ct_op: |ct| ct,