On the D Blog: A Gas Dynamics Toolkit in D

H. S. Teoh hsteoh at quickfur.ath.cx
Wed Feb 2 17:42:47 UTC 2022


On Wed, Feb 02, 2022 at 11:40:09AM -0500, Steven Schveighoffer via Digitalmars-d-announce wrote:
[...]
> D error messages can be bad. Especially when you are using lots of
> range wrappers. It all depends on what you use.
[...]

True. I've had my fair share of WAT moments with D error messages.

The worst IME are the ones coming from nested templates with lambdas,
like when you use lots of range wrappers like you said. No thanks to the
way dmd handles speculative compilation by gagging errors, a single typo
in a lambda causes an error that gets gagged, then no thanks to D's
equivalent of SFINAE the compiler then proceeds to attempt to
instantiate completely unintended, unrelated template overloads, going
deep into a rabbit hole that ultimately ends with an obscure error deep
inside a totally unrelated overload that doesn't give the slightest clue
as to what the real error is.

I've often had to resort to manually instantiating templates, or worse,
rewriting the lambda as an actual function and instantiating it
manually, in order to discern what the error is. There's of course
-verrors=spec, but that ungags ALL gagged errors, which in a non-trivial
program results in the actual error being drowned in an ocean of totally
unrelated errors.


> But C++ is a low bar ;)
[...]

On Wed, Feb 02, 2022 at 04:40:04PM +0000, Adam D Ruppe via Digitalmars-d-announce wrote:
[...]
> No incompatibility there: "better than C++" is a very low bar.

No argument there. :-P


T

-- 
Heads I win, tails you lose.


More information about the Digitalmars-d-announce mailing list