Skip to content

Commit

Permalink
prettify some statements
Browse files Browse the repository at this point in the history
  • Loading branch information
oli-obk committed Dec 8, 2015
1 parent 8864f2c commit b853115
Showing 1 changed file with 17 additions and 23 deletions.
40 changes: 17 additions & 23 deletions src/librustc_trans/trans/consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -287,27 +287,26 @@ pub fn get_const_expr_as_global<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
-> Result<ValueRef, ConstEvalFailure> {
debug!("get_const_expr_as_global: {:?}", expr.id);
// Special-case constants to cache a common global for all uses.
match expr.node {
hir::ExprPath(..) => {
let def = ccx.tcx().def_map.borrow().get(&expr.id).unwrap().full_def();
match def {
def::DefConst(def_id) | def::DefAssociatedConst(def_id) => {
if !ccx.tcx().tables.borrow().adjustments.contains_key(&expr.id) {
debug!("get_const_expr_as_global ({:?}): found const {:?}",
expr.id, def_id);
return get_const_val(ccx, def_id, expr);
}
if let hir::ExprPath(..) = expr.node {
// `def` must be its own statement and cannot be in the `match`
// otherwise the `def_map` will be borrowed for the entire match instead
// of just to get the `def` value
let def = ccx.tcx().def_map.borrow().get(&expr.id).unwrap().full_def();
match def {
def::DefConst(def_id) | def::DefAssociatedConst(def_id) => {
if !ccx.tcx().tables.borrow().adjustments.contains_key(&expr.id) {
debug!("get_const_expr_as_global ({:?}): found const {:?}",
expr.id, def_id);
return get_const_val(ccx, def_id, expr);
}
_ => {}
}
},
_ => {},
}
_ => {}
}

let key = (expr.id, param_substs);
match ccx.const_values().borrow().get(&key) {
Some(&val) => return Ok(val),
None => {}
if let Some(&val) = ccx.const_values().borrow().get(&key) {
return Ok(val);
}
let ty = monomorphize::apply_param_substs(ccx.tcx(), param_substs,
&ccx.tcx().expr_ty(expr));
Expand All @@ -316,10 +315,7 @@ pub fn get_const_expr_as_global<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
// references, even when only the latter are correct.
try!(const_expr_unadjusted(ccx, expr, ty, param_substs, None, trueconst))
} else {
match const_expr(ccx, expr, param_substs, None, trueconst) {
Err(err) => return Err(err),
Ok((ok, _)) => ok,
}
try!(const_expr(ccx, expr, param_substs, None, trueconst)).0
};

// boolean SSA values are i1, but they have to be stored in i8 slots,
Expand Down Expand Up @@ -577,9 +573,7 @@ fn const_expr_unadjusted<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
};
let _icx = push_ctxt("const_expr");
Ok(match e.node {
hir::ExprLit(ref lit) => {
const_lit(cx, e, &**lit)
},
hir::ExprLit(ref lit) => const_lit(cx, e, &**lit),
hir::ExprBinary(b, ref e1, ref e2) => {
/* Neither type is bottom, and we expect them to be unified
* already, so the following is safe. */
Expand Down

0 comments on commit b853115

Please sign in to comment.