]> git.lizzy.rs Git - rust.git/commitdiff
build fixes
authorgaurikholkar <f2013002@goa.bits-pilani.ac.in>
Wed, 23 Aug 2017 21:04:05 +0000 (02:34 +0530)
committergaurikholkar <f2013002@goa.bits-pilani.ac.in>
Wed, 23 Aug 2017 21:04:05 +0000 (02:34 +0530)
src/librustc/infer/error_reporting/util.rs

index 635d0e8eb275f29f8eb41ee3416a99b89bbe6be0..f9ff2d2e2a5a2a32718936da1355068e42e890d9 100644 (file)
@@ -120,11 +120,27 @@ pub fn is_suitable_anonymous_region(&self, region: Region<'tcx>) -> Option<FreeR
         if let ty::ReFree(ref free_region) = *region {
             if let ty::BrAnon(..) = free_region.bound_region {
                 let anonymous_region_binding_scope = free_region.scope;
+                let node_id = self.tcx
+                    .hir
+                    .as_local_node_id(anonymous_region_binding_scope)
+                    .unwrap();
+                let mut is_impl_item = false;
+                match self.tcx.hir.find(node_id) {
+
+                    Some(hir_map::NodeItem(..)) |
+                    Some(hir_map::NodeTraitItem(..)) => {
+                        // Success -- proceed to return Some below
+                    }
+                    Some(hir_map::NodeImplItem(..)) => {
+                        is_impl_item =
+                            self.is_bound_region_in_impl_item(anonymous_region_binding_scope);
+                    }
+                    _ => return None,
+                }
                 return Some(FreeRegionInfo {
                                 def_id: anonymous_region_binding_scope,
                                 boundregion: free_region.bound_region,
-                                is_impl_item:
-                                self.is_bound_region_in_impl_item(anonymous_region_binding_scope),
+                                is_impl_item: is_impl_item,
                             });
             }
         }
@@ -162,34 +178,18 @@ pub fn is_self_anon(&self, is_first: bool, scope_def_id: DefId) -> bool {
 
     // Here we check if the bound region is in Impl Item.
     pub fn is_bound_region_in_impl_item(&self, anonymous_region_binding_scope: DefId) -> bool {
-        let node_id = self.tcx
-            .hir
-            .as_local_node_id(anonymous_region_binding_scope)
-            .unwrap();
-        match self.tcx.hir.find(node_id) {
-
-            Some(hir_map::NodeItem(..)) |
-            Some(hir_map::NodeTraitItem(..)) => {
-                // Success -- proceed to return Some below
-            }
-            Some(hir_map::NodeImplItem(..)) => {
-                let container_id = self.tcx
-                    .associated_item(anonymous_region_binding_scope)
-                    .container
-                    .id();
-                if self.tcx.impl_trait_ref(container_id).is_some() {
-                    // For now, we do not try to target impls of traits. This is
-                    // because this message is going to suggest that the user
-                    // change the fn signature, but they may not be free to do so,
-                    // since the signature must match the trait.
-                    //
-                    // FIXME(#42706) -- in some cases, we could do better here.
-                    return true;
-                }
-            }
-            _ => {
-                return false;
-            }
+        let container_id = self.tcx
+            .associated_item(anonymous_region_binding_scope)
+            .container
+            .id();
+        if self.tcx.impl_trait_ref(container_id).is_some() {
+            // For now, we do not try to target impls of traits. This is
+            // because this message is going to suggest that the user
+            // change the fn signature, but they may not be free to do so,
+            // since the signature must match the trait.
+            //
+            // FIXME(#42706) -- in some cases, we could do better here.
+            return true;
         }
         false
     }