diff options
| author | varkor <github@varkor.com> | 2019-03-12 20:55:19 +0000 |
|---|---|---|
| committer | varkor <github@varkor.com> | 2019-05-01 23:10:57 +0100 |
| commit | 2308d2d68aa726eac33e8a5a43e70ab1b002ed1b (patch) | |
| tree | 64b674361617d73dbda60480c7c43daed87a2c34 | |
| parent | e70797b575f4806528e24f7316cbfbacb27c6cf2 (diff) | |
| download | rust-2308d2d68aa726eac33e8a5a43e70ab1b002ed1b.tar.gz rust-2308d2d68aa726eac33e8a5a43e70ab1b002ed1b.zip | |
Handle `ConstValue::Placeholder` in `canonicalizer`
| -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() } } } |
