Following code should work as expected. void main() { // lambda has a qualified parameter that needs type inference void foo1(void delegate(ref int ) dg){ int x=10; dg(x); } foo1((ref x){ assert(x == 10); }); // test.d(4): Error: undefined identifier x // Assertion failure: 'typen->deco' on line 1690 in file 'cast.c' // lambda has C style variadic void foo2(void delegate(int, ...) dg){ dg(20, 3.14); } foo2((x,...){ assert(x == 20); }); // OK // lambda has D style type safe variadic void foo3(void delegate(int[]...) dg){ dg(1, 2, 3); } foo3((x ...){ assert(x == [1,2,3]); }); // test.d(16): Error: undefined identifier x // Assertion failure: 'typen->deco' on line 1690 in file 'cast.c' }
https://github.com/D-Programming-Language/dmd/pull/809
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/dc89c64a8739d3379ccca0088deaead096ac0332 Merge pull request #809 from 9rnsr/fix_funclit Issue 7705 - lambda syntax doesn't allow some valid signatures
*** Issue 7297 has been marked as a duplicate of this issue. ***