File tree Expand file tree Collapse file tree 2 files changed +74
-0
lines changed Expand file tree Collapse file tree 2 files changed +74
-0
lines changed Original file line number Diff line number Diff line change 1+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ // Test that you can supply `&F` where `F: FnMut()`.
12+
13+ // pretty-expanded FIXME #23616
14+
15+ #![ feature( lang_items, unboxed_closures) ]
16+
17+ fn a < F : FnMut ( ) -> i32 > ( mut f : F ) -> i32 {
18+ f ( )
19+ }
20+
21+ fn b ( f : & mut FnMut ( ) -> i32 ) -> i32 {
22+ a ( f)
23+ }
24+
25+ fn c < F : FnMut ( ) -> i32 > ( f : & mut F ) -> i32 {
26+ a ( f)
27+ }
28+
29+ fn main ( ) {
30+ let z: isize = 7 ;
31+
32+ let x = b ( & mut || 22 ) ;
33+ assert_eq ! ( x, 22 ) ;
34+
35+ let x = c ( & mut || 22 ) ;
36+ assert_eq ! ( x, 22 ) ;
37+ }
Original file line number Diff line number Diff line change 1+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ // Test that you can supply `&F` where `F: Fn()`.
12+
13+ // pretty-expanded FIXME #23616
14+
15+ #![ feature( lang_items, unboxed_closures) ]
16+
17+ fn a < F : Fn ( ) -> i32 > ( f : F ) -> i32 {
18+ f ( )
19+ }
20+
21+ fn b ( f : & Fn ( ) -> i32 ) -> i32 {
22+ a ( f)
23+ }
24+
25+ fn c < F : Fn ( ) -> i32 > ( f : & F ) -> i32 {
26+ a ( f)
27+ }
28+
29+ fn main ( ) {
30+ let z: isize = 7 ;
31+
32+ let x = b ( & || 22 ) ;
33+ assert_eq ! ( x, 22 ) ;
34+
35+ let x = c ( & || 22 ) ;
36+ assert_eq ! ( x, 22 ) ;
37+ }
You can’t perform that action at this time.
0 commit comments