aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Herron <herron.philip@googlemail.com>2023-01-12 16:22:17 +0000
committerPhilip Herron <herron.philip@googlemail.com>2023-02-05 00:06:36 +0000
commitbf724a30cc281528d993bd17d7c2d2c7c54d420a (patch)
tree51b482d716253246c6469a4be13b83ddad6e7796
parent8d96698ffcb5d716e9ab41ba0c1775adb3ef15fe (diff)
downloadgcc-bf724a30cc281528d993bd17d7c2d2c7c54d420a.zip
gcc-bf724a30cc281528d993bd17d7c2d2c7c54d420a.tar.gz
gcc-bf724a30cc281528d993bd17d7c2d2c7c54d420a.tar.bz2
gccrs: Add another test case for passing associated type-bounds
This demonstrates that this also works for custom algebraic data types too. gcc/testsuite/ChangeLog: * rust/execute/torture/issue-1720-2.rs: New test. Signed-off-by: Philip Herron <herron.philip@googlemail.com>
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1720-2.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/execute/torture/issue-1720-2.rs b/gcc/testsuite/rust/execute/torture/issue-1720-2.rs
new file mode 100644
index 0000000..35833db
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/issue-1720-2.rs
@@ -0,0 +1,30 @@
+mod core {
+ mod ops {
+ #[lang = "add"]
+ pub trait Add<Rhs = Self> {
+ type Output;
+
+ fn add(self, rhs: Rhs) -> Self::Output;
+ }
+ }
+}
+
+struct Foo(i32);
+
+impl core::ops::Add for Foo {
+ type Output = i32;
+
+ fn add(self, rhs: Foo) -> Self::Output {
+ self.0 + rhs.0
+ }
+}
+
+pub fn bar<T: core::ops::Add<Output = i32>>(a: T) -> i32 {
+ a + a
+}
+
+pub fn main() -> i32 {
+ let a = Foo(1);
+
+ bar(a) - 2
+}