A small Reddit thread regarding if unused variables and imports are better as errors or warnings: http://www.reddit.com/r/programming/comments/d3emo
In my opinion in this case errors are too much, warning are enough. Few situations for those warnings: - warning for unused variables (as GC, C# and other compilers do); - warning when a variable get used in some ways, and then its last assignment gets unused (done by a kind of C compiler); - unused imports (useful to keep code clean and remove unnecessary module dependences); - unused functions (but this is harder to do in a clean way in a language that has templates, so this may be omitted). Among those four warnings the most useful are the first two ones. In C once the unused variable warning of GCC has found at compile time a bug in my code (I did forget to increment that variable in the loop). So I have loved this warning ever since. Bye, bearophile