should int/short/byte implicitly cast to dchar/wchar/char?
Steven Schveighoffer
schveiguy at yahoo.com
Mon May 16 13:13:46 PDT 2011
On Mon, 16 May 2011 16:06:34 -0400, KennyTM~ <kennytm at gmail.com> wrote:
> The compiler blindly accepts an 'int' as a 'dchar' argument, not -1. For
> instance,
>
> void main(){
> string ret;
> ret ~= 0x10ffff; // ok
> ret ~= 0x110000; // Error: cannot append type int to type string
> int i = 0x110000;
> ret ~= i; // ok, but should fail at compile time
> }
>
> the issue is also that an 'int' shouldn't be implicitly convertible to a
> 'dchar'.
Yes, you are completely right, it seems the compiler isn't inconsistent
WRT string appending and calling a normal function, it fails/passes the
same way, depending on whether the argument passed is a variable or a
literal.
So it seems the correct solution is for it to do range propagation, and
refuse to compile implicit casts where it results in an invalid dchar
(which includes the case where the int could be anything).
Sorry for the confusion, I thought I tested one thing, and actually tested
another, yada yada...
-Steve
More information about the Digitalmars-d
mailing list