https://gcc.gnu.org/g:838eab4a46381916a66877ca99a327264d838d54
commit 838eab4a46381916a66877ca99a327264d838d54 Author: Philip Herron <herron.phi...@googlemail.com> Date: Sat Feb 3 15:43:59 2024 +0000 gccrs: add testcase to prove issue has already been fixed Fixes #1483 gcc/testsuite/ChangeLog: * rust/compile/issue-1483.rs: New test. Diff: --- gcc/testsuite/rust/compile/issue-1483.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gcc/testsuite/rust/compile/issue-1483.rs b/gcc/testsuite/rust/compile/issue-1483.rs new file mode 100644 index 000000000000..eda7e139283d --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-1483.rs @@ -0,0 +1,28 @@ +#[lang = "sized"] +pub trait Sized {} + +#[lang = "fn_once"] +pub trait FnOnce<Args> { + #[lang = "fn_once_output"] + type Output; + + extern "rust-call" fn call_once(self, args: Args) -> Self::Output; +} + +pub fn takes_fn_generic<F: FnOnce(i32) -> i32>(a: i32, f: F) -> i32 { + f(a) +} + +pub fn takes_fn_generic_where<F>(a: i32, f: F) -> i32 +where + F: FnOnce(i32) -> i32, +{ + f(a) +} + +pub fn test() { + let foo = |x: i32| -> i32 { x + 1 }; + + takes_fn_generic(1, foo); + takes_fn_generic_where(2, foo); +}