Auto merge of #86210 - ehuss:rustfix-update, r=Mark-Simulacrum

Rustfix update

This updates to rustfix 0.6.0. One of the key changes here is https://github.com/rust-lang/rustfix/pull/195 which changes rustfix to apply multi-part suggestions. One of the tests needs to updated because there are some overlapping suggestions which rustfix cannot handle. The solution is to only apply the machine-applicable suggestions to avoid the overlapping issue.

This also includes a minor change to compiletest to provide better error messages with rustfix.
This commit is contained in:
bors 2021-06-21 12:21:19 +00:00
commit 6a5b97adb4
7 changed files with 38 additions and 13 deletions

View File

@ -673,7 +673,7 @@ dependencies = [
"libc", "libc",
"miow 0.3.6", "miow 0.3.6",
"regex", "regex",
"rustfix 0.5.1", "rustfix 0.6.0",
"serde", "serde",
"serde_json", "serde_json",
"tracing", "tracing",

View File

@ -1,4 +1,5 @@
// run-rustfix // run-rustfix
// rustfix-only-machine-applicable
#![allow(unused_variables)] #![allow(unused_variables)]
#![allow(dead_code)] #![allow(dead_code)]
#![allow(unused_must_use)] #![allow(unused_must_use)]

View File

@ -1,4 +1,5 @@
// run-rustfix // run-rustfix
// rustfix-only-machine-applicable
#![allow(unused_variables)] #![allow(unused_variables)]
#![allow(dead_code)] #![allow(dead_code)]
#![allow(unused_must_use)] #![allow(unused_must_use)]

View File

@ -1,5 +1,5 @@
error: expected expression, found `+` error: expected expression, found `+`
--> $DIR/expr-as-stmt.rs:7:9 --> $DIR/expr-as-stmt.rs:8:9
| |
LL | {2} + {2} LL | {2} + {2}
| --- ^ expected expression | --- ^ expected expression
@ -7,7 +7,7 @@ LL | {2} + {2}
| help: parentheses are required to parse this as an expression: `({2})` | help: parentheses are required to parse this as an expression: `({2})`
error: expected expression, found `+` error: expected expression, found `+`
--> $DIR/expr-as-stmt.rs:12:9 --> $DIR/expr-as-stmt.rs:13:9
| |
LL | {2} + 2 LL | {2} + 2
| --- ^ expected expression | --- ^ expected expression
@ -15,7 +15,7 @@ LL | {2} + 2
| help: parentheses are required to parse this as an expression: `({2})` | help: parentheses are required to parse this as an expression: `({2})`
error: expected expression, found `+` error: expected expression, found `+`
--> $DIR/expr-as-stmt.rs:18:12 --> $DIR/expr-as-stmt.rs:19:12
| |
LL | { 42 } + foo; LL | { 42 } + foo;
| ------ ^ expected expression | ------ ^ expected expression
@ -23,7 +23,7 @@ LL | { 42 } + foo;
| help: parentheses are required to parse this as an expression: `({ 42 })` | help: parentheses are required to parse this as an expression: `({ 42 })`
error: expected expression, found `>` error: expected expression, found `>`
--> $DIR/expr-as-stmt.rs:31:7 --> $DIR/expr-as-stmt.rs:32:7
| |
LL | } > 0 LL | } > 0
| ^ expected expression | ^ expected expression
@ -36,7 +36,7 @@ LL | }) > 0
| |
error[E0308]: mismatched types error[E0308]: mismatched types
--> $DIR/expr-as-stmt.rs:7:6 --> $DIR/expr-as-stmt.rs:8:6
| |
LL | {2} + {2} LL | {2} + {2}
| ^ expected `()`, found integer | ^ expected `()`, found integer
@ -47,7 +47,7 @@ LL | {return 2;} + {2}
| ^^^^^^ ^ | ^^^^^^ ^
error[E0308]: mismatched types error[E0308]: mismatched types
--> $DIR/expr-as-stmt.rs:12:6 --> $DIR/expr-as-stmt.rs:13:6
| |
LL | {2} + 2 LL | {2} + 2
| ^ expected `()`, found integer | ^ expected `()`, found integer
@ -58,7 +58,7 @@ LL | {return 2;} + 2
| ^^^^^^ ^ | ^^^^^^ ^
error[E0308]: mismatched types error[E0308]: mismatched types
--> $DIR/expr-as-stmt.rs:18:7 --> $DIR/expr-as-stmt.rs:19:7
| |
LL | { 42 } + foo; LL | { 42 } + foo;
| ^^ expected `()`, found integer | ^^ expected `()`, found integer
@ -69,7 +69,7 @@ LL | { return 42; } + foo;
| ^^^^^^ ^ | ^^^^^^ ^
error[E0308]: mismatched types error[E0308]: mismatched types
--> $DIR/expr-as-stmt.rs:24:7 --> $DIR/expr-as-stmt.rs:25:7
| |
LL | { 3 } * 3 LL | { 3 } * 3
| ^ expected `()`, found integer | ^ expected `()`, found integer
@ -80,7 +80,7 @@ LL | { return 3; } * 3
| ^^^^^^ ^ | ^^^^^^ ^
error[E0614]: type `{integer}` cannot be dereferenced error[E0614]: type `{integer}` cannot be dereferenced
--> $DIR/expr-as-stmt.rs:24:11 --> $DIR/expr-as-stmt.rs:25:11
| |
LL | { 3 } * 3 LL | { 3 } * 3
| ----- ^^^ | ----- ^^^

View File

@ -14,7 +14,7 @@ tracing-subscriber = { version = "0.2", default-features = false, features = ["f
regex = "1.0" regex = "1.0"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
rustfix = "0.5.0" rustfix = "0.6.0"
lazy_static = "1.0" lazy_static = "1.0"
walkdir = "2" walkdir = "2"
glob = "0.3.0" glob = "0.3.0"

View File

@ -3328,8 +3328,11 @@ impl<'test> TestCx<'test> {
}, },
) )
.unwrap(); .unwrap();
let fixed_code = apply_suggestions(&unfixed_code, &suggestions).unwrap_or_else(|_| { let fixed_code = apply_suggestions(&unfixed_code, &suggestions).unwrap_or_else(|e| {
panic!("failed to apply suggestions for {:?} with rustfix", self.testpaths.file) panic!(
"failed to apply suggestions for {:?} with rustfix: {}",
self.testpaths.file, e
)
}); });
errors += self.compare_output("fixed", &fixed_code, &expected_fixed); errors += self.compare_output("fixed", &fixed_code, &expected_fixed);

View File

@ -287,6 +287,7 @@ pub fn check(root: &Path, cargo: &Path, bad: &mut bool) {
check_exceptions(&metadata, EXCEPTIONS, runtime_ids, bad); check_exceptions(&metadata, EXCEPTIONS, runtime_ids, bad);
check_dependencies(&metadata, PERMITTED_DEPENDENCIES, RESTRICTED_DEPENDENCY_CRATES, bad); check_dependencies(&metadata, PERMITTED_DEPENDENCIES, RESTRICTED_DEPENDENCY_CRATES, bad);
check_crate_duplicate(&metadata, FORBIDDEN_TO_HAVE_DUPLICATES, 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. // Check rustc_codegen_cranelift independently as it has it's own workspace.
let mut cmd = cargo_metadata::MetadataCommand::new(); 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); 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
);
}
}