Skip to content

Commit 2cd1318

Browse files
committed
build fixes
1 parent cb563a9 commit 2cd1318

File tree

1 file changed

+30
-30
lines changed
  • src/librustc/infer/error_reporting

1 file changed

+30
-30
lines changed

src/librustc/infer/error_reporting/util.rs

+30-30
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,27 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
120120
if let ty::ReFree(ref free_region) = *region {
121121
if let ty::BrAnon(..) = free_region.bound_region {
122122
let anonymous_region_binding_scope = free_region.scope;
123+
let node_id = self.tcx
124+
.hir
125+
.as_local_node_id(anonymous_region_binding_scope)
126+
.unwrap();
127+
let mut is_impl_item = false;
128+
match self.tcx.hir.find(node_id) {
129+
130+
Some(hir_map::NodeItem(..)) |
131+
Some(hir_map::NodeTraitItem(..)) => {
132+
// Success -- proceed to return Some below
133+
}
134+
Some(hir_map::NodeImplItem(..)) => {
135+
is_impl_item =
136+
self.is_bound_region_in_impl_item(anonymous_region_binding_scope);
137+
}
138+
_ => return None,
139+
}
123140
return Some(FreeRegionInfo {
124141
def_id: anonymous_region_binding_scope,
125142
boundregion: free_region.bound_region,
126-
is_impl_item:
127-
self.is_bound_region_in_impl_item(anonymous_region_binding_scope),
143+
is_impl_item: is_impl_item,
128144
});
129145
}
130146
}
@@ -162,34 +178,18 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
162178

163179
// Here we check if the bound region is in Impl Item.
164180
pub fn is_bound_region_in_impl_item(&self, anonymous_region_binding_scope: DefId) -> bool {
165-
let node_id = self.tcx
166-
.hir
167-
.as_local_node_id(anonymous_region_binding_scope)
168-
.unwrap();
169-
match self.tcx.hir.find(node_id) {
170-
171-
Some(hir_map::NodeItem(..)) |
172-
Some(hir_map::NodeTraitItem(..)) => {
173-
// Success -- proceed to return Some below
174-
}
175-
Some(hir_map::NodeImplItem(..)) => {
176-
let container_id = self.tcx
177-
.associated_item(anonymous_region_binding_scope)
178-
.container
179-
.id();
180-
if self.tcx.impl_trait_ref(container_id).is_some() {
181-
// For now, we do not try to target impls of traits. This is
182-
// because this message is going to suggest that the user
183-
// change the fn signature, but they may not be free to do so,
184-
// since the signature must match the trait.
185-
//
186-
// FIXME(#42706) -- in some cases, we could do better here.
187-
return true;
188-
}
189-
}
190-
_ => {
191-
return false;
192-
}
181+
let container_id = self.tcx
182+
.associated_item(anonymous_region_binding_scope)
183+
.container
184+
.id();
185+
if self.tcx.impl_trait_ref(container_id).is_some() {
186+
// For now, we do not try to target impls of traits. This is
187+
// because this message is going to suggest that the user
188+
// change the fn signature, but they may not be free to do so,
189+
// since the signature must match the trait.
190+
//
191+
// FIXME(#42706) -- in some cases, we could do better here.
192+
return true;
193193
}
194194
false
195195
}

0 commit comments

Comments
 (0)