dmd 1.046 and 2.031 releases
Don
nospam at nospam.com
Fri Jul 17 06:46:11 PDT 2009
Steven Schveighoffer wrote:
> On Fri, 17 Jul 2009 08:08:23 -0400, Don <nospam at nospam.com> wrote:
>
>> In this case, I think bearophile's right: it's just a problem with
>> range propagation of the ?: operator. I think the compiler should be
>> required to do the semantics analysis for single expressions. Not
>> more, not less.
>
> Why? What is the benefit of keeping track of the range of integral
> variables inside an expression, to eliminate a cast? I don't think it's
> worth it. As far as I know, the ?: is the only expression where this
> can happen. You will get cries of inconsistency when the compiler
> doesn't allow:
>
> ubyte foo(uint x)
> {
> if(x < 256)
> return x;
> return 0;
> }
>
> -Steve
Already happens. This works:
ubyte foo(uint n)
{
return true ? 255 : n;
}
And this fails:
ubyte boo(uint n)
{
if (true) return 255;
else return n;
}
More information about the Digitalmars-d-announce
mailing list