1
Fork 0

Switch from using //~ERROR annotations with --error-format to error-pattern

Resolves Issue #118752
This commit is contained in:
Rajveer 2023-12-21 15:14:43 +05:30
parent be69926a73
commit af44e719fa
22 changed files with 1006 additions and 993 deletions

View file

@ -11,7 +11,7 @@ use once_cell::sync::Lazy;
use regex::Regex; use regex::Regex;
use tracing::*; use tracing::*;
#[derive(Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq)]
pub enum ErrorKind { pub enum ErrorKind {
Help, Help,
Error, Error,

View file

@ -3976,23 +3976,29 @@ impl<'test> TestCx<'test> {
proc_res.status, proc_res.status,
self.props.error_patterns self.props.error_patterns
); );
let check_patterns = should_run == WillExecute::No
&& (!self.props.error_patterns.is_empty()
|| !self.props.regex_error_patterns.is_empty());
if !explicit && self.config.compare_mode.is_none() { if !explicit && self.config.compare_mode.is_none() {
let check_patterns = should_run == WillExecute::No
&& (!self.props.error_patterns.is_empty()
|| !self.props.regex_error_patterns.is_empty());
let check_annotations = !check_patterns || !expected_errors.is_empty(); let check_annotations = !check_patterns || !expected_errors.is_empty();
if check_patterns {
// "// error-pattern" comments
let output_to_check = self.get_output(&proc_res);
self.check_all_error_patterns(&output_to_check, &proc_res, pm);
}
if check_annotations { if check_annotations {
// "//~ERROR comments" // "//~ERROR comments"
self.check_expected_errors(expected_errors, &proc_res); self.check_expected_errors(expected_errors, &proc_res);
} }
} else if explicit && !expected_errors.is_empty() {
let msg = format!(
"line {}: cannot combine `--error-format` with {} annotations; use `error-pattern` instead",
expected_errors[0].line_num,
expected_errors[0].kind.unwrap_or(ErrorKind::Error),
);
self.fatal(&msg);
}
if check_patterns {
// "// error-pattern" comments
let output_to_check = self.get_output(&proc_res);
self.check_all_error_patterns(&output_to_check, &proc_res, pm);
} }
if self.props.run_rustfix && self.config.compare_mode.is_none() { if self.props.run_rustfix && self.config.compare_mode.is_none() {

View file

@ -1,4 +1,6 @@
// compile-flags:--test --error-format=short // compile-flags:--test --error-format=short
// check-stdout
// error-pattern:cannot find function `foo` in this scope
// normalize-stdout-test: "tests/rustdoc-ui/issues" -> "$$DIR" // normalize-stdout-test: "tests/rustdoc-ui/issues" -> "$$DIR"
// normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME" // normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"
// failure-status: 101 // failure-status: 101
@ -6,7 +8,6 @@
/// ```rust /// ```rust
/// foo(); /// foo();
/// ``` /// ```
//~^^ ERROR cannot find function `foo` in this scope
fn foo() { fn foo() {
println!("Hello, world!"); println!("Hello, world!");
} }

View file

@ -1,16 +1,16 @@
running 1 test running 1 test
test $DIR/issue-81662-shortness.rs - foo (line 6) ... FAILED test $DIR/issue-81662-shortness.rs - foo (line 8) ... FAILED
failures: failures:
---- $DIR/issue-81662-shortness.rs - foo (line 6) stdout ---- ---- $DIR/issue-81662-shortness.rs - foo (line 8) stdout ----
$DIR/issue-81662-shortness.rs:7:1: error[E0425]: cannot find function `foo` in this scope $DIR/issue-81662-shortness.rs:9:1: error[E0425]: cannot find function `foo` in this scope
error: aborting due to 1 previous error error: aborting due to 1 previous error
Couldn't compile the test. Couldn't compile the test.
failures: failures:
$DIR/issue-81662-shortness.rs - foo (line 6) $DIR/issue-81662-shortness.rs - foo (line 8)
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME

View file

@ -1,5 +1,6 @@
// compile-flags: --error-format human-annotate-rs -Z unstable-options // compile-flags: --error-format human-annotate-rs -Z unstable-options
// error-pattern:cannot find type `Iter` in this scope
pub fn main() { pub fn main() {
let x: Iter; //~ ERROR cannot find type `Iter` in this scope let x: Iter;
} }

View file

@ -1,5 +1,5 @@
error[E0412]: cannot find type `Iter` in this scope error[E0412]: cannot find type `Iter` in this scope
--> $DIR/missing-type.rs:4:12 --> $DIR/missing-type.rs:5:12
| |
LL | let x: Iter; LL | let x: Iter;
| ^^^^ not found in this scope | ^^^^ not found in this scope

View file

@ -1,4 +1,5 @@
// aux-build:multispan.rs // aux-build:multispan.rs
// error-pattern:hello to you, too!
// compile-flags: --error-format human-annotate-rs -Z unstable-options // compile-flags: --error-format human-annotate-rs -Z unstable-options
#![feature(proc_macro_hygiene)] #![feature(proc_macro_hygiene)]
@ -12,17 +13,17 @@ fn main() {
hello!(); hello!();
// Exactly one 'hi'. // Exactly one 'hi'.
hello!(hi); //~ ERROR hello to you, too! hello!(hi);
// Now two, back to back. // Now two, back to back.
hello!(hi hi); //~ ERROR hello to you, too! hello!(hi hi);
// Now three, back to back. // Now three, back to back.
hello!(hi hi hi); //~ ERROR hello to you, too! hello!(hi hi hi);
// Now several, with spacing. // Now several, with spacing.
hello!(hi hey hi yo hi beep beep hi hi); //~ ERROR hello to you, too! hello!(hi hey hi yo hi beep beep hi hi);
hello!(hi there, hi how are you? hi... hi.); //~ ERROR hello to you, too! hello!(hi there, hi how are you? hi... hi.);
hello!(whoah. hi di hi di ho); //~ ERROR hello to you, too! hello!(whoah. hi di hi di ho);
hello!(hi good hi and good bye); //~ ERROR hello to you, too! hello!(hi good hi and good bye);
} }

View file

@ -1,41 +1,41 @@
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:15:5 --> $DIR/multispan.rs:16:5
| |
LL | hello!(hi); LL | hello!(hi);
| ^^^^^^^^^^ | ^^^^^^^^^^
| |
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:18:5 --> $DIR/multispan.rs:19:5
| |
LL | hello!(hi hi); LL | hello!(hi hi);
| ^^^^^^^^^^^^^ | ^^^^^^^^^^^^^
| |
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:21:5 --> $DIR/multispan.rs:22:5
| |
LL | hello!(hi hi hi); LL | hello!(hi hi hi);
| ^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^
| |
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:24:5 --> $DIR/multispan.rs:25:5
| |
LL | hello!(hi hey hi yo hi beep beep hi hi); LL | hello!(hi hey hi yo hi beep beep hi hi);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:25:5 --> $DIR/multispan.rs:26:5
| |
LL | hello!(hi there, hi how are you? hi... hi.); LL | hello!(hi there, hi how are you? hi... hi.);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:26:5 --> $DIR/multispan.rs:27:5
| |
LL | hello!(whoah. hi di hi di ho); LL | hello!(whoah. hi di hi di ho);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
error: hello to you, too! error: hello to you, too!
--> $DIR/multispan.rs:27:5 --> $DIR/multispan.rs:28:5
| |
LL | hello!(hi good hi and good bye); LL | hello!(hi good hi and good bye);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View file

@ -1,9 +1,9 @@
// compile-flags: --diagnostic-width=20 --error-format=json // compile-flags: --diagnostic-width=20 --error-format=json
// error-pattern:expected `()`, found integer
// This test checks that `-Z output-width` effects the JSON error output by restricting it to an // This test checks that `-Z output-width` effects the JSON error output by restricting it to an
// arbitrarily low value so that the effect is visible. // arbitrarily low value so that the effect is visible.
fn main() { fn main() {
let _: () = 42; let _: () = 42;
//~^ ERROR arguments to this function are incorrect
} }

View file

@ -24,8 +24,8 @@ This error occurs when an expression was used in a place where the compiler
expected an expression of a different type. It can occur in several cases, the expected an expression of a different type. It can occur in several cases, the
most common being when calling a function and passing an argument which has a most common being when calling a function and passing an argument which has a
different type than the matching type in the function declaration. different type than the matching type in the function declaration.
"},"level":"error","spans":[{"file_name":"$DIR/flag-json.rs","byte_start":243,"byte_end":245,"line_start":7,"line_end":7,"column_start":17,"column_end":19,"is_primary":true,"text":[{"text":" let _: () = 42;","highlight_start":17,"highlight_end":19}],"label":"expected `()`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/flag-json.rs","byte_start":238,"byte_end":240,"line_start":7,"line_end":7,"column_start":12,"column_end":14,"is_primary":false,"text":[{"text":" let _: () = 42;","highlight_start":12,"highlight_end":14}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0308]: mismatched types "},"level":"error","spans":[{"file_name":"$DIR/flag-json.rs","byte_start":289,"byte_end":291,"line_start":8,"line_end":8,"column_start":17,"column_end":19,"is_primary":true,"text":[{"text":" let _: () = 42;","highlight_start":17,"highlight_end":19}],"label":"expected `()`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/flag-json.rs","byte_start":284,"byte_end":286,"line_start":8,"line_end":8,"column_start":12,"column_end":14,"is_primary":false,"text":[{"text":" let _: () = 42;","highlight_start":12,"highlight_end":14}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0308]: mismatched types
--> $DIR/flag-json.rs:7:17 --> $DIR/flag-json.rs:8:17
| |
LL | ..._: () = 42; LL | ..._: () = 42;
| -- ^^ expected `()`, found integer | -- ^^ expected `()`, found integer

View file

@ -1,4 +1,5 @@
// compile-flags: --error-format json // compile-flags: --error-format json
// error-pattern:unnecessary parentheses
// run-rustfix // run-rustfix
// The output for humans should just highlight the whole span without showing // The output for humans should just highlight the whole span without showing
@ -13,7 +14,7 @@
fn main() { fn main() {
// We want to suggest the properly-balanced expression `1 / (2 + 3)`, not // We want to suggest the properly-balanced expression `1 / (2 + 3)`, not
// the malformed `1 / (2 + 3` // the malformed `1 / (2 + 3`
let _a = 1 / (2 + 3); //~ERROR unnecessary parentheses let _a = 1 / (2 + 3);
f(); f();
} }

View file

@ -1,4 +1,5 @@
// compile-flags: --error-format json // compile-flags: --error-format json
// error-pattern:unnecessary parentheses
// run-rustfix // run-rustfix
// The output for humans should just highlight the whole span without showing // The output for humans should just highlight the whole span without showing
@ -13,7 +14,7 @@
fn main() { fn main() {
// We want to suggest the properly-balanced expression `1 / (2 + 3)`, not // We want to suggest the properly-balanced expression `1 / (2 + 3)`, not
// the malformed `1 / (2 + 3` // the malformed `1 / (2 + 3`
let _a = (1 / (2 + 3)); //~ERROR unnecessary parentheses let _a = (1 / (2 + 3));
f(); f();
} }

View file

@ -1,11 +1,11 @@
{"$message_type":"diagnostic","message":"unnecessary parentheses around assigned value","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":577,"byte_end":578,"line_start":16,"line_end":16,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3)); {"$message_type":"diagnostic","message":"unnecessary parentheses around assigned value","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":618,"byte_end":619,"line_start":17,"line_end":17,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3));","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":630,"byte_end":631,"line_start":17,"line_end":17,"column_start":26,"column_end":27,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3));","highlight_start":26,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":436,"byte_end":449,"line_start":11,"line_end":11,"column_start":9,"column_end":22,"is_primary":true,"text":[{"text":"#![deny(unused_parens)]","highlight_start":9,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":618,"byte_end":619,"line_start":17,"line_end":17,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3));","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":630,"byte_end":631,"line_start":17,"line_end":17,"column_start":26,"column_end":27,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3));","highlight_start":26,"highlight_end":27}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around assigned value
--> $DIR/unused_parens_json_suggestion.rs:16:14 --> $DIR/unused_parens_json_suggestion.rs:17:14
| |
LL | let _a = (1 / (2 + 3)); LL | let _a = (1 / (2 + 3));
| ^ ^ | ^ ^
| |
note: the lint level is defined here note: the lint level is defined here
--> $DIR/unused_parens_json_suggestion.rs:10:9 --> $DIR/unused_parens_json_suggestion.rs:11:9
| |
LL | #![deny(unused_parens)] LL | #![deny(unused_parens)]
| ^^^^^^^^^^^^^ | ^^^^^^^^^^^^^

View file

@ -1,4 +1,5 @@
// compile-flags: --error-format json // compile-flags: --error-format json
// error-pattern:unnecessary parentheses
// run-rustfix // run-rustfix
// The output for humans should just highlight the whole span without showing // The output for humans should just highlight the whole span without showing
@ -14,7 +15,7 @@ fn main() {
let _b = false; let _b = false;
if _b { //~ ERROR unnecessary parentheses if _b {
println!("hello"); println!("hello");
} }
@ -25,29 +26,29 @@ fn main() {
fn f() -> bool { fn f() -> bool {
let c = false; let c = false;
if c { //~ ERROR unnecessary parentheses if c {
println!("next"); println!("next");
} }
if c { //~ ERROR unnecessary parentheses if c {
println!("prev"); println!("prev");
} }
while false && true { while false && true {
if c { //~ ERROR unnecessary parentheses if c {
println!("norm"); println!("norm");
} }
} }
while true && false { //~ ERROR unnecessary parentheses while true && false {
for _ in 0 .. 3 { //~ ERROR unnecessary parentheses for _ in 0 .. 3 {
println!("e~") println!("e~")
} }
} }
for _ in 0 .. 3 { //~ ERROR unnecessary parentheses for _ in 0 .. 3 {
while true && false { //~ ERROR unnecessary parentheses while true && false {
println!("e~") println!("e~")
} }
} }

View file

@ -1,4 +1,5 @@
// compile-flags: --error-format json // compile-flags: --error-format json
// error-pattern:unnecessary parentheses
// run-rustfix // run-rustfix
// The output for humans should just highlight the whole span without showing // The output for humans should just highlight the whole span without showing
@ -14,7 +15,7 @@ fn main() {
let _b = false; let _b = false;
if (_b) { //~ ERROR unnecessary parentheses if (_b) {
println!("hello"); println!("hello");
} }
@ -25,29 +26,29 @@ fn main() {
fn f() -> bool { fn f() -> bool {
let c = false; let c = false;
if(c) { //~ ERROR unnecessary parentheses if(c) {
println!("next"); println!("next");
} }
if (c){ //~ ERROR unnecessary parentheses if (c){
println!("prev"); println!("prev");
} }
while (false && true){ while (false && true){
if (c) { //~ ERROR unnecessary parentheses if (c) {
println!("norm"); println!("norm");
} }
} }
while(true && false) { //~ ERROR unnecessary parentheses while(true && false) {
for _ in (0 .. 3){ //~ ERROR unnecessary parentheses for _ in (0 .. 3){
println!("e~") println!("e~")
} }
} }
for _ in (0 .. 3) { //~ ERROR unnecessary parentheses for _ in (0 .. 3) {
while (true && false) { //~ ERROR unnecessary parentheses while (true && false) {
println!("e~") println!("e~")
} }
} }

View file

@ -1,11 +1,11 @@
{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":481,"byte_end":482,"line_start":17,"line_end":17,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (_b) { {"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":522,"byte_end":523,"line_start":18,"line_end":18,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (_b) {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":525,"byte_end":526,"line_start":18,"line_end":18,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" if (_b) {","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":436,"byte_end":449,"line_start":11,"line_end":11,"column_start":9,"column_end":22,"is_primary":true,"text":[{"text":"#![deny(unused_parens)]","highlight_start":9,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":522,"byte_end":523,"line_start":18,"line_end":18,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (_b) {","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":525,"byte_end":526,"line_start":18,"line_end":18,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" if (_b) {","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `if` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:17:8 --> $DIR/unused_parens_remove_json_suggestion.rs:18:8
| |
LL | if (_b) { LL | if (_b) {
| ^ ^ | ^ ^
| |
note: the lint level is defined here note: the lint level is defined here
--> $DIR/unused_parens_remove_json_suggestion.rs:10:9 --> $DIR/unused_parens_remove_json_suggestion.rs:11:9
| |
LL | #![deny(unused_parens)] LL | #![deny(unused_parens)]
| ^^^^^^^^^^^^^ | ^^^^^^^^^^^^^
@ -16,8 +16,8 @@ LL + if _b {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":612,"byte_end":613,"line_start":28,"line_end":28,"column_start":7,"column_end":8,"is_primary":true,"text":[{"text":" if(c) { {"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":619,"byte_end":620,"line_start":29,"line_end":29,"column_start":7,"column_end":8,"is_primary":true,"text":[{"text":" if(c) {","highlight_start":7,"highlight_end":8}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":621,"byte_end":622,"line_start":29,"line_end":29,"column_start":9,"column_end":10,"is_primary":true,"text":[{"text":" if(c) {","highlight_start":9,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":619,"byte_end":620,"line_start":29,"line_end":29,"column_start":7,"column_end":8,"is_primary":true,"text":[{"text":" if(c) {","highlight_start":7,"highlight_end":8}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":621,"byte_end":622,"line_start":29,"line_end":29,"column_start":9,"column_end":10,"is_primary":true,"text":[{"text":" if(c) {","highlight_start":9,"highlight_end":10}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `if` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:28:7 --> $DIR/unused_parens_remove_json_suggestion.rs:29:7
| |
LL | if(c) { LL | if(c) {
| ^ ^ | ^ ^
@ -29,8 +29,8 @@ LL + if c {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":692,"byte_end":693,"line_start":32,"line_end":32,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (c){ {"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":665,"byte_end":666,"line_start":33,"line_end":33,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (c){","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":667,"byte_end":668,"line_start":33,"line_end":33,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" if (c){","highlight_start":10,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":665,"byte_end":666,"line_start":33,"line_end":33,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (c){","highlight_start":8,"highlight_end":9}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":667,"byte_end":668,"line_start":33,"line_end":33,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" if (c){","highlight_start":10,"highlight_end":11}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `if` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:32:8 --> $DIR/unused_parens_remove_json_suggestion.rs:33:8
| |
LL | if (c){ LL | if (c){
| ^ ^ | ^ ^
@ -42,8 +42,8 @@ LL + if c {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":774,"byte_end":775,"line_start":36,"line_end":36,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":788,"byte_end":789,"line_start":36,"line_end":36,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":774,"byte_end":775,"line_start":36,"line_end":36,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":788,"byte_end":789,"line_start":36,"line_end":36,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `while` condition {"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":713,"byte_end":714,"line_start":37,"line_end":37,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":727,"byte_end":728,"line_start":37,"line_end":37,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":713,"byte_end":714,"line_start":37,"line_end":37,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":727,"byte_end":728,"line_start":37,"line_end":37,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `while` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:36:11 --> $DIR/unused_parens_remove_json_suggestion.rs:37:11
| |
LL | while (false && true){ LL | while (false && true){
| ^ ^ | ^ ^
@ -55,8 +55,8 @@ LL + while false && true {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":802,"byte_end":803,"line_start":37,"line_end":37,"column_start":12,"column_end":13,"is_primary":true,"text":[{"text":" if (c) { {"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":741,"byte_end":742,"line_start":38,"line_end":38,"column_start":12,"column_end":13,"is_primary":true,"text":[{"text":" if (c) {","highlight_start":12,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":743,"byte_end":744,"line_start":38,"line_end":38,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" if (c) {","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":741,"byte_end":742,"line_start":38,"line_end":38,"column_start":12,"column_end":13,"is_primary":true,"text":[{"text":" if (c) {","highlight_start":12,"highlight_end":13}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":743,"byte_end":744,"line_start":38,"line_end":38,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" if (c) {","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `if` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:37:12 --> $DIR/unused_parens_remove_json_suggestion.rs:38:12
| |
LL | if (c) { LL | if (c) {
| ^ ^ | ^ ^
@ -68,8 +68,8 @@ LL + if c {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":899,"byte_end":900,"line_start":43,"line_end":43,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" while(true && false) { {"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":804,"byte_end":805,"line_start":44,"line_end":44,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" while(true && false) {","highlight_start":10,"highlight_end":11}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":818,"byte_end":819,"line_start":44,"line_end":44,"column_start":24,"column_end":25,"is_primary":true,"text":[{"text":" while(true && false) {","highlight_start":24,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":804,"byte_end":805,"line_start":44,"line_end":44,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" while(true && false) {","highlight_start":10,"highlight_end":11}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":818,"byte_end":819,"line_start":44,"line_end":44,"column_start":24,"column_end":25,"is_primary":true,"text":[{"text":" while(true && false) {","highlight_start":24,"highlight_end":25}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `while` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:43:10 --> $DIR/unused_parens_remove_json_suggestion.rs:44:10
| |
LL | while(true && false) { LL | while(true && false) {
| ^ ^ | ^ ^
@ -81,8 +81,8 @@ LL + while true && false {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":968,"byte_end":969,"line_start":44,"line_end":44,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){ {"$message_type":"diagnostic","message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":839,"byte_end":840,"line_start":45,"line_end":45,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){","highlight_start":18,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":846,"byte_end":847,"line_start":45,"line_end":45,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":839,"byte_end":840,"line_start":45,"line_end":45,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){","highlight_start":18,"highlight_end":19}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":846,"byte_end":847,"line_start":45,"line_end":45,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `for` iterator expression
--> $DIR/unused_parens_remove_json_suggestion.rs:44:18 --> $DIR/unused_parens_remove_json_suggestion.rs:45:18
| |
LL | for _ in (0 .. 3){ LL | for _ in (0 .. 3){
| ^ ^ | ^ ^
@ -94,8 +94,8 @@ LL + for _ in 0 .. 3 {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":1069,"byte_end":1070,"line_start":49,"line_end":49,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) { {"$message_type":"diagnostic","message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":906,"byte_end":907,"line_start":50,"line_end":50,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) {","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":913,"byte_end":914,"line_start":50,"line_end":50,"column_start":21,"column_end":22,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) {","highlight_start":21,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":906,"byte_end":907,"line_start":50,"line_end":50,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) {","highlight_start":14,"highlight_end":15}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":913,"byte_end":914,"line_start":50,"line_end":50,"column_start":21,"column_end":22,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) {","highlight_start":21,"highlight_end":22}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `for` iterator expression
--> $DIR/unused_parens_remove_json_suggestion.rs:49:14 --> $DIR/unused_parens_remove_json_suggestion.rs:50:14
| |
LL | for _ in (0 .. 3) { LL | for _ in (0 .. 3) {
| ^ ^ | ^ ^
@ -107,8 +107,8 @@ LL + for _ in 0 .. 3 {
| |
"} "}
{"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":1128,"byte_end":1129,"line_start":50,"line_end":50,"column_start":15,"column_end":16,"is_primary":true,"text":[{"text":" while (true && false) { {"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":931,"byte_end":932,"line_start":51,"line_end":51,"column_start":15,"column_end":16,"is_primary":true,"text":[{"text":" while (true && false) {","highlight_start":15,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":945,"byte_end":946,"line_start":51,"line_end":51,"column_start":29,"column_end":30,"is_primary":true,"text":[{"text":" while (true && false) {","highlight_start":29,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":931,"byte_end":932,"line_start":51,"line_end":51,"column_start":15,"column_end":16,"is_primary":true,"text":[{"text":" while (true && false) {","highlight_start":15,"highlight_end":16}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":945,"byte_end":946,"line_start":51,"line_end":51,"column_start":29,"column_end":30,"is_primary":true,"text":[{"text":" while (true && false) {","highlight_start":29,"highlight_end":30}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `while` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:50:15 --> $DIR/unused_parens_remove_json_suggestion.rs:51:15
| |
LL | while (true && false) { LL | while (true && false) {
| ^ ^ | ^ ^

View file

@ -1,5 +1,6 @@
// gate-test-custom_inner_attributes // gate-test-custom_inner_attributes
// compile-flags: -Z span-debug --error-format human // compile-flags: -Z span-debug --error-format human
// error-pattern:expected non-macro inner attribute
// aux-build:test-macros.rs // aux-build:test-macros.rs
// edition:2018 // edition:2018
@ -61,19 +62,19 @@ fn bar() {
); );
for _ in &[true] { for _ in &[true] {
#![print_attr] //~ ERROR expected non-macro inner attribute #![print_attr]
} }
let _ = { let _ = {
#![print_attr] //~ ERROR expected non-macro inner attribute #![print_attr]
}; };
let _ = async { let _ = async {
#![print_attr] //~ ERROR expected non-macro inner attribute #![print_attr]
}; };
{ {
#![print_attr] //~ ERROR expected non-macro inner attribute #![print_attr]
}; };
} }

View file

@ -1,23 +1,23 @@
error: expected non-macro inner attribute, found attribute macro `print_attr` error: expected non-macro inner attribute, found attribute macro `print_attr`
--> $DIR/inner-attrs.rs:64:12 --> $DIR/inner-attrs.rs:65:12
| |
LL | #![print_attr] LL | #![print_attr]
| ^^^^^^^^^^ not a non-macro inner attribute | ^^^^^^^^^^ not a non-macro inner attribute
error: expected non-macro inner attribute, found attribute macro `print_attr` error: expected non-macro inner attribute, found attribute macro `print_attr`
--> $DIR/inner-attrs.rs:68:12 --> $DIR/inner-attrs.rs:69:12
| |
LL | #![print_attr] LL | #![print_attr]
| ^^^^^^^^^^ not a non-macro inner attribute | ^^^^^^^^^^ not a non-macro inner attribute
error: expected non-macro inner attribute, found attribute macro `print_attr` error: expected non-macro inner attribute, found attribute macro `print_attr`
--> $DIR/inner-attrs.rs:72:12 --> $DIR/inner-attrs.rs:73:12
| |
LL | #![print_attr] LL | #![print_attr]
| ^^^^^^^^^^ not a non-macro inner attribute | ^^^^^^^^^^ not a non-macro inner attribute
error: expected non-macro inner attribute, found attribute macro `print_attr` error: expected non-macro inner attribute, found attribute macro `print_attr`
--> $DIR/inner-attrs.rs:76:12 --> $DIR/inner-attrs.rs:77:12
| |
LL | #![print_attr] LL | #![print_attr]
| ^^^^^^^^^^ not a non-macro inner attribute | ^^^^^^^^^^ not a non-macro inner attribute

File diff suppressed because it is too large Load diff

View file

@ -1,13 +1,10 @@
// check-pass // check-pass
// compile-flags: -Z span-debug --error-format human // compile-flags: -Z span-debug
// aux-build:test-macros.rs // aux-build:test-macros.rs
// Regression test for issue #75930 // Regression test for issue #75930
// Tests that we cfg-strip all targets before invoking // Tests that we cfg-strip all targets before invoking
// a derive macro // a derive macro
// We need '--error-format human' to stop compiletest from
// trying to interpret proc-macro output as JSON messages
// (a pretty-printed struct may cause a line to start with '{' )
// FIXME: We currently lose spans here (see issue #43081) // FIXME: We currently lose spans here (see issue #43081)
#![no_std] // Don't load unnecessary hygiene information from std #![no_std] // Don't load unnecessary hygiene information from std
@ -47,6 +44,8 @@ extern crate test_macros;
// that kind of correction caused the problem seen in #76399, so maybe not. // that kind of correction caused the problem seen in #76399, so maybe not.
#[print_helper(a)] //~ WARN derive helper attribute is used before it is introduced #[print_helper(a)] //~ WARN derive helper attribute is used before it is introduced
//~| WARN derive helper attribute is used before it is introduced
//~| WARN this was previously accepted
//~| WARN this was previously accepted //~| WARN this was previously accepted
#[cfg_attr(not(FALSE), allow(dead_code))] #[cfg_attr(not(FALSE), allow(dead_code))]
#[print_attr] #[print_attr]

View file

@ -1,5 +1,5 @@
warning: derive helper attribute is used before it is introduced warning: derive helper attribute is used before it is introduced
--> $DIR/issue-75930-derive-cfg.rs:49:3 --> $DIR/issue-75930-derive-cfg.rs:46:3
| |
LL | #[print_helper(a)] LL | #[print_helper(a)]
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^
@ -12,7 +12,7 @@ LL | #[derive(Print)]
= note: `#[warn(legacy_derive_helpers)]` on by default = note: `#[warn(legacy_derive_helpers)]` on by default
warning: derive helper attribute is used before it is introduced warning: derive helper attribute is used before it is introduced
--> $DIR/issue-75930-derive-cfg.rs:49:3 --> $DIR/issue-75930-derive-cfg.rs:46:3
| |
LL | #[print_helper(a)] LL | #[print_helper(a)]
| ^^^^^^^^^^^^ | ^^^^^^^^^^^^

File diff suppressed because it is too large Load diff