about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorgaurikholkar <f2013002@goa.bits-pilani.ac.in>2017-08-24 02:34:05 +0530
committergaurikholkar <f2013002@goa.bits-pilani.ac.in>2017-08-24 02:34:05 +0530
commit2cd13189ce328af88b61393cd567b6eb3db9ca2b (patch)
tree230a6e3c9898133d0a919ffb991e5566d3375521 /src
parentcb563a93dcb076f2afe97d272591d71486906fc2 (diff)
downloadrust-2cd13189ce328af88b61393cd567b6eb3db9ca2b.tar.gz
rust-2cd13189ce328af88b61393cd567b6eb3db9ca2b.zip
build fixes
Diffstat (limited to 'src')
-rw-r--r--src/librustc/infer/error_reporting/util.rs60
1 files changed, 30 insertions, 30 deletions
diff --git a/src/librustc/infer/error_reporting/util.rs b/src/librustc/infer/error_reporting/util.rs
index 635d0e8eb27..f9ff2d2e2a5 100644
--- a/src/librustc/infer/error_reporting/util.rs
+++ b/src/librustc/infer/error_reporting/util.rs
@@ -120,11 +120,27 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
         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 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
 
     // 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
     }