Skip to content

Commit

Permalink
Rollup merge of #81485 - jackh726:atb-issues, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Add some tests for associated-type-bounds issues

Closes #38917
Closes #40093
Closes #43475
Closes #63591

#47897 is likely closable too, but it needs an MCVE
~~#38917, #40093, #43475, #47897 all are mislabeled and shouldn't have the `F-associated-type-bounds` label~~

~~#71685 is also mislabeled as commented on in that thread~~
  • Loading branch information
jonas-schievink authored Feb 2, 2021
2 parents e6e76c7 + fe1fc36 commit a61e6ab
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/test/ui/associated-types/issue-38917.rs
Original file line number Diff line number Diff line change
@@ -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() {}
14 changes: 14 additions & 0 deletions src/test/ui/associated-types/issue-40093.rs
Original file line number Diff line number Diff line change
@@ -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() {}
10 changes: 10 additions & 0 deletions src/test/ui/associated-types/issue-43475.rs
Original file line number Diff line number Diff line change
@@ -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() { }
24 changes: 24 additions & 0 deletions src/test/ui/associated-types/issue-63591.rs
Original file line number Diff line number Diff line change
@@ -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
}
}

0 comments on commit a61e6ab

Please sign in to comment.