diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2020-09-29 20:24:14 -0400 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2020-10-26 18:58:52 -0400 |
| commit | 51f8076403b69d803b1feb4624ba86a92417cdeb (patch) | |
| tree | 83b312b56ea1aa850a08a93127956fd67706791b /src | |
| parent | b3246e0cb10a6a32e8f652312985d36581f77c19 (diff) | |
| download | rust-51f8076403b69d803b1feb4624ba86a92417cdeb.tar.gz rust-51f8076403b69d803b1feb4624ba86a92417cdeb.zip | |
Add --fix support to `x.py clippy`
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/builder.rs | 4 | ||||
| -rw-r--r-- | src/bootstrap/check.rs | 28 | ||||
| -rw-r--r-- | src/bootstrap/flags.rs | 6 |
3 files changed, 24 insertions, 14 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index c0578dea1cd..a2759b205d7 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -371,7 +371,7 @@ impl<'a> Builder<'a> { tool::CargoMiri, native::Lld ), - Kind::Check | Kind::Clippy | Kind::Fix | Kind::Format => describe!( + Kind::Check | Kind::Clippy { .. } | Kind::Fix | Kind::Format => describe!( check::Std, check::Rustc, check::Rustdoc, @@ -540,7 +540,7 @@ impl<'a> Builder<'a> { let (kind, paths) = match build.config.cmd { Subcommand::Build { ref paths } => (Kind::Build, &paths[..]), Subcommand::Check { ref paths, all_targets: _ } => (Kind::Check, &paths[..]), - Subcommand::Clippy { ref paths } => (Kind::Clippy, &paths[..]), + Subcommand::Clippy { ref paths, .. } => (Kind::Clippy, &paths[..]), Subcommand::Fix { ref paths } => (Kind::Fix, &paths[..]), Subcommand::Doc { ref paths, .. } => (Kind::Doc, &paths[..]), Subcommand::Test { ref paths, .. } => (Kind::Test, &paths[..]), diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 443a490e342..c8363bbc7f7 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -7,9 +7,8 @@ use crate::tool::{prepare_tool_cargo, SourceType}; use crate::INTERNER; use crate::{ builder::{Builder, Kind, RunConfig, ShouldRun, Step}, - Subcommand, }; -use crate::{Compiler, Mode}; +use crate::{Compiler, Mode, Subcommand}; use std::path::PathBuf; #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -17,10 +16,17 @@ pub struct Std { pub target: TargetSelection, } -fn args(kind: Kind) -> Vec<String> { - match kind { - Kind::Clippy => vec!["--".to_owned(), "--cap-lints".to_owned(), "warn".to_owned()], - _ => Vec::new(), +/// Returns args for the subcommand itself (not for cargo) +fn args(builder: &Builder<'_>) -> Vec<String> { + if let Subcommand::Clippy { fix, .. } = builder.config.cmd { + let mut args = vec!["--".to_owned(), "--cap-lints".to_owned(), "warn".to_owned()]; + if fix { + args.insert(0, "--fix".to_owned()); + args.insert(0, "-Zunstable-options".to_owned()); + } + args + } else { + vec![] } } @@ -62,7 +68,7 @@ impl Step for Std { run_cargo( builder, cargo, - args(builder.kind), + args(builder), &libstd_stamp(builder, compiler, target), vec![], true, @@ -104,7 +110,7 @@ impl Step for Std { run_cargo( builder, cargo, - args(builder.kind), + args(builder), &libstd_test_stamp(builder, compiler, target), vec![], true, @@ -165,7 +171,7 @@ impl Step for Rustc { run_cargo( builder, cargo, - args(builder.kind), + args(builder), &librustc_stamp(builder, compiler, target), vec![], true, @@ -220,7 +226,7 @@ impl Step for CodegenBackend { run_cargo( builder, cargo, - args(builder.kind), + args(builder), &codegen_backend_stamp(builder, compiler, target, backend), vec![], true, @@ -278,7 +284,7 @@ macro_rules! tool_check_step { run_cargo( builder, cargo, - args(builder.kind), + args(builder), &stamp(builder, compiler, target), vec![], true, diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index 3834e50e3fa..dbfcf4df9b4 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -55,6 +55,7 @@ pub enum Subcommand { paths: Vec<PathBuf>, }, Clippy { + fix: bool, paths: Vec<PathBuf>, }, Fix { @@ -273,6 +274,9 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`", "bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); } + "clippy" => { + opts.optflag("", "fix", "automatically apply lint suggestions"); + } "doc" => { opts.optflag("", "open", "open the docs in a browser"); } @@ -513,7 +517,7 @@ Arguments: "check" | "c" => { Subcommand::Check { paths, all_targets: matches.opt_present("all-targets") } } - "clippy" => Subcommand::Clippy { paths }, + "clippy" => Subcommand::Clippy { paths, fix: matches.opt_present("fix") }, "fix" => Subcommand::Fix { paths }, "test" | "t" => Subcommand::Test { paths, |
