digitalmars.D.bugs - [Issue 17424] New: Add useful warnings
- via Digitalmars-d-bugs (44/44) May 23 2017 https://issues.dlang.org/show_bug.cgi?id=17424
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 2017