| //@ run-rustfix |
| #![expect(incomplete_features)] |
| #![feature(explicit_tail_calls)] |
| |
| fn a() { |
| become ((|| ()) as fn() -> _)(); |
| //~^ ERROR: tail calling closures directly is not allowed |
| } |
| |
| fn aa((): ()) { |
| become ((|()| ()) as fn(_) -> _)(()); |
| //~^ ERROR: tail calling closures directly is not allowed |
| } |
| |
| fn aaa((): (), _: i32) { |
| become ((|(), _| ()) as fn(_, _) -> _)((), 1); |
| //~^ ERROR: tail calling closures directly is not allowed |
| } |
| |
| fn v((): (), ((), ()): ((), ())) -> (((), ()), ()) { |
| let f = |(), ((), ())| (((), ()), ()); |
| become (f as fn(_, _) -> _)((), ((), ())); |
| //~^ ERROR: tail calling closures directly is not allowed |
| } |
| |
| fn main() { |
| a(); |
| aa(()); |
| aaa((), 1); |
| v((), ((), ())); |
| } |