[Issue 1977] Relax warnings for implicit narrowing conversions caused by promotions
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Nov 24 12:47:29 PST 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1977
------- Comment #14 from andrei at metalanguage.com 2008-11-24 14:47 -------
(In reply to comment #13)
> (In reply to comment #12)
> > (In reply to comment #10)
> > > c += 'A' - 'a';
> > >
> > > Casting seems too strict a requirement in these types of situations. I can't
> > > imagine that anyone has a positive experience with these warnings, most are
> > > just going to grumble, then insert the cast without thinking about it.
> >
> > Notice that in the particular example you mention, the code does go through
> > because it uses +=.
>
> Wow, that surprises me.
>
> c = c + c should be equivalent to c += c;
>
> So right there, either both should be invalid, or neither should. Both have an
> equal chance of overflow.
It shouldn't be that surprising, particularly considering that Java and C# obey
the same rules. The correct equivalence is that c = c + c is really c =
cast(typeof(c))(c + c).
> In fact, using obj2asm, I found that both are essentially equivalent.
That's irrelevant. Operational semantics are different from typechecking.
--
More information about the Digitalmars-d-bugs
mailing list