[Issue 9423] Missed conversion of lambda literal with ref argument
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Jan 29 09:23:56 PST 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9423
Kenji Hara <k.hara.pg at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |pull
Platform|x86 |All
OS/Version|Windows |All
Severity|normal |enhancement
--- Comment #1 from Kenji Hara <k.hara.pg at gmail.com> 2013-01-29 09:23:54 PST ---
When I fixed bug7705, I decided that lambda inference does not infer parameter
storage classes. Instead, users should specify `ref`/`out`/`lazy` explicitly.
https://github.com/D-Programming-Language/dmd/pull/809/files#L1R496
Because, explicit specifying of `ref` in call site is sometimes required in
newsgroup.
void foo(ref int x) {}
int n;
foo(ref n); // not allowed in today
So, current behavior is intended. You should write it as follows:
void foo(int delegate(ref int[1]) spam) {}
void main() {
foo((ref x) => 0); // OK
}
However, I cannot say clearly whether it's right behavior.
I think that the opinion "parameter storage classes should be inferred" is also
worth.
Therefore, I'll mark this as 'enhancement'.
=====
A pull to implement this feature:
https://github.com/D-Programming-Language/dmd/pull/1580
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list