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