// ignore-tidy-linelength // Check that we normalize super predicates for object candidates. // check-pass use std::ops::Index; fn next<'a, T>(s: &'a mut dyn SVec) { // To prove // `dyn SVec: SVec` // we need to show // `dyn SVec as Index>::Output == as SVec>::Item` // which, with the current normalization strategy, has to be eagerly // normalized to: // `dyn SVec as Index>::Output == T`. let _ = s.len(); } trait SVec: Index::Item> { type Item; fn len(&self) -> usize; } fn main() {}