about summary refs log tree commit diff
path: root/clippy_dev/src/fmt.rs
AgeCommit message (Collapse)AuthorLines
2020-01-30Move project_root function to clippy_dev/src/lib.rsPhilipp Hansch-25/+3
This allows us to use the method in both `fmt.rs` and `lib.rs` in multiple places. The downside is that we panic inside the method now, instead of using the error handling in `fmt.rs`. We may want to centralize the error handling for clippy_dev at some point, though.
2020-01-30Deprecate util/dev in favor of cargo aliasPhilipp Hansch-1/+1
If you've been using `./util/dev` before, this now becomes `cargo dev`. The key part of this change is found in `.cargo/config`. This means one less shell script and a bit more cross-platform support for contributors.
2019-10-08Revert "Workaround cargo bug on Windows"Shotaro Yamada-12/+3
This reverts commit 248251b3b26c5f21e2c2f5bfa5d85cc17b13fc05. This reverts commit 20b73514395bb442fb16ce913b6c2b3965ff3156.
2019-10-04Rollup merge of #4509 - sinkuu:redundant_clone_fix, r=llogiqPhil Hansch-4/+1
Fix false-positive of redundant_clone and move to clippy::perf This PR introduces dataflow analysis to `redundant_clone` lint to filter out borrowed variables, which had been incorrectly detected. Depends on https://github.com/rust-lang/rust/pull/64207. changelog: Moved `redundant_clone` lint to `perf` group # What this lint catches ## `clone`/`to_owned` ```rust let s = String::new(); let t = s.clone(); ``` ```rust // MIR _1 = String::new(); _2 = &_1; _3 = clone(_2); // (*) ``` We can turn this `clone` call into a move if 1. `_2` is the sole borrow of `_1` at the statement `(*)` 2. `_1` is not used hereafter ## `Deref` + type-specific `to_owned` method ```rust let s = std::path::PathBuf::new(); let t = s.to_path_buf(); ``` ```rust // MIR _1 = PathBuf::new(); _2 = &1; _3 = call deref(_2); _4 = _3; // Copies borrow StorageDead(_2); _5 = Path::to_path_buf(_4); // (*) ``` We can turn this `to_path_buf` call into a move if 1. `_3` `_4` are the sole borrow of `_1` at `(*)` 2. `_1` is not used hereafter # What this PR introduces 1. `MaybeStorageLive` that determines whether a local lives at a particular location 2. `PossibleBorrowerVisitor` that constructs [`TransitiveRelation`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_data_structures/transitive_relation/struct.TransitiveRelation.html) of possible borrows, e.g. visiting `_2 = &1; _3 = &_2:` will result in `_3 -> _2 -> _1` relation. Then `_3` and `_2` will be counted as possible borrowers of `_1` in the sole-borrow analysis above.
2019-10-04Use home::cargo_homeShotaro Yamada-1/+1
2019-10-04Workaround cargo bug on WindowsShotaro Yamada-3/+12
2019-10-03Test fixesShotaro Yamada-4/+1
2019-08-01Merge branch 'master' into dev-fmt-20190728Michael Wright-2/+2
2019-07-31Update all the code to pass the updated `use_self` lint.Jakub Wieczorek-2/+2
One struct required a temporary `#[allow(dead_code)]` annotation due to a bug in the Rust compiler: https://github.com/rust-lang/rust/issues/63151.
2019-07-28dev-fmt: better error handlingMichael Wright-0/+29
Check if rustfmt is installed at the start and exit if it isn't.
2019-07-11Avoid rustfmt bug on WindowsMichael Wright-1/+5
2019-07-07Add dev fmt subcommandMichael Wright-0/+167