digitalmars.D.bugs - [Issue 7604] New: statically disallow shift amounts provably outside the valid range
- d-bugmail puremagic.com (29/29) Feb 28 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7604
- d-bugmail puremagic.com (21/21) Sep 18 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7604
http://d.puremagic.com/issues/show_bug.cgi?id=7604 Summary: statically disallow shift amounts provably outside the valid range Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: timon.gehr gmx.ch --- Comment #0 from timon.gehr gmx.ch 2012-02-28 04:30:23 PST --- This code is rejected: void main(){ int y = 1<<32; } But this goes through: void main(){ int x; int y = 1<<32+(x&1); } Since the semantic analysis step already requires the compiler to be able to compute value ranges, it would make sense to make any shift where the range of the shift amount does not overlap [0..,31] a compile time error. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 28 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7604 Ryuichi OHORI <r.97all gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |r.97all gmail.com --- Comment #1 from Ryuichi OHORI <r.97all gmail.com> 2012-09-18 21:24:17 PDT --- In my opinion, if compiler rejects int << 32, ulong >> 64, ..., this also should be a runtime error: // http://dpaste.dzfl.pl/689920e3 void main() { ulong x = ulong.max; foreach (i; 0..64) { (x >> (64 - i)).writeln(); } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2012