digitalmars.D.bugs - [Bug 33] New: No short-circuit evaluation for compile-time expressions?
- d-bugmail puremagic.com (27/27) Mar 10 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=33
- d-bugmail puremagic.com (18/18) Mar 13 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=33
- Thomas Kuehne (15/23) Mar 21 2006 -----BEGIN PGP SIGNED MESSAGE-----
- d-bugmail puremagic.com (9/9) Apr 28 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=33
http://d.puremagic.com/bugzilla/show_bug.cgi?id=33
Summary: No short-circuit evaluation for compile-time
expressions?
Product: D
Version: 0.149
Platform: PC
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: sean f4.ca
I think this is arguably not a bug in the same way that compile-time "?:"
expressions evaluate both their arguments regardless of which is selected, but
it's definately non-intuitive:
C:\code\d\bugs>type 149_2.d
import std.c.stdio;
void main()
{
static if( int.mangleof.length > 1 && int.mangleof[1] == 'x' )
printf( "'x' as second char\n" );
}
C:\code\d\bugs>dmd 149_2.d
149_2.d(5): array index [1] is outside array bounds [0 .. 1]
C:\code\d\bugs>
--
Mar 10 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=33
Definitely a bug -- but maybe not in &&. This example compiles:
void main()
{
const char [] s = int.mangleof;
static if( s.length > 1 && s[1] == 'x' )
printf( "'x' as second char\n" );
}
And this one gives a quite bizarre error message:
void main()
{
const char [] s = (int*).mangleof;
static if( s.length > 1 && s[2] == 'x' )
printf( "'x' as second char\n" );
}
something about TOK58 doesn't evaluate to a boolean.
--
Mar 13 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
d-bugmail puremagic.com schrieb am 2006-03-13:
And this one gives a quite bizarre error message:
void main()
{
const char [] s = (int*).mangleof;
static if( s.length > 1 && s[2] == 'x' )
printf( "'x' as second char\n" );
}
something about TOK58 doesn't evaluate to a boolean.
The code above is buggy. s="ab" will result in an ArrayBoundsError.
Added to DStress
http://dstress.kuehne.cn/run/m/mangleof_15_A.d
http://dstress.kuehne.cn/run/m/mangleof_15_B.d
http://dstress.kuehne.cn/run/m/mangleof_15_C.d
http://dstress.kuehne.cn/run/m/mangleof_15_D.d
Thomas
-----BEGIN PGP SIGNATURE-----
iD8DBQFEH+AF3w+/yD4P9tIRAic1AKCSrOmy1GOb0Lsry6wfLQ2H7b/IFQCgvDT9
BPkzHqg8uz8ZkR+y3x+WD3g=
=dpwQ
-----END PGP SIGNATURE-----
Mar 21 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=33
bugzilla digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
Fixed 0.155
--
Apr 28 2006









Thomas Kuehne <thomas-dloop kuehne.cn> 