aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Herron <herron.philip@googlemail.com>2023-02-13 22:22:06 +0000
committerArthur Cohen <arthur.cohen@embecosm.com>2023-04-06 10:47:23 +0200
commita11b44b6a5768192b73a5b1096e27010296fd7c2 (patch)
tree8df76b2aa1dc5b28fa403942e7521c4ae525c0d6
parent4b25fc15b925f87a20bb15fe5ffcfd33fca6fd32 (diff)
downloadgcc-a11b44b6a5768192b73a5b1096e27010296fd7c2.zip
gcc-a11b44b6a5768192b73a5b1096e27010296fd7c2.tar.gz
gcc-a11b44b6a5768192b73a5b1096e27010296fd7c2.tar.bz2
gccrs: Fix regression in testcase
Fixes #776 Signed-off-by: Philip Herron <herron.philip@googlemail.com> gcc/testsuite/ChangeLog: * rust/compile/torture/traits10.rs: Fix test-case
-rw-r--r--gcc/testsuite/rust/compile/torture/traits10.rs64
1 files changed, 62 insertions, 2 deletions
diff --git a/gcc/testsuite/rust/compile/torture/traits10.rs b/gcc/testsuite/rust/compile/torture/traits10.rs
index a029270..4cf36e3 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;