// run-pass // pretty-expanded FIXME #23616 use std::marker; pub struct Foo(marker::PhantomData); impl Iterator for Foo { type Item = T; fn next(&mut self) -> Option { None } } impl Drop for Foo { fn drop(&mut self) { self.next(); } } pub fn foo<'a>(_: Foo<&'a ()>) {} pub fn main() {}