rust/compiler
Yuki Okushi 20c1fa1770
Rollup merge of #82287 - r00ster91:field_name_and, r=petrochenkov
Make "missing field" error message more natural

```rust
struct A {
    x: i32,
    y: i32,
    z: i32,
}

fn main() {
    A { };
}
```
```
error[E0063]: missing fields `x`, `y`, `z` in initializer of `A`
 --> src/main.rs:8:5
  |
8 |     A { };
  |     ^ missing `x`, `y`, `z`
```
This error is now:
```
error[E0063]: missing fields `x`, `y` and `z` in initializer of `A`
 --> src/main.rs:8:5
  |
8 |     A { };
  |     ^ missing `x`, `y` and `z`
```
I thought it looked nicer and more natural this way. Also, if there is >3 fields missing, there is an "and" as well ("missing \`x\`, \`y\`, \`z\` *and* 1 other field"), but for <=3 there is not. As such it improves consistency too.

As for the implementation, originally I ended up with a chunky `push_str` algorithm but then I figured I could just do the formatting manually since it's just 3 field names at maximum. It is comparatively readable.

As a sidenote, one thing I was wondering about is, isn't there more cases where you have a list of things like field names? Maybe this whole thing can at some point later be made into a more general function to be used in multiple areas.
2021-02-22 18:26:07 +09:00
..
rustc just max_level_info 2020-09-11 09:37:51 -07:00
rustc_apfloat bumped smallvec deps 2021-02-14 18:03:11 +03:00
rustc_arena Rollup merge of #82077 - pierwill:edit-droparena, r=lcnr 2021-02-15 16:07:00 +01:00
rustc_ast ast: Keep expansion status for out-of-line module items 2021-02-18 13:07:49 +03:00
rustc_ast_lowering ast: Keep expansion status for out-of-line module items 2021-02-18 13:07:49 +03:00
rustc_ast_passes ast: Keep expansion status for out-of-line module items 2021-02-18 13:07:49 +03:00
rustc_ast_pretty Rollup merge of #82238 - petrochenkov:nocratemod, r=Aaron1011 2021-02-19 02:49:08 +01:00
rustc_attr Never MIR inline functions with a different instruction set 2021-02-05 00:00:00 +00:00
rustc_builtin_macros ast: Keep expansion status for out-of-line module items 2021-02-18 13:07:49 +03:00
rustc_codegen_cranelift Use a QueryContext for try_mark_green. 2021-02-19 17:51:56 +01:00
rustc_codegen_llvm Rollup merge of #82105 - nagisa:nagisa/ensure-removed, r=petrochenkov 2021-02-17 20:37:57 +01:00
rustc_codegen_ssa Rollup merge of #81966 - deg4uss3r:degausser/aarch64_apple_ios_sim, r=shepmaster 2021-02-21 15:26:42 +09:00
rustc_data_structures Print -Ztime-passes (and misc stats/logs) on stderr, not stdout. 2021-02-18 14:13:38 +02:00
rustc_driver Auto merge of #82341 - GuillaumeGomez:rollup-t7y7tyg, r=GuillaumeGomez 2021-02-20 21:38:53 +00:00
rustc_error_codes Rollup merge of #82246 - jesusprubio:add-long-explanation-e0549, r=GuillaumeGomez 2021-02-18 16:57:41 +01:00
rustc_errors nhwn: optimize counting digits in line numbers 2021-02-18 08:20:07 -06:00
rustc_expand ast: Keep expansion status for out-of-line module items 2021-02-18 13:07:49 +03:00
rustc_feature Feature gate macro attributes in #[derive] output 2021-02-07 20:08:45 +03:00
rustc_fs_util Optimize away a fs::metadata call. 2021-01-06 08:33:15 -08:00
rustc_graphviz remove redundant closures (clippy::redundant_closure) 2021-01-03 13:34:24 +01:00
rustc_hir Rollup merge of #82238 - petrochenkov:nocratemod, r=Aaron1011 2021-02-19 02:49:08 +01:00
rustc_hir_pretty Auto merge of #81611 - cjgillot:meowner, r=estebank 2021-02-16 22:14:32 +00:00
rustc_incremental Print -Ztime-passes (and misc stats/logs) on stderr, not stdout. 2021-02-18 14:13:38 +02:00
rustc_index Auto merge of #81498 - thomaseizinger:ice-workaround-56935-rustc-index, r=matthewjasper 2021-02-07 08:09:58 +00:00
rustc_infer Rollup merge of #81496 - guswynn:expected_async_block, r=oli-obk 2021-02-19 02:49:00 +01:00
rustc_interface Move the query system to rustc_query_impl. 2021-02-19 17:51:58 +01:00
rustc_lexer Return EOF_CHAR constant instead of magic char. 2021-01-07 13:20:04 +01:00
rustc_lint ast: Stop using Mod in Crate 2021-02-18 13:07:49 +03:00
rustc_lint_defs Add explanations and suggestions to irrefutable_let_patterns lint 2021-02-18 16:21:16 -08:00
rustc_llvm HWASan support 2021-02-07 23:48:58 -08:00
rustc_macros Move the query system to rustc_query_impl. 2021-02-19 17:51:58 +01:00
rustc_metadata Print -Ztime-passes (and misc stats/logs) on stderr, not stdout. 2021-02-18 14:13:38 +02:00
rustc_middle Auto merge of #82341 - GuillaumeGomez:rollup-t7y7tyg, r=GuillaumeGomez 2021-02-20 21:38:53 +00:00
rustc_mir Rollup merge of #82176 - RalfJung:mir-fn-ptr-pretty, r=oli-obk 2021-02-20 20:37:00 +01:00
rustc_mir_build Add explanations and suggestions to irrefutable_let_patterns lint 2021-02-18 16:21:16 -08:00
rustc_parse Rollup merge of #82238 - petrochenkov:nocratemod, r=Aaron1011 2021-02-19 02:49:08 +01:00
rustc_parse_format parse_format: treat r" as a literal 2021-02-06 15:01:07 +00:00
rustc_passes Rollup merge of #82238 - petrochenkov:nocratemod, r=Aaron1011 2021-02-19 02:49:08 +01:00
rustc_plugin_impl Only store a LocalDefId in hir::Item. 2021-02-15 19:32:10 +01:00
rustc_privacy Rollup merge of #82066 - matthewjasper:trait-ref-fix, r=jackh726 2021-02-18 16:57:34 +01:00
rustc_query_impl Workaround rustdoc not honouring cfg(parallel_compiler). 2021-02-19 22:05:27 +01:00
rustc_query_system Use a QueryContext for try_mark_green. 2021-02-19 17:51:56 +01:00
rustc_resolve Rollup merge of #82259 - osa1:issue82156, r=petrochenkov 2021-02-19 02:49:11 +01:00
rustc_save_analysis Only store a LocalDefId in hir::ForeignItem. 2021-02-15 19:32:29 +01:00
rustc_serialize bumped smallvec deps 2021-02-14 18:03:11 +03:00
rustc_session Print -Ztime-passes (and misc stats/logs) on stderr, not stdout. 2021-02-18 14:13:38 +02:00
rustc_span Print -Ztime-passes (and misc stats/logs) on stderr, not stdout. 2021-02-18 14:13:38 +02:00
rustc_symbol_mangling Use less HirId when referring to items. 2021-02-15 19:36:12 +01:00
rustc_target Rollup merge of #81966 - deg4uss3r:degausser/aarch64_apple_ios_sim, r=shepmaster 2021-02-21 15:26:42 +09:00
rustc_trait_selection Auto merge of #82020 - jyn514:mut-passes, r=camelid,GuillaumeGomez 2021-02-19 16:39:03 +00:00
rustc_traits Rollup merge of #82066 - matthewjasper:trait-ref-fix, r=jackh726 2021-02-18 16:57:34 +01:00
rustc_ty_utils Auto merge of #81172 - SimonSapin:ptr-metadata, r=oli-obk 2021-02-18 04:22:16 +00:00
rustc_type_ir Move a few more types to rustc_type_ir 2021-01-18 21:06:12 +01:00
rustc_typeck Rollup merge of #82287 - r00ster91:field_name_and, r=petrochenkov 2021-02-22 18:26:07 +09:00