From 2817be94cc7f2cf4968b6c49465ac5bf59c02216 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Thu, 10 Jun 2021 20:39:05 -0700 Subject: [PATCH 1/3] Update rustfix for compiletest. --- Cargo.lock | 2 +- src/test/ui/parser/expr-as-stmt.fixed | 1 + src/test/ui/parser/expr-as-stmt.rs | 1 + src/test/ui/parser/expr-as-stmt.stderr | 18 +++++++++--------- src/tools/compiletest/Cargo.toml | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc8b79342b270..ec9750ca94fc7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -672,7 +672,7 @@ dependencies = [ "libc", "miow 0.3.6", "regex", - "rustfix 0.5.1", + "rustfix 0.6.0", "serde", "serde_json", "tracing", diff --git a/src/test/ui/parser/expr-as-stmt.fixed b/src/test/ui/parser/expr-as-stmt.fixed index 02816ef2791b0..c217ab9774fd2 100644 --- a/src/test/ui/parser/expr-as-stmt.fixed +++ b/src/test/ui/parser/expr-as-stmt.fixed @@ -1,4 +1,5 @@ // run-rustfix +// rustfix-only-machine-applicable #![allow(unused_variables)] #![allow(dead_code)] #![allow(unused_must_use)] diff --git a/src/test/ui/parser/expr-as-stmt.rs b/src/test/ui/parser/expr-as-stmt.rs index 93baa8278f890..b04025faaec63 100644 --- a/src/test/ui/parser/expr-as-stmt.rs +++ b/src/test/ui/parser/expr-as-stmt.rs @@ -1,4 +1,5 @@ // run-rustfix +// rustfix-only-machine-applicable #![allow(unused_variables)] #![allow(dead_code)] #![allow(unused_must_use)] diff --git a/src/test/ui/parser/expr-as-stmt.stderr b/src/test/ui/parser/expr-as-stmt.stderr index 09a6d7cbeb176..067b7edc77094 100644 --- a/src/test/ui/parser/expr-as-stmt.stderr +++ b/src/test/ui/parser/expr-as-stmt.stderr @@ -1,5 +1,5 @@ error: expected expression, found `+` - --> $DIR/expr-as-stmt.rs:7:9 + --> $DIR/expr-as-stmt.rs:8:9 | LL | {2} + {2} | --- ^ expected expression @@ -7,7 +7,7 @@ LL | {2} + {2} | help: parentheses are required to parse this as an expression: `({2})` error: expected expression, found `+` - --> $DIR/expr-as-stmt.rs:12:9 + --> $DIR/expr-as-stmt.rs:13:9 | LL | {2} + 2 | --- ^ expected expression @@ -15,7 +15,7 @@ LL | {2} + 2 | help: parentheses are required to parse this as an expression: `({2})` error: expected expression, found `+` - --> $DIR/expr-as-stmt.rs:18:12 + --> $DIR/expr-as-stmt.rs:19:12 | LL | { 42 } + foo; | ------ ^ expected expression @@ -23,7 +23,7 @@ LL | { 42 } + foo; | help: parentheses are required to parse this as an expression: `({ 42 })` error: expected expression, found `>` - --> $DIR/expr-as-stmt.rs:31:7 + --> $DIR/expr-as-stmt.rs:32:7 | LL | } > 0 | ^ expected expression @@ -36,7 +36,7 @@ LL | }) > 0 | error[E0308]: mismatched types - --> $DIR/expr-as-stmt.rs:7:6 + --> $DIR/expr-as-stmt.rs:8:6 | LL | {2} + {2} | ^ expected `()`, found integer @@ -47,7 +47,7 @@ LL | {return 2;} + {2} | ^^^^^^ ^ error[E0308]: mismatched types - --> $DIR/expr-as-stmt.rs:12:6 + --> $DIR/expr-as-stmt.rs:13:6 | LL | {2} + 2 | ^ expected `()`, found integer @@ -58,7 +58,7 @@ LL | {return 2;} + 2 | ^^^^^^ ^ error[E0308]: mismatched types - --> $DIR/expr-as-stmt.rs:18:7 + --> $DIR/expr-as-stmt.rs:19:7 | LL | { 42 } + foo; | ^^ expected `()`, found integer @@ -69,7 +69,7 @@ LL | { return 42; } + foo; | ^^^^^^ ^ error[E0308]: mismatched types - --> $DIR/expr-as-stmt.rs:24:7 + --> $DIR/expr-as-stmt.rs:25:7 | LL | { 3 } * 3 | ^ expected `()`, found integer @@ -80,7 +80,7 @@ LL | { return 3; } * 3 | ^^^^^^ ^ error[E0614]: type `{integer}` cannot be dereferenced - --> $DIR/expr-as-stmt.rs:24:11 + --> $DIR/expr-as-stmt.rs:25:11 | LL | { 3 } * 3 | ----- ^^^ diff --git a/src/tools/compiletest/Cargo.toml b/src/tools/compiletest/Cargo.toml index f61d61e8f9de2..771e36e4d2c49 100644 --- a/src/tools/compiletest/Cargo.toml +++ b/src/tools/compiletest/Cargo.toml @@ -14,7 +14,7 @@ tracing-subscriber = { version = "0.2", default-features = false, features = ["f regex = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -rustfix = "0.5.0" +rustfix = "0.6.0" lazy_static = "1.0" walkdir = "2" glob = "0.3.0" From f2ef8bf776b7fd8aed8654bbad3c2a8b042a89a7 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Thu, 10 Jun 2021 20:40:52 -0700 Subject: [PATCH 2/3] compiletest: display the error if rustfix fails --- src/tools/compiletest/src/runtest.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 02dffaab7b620..6a1faee1d8e09 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -3328,8 +3328,11 @@ impl<'test> TestCx<'test> { }, ) .unwrap(); - let fixed_code = apply_suggestions(&unfixed_code, &suggestions).unwrap_or_else(|_| { - panic!("failed to apply suggestions for {:?} with rustfix", self.testpaths.file) + let fixed_code = apply_suggestions(&unfixed_code, &suggestions).unwrap_or_else(|e| { + panic!( + "failed to apply suggestions for {:?} with rustfix: {}", + self.testpaths.file, e + ) }); errors += self.compare_output("fixed", &fixed_code, &expected_fixed); From 35bf1becaac46ae79c92ee8b87a05b02687eeae7 Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Sun, 20 Jun 2021 16:36:26 -0700 Subject: [PATCH 3/3] tidy: Check that cargo and compiletest share the same rustfix. --- src/tools/tidy/src/deps.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/tools/tidy/src/deps.rs b/src/tools/tidy/src/deps.rs index 06cec1964a080..ea587210b4f4e 100644 --- a/src/tools/tidy/src/deps.rs +++ b/src/tools/tidy/src/deps.rs @@ -287,6 +287,7 @@ pub fn check(root: &Path, cargo: &Path, bad: &mut bool) { check_exceptions(&metadata, EXCEPTIONS, runtime_ids, bad); check_dependencies(&metadata, PERMITTED_DEPENDENCIES, RESTRICTED_DEPENDENCY_CRATES, bad); check_crate_duplicate(&metadata, FORBIDDEN_TO_HAVE_DUPLICATES, bad); + check_rustfix(&metadata, bad); // Check rustc_codegen_cranelift independently as it has it's own workspace. let mut cmd = cargo_metadata::MetadataCommand::new(); @@ -547,3 +548,22 @@ fn normal_deps_of_r<'a>( normal_deps_of_r(resolve, &dep.pkg, result); } } + +fn check_rustfix(metadata: &Metadata, bad: &mut bool) { + let cargo = pkg_from_name(metadata, "cargo"); + let compiletest = pkg_from_name(metadata, "compiletest"); + let cargo_deps = deps_of(metadata, &cargo.id); + let compiletest_deps = deps_of(metadata, &compiletest.id); + let cargo_rustfix = cargo_deps.iter().find(|p| p.name == "rustfix").unwrap(); + let compiletest_rustfix = compiletest_deps.iter().find(|p| p.name == "rustfix").unwrap(); + if cargo_rustfix.version != compiletest_rustfix.version { + tidy_error!( + bad, + "cargo's rustfix version {} does not match compiletest's rustfix version {}\n\ + rustfix should be kept in sync, update the cargo side first, and then update \ + compiletest along with cargo.", + cargo_rustfix.version, + compiletest_rustfix.version + ); + } +}