[Issue 9152] New: Regression in type inference of array of delegates
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Dec 13 09:52:18 PST 2012
http://d.puremagic.com/issues/show_bug.cgi?id=9152
Summary: Regression in type inference of array of delegates
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: regression
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: hsteoh at quickfur.ath.cx
--- Comment #0 from hsteoh at quickfur.ath.cx 2012-12-13 09:52:16 PST ---
This code used to compile in 2.058:
alias void delegate(int) DgType;
void dispatch(DgType[] funcTable, int idx, int arg) {
funcTable[idx](arg);
}
void main() {
dispatch([
(int x) { return x+x; },
(int x) { return x*x; },
(int x) { return x^^2; }
], 0, 1);
}
Since 2.059, dmd is unable to correctly infer the type of the delegate array
literal:
test.d(9): Error: function test.dispatch (void delegate(int)[]
funcTable, int idx, int arg) is not callable using argument types (int
function(int x) pure nothrow @safe[],int,int)
test.d(9): Error: cannot implicitly convert expression ([delegate pure
nothrow @safe int(int x)
{
return x + x;
}
, delegate pure nothrow @safe int(int x)
{
return x * x;
}
, delegate pure nothrow @safe int(int x)
{
return int __powtmp8 = x;
, __powtmp8 * __powtmp8;
}
]) of type int function(int x) pure nothrow @safe[] to void
delegate(int)[]
In this case, one can add @safe to the alias as a workaround, but it doesn't
work if the same function needs to be called with another array that contains a
@system delegate.
--
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