[Issue 6351] Regression(2.054) Segfault: Vararg delegate as template param

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Aug 24 04:48:28 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=6351


Don <clugdbug at yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug at yahoo.com.au


--- Comment #1 from Don <clugdbug at yahoo.com.au> 2011-08-24 04:48:25 PDT ---
Another test case, involving a variable instead of a delegate literal:

void bug6351(alias dg)()
{
    dg();
}

void delegate(int[] a...) deleg6351 = (int[] a...){};

alias bug6351!(deleg6351) baz6531;

The problem is in expression.c, functionParameters().
The parameter 'fd' is NULL, but the function calls fd->isSafe().
In fact, 'fd' will be null for any kind of call involving a variable -- TOKvar,
TOKdotvar, TOKindex, TOKstar, TOKcall, TOKdotti.

For the delegate literal case, we can determine 'fd' in expression.c 7618. This
will allow @safe inference for delegate literals as parameters.
For the variable case, the function type should be used instead of fd.

Lcheckargs:
    assert(tf->ty == Tfunction);

+    if (!f && e1->op == TOKfunction)
+    {
+        f = ((FuncExp *)e1)->fd;
+    }

-- 
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