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