digitalmars.D.bugs - [Issue 6351] New: Regression(2.054) Segfault: Vararg delegate as template param
- d-bugmail puremagic.com (23/23) Jul 19 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6351
- d-bugmail puremagic.com (29/29) Aug 24 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6351
- d-bugmail puremagic.com (10/10) Aug 24 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6351
- d-bugmail puremagic.com (6/6) Aug 24 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6351
- d-bugmail puremagic.com (12/12) Aug 24 2011 http://d.puremagic.com/issues/show_bug.cgi?id=6351
http://d.puremagic.com/issues/show_bug.cgi?id=6351
Summary: Regression(2.054) Segfault: Vararg delegate as
template param
Product: D
Version: D2
Platform: Other
OS/Version: Windows
Status: NEW
Severity: regression
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: cbkbbejeap mailinator.com
20:01:57 PDT ---
This crashes the compiler:
void foo(alias dg)()
{
dg();
}
alias foo!( (int[] a...){} ) bar;
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 19 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6351
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |clugdbug yahoo.com.au
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: -------
Aug 24 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6351
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |robert octarineparrot.com
*** Issue 6341 has been marked as a duplicate of this issue. ***
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 24 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6351 https://github.com/D-Programming-Language/dmd/pull/330 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 24 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6351
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
13:40:15 PDT ---
https://github.com/D-Programming-Language/dmd/commit/b9ee455e4e8c129b429d8e22fd4f6d15885274fb
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 24 2011









d-bugmail puremagic.com 