]> git.lizzy.rs Git - rust.git/blobdiff - tests/source/trait.rs
fix internal error for long closure types (#3653)
[rust.git] / tests / source / trait.rs
index 823b1e44a1e05257962c838fc5f971b936738e32..80ee0188a6baac4ac8cea857a5b789127f97d3e3 100644 (file)
@@ -72,6 +72,11 @@ trait Foo {
     type IteRev = <MergingUntypedTimeSeries<SliceSeries<SliceWindow>> as UntypedTimeSeries>::IterRev;
 }
 
+// #2331
+trait MyTrait<AAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBBBBBBBBBB, CCCCCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDDDDD> {
+    fn foo() {}
+}
+
 // Trait aliases
 trait FooBar =
     Foo 
@@ -79,11 +84,93 @@ trait FooBar =
 trait FooBar <A, B, C>=
     Foo 
     + Bar;
+pub trait FooBar =
+    Foo 
+    + Bar;
+pub trait FooBar <A, B, C>=
+    Foo 
+    + Bar;
 trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD;
+pub trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD;
 trait AAAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD;
 trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDDD;
 trait AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<A, B, C, D, E> = FooBar;
 trait AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<A, B, C, D, E> = FooBar;
-#[rustfmt_skip]
+#[rustfmt::skip]
 trait FooBar = Foo
     + Bar;
+
+// #2637
+auto trait Example {}
+pub auto trait PubExample {}
+pub unsafe auto trait PubUnsafeExample {}
+
+// #3006
+trait Foo<'a> {
+    type Bar<  'a  >;
+}
+
+impl<'a> Foo<'a> for i32 {
+    type Bar<  'a  > = i32;
+}
+
+// #3092
+pub mod test {
+    pub trait ATraitWithALooongName {}
+    pub trait ATrait
+        :ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName
+{
+}
+}
+
+// Trait aliases with where clauses.
+trait A = where for<'b> &'b Self: Send;
+
+trait B = where for<'b> &'b Self: Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCC;
+trait B = where for<'b> &'b Self: Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCC;
+trait B = where
+    for<'b> &'b Self:
+Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCCCCCCCCCCCCCC;
+trait B = where
+    for<'b> &'b Self:
+Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC;
+
+trait B = where
+    for<'b> &'b Self:
+Send
+    + Clone
+    + Copy
+    + SomeTrait
+    + AAAAAAAA
+    + BBBBBBB
+    + CCCCCCCCC
+    + DDDDDDD
+    + DDDDDDDD
+    + DDDDDDDDD
+    + EEEEEEE;
+
+trait A<'a, 'b, 'c> = Debug<T> + Foo where for<'b> &'b Self: Send;
+
+trait B<'a, 'b, 'c> = Debug<T> +Foo
+where for<'b> &'b Self:
+Send
+    + Clone
+    + Copy
+    + SomeTrait
+    + AAAAAAAA
+    + BBBBBBB
+    + CCCCCCCCC
+    + DDDDDDD;
+
+trait B<'a, 'b, 'c,T> = Debug<'a, T> where for<'b> &'b Self:
+Send
+    + Clone
+    + Copy
+    + SomeTrait
+    + AAAAAAAA
+    + BBBBBBB
+    + CCCCCCCCC
+    + DDDDDDD
+    + DDDDDDDD
+    + DDDDDDDDD
+    + EEEEEEE;