www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - wchar assignments

reply Thomas Kuehne <thomas-dloop kuehne.thisisspam.cn> writes:
Constant assignments to wchar allow values greater than wchar.max.
http://svn.kuehne.cn/dstress/nocompile/wchar_04.d

Constant assignments to wchar allow values smaller than wchar.min.
http://svn.kuehne.cn/dstress/nocompile/wchar_06.d

Thomas
Nov 17 2004
parent reply Thomas Kuehne <thomas-dloop kuehne.thisisspam.cn> writes:
Thomas Kuehne schrieb am Wed, 17 Nov 2004 09:45:12 +0100:
 Constant assignments to wchar allow values greater than wchar.max.
 http://svn.kuehne.cn/dstress/nocompile/wchar_04.d

 Constant assignments to wchar allow values smaller than wchar.min.
 http://svn.kuehne.cn/dstress/nocompile/wchar_06.d
dchar has the same problems. http://svn.kuehne.cn/dstress/nocompile/dchar_04.d http://svn.kuehne.cn/dstress/nocompile/dchar_06.d Thomas
Nov 17 2004
parent reply "Walter" <newshound digitalmars.com> writes:
I don't believe this is a bug. It is analogous to:

    byte b = 1000;

which is allowed as well.

"Thomas Kuehne" <thomas-dloop kuehne.thisisspam.cn> wrote in message
news:n9ur62-jt9.ln1 kuehne.cn...
 Thomas Kuehne schrieb am Wed, 17 Nov 2004 09:45:12 +0100:
 Constant assignments to wchar allow values greater than wchar.max.
 http://svn.kuehne.cn/dstress/nocompile/wchar_04.d

 Constant assignments to wchar allow values smaller than wchar.min.
 http://svn.kuehne.cn/dstress/nocompile/wchar_06.d
dchar has the same problems. http://svn.kuehne.cn/dstress/nocompile/dchar_04.d http://svn.kuehne.cn/dstress/nocompile/dchar_06.d Thomas
Nov 19 2004
next sibling parent reply Thomas Kuehne <thomas-dloop kuehne.thisisspam.cn> writes:
Can you please comment on following findings?

fail: 
	short A = 32768;	// short.max+1
	byte  B = 128;		// byte.max+1
	char  C = 256;		// char.max+1
pass:
	short a = -32769;	// short.min-1
	byte  b = -129;		// byte.min-1
	char  c = -1;		// char.min-1
	wchar D = 655536;	// wchar.max+1
	wchar d = -1;		// wchar.min-1
	dchar E = 1114112;	// dchar.max+1
	dchar e = -1;		// dchar.min-1

The only documentation I found for this was "lex.html".

In fact some funny consequences occur. According to the integer
resolution table "-1" is not considered to be an integer literal
- e.g. ints have a range from 0 to int.max. This explains why no lower
borders are checked. But why are the upper borders of short, byte and
char checked where as neither (d/w)char's upper nor lower border is
checked?

Just for clarification: I am only talking about constant assignments
known at compile time, not about any overflow issues during the
execution.

Thomas

Walter schrieb am Fri, 19 Nov 2004 14:18:28 -0800:
 I don't believe this is a bug. It is analogous to:

     byte b = 1000;

 which is allowed as well.

 Thomas Kuehne schrieb am Wed, 17 Nov 2004 09:45:12 +0100:
 Constant assignments to wchar allow values greater than wchar.max.
 http://svn.kuehne.cn/dstress/nocompile/wchar_04.d

 Constant assignments to wchar allow values smaller than wchar.min.
 http://svn.kuehne.cn/dstress/nocompile/wchar_06.d
dchar has the same problems. http://svn.kuehne.cn/dstress/nocompile/dchar_04.d http://svn.kuehne.cn/dstress/nocompile/dchar_06.d
Nov 19 2004
parent "Walter" <newshound digitalmars.com> writes:
I obviously need to clean this up.

"Thomas Kuehne" <thomas-dloop kuehne.thisisspam.cn> wrote in message
news:rra272-427.ln1 kuehne.cn...
 Can you please comment on following findings?

 fail:
 short A = 32768; // short.max+1
 byte  B = 128; // byte.max+1
 char  C = 256; // char.max+1
 pass:
 short a = -32769; // short.min-1
 byte  b = -129; // byte.min-1
 char  c = -1; // char.min-1
 wchar D = 655536; // wchar.max+1
 wchar d = -1; // wchar.min-1
 dchar E = 1114112; // dchar.max+1
 dchar e = -1; // dchar.min-1

 The only documentation I found for this was "lex.html".

 In fact some funny consequences occur. According to the integer
 resolution table "-1" is not considered to be an integer literal
 - e.g. ints have a range from 0 to int.max. This explains why no lower
 borders are checked. But why are the upper borders of short, byte and
 char checked where as neither (d/w)char's upper nor lower border is
 checked?

 Just for clarification: I am only talking about constant assignments
 known at compile time, not about any overflow issues during the
 execution.

 Thomas

 Walter schrieb am Fri, 19 Nov 2004 14:18:28 -0800:
 I don't believe this is a bug. It is analogous to:

     byte b = 1000;

 which is allowed as well.

 Thomas Kuehne schrieb am Wed, 17 Nov 2004 09:45:12 +0100:
 Constant assignments to wchar allow values greater than wchar.max.
 http://svn.kuehne.cn/dstress/nocompile/wchar_04.d

 Constant assignments to wchar allow values smaller than wchar.min.
 http://svn.kuehne.cn/dstress/nocompile/wchar_06.d
dchar has the same problems. http://svn.kuehne.cn/dstress/nocompile/dchar_04.d http://svn.kuehne.cn/dstress/nocompile/dchar_06.d
Nov 21 2004
prev sibling parent =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= <afb algonet.se> writes:
Walter wrote:

 I don't believe this is a bug. It is analogous to:
 
     byte b = 1000;
 
 which is allowed as well.
gdc 0.8 doesn't like that code: "cannot implicitly convert expression 1000 of type int to byte" --anders
Nov 21 2004