Description
The first big goal for rustfmt should be parity with make tidy
, i.e., we do all the checks that make tidy
does and is usable as part of the rust distro build process. This needs three things - feature parity, non-bugginess and configurability.
Feature parity
Need to find out exactly what make tidy
does, but things that come to mind are: warnings on cfg(stage0), checking for TODO, checking licenses.
Non-bugginess
In order to be part of the build process, we need to be able to run rustfmt on the whole repo without breaking anything. This will need lots of testing and some big PRs to the Rust repo for the initial reformatting.
To make this tractable, we'll want to turn rustfmt on one crate at a time and keep the make tidy step until the end (it might make sense to keep make tidy forever for the test suite, although it would be nice to kill it.
Configurability
There will be bugs, we need to be able to turn rustfmt off for some sections of a file until rustfmt can be fixed. We'll also want to evolve rustfmt (make tidy parity does not (and should not) require all formatting rules are enforced, and we'll want to add more rules as time goes by), we'll want to be able to feature gate some features of rustfmt so that they can be tested without applying to the rust repo or forking rustfmt.
We'll also need configurability for some of the make tidy
features, for example license checking, since different projects will have different licences.