You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rollup merge of rust-lang#71396 - DeeDeeG:improve-e0308-again, r=estebank
Improve E0308 error message wording again
Hello again,
I recently did this PR: rust-lang#70242
I felt the error message could be further improved, so I made [a post on the Rust community forum](https://users.rust-lang.org/t/looking-for-feedback-on-an-improved-error-message-for-e0308/40004) to ask for feedback.
(Also, there were some comments on my original PR that I took into consideration as well.)
This PR is my attempt to take all the feedback into account and propose a better and simplified error message that should still be accurate. Its main benefit is having simpler grammar, and hopefully being easier to read and understand.
Thanks to everyone who commented and gave feedback, and thank you for taking a look at this PR.
Copy file name to clipboardexpand all lines: src/test/ui/json-bom-plus-crlf-multifile.stderr
+16-20
Original file line number
Diff line number
Diff line change
@@ -12,11 +12,10 @@ let x: i32 = \"I am not a number!\";
12
12
// type `i32` assigned to variable `x`
13
13
```
14
14
15
-
This error occurs when the compiler was unable to infer the concrete type of a
16
-
variable. It can happen in several cases, the most common being a mismatch
17
-
between the type that the compiler inferred for a variable based on its
18
-
initializing expression, on the one hand, and the type the author explicitly
19
-
assigned to the variable, on the other hand.
15
+
This error occurs when the compiler is unable to infer the concrete type of a
16
+
variable. It can occur in several cases, the most common being a mismatch
17
+
between two types: the type the author explicitly assigned, and the type the
18
+
compiler inferred.
20
19
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":621,"byte_end":622,"line_start":17,"line_end":17,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1; // Error in the middle of line.","highlight_start":22,"highlight_end":23}],"label":"expected struct `std::string::String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":612,"byte_end":618,"line_start":17,"line_end":17,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String = 1; // Error in the middle of line.","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":621,"byte_end":622,"line_start":17,"line_end":17,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1; // Error in the middle of line.","highlight_start":22,"highlight_end":23}],"label":null,"suggested_replacement":"1.to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:17:22: error[E0308]: mismatched types
21
20
"}
22
21
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -33,11 +32,10 @@ let x: i32 = \"I am not a number!\";
33
32
// type `i32` assigned to variable `x`
34
33
```
35
34
36
-
This error occurs when the compiler was unable to infer the concrete type of a
37
-
variable. It can happen in several cases, the most common being a mismatch
38
-
between the type that the compiler inferred for a variable based on its
39
-
initializing expression, on the one hand, and the type the author explicitly
40
-
assigned to the variable, on the other hand.
35
+
This error occurs when the compiler is unable to infer the concrete type of a
36
+
variable. It can occur in several cases, the most common being a mismatch
37
+
between two types: the type the author explicitly assigned, and the type the
38
+
compiler inferred.
41
39
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":681,"byte_end":682,"line_start":19,"line_end":19,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1","highlight_start":22,"highlight_end":23}],"label":"expected struct `std::string::String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":672,"byte_end":678,"line_start":19,"line_end":19,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String = 1","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":681,"byte_end":682,"line_start":19,"line_end":19,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1","highlight_start":22,"highlight_end":23}],"label":null,"suggested_replacement":"1.to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:19:22: error[E0308]: mismatched types
42
40
"}
43
41
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -54,11 +52,10 @@ let x: i32 = \"I am not a number!\";
54
52
// type `i32` assigned to variable `x`
55
53
```
56
54
57
-
This error occurs when the compiler was unable to infer the concrete type of a
58
-
variable. It can happen in several cases, the most common being a mismatch
59
-
between the type that the compiler inferred for a variable based on its
60
-
initializing expression, on the one hand, and the type the author explicitly
61
-
assigned to the variable, on the other hand.
55
+
This error occurs when the compiler is unable to infer the concrete type of a
56
+
variable. It can occur in several cases, the most common being a mismatch
57
+
between two types: the type the author explicitly assigned, and the type the
58
+
compiler inferred.
62
59
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":745,"byte_end":746,"line_start":23,"line_end":23,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":1,"highlight_end":2}],"label":"expected struct `std::string::String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":735,"byte_end":741,"line_start":22,"line_end":22,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String =","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":745,"byte_end":746,"line_start":23,"line_end":23,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":"1.to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:23:1: error[E0308]: mismatched types
63
60
"}
64
61
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -75,11 +72,10 @@ let x: i32 = \"I am not a number!\";
75
72
// type `i32` assigned to variable `x`
76
73
```
77
74
78
-
This error occurs when the compiler was unable to infer the concrete type of a
79
-
variable. It can happen in several cases, the most common being a mismatch
80
-
between the type that the compiler inferred for a variable based on its
81
-
initializing expression, on the one hand, and the type the author explicitly
82
-
assigned to the variable, on the other hand.
75
+
This error occurs when the compiler is unable to infer the concrete type of a
76
+
variable. It can occur in several cases, the most common being a mismatch
77
+
between two types: the type the author explicitly assigned, and the type the
78
+
compiler inferred.
83
79
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":801,"byte_end":809,"line_start":25,"line_end":26,"column_start":22,"column_end":6,"is_primary":true,"text":[{"text":" let s : String = (","highlight_start":22,"highlight_end":23},{"text":" ); // Error spanning the newline.","highlight_start":1,"highlight_end":6}],"label":"expected struct `std::string::String`, found `()`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":792,"byte_end":798,"line_start":25,"line_end":25,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String = (","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:25:22: error[E0308]: mismatched types
84
80
"}
85
81
{"message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors
Copy file name to clipboardexpand all lines: src/test/ui/json-bom-plus-crlf.stderr
+16-20
Original file line number
Diff line number
Diff line change
@@ -12,11 +12,10 @@ let x: i32 = \"I am not a number!\";
12
12
// type `i32` assigned to variable `x`
13
13
```
14
14
15
-
This error occurs when the compiler was unable to infer the concrete type of a
16
-
variable. It can happen in several cases, the most common being a mismatch
17
-
between the type that the compiler inferred for a variable based on its
18
-
initializing expression, on the one hand, and the type the author explicitly
19
-
assigned to the variable, on the other hand.
15
+
This error occurs when the compiler is unable to infer the concrete type of a
16
+
variable. It can occur in several cases, the most common being a mismatch
17
+
between two types: the type the author explicitly assigned, and the type the
18
+
compiler inferred.
20
19
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":606,"byte_end":607,"line_start":16,"line_end":16,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1; // Error in the middle of line.","highlight_start":22,"highlight_end":23}],"label":"expected struct `std::string::String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":597,"byte_end":603,"line_start":16,"line_end":16,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String = 1; // Error in the middle of line.","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":606,"byte_end":607,"line_start":16,"line_end":16,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1; // Error in the middle of line.","highlight_start":22,"highlight_end":23}],"label":null,"suggested_replacement":"1.to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf.rs:16:22: error[E0308]: mismatched types
21
20
"}
22
21
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -33,11 +32,10 @@ let x: i32 = \"I am not a number!\";
33
32
// type `i32` assigned to variable `x`
34
33
```
35
34
36
-
This error occurs when the compiler was unable to infer the concrete type of a
37
-
variable. It can happen in several cases, the most common being a mismatch
38
-
between the type that the compiler inferred for a variable based on its
39
-
initializing expression, on the one hand, and the type the author explicitly
40
-
assigned to the variable, on the other hand.
35
+
This error occurs when the compiler is unable to infer the concrete type of a
36
+
variable. It can occur in several cases, the most common being a mismatch
37
+
between two types: the type the author explicitly assigned, and the type the
38
+
compiler inferred.
41
39
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":666,"byte_end":667,"line_start":18,"line_end":18,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1","highlight_start":22,"highlight_end":23}],"label":"expected struct `std::string::String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":657,"byte_end":663,"line_start":18,"line_end":18,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String = 1","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":666,"byte_end":667,"line_start":18,"line_end":18,"column_start":22,"column_end":23,"is_primary":true,"text":[{"text":" let s : String = 1","highlight_start":22,"highlight_end":23}],"label":null,"suggested_replacement":"1.to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf.rs:18:22: error[E0308]: mismatched types
42
40
"}
43
41
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -54,11 +52,10 @@ let x: i32 = \"I am not a number!\";
54
52
// type `i32` assigned to variable `x`
55
53
```
56
54
57
-
This error occurs when the compiler was unable to infer the concrete type of a
58
-
variable. It can happen in several cases, the most common being a mismatch
59
-
between the type that the compiler inferred for a variable based on its
60
-
initializing expression, on the one hand, and the type the author explicitly
61
-
assigned to the variable, on the other hand.
55
+
This error occurs when the compiler is unable to infer the concrete type of a
56
+
variable. It can occur in several cases, the most common being a mismatch
57
+
between two types: the type the author explicitly assigned, and the type the
58
+
compiler inferred.
62
59
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":730,"byte_end":731,"line_start":22,"line_end":22,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":1,"highlight_end":2}],"label":"expected struct `std::string::String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":720,"byte_end":726,"line_start":21,"line_end":21,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String =","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":730,"byte_end":731,"line_start":22,"line_end":22,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":"1.to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf.rs:22:1: error[E0308]: mismatched types
63
60
"}
64
61
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -75,11 +72,10 @@ let x: i32 = \"I am not a number!\";
75
72
// type `i32` assigned to variable `x`
76
73
```
77
74
78
-
This error occurs when the compiler was unable to infer the concrete type of a
79
-
variable. It can happen in several cases, the most common being a mismatch
80
-
between the type that the compiler inferred for a variable based on its
81
-
initializing expression, on the one hand, and the type the author explicitly
82
-
assigned to the variable, on the other hand.
75
+
This error occurs when the compiler is unable to infer the concrete type of a
76
+
variable. It can occur in several cases, the most common being a mismatch
77
+
between two types: the type the author explicitly assigned, and the type the
78
+
compiler inferred.
83
79
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":786,"byte_end":794,"line_start":24,"line_end":25,"column_start":22,"column_end":6,"is_primary":true,"text":[{"text":" let s : String = (","highlight_start":22,"highlight_end":23},{"text":" ); // Error spanning the newline.","highlight_start":1,"highlight_end":6}],"label":"expected struct `std::string::String`, found `()`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":777,"byte_end":783,"line_start":24,"line_end":24,"column_start":13,"column_end":19,"is_primary":false,"text":[{"text":" let s : String = (","highlight_start":13,"highlight_end":19}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"$DIR/json-bom-plus-crlf.rs:24:22: error[E0308]: mismatched types
84
80
"}
85
81
{"message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors
0 commit comments