diff --git a/src/consts.rs b/src/consts.rs index 07bde1d0b080..c069539a0774 100644 --- a/src/consts.rs +++ b/src/consts.rs @@ -300,8 +300,8 @@ impl<'c, 'cc> ConstEvalContext<'c, 'cc> { ExprIf(ref cond, ref then, ref otherwise) => self.ifthenelse(&*cond, &*then, &*otherwise), ExprLit(ref lit) => Some(lit_to_constant(&lit.node)), - ExprVec(ref vec) => self.vec(&vec), - ExprTup(ref tup) => self.tup(&tup), + ExprVec(ref vec) => self.multi(vec).map(ConstantVec), + ExprTup(ref tup) => self.multi(tup).map(ConstantTuple), ExprRepeat(ref value, ref number) => self.binop_apply(value, number, |v, n| Some(ConstantRepeat(Box::new(v), n.as_u64() as usize))), @@ -318,18 +318,12 @@ impl<'c, 'cc> ConstEvalContext<'c, 'cc> { } } - /// create `Some(ConstantVec(..))` of all constants, unless there is any + /// create `Some(Vec![..])` of all constants, unless there is any /// non-constant part - fn vec + Sized>(&mut self, vec: &[E]) -> Option { + fn multi + Sized>(&mut self, vec: &[E]) -> + Option> { vec.iter().map(|elem| self.expr(elem)) .collect::>() - .map(ConstantVec) - } - - fn tup + Sized>(&mut self, tup: &[E]) -> Option { - tup.iter().map(|elem| self.expr(elem)) - .collect::>() - .map(ConstantTuple) } /// lookup a possibly constant expression from a ExprPath