www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17424] New: Add useful warnings

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

          Issue ID: 17424
           Summary: Add useful warnings
           Product: D
           Version: D2
          Hardware: All
               URL: http://dlang.org/
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: eyal weka.io

I have debugged many bugs for many hours that would have been caught by a
simple warning in C or C++.

Here are a few warnings I'd really like to see when building D code.

* Unused parameter -- of course you should be able to say "intentionally
unused" (underscore prefix to name? a uda?)

* Unused imports -- this is super important to keep incremental compile times
down

* Copying a large value (more than given threshold) - when passing parameters,
in assignments, etc. Can always use explicit copy functions instead, pass by
ref, etc.

* Allocating a large value on the stack (more than given threshold) - very
useful for fibers with small stacks.

* Unused definitions/types: a function is not reachable by any non-private
definition -- some uda should allow overriding this

* Signed/unsigned comparisons

* Function is  nogc but not marked as such

* Function is pure but not marked as such

* Function is nothrow but not marked as such

* Function is const but not marked as such

* Code was determined to be dead (will never be executed)

* Use of implicitly initialized variable (for variables implicitly set to
.init), at least for floats/doubles where NaN is likely to be bug-prone.

* Use of voided variable (for variables init'd with =void)

* Constructor may throw - no automatic destruction will occur

* Conditional used is always true/false and compiled out -- must be able to
wash away known-good instances

It doesn't matter if they are opt-in warnings, opt-out/always errors, or a
separate compiler-library thing -- but ideally I wouldn't need to run all the
CTFE twice just to get my warnings.

--
May 23