Use normal iteration instead of walk_mut

This commit is contained in:
Edwin Cheng 2019-05-20 17:48:58 +08:00
parent d4dc879415
commit 3fc344b9f1

View file

@ -206,23 +206,20 @@ pub(super) fn substs_from_path_segment(
substs.push(Ty::Unknown); substs.push(Ty::Unknown);
} }
assert_eq!(substs.len(), def_generics.count_params_including_parent()); assert_eq!(substs.len(), def_generics.count_params_including_parent());
let mut substs = Substs(substs.into());
// handle defaults // handle defaults
if let Some(def_generic) = def_generic { if let Some(def_generic) = def_generic {
let default_substs = db.generic_defaults(def_generic); let default_substs = db.generic_defaults(def_generic);
assert_eq!(substs.len(), default_substs.len()); assert_eq!(substs.len(), default_substs.len());
let mut i = 0; for (i, default_ty) in default_substs.iter().enumerate() {
substs.walk_mut(&mut |ty| { if substs[i] == Ty::Unknown {
if *ty == Ty::Unknown { substs[i] = default_ty.clone();
*ty = default_substs[i].clone(); }
} }
i += 1;
});
} }
substs Substs(substs.into())
} }
impl TraitRef { impl TraitRef {