]> git.lizzy.rs Git - rust.git/commitdiff
Merge #10739
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>
Wed, 10 Nov 2021 17:27:24 +0000 (17:27 +0000)
committerGitHub <noreply@github.com>
Wed, 10 Nov 2021 17:27:24 +0000 (17:27 +0000)
10739: internal: Simplify r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
1  2 
crates/hir_ty/src/method_resolution.rs

index cdc3e039517237088abefff8d547c9c3d674d32a,eabe3acdcd50f5b7e5e4b4a72d28b702de3ee584..8e19928746cf427af14ee5c3fe55b99fe65bd7a3
@@@ -756,51 -750,13 +762,51 @@@ fn iterate_inherent_methods
          None => return ControlFlow::Continue(()),
      };
  
 +    if let Some(module_id) = visible_from_module {
 +        if let Some(block_id) = module_id.containing_block() {
 +            if let Some(impls) = db.inherent_impls_in_block(block_id) {
 +                impls_for_self_ty(
 +                    &impls,
 +                    self_ty,
 +                    db,
 +                    env.clone(),
 +                    name,
 +                    receiver_ty,
 +                    visible_from_module,
 +                    callback,
 +                )?;
 +            }
 +        }
 +    }
 +
      for krate in def_crates {
          let impls = db.inherent_impls_in_crate(krate);
 +        impls_for_self_ty(
 +            &impls,
 +            self_ty,
 +            db,
 +            env.clone(),
 +            name,
 +            receiver_ty,
 +            visible_from_module,
 +            callback,
 +        )?;
 +    }
 +    return ControlFlow::Continue(());
  
 -        let impls_for_self_ty = filter_inherent_impls_for_self_ty(&impls, &self_ty.value);
 -
 +    fn impls_for_self_ty(
 +        impls: &InherentImpls,
 +        self_ty: &Canonical<Ty>,
 +        db: &dyn HirDatabase,
 +        env: Arc<TraitEnvironment>,
 +        name: Option<&Name>,
 +        receiver_ty: Option<&Canonical<Ty>>,
 +        visible_from_module: Option<ModuleId>,
 +        callback: &mut dyn FnMut(&Canonical<Ty>, AssocItemId) -> ControlFlow<()>,
 +    ) -> ControlFlow<()> {
 +        let impls_for_self_ty = filter_inherent_impls_for_self_ty(impls, &self_ty.value);
          for &impl_def in impls_for_self_ty {
-             for &item in db.impl_data(impl_def).items.iter() {
+             for &item in &db.impl_data(impl_def).items {
                  if !is_valid_candidate(
                      db,
                      env.clone(),