Currently, the compiler implements a lot of useful linting options which help to maintain the quality of the code.
Identifying unused values, methods, implicits, etc; is one of the most useful ones (IMHO).
However, right now, it has the restriction that public things are always considered used even if they are never called in the whole codebase.
Of course, this makes all the sense for libraries because those are probably intended to be called by downstream users. But for applications, those are probably legacy pieces of code that should have been deleted before.
Thus I got the idea that maybe it would be good if the compiler could be configured in a way such that it understands it is compiling an app and not an application, and as such things like the linters (and maybe optimizers and other things) could behave differently.
I understand that this is probably very complex, so I am opening this just to put the point in the table and see if other users have similar (or opposite) feelings towards this idea and hopefully pick the interest of a contributor.
Another point that increments the complexity of this would be multi-module projects and the interaction between source code and test code; e.g. Should not warn in something that is only called in another module, but should warn if it is only called on tests.