diff options
| author | gaurikholkar <f2013002@goa.bits-pilani.ac.in> | 2017-08-24 02:34:05 +0530 |
|---|---|---|
| committer | gaurikholkar <f2013002@goa.bits-pilani.ac.in> | 2017-08-24 02:34:05 +0530 |
| commit | 2cd13189ce328af88b61393cd567b6eb3db9ca2b (patch) | |
| tree | 230a6e3c9898133d0a919ffb991e5566d3375521 /src | |
| parent | cb563a93dcb076f2afe97d272591d71486906fc2 (diff) | |
| download | rust-2cd13189ce328af88b61393cd567b6eb3db9ca2b.tar.gz rust-2cd13189ce328af88b61393cd567b6eb3db9ca2b.zip | |
build fixes
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/infer/error_reporting/util.rs | 60 |
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 } |
