https://issues.dlang.org/show_bug.cgi?id=17424

--- Comment #4 from Eyal <e...@weka.io> ---
(In reply to Jonathan M Davis from comment #2)
> (In reply to greenify from comment #1)
> > Great idea. This is one of the areas where D is definitely behind other
> > languages.
> > IIRC Walter believes that the compiler isn't a linter, so if I am not
> > mistaken only warnings with minimal or zero overhead will be merged.
> 
> His take on it is that warnings are a sign that folks couldn't agree on what
> was right or wrong in the language. He tends to think that something should
> either be an error or not (and I agree with him). But the issue of warnings
> has been discussed many times in the newsgroup, and I really don't think
> that many are going to be added to the compiler. And the fact that dmd
> stupidly has -w makes them that much worse because of how that affects
> compile-time introspection.

And folks indeed can't agree, and for good reason! Different people assign
different importance to correctness vs. convenience.

I agree that "warnings" should always actually be errors (-Werror) - but we
will never reach consensus on what the set of warnings should actually be. And
of course, they shouldn't affect __traits(compiles, ...) and is(typeof(..)).

If someone uses D for small <3-5KLOC projects, where a build-test-debug-cycle
is 10 seconds and a bug is a minor nuisance, of course he wants convenience.
Emphasis on correctness is not worth the hassle.

We use D for a large project, with a much much slower build-test-debug-cycle.
Bugs easily cost us hours. Detected late, they can cost us days. Undetected,
they can be disastrous.

Our trade-offs are different, so there is no one-size-fits-all. And this is why
a language that wants to cater to both of these audiences should have flags.

> Ultimately though, the big problem with warnings is that if you're doing
> your job right, you fix them all (if you don't, you just end up with a big
> pile of warnings that get ignored and so you miss whatever value they do
> provide), and so you might as well either make them errors or not warn about
> them at all. And it gets _very_ annoying when the compiler warns about
> something that shouldn't need to be changed. Really, anything that's going
> to be optional makes far more sense in a linter.

I don't want multiple tools to spend time CTFE'ing my code and increase an
already long debug cycle.

Perhaps reframing the discussion from "warnings" to "optional errors" is
better.

> _Best_ case,
> you're stuck "fixing" all kinds of stuff that isn't actually wrong so that
> you don't have any warnings, 

This is the case for me everywhere I had the ability to set the warnings policy
(-W<kitchen sink> -Werror). This is a *cheap* price to pay, compared to a
single unexpected week lost to a completely unnecessary bug.

> but more often, you end up with tons of
> warnings that no one pays attention to. Having at tool that can warn about
> potential problems has real value, but I don't think that it's appropriate
> for the compiler to be doing it.

Agreed. That's why "optional errors" is how I should have framed it, and not
"warnings".

> Walter is also very much against additional compiler flags. So, I think that
> you're going to have a hard time convincing him that this is a good idea.
> Having the compiler as a library as has been discussed would make it easier
> to write a linter, but based on past discussions on this topic, I think that
> it's pretty clear that the vast majority of these suggestions will never be
> compiler warnings even if they make a lot of good sense for a linter.

One-size fits all is going to be bad for one group or the other. Compiler flags
are bad for the compiler's manpage.

--

Reply via email to