digitalmars.D.bugs - [Issue 4406] New: Typo (bug) in std.concurrency
- d-bugmail puremagic.com (32/32) Jun 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4406
- d-bugmail puremagic.com (27/27) Jun 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4406
- d-bugmail puremagic.com (26/52) Jun 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4406
- d-bugmail puremagic.com (12/12) Aug 13 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4406
http://d.puremagic.com/issues/show_bug.cgi?id=4406
Summary: Typo (bug) in std.concurrency
Product: D
Version: D2
Platform: Other
OS/Version: All
Status: NEW
Keywords: patch
Severity: critical
Priority: P2
Component: Phobos
AssignedTo: nobody puremagic.com
ReportedBy: simen.kjaras gmail.com
PDT ---
Line 609 of trunk std.concurrency contains a typo that makes it not compile:
final void get(T...)( T ops )
{
static assert( T.length );
static if( isImplicitlyConvertible!(T[0], long) )
{
alias TypeTuple!(T[1 .. $]) Ops;
enum timedWait = true;
assert( ops[0] >= 0 );
long period = ops[0];
ops = ops[1 .. $]; // Line 609
}
Lines 609 should instead be:
Ops = ops[1 .. $];
(note capitalization)
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4406
07:40:36 PDT ---
Ops is a type, I don't think that will compile.
I'd say a more complex solution is needed:
final void get(T...)( T _ops )
{
static assert( T.length );
static if( isImplicitlyConvertible!(T[0], long) )
{
alias TypeTuple!(T[1 .. $]) Ops;
enum timedWait = true;
assert( _ops[0] >= 0 );
long period = _ops[0];
Ops ops = _ops[1 .. $]; // Line 609
}
else
{
alias TypeTuple!(T) Ops;
enum timedWait = false;
alias _ops ops; // not sure if this works
}
If the alias doesn't work, you may have to do something with the function
signature. I'm not sure how assigning _ops to ops will work, it may invoke
some unnecessary ctors/dtors.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4406
PDT ---
Ops is a type, I don't think that will compile.
I'd say a more complex solution is needed:
final void get(T...)( T _ops )
{
static assert( T.length );
static if( isImplicitlyConvertible!(T[0], long) )
{
alias TypeTuple!(T[1 .. $]) Ops;
enum timedWait = true;
assert( _ops[0] >= 0 );
long period = _ops[0];
Ops ops = _ops[1 .. $]; // Line 609
}
else
{
alias TypeTuple!(T) Ops;
enum timedWait = false;
alias _ops ops; // not sure if this works
}
If the alias doesn't work, you may have to do something with the function
signature. I'm not sure how assigning _ops to ops will work, it may invoke
some unnecessary ctors/dtors.
I don't think it's necessary to to assign anything the way you do. All that's
needed is renaming the ops argument to _ops, and adding an alias in both
clauses of the static if:
final void get(T...)( T _ops )
{
static assert( T.length );
static if( isImplicitlyConvertible!(T[0], long) )
{
alias TypeTuple!(T[1 .. $]) Ops;
enum timedWait = true;
assert( ops[0] >= 0 );
long period = ops[0];
alias _ops[1 .. $] ops; // Here
}
else
{
alias TypeTuple!(T) Ops;
enum timedWait = false;
alias _ops ops; // And here
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4406
Lars T. Kyllingstad <bugzilla kyllingen.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla kyllingen.net
Resolution| |FIXED
02:00:58 PDT ---
Fixed DMD 2.048.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 13 2010









d-bugmail puremagic.com 