Skip to content

Commit 7a47df8

Browse files
authored
Rollup merge of #70242 - DeeDeeG:improve-e0308, r=Dylan-DPC
Improve E0308 error message wording Hi folks, I made [a post on Reddit](https://old.reddit.com/r/rust/comments/fmi11x/consider_linting_rusts_documentationerror_text/) about how (IMO) the docs/error messages can be a bit intimidating, one thing led to another, and I was encouraged to submit a Pull Request if I felt I could re-phrase the error message that I used as an example. So that's this Pull Request. Open to any feedback or style changes, and I understand this is subjective. (On another note: I am happy to see [this message was recently improved](#69139) in `master`, so it's already better than it is in stable Rust 1.42.0.) Ideally the last sentence could be split into at least two: [sentence explaining the inferred type.] [Sentence explaining explicit type.] [Sentence that summarizes that "this is bad," and why.] But I'm not sure how to do so; I'm wary of writing something that turns out to be technically incorrect.
2 parents 72c99f2 + 99ae428 commit 7a47df8

File tree

3 files changed

+36
-36
lines changed

3 files changed

+36
-36
lines changed

src/librustc_error_codes/error_codes/E0308.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let x: i32 = "I am not a number!";
1313
```
1414

1515
This error occurs when the compiler was unable to infer the concrete type of a
16-
variable. It can occur for several cases, the most common of which is a
17-
mismatch in the expected type that the compiler inferred for a variable's
18-
initializing expression, and the actual type explicitly assigned to the
19-
variable.
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.

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

+16-16
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ let x: i32 = \"I am not a number!\";
1313
```
1414

1515
This error occurs when the compiler was unable to infer the concrete type of a
16-
variable. It can occur for several cases, the most common of which is a
17-
mismatch in the expected type that the compiler inferred for a variable's
18-
initializing expression, and the actual type explicitly assigned to the
19-
variable.
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.
2020
"},"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
2121
"}
2222
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -34,10 +34,10 @@ let x: i32 = \"I am not a number!\";
3434
```
3535

3636
This error occurs when the compiler was unable to infer the concrete type of a
37-
variable. It can occur for several cases, the most common of which is a
38-
mismatch in the expected type that the compiler inferred for a variable's
39-
initializing expression, and the actual type explicitly assigned to the
40-
variable.
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.
4141
"},"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
4242
"}
4343
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -55,10 +55,10 @@ let x: i32 = \"I am not a number!\";
5555
```
5656

5757
This error occurs when the compiler was unable to infer the concrete type of a
58-
variable. It can occur for several cases, the most common of which is a
59-
mismatch in the expected type that the compiler inferred for a variable's
60-
initializing expression, and the actual type explicitly assigned to the
61-
variable.
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.
6262
"},"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
6363
"}
6464
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -76,10 +76,10 @@ let x: i32 = \"I am not a number!\";
7676
```
7777

7878
This error occurs when the compiler was unable to infer the concrete type of a
79-
variable. It can occur for several cases, the most common of which is a
80-
mismatch in the expected type that the compiler inferred for a variable's
81-
initializing expression, and the actual type explicitly assigned to the
82-
variable.
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.
8383
"},"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
8484
"}
8585
{"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-16
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ let x: i32 = \"I am not a number!\";
1313
```
1414

1515
This error occurs when the compiler was unable to infer the concrete type of a
16-
variable. It can occur for several cases, the most common of which is a
17-
mismatch in the expected type that the compiler inferred for a variable's
18-
initializing expression, and the actual type explicitly assigned to the
19-
variable.
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.
2020
"},"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
2121
"}
2222
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -34,10 +34,10 @@ let x: i32 = \"I am not a number!\";
3434
```
3535

3636
This error occurs when the compiler was unable to infer the concrete type of a
37-
variable. It can occur for several cases, the most common of which is a
38-
mismatch in the expected type that the compiler inferred for a variable's
39-
initializing expression, and the actual type explicitly assigned to the
40-
variable.
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.
4141
"},"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
4242
"}
4343
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -55,10 +55,10 @@ let x: i32 = \"I am not a number!\";
5555
```
5656

5757
This error occurs when the compiler was unable to infer the concrete type of a
58-
variable. It can occur for several cases, the most common of which is a
59-
mismatch in the expected type that the compiler inferred for a variable's
60-
initializing expression, and the actual type explicitly assigned to the
61-
variable.
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.
6262
"},"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
6363
"}
6464
{"message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
@@ -76,10 +76,10 @@ let x: i32 = \"I am not a number!\";
7676
```
7777

7878
This error occurs when the compiler was unable to infer the concrete type of a
79-
variable. It can occur for several cases, the most common of which is a
80-
mismatch in the expected type that the compiler inferred for a variable's
81-
initializing expression, and the actual type explicitly assigned to the
82-
variable.
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.
8383
"},"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
8484
"}
8585
{"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)