Rollup merge of #81485 - jackh726:atb-issues, r=Mark-Simulacrum
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~~
This commit is contained in:
commit
a61e6ab0da
25
src/test/ui/associated-types/issue-38917.rs
Normal file
25
src/test/ui/associated-types/issue-38917.rs
Normal 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() {}
|
14
src/test/ui/associated-types/issue-40093.rs
Normal file
14
src/test/ui/associated-types/issue-40093.rs
Normal 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() {}
|
10
src/test/ui/associated-types/issue-43475.rs
Normal file
10
src/test/ui/associated-types/issue-43475.rs
Normal 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() { }
|
24
src/test/ui/associated-types/issue-63591.rs
Normal file
24
src/test/ui/associated-types/issue-63591.rs
Normal 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
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user