handle the case when container is not impl
This commit is contained in:
parent
bcf0e2f528
commit
c6d0a20f7b
@ -16,12 +16,10 @@ pub enum AssocItemContainer {
|
||||
}
|
||||
|
||||
impl AssocItemContainer {
|
||||
/// Asserts that this is the `DefId` of an associated item declared
|
||||
/// in an impl, and returns the trait `DefId`.
|
||||
pub fn assert_impl(&self) -> DefId {
|
||||
pub fn impl_def_id(&self) -> Option<DefId> {
|
||||
match *self {
|
||||
ImplContainer(id) => id,
|
||||
_ => bug!("associated item has wrong container type: {:?}", self),
|
||||
ImplContainer(id) => Some(id),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1293,7 +1293,12 @@ pub fn check_type_bounds<'tcx>(
|
||||
|
||||
tcx.infer_ctxt().enter(move |infcx| {
|
||||
// if the item is inside a const impl, we transform the predicates to be const.
|
||||
let constness = tcx.impl_constness(impl_ty.container.assert_impl());
|
||||
let constness = impl_ty
|
||||
.container
|
||||
.impl_def_id()
|
||||
.map(|did| tcx.impl_constness(did))
|
||||
.unwrap_or(hir::Constness::NotConst);
|
||||
|
||||
let pred_map = match constness {
|
||||
hir::Constness::NotConst => |p, _| p,
|
||||
hir::Constness::Const => |p: ty::Predicate<'tcx>, tcx: TyCtxt<'tcx>| {
|
||||
|
Loading…
Reference in New Issue
Block a user