On 12/21/14 3:23 AM, Jonathan Marler wrote:

As for the typed cast, what about when the function argument is changed
from a byte to a short?  If the initial caller was using cast(byte) and
doesn't change to cast(short), then you are also creating a bug.  I feel
like you're going to get different bugs either way.  Both the typed and
auto-typed cast seem to be just as dangerous.  That's not really an
argument to have auto-cast, I'm just making an observation.

But as the author, you have examined your code, and determined it's OK to have whatever expression you are using cast to a byte. This means you are sure it won't exceed the byte range. I don't see how this is a bug.

I noticed your other comment about wanting a double-typed cast. I could
see that being useful especially if we did something like this:

   When a cast is performed, the source and target type must match the
expected types EXACTLY.

int y;
ushort x = cast(byte, int)y; // cast from int to byte

This should definitely produce an error.  This code could exist if x was
initially a byte and was later changed to a ushort. I think this feature
would make casts alot safer because any time a type was changed you
would get an error saying you need to go update all your casts. What do
you think?

I didn't think of it that way, I would assume that cast(byte, int) would only error if the cast-from type is not int, not if the expression used the result in any way other than a byte.

But it does have appeal.

-Steve

Reply via email to