Add some test for ATB issues

This commit is contained in:
Jack Huey 2021-01-28 13:24:52 -05:00
parent 643a79af3d
commit fe1fc36f8e
4 changed files with 73 additions and 0 deletions

View File

@ -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() {}

View File

@ -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() {}

View File

@ -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() { }

View File

@ -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
}
}