Fix doubleborrow of refcell in consts.rs

This commit is contained in:
Manish Goregaokar 2015-08-22 13:01:54 +05:30
parent f7fb696fee
commit 1334f2ceae

View file

@ -330,8 +330,13 @@ impl<'c, 'cc> ConstEvalContext<'c, 'cc> {
/// lookup a possibly constant expression from a ExprPath
fn fetch_path(&mut self, e: &Expr) -> Option<Constant> {
if let Some(lcx) = self.lcx {
let mut maybe_id = None;
if let Some(&PathResolution { base_def: DefConst(id), ..}) =
lcx.tcx.def_map.borrow().get(&e.id) {
maybe_id = Some(id);
}
// separate if lets to avoid doubleborrowing the defmap
if let Some(id) = maybe_id {
if let Some(const_expr) = lookup_const_by_id(lcx.tcx, id, None) {
let ret = self.expr(const_expr);
if ret.is_some() {