Which is exactly what I said about 6 hours ago and Rainer said 14 hours ago. :)
On 6/12/2010 1:18 AM, Andrei Alexandrescu wrote: > Looks like a compiler problem. > > Andrei > > Brad Roberts wrote: >> On 6/11/2010 9:40 PM, Don Clugston wrote: >>> On 12 June 2010 04:18, Walter Bright <[email protected]> wrote: >>>> Brad Roberts wrote: >>>>> On Fri, 11 Jun 2010, Walter Bright wrote: >>>>>> I'm working on that now, so please no more changes unless there's >>>>>> some >>>>>> disaster. Thanks! >>>>> It looks like from the startsWith thread, that the problem is at the >>>>> compiler level regression. Have you followed that issue and if so, >>>>> found a >>>>> fix? I haven't seen a dmd submit with a fix yet. >>>>> >>>>> Just making sure we've handled all the discovered issues. >>>> As far as I know, nobody has figured out where the problem is. >>> The original startWith() bug was a Phobos change, which is now fixed. >>> The CustomFloat bug has been fixed. Is there another regression? >>> _______________________________________________ >> >> The attached email is the last one I saw on the startsWith thread. It >> was in >> the dmd-beta list earlier today. >> >> >> >> ------------------------------------------------------------------------ >> >> Subject: >> Re: [dmd-beta] dmd 1.062 and 2.047 beta >> From: >> Rainer Schuetze <[email protected]> >> Date: >> Fri, 11 Jun 2010 20:30:07 +0200 >> To: >> Discuss the dmd beta releases for D <[email protected]> >> >> To: >> Discuss the dmd beta releases for D <[email protected]> >> >> >> Hi, >> >> I've tried to untangle the startsWith code, and here's the minimal >> test case I could come up with so far: >> >> /////////////////////// >> template binaryFunImpl(bool b) >> { >> template Body() >> { >> static assert(b); >> alias bool BodyType; >> } >> alias Body!().BodyType ReturnType; // line 9 >> } >> >> uint startsWith(A)(A a) if (is(binaryFunImpl!(true ).ReturnType)) { >> return 1; } >> uint startsWith(A)(A a) if (is(binaryFunImpl!(false).ReturnType)) { >> return 0; } // line 13 >> >> const uint var = startsWith(1); >> /////////////////////// >> dmd produces: >> >> test.d(6): Error: static assert (b) is false >> test.d(9): instantiated from here: Body!() >> test.d(13): instantiated from here: binaryFunImpl!(false) >> >> The error does not show up if var is not const. Also, dmd 2.032 to >> 2.045 do not produce this error (2.046 fails), so it must be some >> compiler regression. >> >> As it seems, the compile time evaluation of startsWith uses the wrong >> specialization. Maybe, it is just not gagging error output? >> >> Any other ideas? I have not yet dived too deep into the template code >> of the compiler, but if nobody has a better clue (and time), I can >> give it a try. >> >> Rainer >> >> Andrei Alexandrescu wrote: >>> Thanks. It may take a while before I can tend to this. Could someone >>> else look at it? >>> >>> Andrei >>> >>> On 06/10/2010 12:53 PM, Rainer Schuetze wrote: >>>> Sorry, but it still doesn't work. The error occurs when the expression >>>> is evaluated at compile time, so the code added to the unittest does >>>> not >>>> cover the issue. >>>> >>>> Rainer >>>> >>>> Andrei Alexandrescu wrote: >>>>> Apologies. svn up should fix it, and bring some more goodies too :o). >>>>> >>>>> Andrei >>>>> >>>>> On 06/10/2010 10:14 AM, Don Clugston wrote: >>>>>> const bool fails = startsWith("ab", "a"); >>>>> _______________________________________________ _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
