www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 2092] New: Stuff that doesn't compile in Phobos

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2092

           Summary: Stuff that doesn't compile in Phobos
           Product: D
           Version: 1.029
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: ary esperanto.org.ar


Here's a listing of things that doesn't compile in Phobos. I'm using Phobos to
see if Descent semantic was ported correctly from DMD, and from a long time now
I've found errors in Phobos which Descent reports correctly.

Maybe you didn't notice them as errors because some of them are inside unittest
blocks, others are inside static ifs which may not hold.

etc.gamma.d
------------
Line 286:

assert(feqrel(tgamma(i * 1.0L), fact) > real.mant_dig - 15);

template std.math.feqrel(X) cannot deduce template function from argument types
(real,double)

Lines 420-421:

assert(std.math.isPosZero(lgamma(1.0L)));
assert(std.math.isPosZero(lgamma(2.0L)));

std.math.isPosZero doesn't exist.

std.math.d
------------
Function real frexp(real value, out int exp):

Inside "static if (real.mant_dig==53)" a variable named "ve" is used, by it
isn't declared anywhere. Possible solutions are "vu" or "vl", I don't know
which one is the correct one.

Function int issubnormal(real x):

Inside "static if (real.mant_dig == 53)" a function named "isSubnormal" is
invoked, but it isn't declared anywhere. Same with the last else. Probably it
should be "issubnormal".

Lines

904: vu[F.EXPPOS_SHORT] = (0x8000 & vu[F.EXPPOS_SHORT]) | 0x3FE0;
912: sgn = (0x8000 & vu[F.EXPPOS_SHORT])| 0x3FE0;

give warnings about implicit conversion. Wrapping everything in cast(ushort)
solves the problem.
(if warnings are enabled, some template instances fail)


-- 
May 10 2008
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2092


clugdbug yahoo.com.au changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED




-- 
May 13 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2092






Fixed in Phobos SVN commit 735.


-- 
May 28 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2092


clugdbug yahoo.com.au changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|bugzilla digitalmars.com    |clugdbug yahoo.com.au
             Status|ASSIGNED                    |NEW





This should all be fixed in 2.015 and 1.031. Please confirm.


-- 
Jun 19 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2092






I've just verified this, the warnings are gone.

Umm... I just found two other errors, I must have deleted them before when
reporting the previous ones, sorry. :-(

Should I create another ticket for them? Anyway, I'll report them here.

std.stream
----------
Line 2419: em.fixBO(x3,12);

I get "std/stream.d: function fixBO (void*,uint) does not match parameter types
(ubyte[12],int)"
(and another error following that)

Same goes for line 2443.

I'm not sure about this, but casting the first argument (x3) to void* solved
the problem. Maybe a static ubyte[] was allowed to be implicitly cast to void*
in a previous D version...


-- 
Jun 19 2008
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2092


clugdbug yahoo.com.au changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED





The new bugs should go into a different ticket, since the original bugs are
fixed.
Then close this one.
I think it should be .ptr, not a cast to void *, eg

    em.fixBO(x3.ptr,12);


-- 
Jun 23 2008