Skip to content

Commit 1a25f27

Browse files
authored
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.
2 parents 40d0e6f + 57c2712 commit 1a25f27

File tree

3 files changed

+36
-45
lines changed

3 files changed

+36
-45
lines changed

src/librustc_error_codes/error_codes/E0308.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ let x: i32 = "I am not a number!";
1212
// type `i32` assigned to variable `x`
1313
```
1414

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.

src/test/ui/json-bom-plus-crlf-multifile.stderr

+16-20
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ let x: i32 = \"I am not a number!\";
1212
// type `i32` assigned to variable `x`
1313
```
1414

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.
2019
"},"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
2120
"}
2221
{"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!\";
3332
// type `i32` assigned to variable `x`
3433
```
3534

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.
4139
"},"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
4240
"}
4341
{"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!\";
5452
// type `i32` assigned to variable `x`
5553
```
5654

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.
6259
"},"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
6360
"}
6461
{"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!\";
7572
// type `i32` assigned to variable `x`
7673
```
7774

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.
8379
"},"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
8480
"}
8581
{"message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors

src/test/ui/json-bom-plus-crlf.stderr

+16-20
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ let x: i32 = \"I am not a number!\";
1212
// type `i32` assigned to variable `x`
1313
```
1414

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.
2019
"},"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
2120
"}
2221
{"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!\";
3332
// type `i32` assigned to variable `x`
3433
```
3534

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.
4139
"},"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
4240
"}
4341
{"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!\";
5452
// type `i32` assigned to variable `x`
5553
```
5654

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.
6259
"},"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
6360
"}
6461
{"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!\";
7572
// type `i32` assigned to variable `x`
7673
```
7774

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.
8379
"},"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
8480
"}
8581
{"message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors

0 commit comments

Comments
 (0)