about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-07-23 14:48:37 +0100
committervarkor <github@varkor.com>2018-08-19 20:02:33 +0100
commit9bb40b09b78f650b75d22a869a8b1bf18937aba3 (patch)
tree15e37efe8f03191900bccf5acd4da18f91d46bc1
parent9cfe92c8ae51caa2e7d8da7d171e59844d0a7149 (diff)
downloadrust-9bb40b09b78f650b75d22a869a8b1bf18937aba3.tar.gz
rust-9bb40b09b78f650b75d22a869a8b1bf18937aba3.zip
Make prohibit_generics take IntoIterators
-rw-r--r--src/librustc_typeck/astconv.rs2
-rw-r--r--src/librustc_typeck/check/mod.rs20
2 files changed, 8 insertions, 14 deletions
diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs
index 18bd00d43d6..772ec39d8f0 100644
--- a/src/librustc_typeck/astconv.rs
+++ b/src/librustc_typeck/astconv.rs
@@ -988,7 +988,7 @@ impl<'o, 'gcx: 'tcx, 'tcx> dyn AstConv<'gcx, 'tcx>+'o {
         self.normalize_ty(span, tcx.mk_projection(item_def_id, trait_ref.substs))
     }
 
-    pub fn prohibit_generics(&self, segments: &[hir::PathSegment]) {
+    pub fn prohibit_generics<'a, T: IntoIterator<Item = &'a hir::PathSegment>>(&self, segments: T) {
         for segment in segments {
             segment.with_generic_args(|generic_args| {
                 let (mut err_for_lt, mut err_for_ty) = (false, false);
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs
index 66f5e57ef6d..c1bf6b0fe31 100644
--- a/src/librustc_typeck/check/mod.rs
+++ b/src/librustc_typeck/check/mod.rs
@@ -4913,19 +4913,13 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
         for PathSeg(_, index) in &path_segs {
             generic_segs.insert(index);
         }
-        let segs: Vec<_> = segments
-            .iter()
-            .enumerate()
-            .filter_map(|(index, seg)| {
-                if !generic_segs.contains(&index) {
-                    Some(seg)
-                } else {
-                    None
-                }
-            })
-            .cloned()
-            .collect();
-        AstConv::prohibit_generics(self, &segs);
+        AstConv::prohibit_generics(self, segments.iter().enumerate().filter_map(|(index, seg)| {
+            if !generic_segs.contains(&index) {
+                Some(seg)
+            } else {
+                None
+            }
+        }));
 
         match def {
             Def::Local(nid) | Def::Upvar(nid, ..) => {