rust/compiler
Matthias Krüger e6a100baa2
Rollup merge of #99438 - WaffleLapkin:dont_wrap_in_non_zero, r=compiler-errors
Improve suggestions for `NonZeroT` <- `T` coercion error

Currently, when encountering a type mismatch error with `NonZeroT` and `T` (for example `NonZeroU8` and `u8`) we errorneusly suggest wrapping expression in `NonZeroT`:
```text
error[E0308]: mismatched types
 --> ./t.rs:7:35
  |
7 |     let _: std::num::NonZeroU64 = 1;
  |            --------------------   ^ expected struct `NonZeroU64`, found integer
  |            |
  |            expected due to this
  |
help: try wrapping the expression in `std::num::NonZeroU64`
  |
7 |     let _: std::num::NonZeroU64 = std::num::NonZeroU64(1);
  |                                   +++++++++++++++++++++ +
```

I've removed this suggestion and added suggestions to call `new` (for `Option<NonZeroT>` <- `T` case) or `new` and `unwrap` (for `NonZeroT` <- `T` case):

```text
error[E0308]: mismatched types
 --> ./t.rs:7:35
  |
7 |     let _: std::num::NonZeroU64 = 1;
  |            --------------------   ^ expected struct `NonZeroU64`, found integer
  |            |
  |            expected due to this
  |
help: Consider calling `NonZeroU64::new`
  |
7 |     let _: std::num::NonZeroU64 = NonZeroU64::new(1).unwrap();
  |                                   ++++++++++++++++ ++++++++++

error[E0308]: mismatched types
 --> ./t.rs:8:43
  |
8 |     let _: Option<std::num::NonZeroU64> = 1;
  |            ----------------------------   ^ expected enum `Option`, found integer
  |            |
  |            expected due to this
  |
  = note: expected enum `Option<NonZeroU64>`
             found type `{integer}`
help: Consider calling `NonZeroU64::new`
  |
8 |     let _: Option<std::num::NonZeroU64> = NonZeroU64::new(1);
  |                                           ++++++++++++++++ +
```

r? `@compiler-errors`
2022-07-19 13:30:49 +02:00
..
rustc Don't rerun the build script for the compiler each time on linux 2022-07-10 23:57:25 -05:00
rustc_apfloat Update smallvec to 1.8.1. 2022-06-27 08:48:55 +10:00
rustc_arena Rollup merge of #97711 - Nilstrieb:rustc-arena-ub, r=wesleywiser 2022-07-07 18:06:49 +05:30
rustc_ast Stabilize let_chains 2022-07-16 20:17:58 -03:00
rustc_ast_lowering Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_ast_passes Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_ast_pretty Parse closure binders 2022-07-12 16:25:16 +04:00
rustc_attr Stabilize let_chains 2022-07-16 20:17:58 -03:00
rustc_borrowck Use LocalDefId in OpaqueTypeKey 2022-07-19 02:08:49 +00:00
rustc_builtin_macros Stabilize let_chains 2022-07-16 20:17:58 -03:00
rustc_codegen_cranelift Auto merge of #99033 - 5225225:interpreter-validity-checks, r=oli-obk 2022-07-17 19:28:01 +00:00
rustc_codegen_gcc Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
rustc_codegen_llvm Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_codegen_ssa Auto merge of #99033 - 5225225:interpreter-validity-checks, r=oli-obk 2022-07-17 19:28:01 +00:00
rustc_const_eval Rollup merge of #99378 - RalfJung:box-early-return, r=oli-obk 2022-07-18 21:14:48 +05:30
rustc_data_structures Auto merge of #96544 - m-ysk:feature/issue-96358, r=cjgillot 2022-07-14 21:50:14 +00:00
rustc_driver Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
rustc_error_codes Don't use main; improve example 2022-07-19 10:23:34 +02:00
rustc_error_messages Update invalid atomic ordering lint 2022-07-18 12:02:11 +02:00
rustc_errors Mention first and last macro in backtrace 2022-07-19 03:07:54 +00:00
rustc_expand Rollup merge of #99435 - CAD97:revert-dollar-dollar-crate, r=Mark-Simulacrum 2022-07-19 13:30:48 +02:00
rustc_feature Stabilize let_chains 2022-07-16 20:17:58 -03:00
rustc_fs_util
rustc_graphviz Fully stabilize NLL 2022-06-03 17:16:41 -04:00
rustc_hir Rollup merge of #99119 - TaKO8Ki:remove-string-matching-about-methods, r=cjgillot 2022-07-15 15:53:38 +05:30
rustc_hir_pretty use rustc_hir_pretty::qpath_to_string to avoid span_to_snippet when rendering path 2022-07-17 04:58:38 +00:00
rustc_incremental Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
rustc_index Use a bitset instead of a hash map in HIR ID validator 2022-07-04 08:30:13 +02:00
rustc_infer Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_interface Auto merge of #96544 - m-ysk:feature/issue-96358, r=cjgillot 2022-07-14 21:50:14 +00:00
rustc_lexer fix typo in comment 2022-06-28 19:59:09 +05:30
rustc_lint Update invalid atomic ordering lint 2022-07-18 12:02:11 +02:00
rustc_lint_defs Only suggest if span is not erroneous 2022-07-15 17:32:34 +00:00
rustc_llvm Rollup merge of #98998 - workingjubilee:naked-means-no-clothes-enforcement-technology, r=Amanieu 2022-07-18 21:14:43 +05:30
rustc_log clippy::complexity fixes 2022-05-26 13:14:24 +02:00
rustc_macros macros: support adding warnings to diags 2022-07-15 16:13:49 +01:00
rustc_metadata Stabilize let_chains 2022-07-16 20:17:58 -03:00
rustc_middle Rollup merge of #98028 - aticu:master, r=estebank 2022-07-19 13:30:44 +02:00
rustc_mir_build use body's param-env when checking if type needs drop 2022-07-17 10:56:12 -07:00
rustc_mir_dataflow Rollup merge of #98582 - oli-obk:unconstrained_opaque_type, r=estebank 2022-07-16 22:30:47 +02:00
rustc_mir_transform use body's param-env when checking if type needs drop 2022-07-17 10:56:12 -07:00
rustc_monomorphize Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
rustc_parse Stabilize let_chains 2022-07-16 20:17:58 -03:00
rustc_parse_format Make rustc_parse_format compile on stable 2022-05-03 11:26:58 +02:00
rustc_passes Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_plugin_impl remove currently unused deps 2022-06-13 22:20:51 +03:00
rustc_privacy errors: lint on LintDiagnosticBuilder::build 2022-07-15 16:13:47 +01:00
rustc_query_impl Use constant eval to do strict validity checks 2022-07-14 22:55:17 +01:00
rustc_query_system Rename debugging_opts to unstable_opts 2022-07-13 17:47:06 -05:00
rustc_resolve Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_save_analysis Rollup merge of #98705 - WaffleLapkin:closure_binder, r=cjgillot 2022-07-14 14:14:21 +05:30
rustc_serialize use BufReader for counting zero bytes 2022-07-02 22:51:42 +09:00
rustc_session Rollup merge of #99360 - compiler-errors:issue-99331, r=fee1-dead 2022-07-18 08:40:00 +09:00
rustc_smir Rustfmt 2022-06-02 10:29:00 +00:00
rustc_span Rollup merge of #99438 - WaffleLapkin:dont_wrap_in_non_zero, r=compiler-errors 2022-07-19 13:30:49 +02:00
rustc_symbol_mangling Allow to create definitions inside the query system. 2022-07-06 22:50:55 +02:00
rustc_target Auto merge of #99033 - 5225225:interpreter-validity-checks, r=oli-obk 2022-07-17 19:28:01 +00:00
rustc_trait_selection Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote 2022-07-19 13:30:46 +02:00
rustc_traits Update TypeVisitor paths 2022-07-06 06:41:53 +01:00
rustc_ty_utils Rollup merge of #99000 - JulianKnodt:allow_resolve_no_substs, r=lcnr 2022-07-14 19:24:04 +05:30
rustc_type_ir Auto merge of #98614 - oli-obk:take_unsound_opaque_types, r=wesleywiser 2022-07-08 17:55:26 +00:00
rustc_typeck Rollup merge of #99438 - WaffleLapkin:dont_wrap_in_non_zero, r=compiler-errors 2022-07-19 13:30:49 +02:00