| mod a { | 
 |     use std::fmt::{Debug, Formatter, Result}; | 
 |     struct Inner<T>(T); | 
 |  | 
 |     impl Debug for Inner<()> { | 
 |         fn fmt(&self, f: &mut Formatter<'_>) -> Result { | 
 |             todo!() | 
 |         } | 
 |     } | 
 |  | 
 |     #[derive(Debug)] | 
 |     struct Outer<T>(Inner<T>); //~ ERROR `a::Inner<T>` doesn't implement `Debug` | 
 | } | 
 |  | 
 | mod b { | 
 |     use std::fmt::{Debug, Formatter, Result}; | 
 |     struct Inner<T>(T); | 
 |  | 
 |     impl<T: Debug> Debug for Inner<T> { | 
 |         fn fmt(&self, f: &mut Formatter<'_>) -> Result { | 
 |             todo!() | 
 |         } | 
 |     } | 
 |  | 
 |     #[derive(Debug)] | 
 |     struct Outer<T>(Inner<T>); | 
 | } | 
 |  | 
 | mod c { | 
 |     use std::fmt::{Debug, Formatter, Result}; | 
 |     struct Inner<T>(T); | 
 |     trait Trait {} | 
 |  | 
 |     impl<T: Debug + Trait> Debug for Inner<T> { | 
 |         fn fmt(&self, f: &mut Formatter<'_>) -> Result { | 
 |             todo!() | 
 |         } | 
 |     } | 
 |  | 
 |     #[derive(Debug)] | 
 |     struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: c::Trait` is not satisfied | 
 | } | 
 |  | 
 | mod d { | 
 |     use std::fmt::{Debug, Formatter, Result}; | 
 |     struct Inner<T>(T); | 
 |     trait Trait {} | 
 |  | 
 |     impl<T> Debug for Inner<T> where T: Debug, T: Trait { | 
 |         fn fmt(&self, f: &mut Formatter<'_>) -> Result { | 
 |             todo!() | 
 |         } | 
 |     } | 
 |  | 
 |     #[derive(Debug)] | 
 |     struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: d::Trait` is not satisfied | 
 | } | 
 |  | 
 | mod e { | 
 |     use std::fmt::{Debug, Formatter, Result}; | 
 |     struct Inner<T>(T); | 
 |     trait Trait {} | 
 |  | 
 |     impl<T> Debug for Inner<T> where T: Debug + Trait { | 
 |         fn fmt(&self, f: &mut Formatter<'_>) -> Result { | 
 |             todo!() | 
 |         } | 
 |     } | 
 |  | 
 |     #[derive(Debug)] | 
 |     struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: e::Trait` is not satisfied | 
 | } | 
 |  | 
 | mod f { | 
 |     use std::fmt::{Debug, Formatter, Result}; | 
 |     struct Inner<T>(T); | 
 |     trait Trait {} | 
 |  | 
 |     impl<T: Debug> Debug for Inner<T> where T: Trait { | 
 |         fn fmt(&self, f: &mut Formatter<'_>) -> Result { | 
 |             todo!() | 
 |         } | 
 |     } | 
 |  | 
 |     #[derive(Debug)] | 
 |     struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: f::Trait` is not satisfied | 
 | } | 
 |  | 
 | fn main() {} |