// rust-lang/rust#57979 : the initial support for `impl Trait` didn't // properly check syntax hidden behind an associated type projection. // Here we test behavior of occurrences of `impl Trait` within an // `impl Trait` in that context. mod allowed { #![allow(nested_impl_trait)] pub trait Foo { } pub trait Bar { } pub trait Quux { type Assoc; } pub fn demo(_: impl Quux>) { } } mod warned { #![warn(nested_impl_trait)] pub trait Foo { } pub trait Bar { } pub trait Quux { type Assoc; } pub fn demo(_: impl Quux>) { } //~^ WARN nested `impl Trait` is not allowed //~| WARN will become a hard error in a future release! } mod denied { #![deny(nested_impl_trait)] pub trait Foo { } pub trait Bar { } pub trait Quux { type Assoc; } pub fn demo(_: impl Quux>) { } //~^ ERROR nested `impl Trait` is not allowed //~| WARN will become a hard error in a future release! } fn main() { }