From: Florian Hahn Date: Fri, 15 Jan 2016 21:44:53 +0000 (+0100) Subject: [MIR] use mir::repr::Constant in ExprKind::Repeat, close #29789 X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=c78609134c7cef5a616943e5ec79cfc0ce946140;p=rust.git [MIR] use mir::repr::Constant in ExprKind::Repeat, close #29789 --- diff --git a/src/librustc_mir/build/expr/as_rvalue.rs b/src/librustc_mir/build/expr/as_rvalue.rs index 2f57dd22454..c389e8e7330 100644 --- a/src/librustc_mir/build/expr/as_rvalue.rs +++ b/src/librustc_mir/build/expr/as_rvalue.rs @@ -44,7 +44,6 @@ fn expr_as_rvalue(&mut self, } ExprKind::Repeat { value, count } => { let value_operand = unpack!(block = this.as_operand(block, value)); - let count = this.as_constant(count); block.and(Rvalue::Repeat(value_operand, count)) } ExprKind::Borrow { region, borrow_kind, arg } => { diff --git a/src/librustc_mir/hair/cx/expr.rs b/src/librustc_mir/hair/cx/expr.rs index 57a43c3a180..121b9c70ec3 100644 --- a/src/librustc_mir/hair/cx/expr.rs +++ b/src/librustc_mir/hair/cx/expr.rs @@ -325,14 +325,11 @@ fn make_mirror<'a>(self, cx: &mut Cx<'a, 'tcx>) -> Expr<'tcx> { hir::ExprRepeat(ref v, ref c) => ExprKind::Repeat { value: v.to_ref(), - count: Expr { + count: Constant { ty: cx.tcx.expr_ty(c), - temp_lifetime: None, span: c.span, - kind: ExprKind::Literal { - literal: cx.const_eval_literal(c) - } - }.to_ref() + literal: cx.const_eval_literal(c) + } }, hir::ExprRet(ref v) => ExprKind::Return { value: v.to_ref() }, diff --git a/src/librustc_mir/hair/mod.rs b/src/librustc_mir/hair/mod.rs index fb81cc7e6d9..0c673b4a644 100644 --- a/src/librustc_mir/hair/mod.rs +++ b/src/librustc_mir/hair/mod.rs @@ -14,7 +14,7 @@ //! unit-tested and separated from the Rust source and compiler data //! structures. -use rustc::mir::repr::{BinOp, BorrowKind, Field, Literal, Mutability, UnOp, ItemKind}; +use rustc::mir::repr::{Constant, BinOp, BorrowKind, Field, Literal, Mutability, UnOp, ItemKind}; use rustc::middle::const_eval::ConstVal; use rustc::middle::def_id::DefId; use rustc::middle::region::CodeExtent; @@ -213,10 +213,7 @@ pub enum ExprKind<'tcx> { }, Repeat { value: ExprRef<'tcx>, - // FIXME(#29789): Add a separate hair::Constant<'tcx> so this could be more explicit about - // its contained data. Currently this should only contain expression of ExprKind::Literal - // kind. - count: ExprRef<'tcx>, + count: Constant<'tcx>, }, Vec { fields: Vec>, @@ -341,7 +338,6 @@ pub struct FieldPattern<'tcx> { pub field: Field, pub pattern: Pattern<'tcx>, } - /////////////////////////////////////////////////////////////////////////// // The Mirror trait