diff options
Diffstat (limited to 'src/test/ui/generic-associated-types/issue-79636-1.rs')
-rw-r--r-- | src/test/ui/generic-associated-types/issue-79636-1.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/test/ui/generic-associated-types/issue-79636-1.rs b/src/test/ui/generic-associated-types/issue-79636-1.rs new file mode 100644 index 000000000..6d73fd68d --- /dev/null +++ b/src/test/ui/generic-associated-types/issue-79636-1.rs @@ -0,0 +1,23 @@ +#![feature(generic_associated_types)] + +trait Monad { + type Unwrapped; + type Wrapped<B>; + + fn bind<B, F>(self, f: F) -> Self::Wrapped<B> { + todo!() + } +} + +fn join<MOuter, MInner, A>(outer: MOuter) -> MOuter::Wrapped<A> +where + MOuter: Monad<Unwrapped = MInner>, + MInner: Monad<Unwrapped = A, Wrapped = MOuter::Wrapped<A>>, + //~^ ERROR: missing generics for associated type `Monad::Wrapped` +{ + outer.bind(|inner| inner) +} + +fn main() { + assert_eq!(join(Some(Some(true))), Some(true)); +} |