]> git.lizzy.rs Git - rust.git/commitdiff
turn expect_full_def_from_use into an iterator
authorQuietMisdreavus <grey@quietmisdreavus.net>
Fri, 15 Jun 2018 19:47:07 +0000 (14:47 -0500)
committerQuietMisdreavus <grey@quietmisdreavus.net>
Fri, 15 Jun 2018 19:47:07 +0000 (14:47 -0500)
src/librustc/hir/lowering.rs

index 261473a446c9e5455d5328c60cc22e8a1583cf5c..f31af7785a55bb4678acfcb778f3bf6b9259111d 100644 (file)
@@ -574,19 +574,13 @@ fn expect_full_def(&mut self, id: NodeId) -> Def {
         })
     }
 
-    fn expect_full_def_from_use(&mut self, id: NodeId) -> Vec<Def> {
-        let mut ret = self.resolver.get_import(id).present_items().map(|pr| {
+    fn expect_full_def_from_use(&mut self, id: NodeId) -> impl Iterator<Item=Def> {
+        self.resolver.get_import(id).present_items().map(|pr| {
             if pr.unresolved_segments() != 0 {
                 bug!("path not fully resolved: {:?}", pr);
             }
             pr.base_def()
-        }).collect::<Vec<_>>();
-
-        if ret.is_empty() {
-            ret.push(Def::Err);
-        }
-
-        ret
+        })
     }
 
     fn diagnostic(&self) -> &errors::Handler {
@@ -2407,7 +2401,7 @@ fn lower_use_tree(
                 }
 
                 let parent_def_index = self.current_hir_id_owner.last().unwrap().0;
-                let mut defs = self.expect_full_def_from_use(id).into_iter();
+                let mut defs = self.expect_full_def_from_use(id);
                 // we want to return *something* from this function, so hang onto the first item
                 // for later
                 let mut ret_def = defs.next().unwrap_or(Def::Err);
@@ -2746,7 +2740,6 @@ fn lower_item_id_use_tree(&mut self,
             UseTreeKind::Glob => {}
             UseTreeKind::Simple(_, id1, id2) => {
                 for (_, &id) in self.expect_full_def_from_use(base_id)
-                                    .into_iter()
                                     .skip(1)
                                     .zip([id1, id2].iter())
                 {