diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-10-23 05:28:24 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-23 05:28:24 +0200 |
| commit | 1782d1333cbe35aba7b4326534e8263041b7dac1 (patch) | |
| tree | e5cc87ebda630c474a2bc868b92c30b7ec24f4f2 | |
| parent | 8fb194c86f100a443b6e637f0ff8e4c0148a4f05 (diff) | |
| parent | 65b3c853178b04c5cbe41f26e6a1b1b90d7b8cc6 (diff) | |
| download | rust-1782d1333cbe35aba7b4326534e8263041b7dac1.tar.gz rust-1782d1333cbe35aba7b4326534e8263041b7dac1.zip | |
Rollup merge of #90070 - llogiq:compiletest-config-edition, r=Mark-Simulacrum
Add edition configuration to compiletest This allows the compiletest configuration to set a default edition that can still be overridden with header annotations. Doing this will make it far easier for clippy to get our tests to the newest edition. r? ```@Manishearth```
| -rw-r--r-- | src/tools/compiletest/src/common.rs | 3 | ||||
| -rw-r--r-- | src/tools/compiletest/src/header.rs | 6 | ||||
| -rw-r--r-- | src/tools/compiletest/src/main.rs | 4 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index cd0a56d08d8..82fe790a576 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -349,6 +349,9 @@ pub struct Config { /// The current Rust channel pub channel: String, + /// The default Rust edition + pub edition: Option<String>, + // Configuration for various run-make tests frobbing things like C compilers // or querying about various LLVM component information. pub cc: String, diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index efd85502799..98d1ee19f69 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -222,6 +222,7 @@ impl TestProps { /// `//[foo]`), then the property is ignored unless `cfg` is /// `Some("foo")`. fn load_from(&mut self, testfile: &Path, cfg: Option<&str>, config: &Config) { + let mut has_edition = false; if !testfile.is_dir() { let file = File::open(testfile).unwrap(); @@ -240,6 +241,7 @@ impl TestProps { if let Some(edition) = config.parse_edition(ln) { self.compile_flags.push(format!("--edition={}", edition)); + has_edition = true; if edition == "2021" { self.compile_flags.push("-Zunstable-options".to_string()); } @@ -391,6 +393,10 @@ impl TestProps { } } } + + if let (Some(edition), false) = (&config.edition, has_edition) { + self.compile_flags.push(format!("--edition={}", edition)); + } } fn update_fail_mode(&mut self, ln: &str, config: &Config) { diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 87aba8c5d32..58cde108b33 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -147,7 +147,8 @@ pub fn parse_config(args: Vec<String>) -> Config { ) .optflag("", "force-rerun", "rerun tests even if the inputs are unchanged") .optflag("h", "help", "show this message") - .reqopt("", "channel", "current Rust channel", "CHANNEL"); + .reqopt("", "channel", "current Rust channel", "CHANNEL") + .optopt("", "edition", "default Rust edition", "EDITION"); let (argv0, args_) = args.split_first().unwrap(); if args.len() == 1 || args[1] == "-h" || args[1] == "--help" { @@ -282,6 +283,7 @@ pub fn parse_config(args: Vec<String>) -> Config { rustfix_coverage: matches.opt_present("rustfix-coverage"), has_tidy, channel: matches.opt_str("channel").unwrap(), + edition: matches.opt_str("edition"), cc: matches.opt_str("cc").unwrap(), cxx: matches.opt_str("cxx").unwrap(), |
