diff options
author | Philip Herron <herron.philip@googlemail.com> | 2023-01-12 16:22:17 +0000 |
---|---|---|
committer | Philip Herron <herron.philip@googlemail.com> | 2023-02-05 00:06:36 +0000 |
commit | bf724a30cc281528d993bd17d7c2d2c7c54d420a (patch) | |
tree | 51b482d716253246c6469a4be13b83ddad6e7796 | |
parent | 8d96698ffcb5d716e9ab41ba0c1775adb3ef15fe (diff) | |
download | gcc-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.rs | 30 |
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 +} |