== Quote from Jonathan M Davis (jmdavisp...@gmail.com)'s article > On Sunday 18 July 2010 17:36:58 strtr wrote: > > > > I don't agree with this bug report because of two reasons. > > 1. Warnings are supposed to be warnings, not errors. If you want to see > > those warnings you'll use -w. > > What you probably want is for the dmd to have a -!w flag instead (warnings > > by default, disable with flag) > > 2. In this particular example, the problem is not that the warning isn't > > shown without -w, but that the warning is incorrect and scope(failure) > > shouldn't be able to catch the exception. > > > > Here is a smaller example of the same problem[D1]: > > ---- > > void main() > > { > > for(int i=0;i<10;i++) > > { > > scope(failure){ > > writefln("continue"); > > continue; > > } > > //scope(failure) writefln("fail"); > > writefln(i); > > throw new Exception(format(i)); > > } > > } > > ---- > > > > Enable warnings and you'll get the same unreachable warning, but which > > statement is unreachable as when you compile this without -w it happily > > prints all ten i's and continues. > With any other compiler that I've ever used, it prints warnings normally. It > may > or may not have a way to make then errors, but it will print them normally and > compile with them. dmd won't display warnings with -w, but when you use -w, it > instantly makes them errors. There needs to be a middle ground where warnings > are reported and not flagged as errors.
I would use this middle ground by default, if available. > As for unreachable code being an error, that's debatable. Obviously, dmd > doesn't > consider it one. Personally, I hate the fact that javac does with Java. I > _want_ > that to be a warning. I'd like to be warned about it, and I don't want it to > be > in production code, but it happens often enough when developing, that I don't > want to have to fix it to get code to compile. As such, a warning makes > perfect > sense. I'm not sure whether you missed my point or are simple thinking out loud about unreachable code being a warning. My point was that the unreachable warning was wrong as there is no unreachable code. > However, when you combine that with the fact that dmd doesn't even report > warnings unless it treats them as errors, it becomes easy to miss. > - Jonathan M Davis