"Steven Schveighoffer" <schvei...@yahoo.com> wrote in message news:op.vyge30ogeav7ka@localhost.localdomain... > On Sat, 09 Jul 2011 13:28:25 -0400, Nick Sabalausky <a@a.a> wrote: > >> "Steven Schveighoffer" <schvei...@yahoo.com> wrote in message >> news:op.vybq4xkkeav7ka@localhost.localdomain... >>> On Fri, 08 Jul 2011 18:45:58 -0400, Andrej Mitrovic >>> <andrej.mitrov...@gmail.com> wrote: >>> >>>> This is just an observation, not a question or anything. >>>> >>>> void main() >>>> { >>>> enum width = 100; >>>> double step = 1 / width; >>>> >>>> writeln(step); // 0 >>>> } >>>> >>>> I've just had this bug in my code. I forgot to make either width or 1 >>>> a floating-point type. IOW, I didn't do this: >>>> >>>> void main() >>>> { >>>> enum width = 100.0; >>>> double step = 1 / width; // or .1 >>>> >>>> writeln(step); // now 0.01 >>>> } >>>> >>>> This seems like a very easy mistake to make. But I know the compiler >>>> is probably powerless to do anything about it. It has an expression >>>> resulting in an int at the RHS, and it can easily cast this to a >>>> double since there's no obvious loss of precision when casting >>>> int->double. >>> >>> BTW, this is definitely not something the compiler can determine. You >>> may >>> actually *want* to have integer division then convert to a double. >>> >>> So a lint tool would be perfect for this -- it cannot be an error, and >>> warnings don't exist in D. >>> >> >> Yea they do: dmd -wi > > Hm... I didn't know about that switch, I thought warnings were enabled > with -w and that made them errors. > > I suppose you could stick this in there. >
-wi: Enable warnings -w: Enable warnings and treat them as errors Didn't used to have -wi, but I bugged the hell out of Walter about it. ;) The --help screen describes -w and -wi differently than above, but the above is more accurate.