diff mbox series

[committed,76/88] gccrs: Fix regression in testcase

Message ID 20230405140411.3016563-77-arthur.cohen@embecosm.com
State New
Headers show
Series [committed,01/88] gccrs: fatal_error_flag: Fix typo in error message | expand

Commit Message

Arthur Cohen April 5, 2023, 2:04 p.m. UTC
From: Philip Herron <herron.philip@googlemail.com>

Fixes #776

Signed-off-by: Philip Herron <herron.philip@googlemail.com>

gcc/testsuite/ChangeLog:

	* rust/compile/torture/traits10.rs: Fix test-case
---
 .../rust/compile/torture/traits10.rs          | 64 ++++++++++++++++++-
 1 file changed, 62 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/gcc/testsuite/rust/compile/torture/traits10.rs b/gcc/testsuite/rust/compile/torture/traits10.rs
index a02927007b3..4cf36e3c6f1 100644
--- a/gcc/testsuite/rust/compile/torture/traits10.rs
+++ b/gcc/testsuite/rust/compile/torture/traits10.rs
@@ -1,5 +1,65 @@ 
-trait Foo // where
-//     Self: Sized,
+#[lang = "sized"]
+pub trait Sized {}
+
+#[lang = "clone"]
+pub trait Clone: Sized {
+    fn clone(&self) -> Self;
+
+    fn clone_from(&mut self, source: &Self) {
+        *self = source.clone()
+    }
+}
+
+mod impls {
+    use super::Clone;
+
+    macro_rules! impl_clone {
+        ($($t:ty)*) => {
+            $(
+                impl Clone for $t {
+                    fn clone(&self) -> Self {
+                        *self
+                    }
+                }
+            )*
+        }
+    }
+
+    impl_clone! {
+        usize u8 u16 u32 u64 // u128
+        isize i8 i16 i32 i64 // i128
+        f32 f64
+        bool char
+    }
+}
+
+#[lang = "copy"]
+pub trait Copy: Clone {
+    // Empty.
+}
+
+mod copy_impls {
+    use super::Copy;
+
+    macro_rules! impl_copy {
+        ($($t:ty)*) => {
+            $(
+                impl Copy for $t {}
+            )*
+        }
+    }
+
+    impl_copy! {
+        usize u8 u16 u32 u64 // u128
+        isize i8 i16 i32 i64 // i128
+        f32 f64
+        bool char
+    }
+}
+
+trait Foo
+where
+    Self: Sized,
 {
     fn get(self) -> i32;