diff options
| -rw-r--r-- | src/librustc/infer/canonical/canonicalizer.rs | 12 | ||||
| -rw-r--r-- | src/librustc/infer/canonical/mod.rs | 13 |
2 files changed, 21 insertions, 4 deletions
diff --git a/src/librustc/infer/canonical/canonicalizer.rs b/src/librustc/infer/canonical/canonicalizer.rs index 22e5767df33..95310996c18 100644 --- a/src/librustc/infer/canonical/canonicalizer.rs +++ b/src/librustc/infer/canonical/canonicalizer.rs @@ -454,9 +454,9 @@ impl<'cx, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for Canonicalizer<'cx, 'gcx, 'tcx> } return self.canonicalize_const_var( CanonicalVarInfo { - kind: CanonicalVarKind::Const(ui) + kind: CanonicalVarKind::Const(ui), }, - c + c, ); } } @@ -471,6 +471,14 @@ impl<'cx, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for Canonicalizer<'cx, 'gcx, 'tcx> return c; } } + ConstValue::Placeholder(placeholder) => { + return self.canonicalize_const_var( + CanonicalVarInfo { + kind: CanonicalVarKind::PlaceholderConst(placeholder), + }, + c, + ); + } _ => {} } } diff --git a/src/librustc/infer/canonical/mod.rs b/src/librustc/infer/canonical/mod.rs index 9fad1f47f13..a5694818b98 100644 --- a/src/librustc/infer/canonical/mod.rs +++ b/src/librustc/infer/canonical/mod.rs @@ -414,8 +414,17 @@ impl<'cx, 'gcx, 'tcx> InferCtxt<'cx, 'gcx, 'tcx> { CanonicalVarKind::PlaceholderConst( ty::PlaceholderConst { universe, name }, ) => { - let _ = (universe, name); - unimplemented!() // FIXME(const_generics) + let universe_mapped = universe_map(universe); + let placeholder_mapped = ty::PlaceholderConst { + universe: universe_mapped, + name, + }; + self.tcx.mk_lazy_const(ty::LazyConst::Evaluated( + ty::Const { + val: ConstValue::Placeholder(placeholder_mapped), + ty: self.tcx.types.err, // FIXME(const_generics) + } + )).into() } } } |
