test: Add test for issues 45510 and 18952.
Those tests are directly taken from the comments on the bug reports.
This commit is contained in:
parent
7155690ffc
commit
4e77c3a9b1
48
src/test/run-pass/issue-18952.rs
Normal file
48
src/test/run-pass/issue-18952.rs
Normal file
@ -0,0 +1,48 @@
|
||||
// This issue tests fn_traits overloading on arity.
|
||||
|
||||
#![feature(fn_traits)]
|
||||
#![feature(unboxed_closures)]
|
||||
|
||||
struct Foo;
|
||||
|
||||
impl Fn<(isize, isize)> for Foo {
|
||||
extern "rust-call" fn call(&self, args: (isize, isize)) -> Self::Output {
|
||||
println!("{:?}", args);
|
||||
}
|
||||
}
|
||||
|
||||
impl FnMut<(isize, isize)> for Foo {
|
||||
extern "rust-call" fn call_mut(&mut self, args: (isize, isize)) -> Self::Output {
|
||||
println!("{:?}", args);
|
||||
}
|
||||
}
|
||||
|
||||
impl FnOnce<(isize, isize)> for Foo {
|
||||
type Output = ();
|
||||
extern "rust-call" fn call_once(self, args: (isize, isize)) -> Self::Output {
|
||||
println!("{:?}", args);
|
||||
}
|
||||
}
|
||||
|
||||
impl Fn<(isize, isize, isize)> for Foo {
|
||||
extern "rust-call" fn call(&self, args: (isize, isize, isize)) -> Self::Output {
|
||||
println!("{:?}", args);
|
||||
}
|
||||
}
|
||||
|
||||
impl FnMut<(isize, isize, isize)> for Foo {
|
||||
extern "rust-call" fn call_mut(&mut self, args: (isize, isize, isize)) -> Self::Output {
|
||||
println!("{:?}", args);
|
||||
}
|
||||
}
|
||||
impl FnOnce<(isize, isize, isize)> for Foo {
|
||||
type Output = ();
|
||||
extern "rust-call" fn call_once(self, args: (isize, isize, isize)) -> Self::Output {
|
||||
println!("{:?}", args);
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let foo = Foo;
|
||||
foo(1, 1);
|
||||
}
|
27
src/test/run-pass/issue-45510.rs
Normal file
27
src/test/run-pass/issue-45510.rs
Normal file
@ -0,0 +1,27 @@
|
||||
// Test overloaded resolution of fn_traits.
|
||||
|
||||
#![feature(fn_traits)]
|
||||
#![feature(unboxed_closures)]
|
||||
|
||||
struct Ishmael;
|
||||
struct Maybe;
|
||||
struct CallMe;
|
||||
|
||||
impl FnOnce<(Ishmael,)> for CallMe {
|
||||
type Output = ();
|
||||
extern "rust-call" fn call_once(self, _args: (Ishmael,)) -> () {
|
||||
println!("Split your lungs with blood and thunder!");
|
||||
}
|
||||
}
|
||||
|
||||
impl FnOnce<(Maybe,)> for CallMe {
|
||||
type Output = ();
|
||||
extern "rust-call" fn call_once(self, _args: (Maybe,)) -> () {
|
||||
println!("So we just met, and this is crazy");
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
CallMe(Ishmael);
|
||||
CallMe(Maybe);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user