Skip to content

Commit

Permalink
update message
Browse files Browse the repository at this point in the history
  • Loading branch information
henryboisdequin committed Feb 14, 2021
1 parent c2e849c commit 64fe2c1
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1885,21 +1885,21 @@ impl<'a, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'a, 'tcx> {
err.note(
"the `Copy` trait is required because the repeated element will be copied",
);
if is_const_fn && !self.tcx.sess.is_nightly_build() {

if is_const_fn {
err.help(
"consider creating a new `const` item and initializing 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];`",
);
} else if self.tcx.sess.is_nightly_build() && is_const_fn {
}

if self.tcx.sess.is_nightly_build() && is_const_fn {
err.help(
"create an inline `const` block, see PR \
#2920 <https://github.com/rust-lang/rfcs/pull/2920> \
for more information",
);
} else {
// Don't suggest anything to the user as suggesting the user to make the function `const`
// could lead them down the wrong path.
}
}
ObligationCauseCode::VariableType(hir_id) => {
Expand Down
1 change: 1 addition & 0 deletions src/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
This directory contains the source code of the rust project, including:

- The test suite
- The bootstrapping build system
- Various submodules for tools, like rustdoc, rls, etc.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ LL | let _: [Option<Bar>; 2] = [no_copy(); 2];
= help: the following implementations were found:
<Option<T> as Copy>
= note: the `Copy` trait is required because the repeated element will be copied
= help: consider creating a new `const` item and initializing 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 PR #2920 <https://github.com/rust-lang/rfcs/pull/2920> for more information

error: aborting due to previous error
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/consts/const-fn-in-vec.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
fn main() {
// should hint to create an inline const block
// as all tests are on "nightly"
// should hint to create an inline `const` block
// or to create a new `const` item
let strings: [String; 5] = [String::new(); 5];
//~^ ERROR the trait bound `String: Copy` is not satisfied
println!("{:?}", strings);
Expand Down
1 change: 1 addition & 0 deletions src/test/ui/consts/const-fn-in-vec.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ LL | let strings: [String; 5] = [String::new(); 5];
| ^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
|
= note: the `Copy` trait is required because the repeated element will be copied
= help: consider creating a new `const` item and initializing 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 PR #2920 <https://github.com/rust-lang/rfcs/pull/2920> for more information

error: aborting due to previous error
Expand Down

0 comments on commit 64fe2c1

Please sign in to comment.