Quality of errors in DMD
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Fri Sep 2 11:06:08 PDT 2016
On Friday, 2 September 2016 at 14:26:37 UTC, Ethan Watson wrote:
> Can we have a serious discussion in here about the quality of
> DMD errors?
>
> I've been alternately a dog chasing its own tail, and a dog
> barking at a fire hydrant, chasing down errors deep in
> templated and mixin code over the last day. This has resulted
> in manually reducing templates and mixins by hand until I get
> to the root of the problem, which then results in submitting a
> bug and devising an ugly workaround.
>
> And then I get this one in some code:
>
> Assertion failure: '0' on line 1492 in file 'glue.c'
>
> The problem ended up being that a symbol tucked away in a
> template that itself was tucked away in a template was
> undefined, but it couldn't tell me that. Rather, it just
> assert(0)'d and terminated. Rather less helpfully, the only
> meaningful information it could give me at the assert point
> (Could it add to it further down the stack? Maybe?) was defined
> out because DMD wasn't in a debug build.
>
> Honestly, I find stuff like this in a compiler unacceptable.
> Using assert(0) as shorthand for an unexpected error is all
> fine and dandy until you put your product in the hands of the
> masses and they expect your program to at least give you some
> idea of what was going wrong rather than just crashing out in
> flames.
>
> So just for fun, I searched DMD for all instances of assert(0)
> in the code base.
>
> 830 matches in DMD 2.070.2.
>
> That's 830 possible places where the compiler will give the
> user virtually no help to track down what (if anything) they
> did wrong.
>
> DMD certainly isn't the only compiler guilty of this. The .NET
> compiler gives precisely no useful information if it encounters
> SSE types in C++ headers for example. But compared to MSVC,
> I've found the error reporting of DMD to be severely lacking.
> In most cases with MSVC, I have an error code that I can google
> for which is (sometimes) thoroughly documented. And thanks to
> being a widely used product, Stack Overflow usually gives me
> results that I can use in my sleuthing.
>
> I know I'm also seeing more errors than most because I'm doing
> the kind of code most people don't do. But I'm certainly of the
> opinion that searching for a compiler error code is far easier
> than trying to trick google in to matching the text of my error
> message.
ICEs like that are always, always compiler bugs. It would be good
if it said that in the message and told you to report it...
More information about the Digitalmars-d
mailing list