diff options
Diffstat (limited to 'src/test/ui/associated-type-bounds/fn-wrap-apit.rs')
-rw-r--r-- | src/test/ui/associated-type-bounds/fn-wrap-apit.rs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/test/ui/associated-type-bounds/fn-wrap-apit.rs b/src/test/ui/associated-type-bounds/fn-wrap-apit.rs new file mode 100644 index 000000000..96df13e37 --- /dev/null +++ b/src/test/ui/associated-type-bounds/fn-wrap-apit.rs @@ -0,0 +1,65 @@ +// run-pass +// aux-build:fn-aux.rs + +#![feature(associated_type_bounds)] +#![allow(dead_code)] + +extern crate fn_aux; + +use fn_aux::*; + +// ATB, APIT + Wrap: + +struct Wrap<T>(T); + +fn wrap_apit_bound(beta: Wrap<impl Beta<Gamma: Alpha>>) -> usize { + desugared_bound(beta.0) +} + +fn wrap_apit_bound_region(beta: Wrap<impl Beta<Gamma: 'static>>) -> usize { + desugared_bound_region(beta.0) +} + +fn wrap_apit_bound_multi( + beta: Wrap<impl Copy + Beta<Gamma: Alpha + 'static + Delta>> +) -> usize { + desugared_bound_multi(beta.0) +} + +fn wrap_apit_bound_region_forall( + beta: Wrap<impl Beta<Gamma: Copy + for<'a> Epsilon<'a>>> +) -> usize { + desugared_bound_region_forall(beta.0) +} + +fn wrap_apit_bound_region_forall2( + beta: Wrap<impl Beta<Gamma: Copy + for<'a> Epsilon<'a, Zeta: Eta>>> +) -> usize { + desugared_bound_region_forall2(beta.0) +} + +fn wrap_apit_bound_nested( + beta: Wrap<impl Beta<Gamma: Copy + Alpha + Beta<Gamma: Delta>>> +) -> usize { + desugared_bound_nested(beta.0) +} + +fn wrap_apit_bound_nested2( + beta: Wrap<impl Beta<Gamma = impl Copy + Alpha + Beta<Gamma: Delta>>> +) -> usize { + desugared_bound_nested(beta.0) +} + +fn main() { + let beta = BetaType; + let _gamma = beta.gamma(); + + assert_eq!(42, wrap_apit_bound(Wrap(beta))); + assert_eq!(24, wrap_apit_bound_region(Wrap(beta))); + assert_eq!(42 + 24 + 1337, wrap_apit_bound_multi(Wrap(beta))); + assert_eq!(7331 * 2, wrap_apit_bound_region_forall(Wrap(beta))); + // FIXME: requires lazy normalization. + // assert_eq!(7331 * 2, wrap_apit_bound_region_forall2(Wrap(beta))); + assert_eq!(42 + 1337, wrap_apit_bound_nested(Wrap(beta))); + assert_eq!(42 + 1337, wrap_apit_bound_nested2(Wrap(beta))); +} |