match generic_arg {
hir::GenericArg::Infer(inf) => {
self.0.push(inf.span);
+ intravisit::walk_inf(self, inf);
}
hir::GenericArg::Type(t) => self.visit_ty(t),
_ => {}
let constness = match modifier {
hir::TraitBoundModifier::MaybeConst => hir::Constness::NotConst,
hir::TraitBoundModifier::None => constness,
- hir::TraitBoundModifier::Maybe => bug!("this wasn't handled"),
+ // We ignore `where T: ?Sized`, it is already part of
+ // type parameter `T`.
+ hir::TraitBoundModifier::Maybe => continue,
};
let mut bounds = Bounds::default();
predicates.extend(bounds.predicates(tcx, ty));
}
+ hir::GenericBound::Unsized(_) => {}
+
hir::GenericBound::Outlives(lifetime) => {
let region =
<dyn AstConv<'_>>::ast_region_to_region(&icx, lifetime, None);
);
bounds.predicates(astconv.tcx(), param_ty)
}
+ hir::GenericBound::Unsized(_) => vec![],
hir::GenericBound::Outlives(ref lifetime) => {
let region = astconv.ast_region_to_region(lifetime, None);
let pred = ty::PredicateKind::TypeOutlives(ty::OutlivesPredicate(param_ty, region))