Don't crash when reporting nice region errors for generic const items
This commit is contained in:
parent
617821ab32
commit
1a18158891
4 changed files with 36 additions and 17 deletions
|
@ -29,25 +29,15 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> {
|
|||
// version new_ty of its type where the anonymous region is replaced
|
||||
// with the named one.
|
||||
let (named, anon, anon_param_info, region_info) = if sub.has_name()
|
||||
&& self.tcx().is_suitable_region(sup).is_some()
|
||||
&& self.find_param_with_region(sup, sub).is_some()
|
||||
&& let Some(region_info) = self.tcx().is_suitable_region(sup)
|
||||
&& let Some(anon_param_info) = self.find_param_with_region(sup, sub)
|
||||
{
|
||||
(
|
||||
sub,
|
||||
sup,
|
||||
self.find_param_with_region(sup, sub).unwrap(),
|
||||
self.tcx().is_suitable_region(sup).unwrap(),
|
||||
)
|
||||
(sub, sup, anon_param_info, region_info)
|
||||
} else if sup.has_name()
|
||||
&& self.tcx().is_suitable_region(sub).is_some()
|
||||
&& self.find_param_with_region(sub, sup).is_some()
|
||||
&& let Some(region_info) = self.tcx().is_suitable_region(sub)
|
||||
&& let Some(anon_param_info) = self.find_param_with_region(sub, sup)
|
||||
{
|
||||
(
|
||||
sup,
|
||||
sub,
|
||||
self.find_param_with_region(sub, sup).unwrap(),
|
||||
self.tcx().is_suitable_region(sub).unwrap(),
|
||||
)
|
||||
(sup, sub, anon_param_info, region_info)
|
||||
} else {
|
||||
return None; // inapplicable
|
||||
};
|
||||
|
|
|
@ -64,7 +64,7 @@ pub fn find_param_with_region<'tcx>(
|
|||
let body_id = hir.maybe_body_owned_by(def_id)?;
|
||||
|
||||
let owner_id = hir.body_owner(body_id);
|
||||
let fn_decl = hir.fn_decl_by_hir_id(owner_id).unwrap();
|
||||
let fn_decl = hir.fn_decl_by_hir_id(owner_id)?;
|
||||
let poly_fn_sig = tcx.fn_sig(id).instantiate_identity();
|
||||
|
||||
let fn_sig = tcx.liberate_late_bound_regions(id, poly_fn_sig);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue