diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/associated-types/issue-38917.rs | 25 | ||||
| -rw-r--r-- | src/test/ui/associated-types/issue-40093.rs | 14 | ||||
| -rw-r--r-- | src/test/ui/associated-types/issue-43475.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/associated-types/issue-63591.rs | 24 |
4 files changed, 73 insertions, 0 deletions
diff --git a/src/test/ui/associated-types/issue-38917.rs b/src/test/ui/associated-types/issue-38917.rs new file mode 100644 index 00000000000..7e898851aa8 --- /dev/null +++ b/src/test/ui/associated-types/issue-38917.rs @@ -0,0 +1,25 @@ +// check-pass + +use std::borrow::Borrow; + +trait TNode: Sized { + type ConcreteElement: TElement<ConcreteNode = Self>; +} + +trait TElement: Sized { + type ConcreteNode: TNode<ConcreteElement = Self>; +} + +trait DomTraversal<N: TNode> { + type BorrowElement: Borrow<N::ConcreteElement>; +} + +#[allow(dead_code)] +fn recalc_style_at<E, D>() +where + E: TElement, + D: DomTraversal<E::ConcreteNode>, +{ +} + +fn main() {} diff --git a/src/test/ui/associated-types/issue-40093.rs b/src/test/ui/associated-types/issue-40093.rs new file mode 100644 index 00000000000..fd325ae1008 --- /dev/null +++ b/src/test/ui/associated-types/issue-40093.rs @@ -0,0 +1,14 @@ +// check-pass + +pub trait Test { + type Item; + type Bundle: From<Self::Item>; +} + +fn fails<T>() +where + T: Test<Item = String>, +{ +} + +fn main() {} diff --git a/src/test/ui/associated-types/issue-43475.rs b/src/test/ui/associated-types/issue-43475.rs new file mode 100644 index 00000000000..5f177333c93 --- /dev/null +++ b/src/test/ui/associated-types/issue-43475.rs @@ -0,0 +1,10 @@ +// check-pass + +trait Foo { type FooT: Foo; } +impl Foo for () { type FooT = (); } +trait Bar<T: Foo> { type BarT: Bar<T::FooT>; } +impl Bar<()> for () { type BarT = (); } + +#[allow(dead_code)] +fn test<C: Bar<()>>() { } +fn main() { } diff --git a/src/test/ui/associated-types/issue-63591.rs b/src/test/ui/associated-types/issue-63591.rs new file mode 100644 index 00000000000..4d2e39f4da6 --- /dev/null +++ b/src/test/ui/associated-types/issue-63591.rs @@ -0,0 +1,24 @@ +// check-pass + +#![feature(associated_type_bounds)] +#![feature(type_alias_impl_trait)] + +fn main() {} + +trait Bar { type Assoc; } + +trait Thing { + type Out; + fn func() -> Self::Out; +} + +struct AssocIsCopy; +impl Bar for AssocIsCopy { type Assoc = u8; } + +impl Thing for AssocIsCopy { + type Out = impl Bar<Assoc: Copy>; + + fn func() -> Self::Out { + AssocIsCopy + } +} |
