1 // run-pass
2 // Test that we are able to infer a suitable kind for this closure
3 // that is just called (`FnMut`).
4 
main()5 fn main() {
6     let mut counter = 0;
7 
8     {
9         // Here this must be inferred to FnMut so that it can mutate counter:
10         let mut tick1 = || counter += 1;
11 
12         // In turn, tick2 must be inferred to FnMut so that it can call tick1:
13         let mut tick2 = || { tick1(); tick1(); };
14 
15         tick2();
16     }
17 
18     assert_eq!(counter, 2);
19 }
20