Thread overview
Inconsistent error/warning messages
Dec 31, 2009
Steve Teale
Dec 31, 2009
Walter Bright
Jan 01, 2010
Steve Teale
December 31, 2009
DMD/GCD (1.30) produce error/warning messages that are not consistent. For example, if there is an error, with DMD you see:

fixups.d(50): unrecognized declaration

but for a warning:

warning - fixups.d(37): Error: implicit conversion of expression (atoi(t)) of type long to int can cause loss of data

(GDC uses another colon and no parentheses for the line number.)

The first case, which is an error, does not contain the word error, but the second, which isn't, does.

I think this makes life difficult for IDEs that parse the compiler output. For example, in Code::Blocks, the file name in the message window appears as 'warning - fixups.d', the message is shown as an error, and the error/warning counts are incorrect. It also screws up the ability to click on the message and have the editor jump to the indicated line number, and marking of error/warning lines. There might be similar problems with debuggers.

The GCC C compiler in contrast produces error and warning messages as follows:

hello.c:13: error: expected expression before '}' token hello.c:13: warning: control reaches end of non-void function

Disambiguation and structure in this case are quite clear.

Also, many IDEs report both the number of errors and the number of warnings. This can't work with D and a message parsing IDE, since when you specify error reporting

dmd -w -c x.d
gdc -Wall -c x.d

if there are errors you only see the errors, even though there are preceding points in the code that should produce warnings. GCC C behaves the same in this respect, so it may be a hallowed tradition.

Are these bugs?

December 31, 2009
Steve Teale wrote:
> Are these bugs?

They should be put in bugzilla regardless.
January 01, 2010
Walter Bright Wrote:

> Steve Teale wrote:
> > Are these bugs?
> They should be put in bugzilla regardless.

Will do. Happy New Year Walter.