rust/compiler/rustc_middle/src
Jonas Schievink f02f7b05b2
Rollup merge of #81503 - henryboisdequin:fix-const-fn-arr-err-msg, r=estebank
Suggest to create a new `const` item if the `fn` in the array is a `const fn`

Fixes #73734. If the `fn` in the array repeat expression is a `const fn`, suggest creating a new `const` item. On nightly, suggest creating an inline `const` block. This PR also removes the `suggest_const_in_array_repeat_expressions` as it is no longer necessary.

Example:

```rust
fn main() {
    // Should not compile but hint to create a new const item (stable) or an inline const block (nightly)
    let strings: [String; 5] = [String::new(); 5];
    println!("{:?}", strings);
}

```

Gives this error:

```
error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied
 --> $DIR/const-fn-in-vec.rs:3:32
  |
2 |     let strings: [String; 5] = [String::new(); 5];
  |                             ^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `String`
  |
  = note: the `Copy` trait is required because the repeated element will be copied
```

With this change, this is the error message:

```
error[E0277]: the trait bound `String: Copy` is not satisfied
  --> $DIR/const-fn-in-vec.rs:3:32
   |
LL |     let strings: [String; 5] = [String::new(); 5];
   |                                ^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
   |
   = help: moving the function call to a new `const` item will resolve the error
```
2021-02-15 16:06:47 +01:00
..
dep_graph Edit rustc_middle::dep_graph module documentation 2021-01-22 15:15:05 -08:00
hir Fix typo in mod.rs 2021-02-12 13:47:21 +09:00
ich Add disambiugator to ExpnData 2021-01-23 15:41:17 -05:00
infer Move a few more types to rustc_type_ir 2021-01-18 21:06:12 +01:00
middle Enforce that query results implement Debug 2021-01-16 17:53:02 -05:00
mir Rollup merge of #81665 - jacob-hughes:mir_doc_fix, r=estebank 2021-02-02 16:01:49 -05:00
query Auto merge of #81905 - Dylan-DPC:rollup-mxpz1j7, r=Dylan-DPC 2021-02-09 05:57:18 +00:00
traits Rollup merge of #81503 - henryboisdequin:fix-const-fn-arr-err-msg, r=estebank 2021-02-15 16:06:47 +01:00
ty Auto merge of #81744 - rylev:overlapping-early-exit2, r=lcnr 2021-02-12 17:38:15 +00:00
util Make panic/assert calls in rustc compatible with Rust 2021. 2021-02-03 22:42:53 +01:00
arena.rs Combination of commits 2020-12-03 09:50:10 -08:00
lib.rs docs: Fix outdated crate reference 2020-12-19 23:32:51 -08:00
lint.rs introduce future-compatibility warning for forbidden lint groups 2021-02-02 18:21:37 -05:00
macros.rs Auto merge of #78779 - LeSeulArtichaut:ty-visitor-return, r=oli-obk 2020-11-17 12:24:34 +00:00
tests.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00