-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve diagnostic for const ctors in array repeat expressions
- Loading branch information
Showing
7 changed files
with
126 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,11 @@ | ||
static _MAYBE_STRINGS: [Option<String>; 5] = [None; 5]; | ||
//~^ ERROR the trait bound `String: Copy` is not satisfied | ||
|
||
fn main() { | ||
// should hint to create an inline `const` block | ||
// or to create a new `const` item | ||
let strings: [String; 5] = [String::new(); 5]; | ||
let _strings: [String; 5] = [String::new(); 5]; | ||
//~^ ERROR the trait bound `String: Copy` is not satisfied | ||
let _maybe_strings: [Option<String>; 5] = [None; 5]; | ||
//~^ ERROR the trait bound `String: Copy` is not satisfied | ||
println!("{:?}", strings); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,47 @@ | ||
error[E0277]: the trait bound `String: Copy` is not satisfied | ||
--> $DIR/const-fn-in-vec.rs:4:33 | ||
--> $DIR/const-fn-in-vec.rs:1:47 | ||
| | ||
LL | let strings: [String; 5] = [String::new(); 5]; | ||
| ^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String` | ||
LL | static _MAYBE_STRINGS: [Option<String>; 5] = [None; 5]; | ||
| ^^^^ the trait `Copy` is not implemented for `String` | ||
| | ||
= note: required for `Option<String>` to implement `Copy` | ||
= note: the `Copy` trait is required because this value will be copied for each element of the array | ||
= help: consider creating a new `const` item and initializing it with the result of the function call to be used in the repeat position, like `const VAL: Type = const_fn();` and `let x = [VAL; 42];` | ||
= help: create an inline `const` block, see RFC #2920 <https://github.com/rust-lang/rfcs/pull/2920> for more information | ||
help: consider creating a new `const` item and initializing it with the result of the constructor to be used in the repeat position | ||
| | ||
LL + const ARRAY_REPEAT_VALUE: Option<String> = None; | ||
LL ~ static _MAYBE_STRINGS: [Option<String>; 5] = [ARRAY_REPEAT_VALUE; 5]; | ||
| | ||
|
||
error[E0277]: the trait bound `String: Copy` is not satisfied | ||
--> $DIR/const-fn-in-vec.rs:7:34 | ||
| | ||
LL | let _strings: [String; 5] = [String::new(); 5]; | ||
| ^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String` | ||
| | ||
= note: the `Copy` trait is required because this value will be copied for each element of the array | ||
= help: create an inline `const` block, see RFC #2920 <https://github.com/rust-lang/rfcs/pull/2920> for more information | ||
help: consider creating a new `const` item and initializing it with the result of the function call to be used in the repeat position | ||
| | ||
LL ~ const ARRAY_REPEAT_VALUE: String = String::new(); | ||
LL ~ let _strings: [String; 5] = [ARRAY_REPEAT_VALUE; 5]; | ||
| | ||
|
||
error[E0277]: the trait bound `String: Copy` is not satisfied | ||
--> $DIR/const-fn-in-vec.rs:9:48 | ||
| | ||
LL | let _maybe_strings: [Option<String>; 5] = [None; 5]; | ||
| ^^^^ the trait `Copy` is not implemented for `String` | ||
| | ||
= note: required for `Option<String>` to implement `Copy` | ||
= note: the `Copy` trait is required because this value will be copied for each element of the array | ||
= help: create an inline `const` block, see RFC #2920 <https://github.com/rust-lang/rfcs/pull/2920> for more information | ||
help: consider creating a new `const` item and initializing it with the result of the constructor to be used in the repeat position | ||
| | ||
LL ~ const ARRAY_REPEAT_VALUE: Option<String> = None; | ||
LL ~ let _maybe_strings: [Option<String>; 5] = [ARRAY_REPEAT_VALUE; 5]; | ||
| | ||
|
||
error: aborting due to previous error | ||
error: aborting due to 3 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0277`. |