pu$�le
Jonathan M Davis
jmdavisprog at gmail.com
Sun Jul 18 18:51:31 PDT 2010
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.
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.
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
More information about the Digitalmars-d-learn
mailing list