rust/compiler
Guillaume Gomez 9df7f26b1b
Rollup merge of #121000 - Nadrieril:keep_all_fields, r=compiler-errors
pattern_analysis: rework how we hide empty private fields

Consider this:
```rust
mod foo {
  pub struct Bar {
    pub a: bool,
    b: !,
  }
}

fn match_a_bar(bar: foo::Bar) -> bool {
  match bar {
    Bar { a, .. } => a,
  }
}
```

Because the field `b` is private, matches outside the module are not allowed to observe the fact that `Bar` is empty. In particular `match bar {}` is valid within the module `foo` but an error outside (assuming `exhaustive_patterns`).

We currently handle this by hiding the field `b` when it's both private and empty. This means that the pattern `Bar { a, .. }` is lowered to `Bar(a, _)` if we're inside of `foo` and to `Bar(a)` outside. This involves a bit of a dance to keep field indices straight. But most importantly this makes pattern lowering depend on the module.

In this PR, I instead do nothing special when lowering. Only during analysis do we track whether a place must be skipped.

r? `@compiler-errors`
2024-02-29 17:08:37 +01:00
..
rustc
rustc_abi fix some references to no-longer-existing ReprOptions.layout_seed 2024-02-26 10:40:48 +01:00
rustc_arena rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
rustc_ast Split rustc_type_ir to avoid rustc_ast from depending on it 2024-02-27 18:11:23 +00:00
rustc_ast_ir Split rustc_type_ir to avoid rustc_ast from depending on it 2024-02-27 18:11:23 +00:00
rustc_ast_lowering Rename DiagnosticArgFromDisplay as DiagArgFromDisplay. 2024-02-28 08:55:37 +11:00
rustc_ast_passes Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_ast_pretty Add ErrorGuaranteed to ast::ExprKind::Err 2024-02-25 22:24:31 +01:00
rustc_attr Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_baked_icu_data
rustc_borrowck Rename DiagnosticArg{,Map,Name,Value} as DiagArg{,Map,Name,Value}. 2024-02-28 08:55:37 +11:00
rustc_builtin_macros Remove unused diagnostic struct 2024-02-29 14:14:21 +08:00
rustc_codegen_cranelift Auto merge of #121635 - 823984418:remove_archive_builder_lifetime_a, r=nnethercote 2024-02-27 03:27:48 +00:00
rustc_codegen_gcc Rename DiagnosticArg{,Map,Name,Value} as DiagArg{,Map,Name,Value}. 2024-02-28 08:55:37 +11:00
rustc_codegen_llvm Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_codegen_ssa Rename DiagnosticArg{,Map,Name,Value} as DiagArg{,Map,Name,Value}. 2024-02-28 08:55:37 +11:00
rustc_const_eval Auto merge of #121489 - nnethercote:diag-renaming, r=davidtwco 2024-02-28 20:39:38 +00:00
rustc_data_structures compiler: use addr_of! 2024-02-24 18:53:48 +03:00
rustc_driver
rustc_driver_impl Inline and remove abort_on_err. 2024-02-22 08:03:47 +11:00
rustc_error_codes remove platform-intrinsics ABI; make SIMD intrinsics be regular intrinsics 2024-02-25 08:14:52 +01:00
rustc_error_messages errors: only eagerly translate subdiagnostics 2024-02-15 10:34:41 +00:00
rustc_errors Refactor DiagCtxtInner::flush_delayed. 2024-02-29 11:07:42 +11:00
rustc_expand Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_feature Rollup merge of #121740 - surechen:change_attribute_to_local_20240228, r=lcnr 2024-02-29 05:25:27 -05:00
rustc_fluent_macro Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_fs_util Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_graphviz Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_hir rename RPITIT from opaque to synthetic 2024-02-27 17:43:40 +00:00
rustc_hir_analysis Rollup merge of #121779 - mu001999:clean, r=Nilstrieb 2024-02-29 05:25:30 -05:00
rustc_hir_pretty Lower anonymous structs or unions to HIR 2024-02-12 12:47:23 +08:00
rustc_hir_typeck Auto merge of #121489 - nnethercote:diag-renaming, r=davidtwco 2024-02-28 20:39:38 +00:00
rustc_incremental Adjust the has_errors* methods. 2024-02-22 08:03:47 +11:00
rustc_index Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_index_macros Step all bootstrap cfgs forward 2024-02-08 07:44:34 -05:00
rustc_infer Rollup merge of #121743 - compiler-errors:opportunistically-resolve-regions, r=jackh726 2024-02-29 00:17:01 +01:00
rustc_interface Rename Diagnostic as DiagInner. 2024-02-28 08:33:25 +11:00
rustc_lexer Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_lint Auto merge of #121489 - nnethercote:diag-renaming, r=davidtwco 2024-02-28 20:39:38 +00:00
rustc_lint_defs Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_llvm Rollup merge of #121389 - klensy:llvm-warn-fix, r=nikic 2024-02-26 16:06:02 +01:00
rustc_log Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_macros Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_metadata Rename DiagnosticArg{,Map,Name,Value} as DiagArg{,Map,Name,Value}. 2024-02-28 08:55:37 +11:00
rustc_middle Auto merge of #121489 - nnethercote:diag-renaming, r=davidtwco 2024-02-28 20:39:38 +00:00
rustc_mir_build Rename DiagnosticArg{,Map,Name,Value} as DiagArg{,Map,Name,Value}. 2024-02-28 08:55:37 +11:00
rustc_mir_dataflow Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin 2024-02-16 09:53:01 +00:00
rustc_mir_transform Rollup merge of #121654 - compiler-errors:async-fn-for-fn-def, r=oli-obk 2024-02-29 14:33:50 +01:00
rustc_monomorphize Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_next_trait_solver always emit AliasRelate goals when relating aliases 2024-02-26 10:17:43 +01:00
rustc_parse Remove unused diagnostic struct 2024-02-29 14:14:21 +08:00
rustc_parse_format remove a couple of redundant clones 2024-02-17 12:46:18 +01:00
rustc_passes Fix typo in rustc_passes/messages.ftl 2024-02-29 13:16:24 +08:00
rustc_pattern_analysis Rollup merge of #121000 - Nadrieril:keep_all_fields, r=compiler-errors 2024-02-29 17:08:37 +01:00
rustc_privacy Rename DiagnosticArgFromDisplay as DiagArgFromDisplay. 2024-02-28 08:55:37 +11:00
rustc_query_impl Rename Diagnostic as DiagInner. 2024-02-28 08:33:25 +11:00
rustc_query_system Rename DiagnosticBuilder as Diag. 2024-02-28 08:55:35 +11:00
rustc_resolve Rollup merge of #121792 - GuillaumeGomez:improve-suggestion, r=michaelwoerister 2024-02-29 14:33:53 +01:00
rustc_serialize Replace NonZero::<_>::new with NonZero::new. 2024-02-15 08:09:42 +01:00
rustc_session Rename DiagnosticArg{,Map,Name,Value} as DiagArg{,Map,Name,Value}. 2024-02-28 08:55:37 +11:00
rustc_smir remove platform-intrinsics ABI; make SIMD intrinsics be regular intrinsics 2024-02-25 08:14:52 +01:00
rustc_span Rollup merge of #121686 - compiler-errors:rpitit-printing, r=lcnr 2024-02-28 16:04:52 +01:00
rustc_symbol_mangling Rollup merge of #121700 - rcvalle:rust-cfi-dont-compress-user-defined-builtin-types, r=compiler-errors 2024-02-29 14:33:51 +01:00
rustc_target Rollup merge of #120820 - CKingX:cpu-base-minimum, r=petrochenkov,ChrisDenton 2024-02-29 17:08:36 +01:00
rustc_trait_selection Rollup merge of #121654 - compiler-errors:async-fn-for-fn-def, r=oli-obk 2024-02-29 14:33:50 +01:00
rustc_traits Rename some normalization-related items 2024-02-20 17:30:49 +01:00
rustc_transmute Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_ty_utils remove platform-intrinsics ABI; make SIMD intrinsics be regular intrinsics 2024-02-25 08:14:52 +01:00
rustc_type_ir Split rustc_type_ir to avoid rustc_ast from depending on it 2024-02-27 18:11:23 +00:00
stable_mir remove platform-intrinsics ABI; make SIMD intrinsics be regular intrinsics 2024-02-25 08:14:52 +01:00