about summary refs log tree commit diff
path: root/src/librustc/middle
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2017-08-04 11:25:13 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2017-09-11 08:41:15 +0300
commit932289c12d26803daf6b1990cb56bb974979bf9c (patch)
tree109e458382f70b300ed9210b10d2f6a5d9c7c41f /src/librustc/middle
parent50076b00c2790a7941772cc97ee371e15b2cb776 (diff)
downloadrust-932289c12d26803daf6b1990cb56bb974979bf9c.tar.gz
rust-932289c12d26803daf6b1990cb56bb974979bf9c.zip
rustc: introduce ty::Const { ConstVal, Ty }.
Diffstat (limited to 'src/librustc/middle')
-rw-r--r--src/librustc/middle/const_val.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/librustc/middle/const_val.rs b/src/librustc/middle/const_val.rs
index 8eac44966bb..01f050a1bd9 100644
--- a/src/librustc/middle/const_val.rs
+++ b/src/librustc/middle/const_val.rs
@@ -30,12 +30,12 @@ use syntax_pos::Span;
 
 use std::borrow::Cow;
 
-pub type EvalResult<'tcx> = Result<&'tcx ConstVal<'tcx>, ConstEvalErr<'tcx>>;
+pub type EvalResult<'tcx> = Result<&'tcx ty::Const<'tcx>, ConstEvalErr<'tcx>>;
 
 #[derive(Copy, Clone, Debug, Hash, RustcEncodable, RustcDecodable, Eq, PartialEq)]
 pub enum ConstVal<'tcx> {
-    Float(ConstFloat),
     Integral(ConstInt),
+    Float(ConstFloat),
     Str(InternedString),
     ByteStr(ByteArray<'tcx>),
     Bool(bool),
@@ -45,8 +45,6 @@ pub enum ConstVal<'tcx> {
     Aggregate(ConstAggregate<'tcx>),
 }
 
-impl<'tcx> serialize::UseSpecializedDecodable for &'tcx ConstVal<'tcx> {}
-
 #[derive(Copy, Clone, Debug, Hash, RustcEncodable, Eq, PartialEq)]
 pub struct ByteArray<'tcx> {
     pub data: &'tcx [u8],
@@ -56,10 +54,10 @@ impl<'tcx> serialize::UseSpecializedDecodable for ByteArray<'tcx> {}
 
 #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)]
 pub enum ConstAggregate<'tcx> {
-    Struct(&'tcx [(ast::Name, &'tcx ConstVal<'tcx>)]),
-    Tuple(&'tcx [&'tcx ConstVal<'tcx>]),
-    Array(&'tcx [&'tcx ConstVal<'tcx>]),
-    Repeat(&'tcx ConstVal<'tcx>, u64),
+    Struct(&'tcx [(ast::Name, &'tcx ty::Const<'tcx>)]),
+    Tuple(&'tcx [&'tcx ty::Const<'tcx>]),
+    Array(&'tcx [&'tcx ty::Const<'tcx>]),
+    Repeat(&'tcx ty::Const<'tcx>, u64),
 }
 
 impl<'tcx> Encodable for ConstAggregate<'tcx> {
@@ -259,7 +257,7 @@ pub fn eval_length(tcx: TyCtxt,
     let param_env = ty::ParamEnv::empty(Reveal::UserFacing);
     let substs = Substs::identity_for_item(tcx.global_tcx(), count_def_id);
     match tcx.at(count_expr.span).const_eval(param_env.and((count_def_id, substs))) {
-        Ok(&Integral(Usize(count))) => {
+        Ok(&ty::Const { val: Integral(Usize(count)), .. }) => {
             let val = count.as_u64(tcx.sess.target.uint_type);
             assert_eq!(val as usize as u64, val);
             Ok(val as usize)