diff options
Diffstat (limited to 'tests/rustdoc/synthetic_auto/send-impl-conditional-60726.rs')
| -rw-r--r-- | tests/rustdoc/synthetic_auto/send-impl-conditional-60726.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/rustdoc/synthetic_auto/send-impl-conditional-60726.rs b/tests/rustdoc/synthetic_auto/send-impl-conditional-60726.rs new file mode 100644 index 00000000000..ea10aee58e4 --- /dev/null +++ b/tests/rustdoc/synthetic_auto/send-impl-conditional-60726.rs @@ -0,0 +1,38 @@ +// https://github.com/rust-lang/rust/issues/60726 +#![crate_name="foo"] + +use std::marker::PhantomData; + +pub struct True; +pub struct False; + +pub trait InterfaceType{ + type Send; +} + + +pub struct FooInterface<T>(PhantomData<fn()->T>); + +impl<T> InterfaceType for FooInterface<T> { + type Send=False; +} + + +pub struct DynTrait<I>{ + _interface:PhantomData<fn()->I>, + _unsync_unsend:PhantomData<::std::rc::Rc<()>>, +} + +unsafe impl<I> Send for DynTrait<I> +where + I:InterfaceType<Send=True> +{} + +// @has foo/struct.IntoIter.html +// @has - '//*[@id="synthetic-implementations-list"]//*[@class="impl"]//h3[@class="code-header"]' \ +// "impl<T> !Send for IntoIter<T>" +// @has - '//*[@id="synthetic-implementations-list"]//*[@class="impl"]//h3[@class="code-header"]' \ +// "impl<T> !Sync for IntoIter<T>" +pub struct IntoIter<T>{ + hello:DynTrait<FooInterface<T>>, +} |
