rust/compiler
Matthias Krüger 3ec2b7bd1d
Rollup merge of #121236 - long-long-float:rust-fix-consider-slicing, r=Nadrieril
Don't show suggestion if slice pattern is not top-level

Close #120605

Don't show suggestion to add slicing (`[..]`) if the slice pattern is enclosed by struct like `Struct { a: [] }`.

For example, current rustc makes a suggestion as a comment. However, the pattern `a: []` is wrong, not scrutinee `&self.a`.
In this case, the structure type `a: Vec<Struct>` and the pattern `a: []` are different so I think the pattern should be fixed, not the scrutinee.
If the parent of the pattern that was the target of the error is a structure, I made the compiler not show a suggestion.

```rs
pub struct Struct {
    a: Vec<Struct>,
}

impl Struct {
    pub fn test(&self) {
        if let [Struct { a: [] }] = &self.a {
//             ^^^^^^^^^^^^^^^^^^   ------- help: consider slicing here: `&self.a[..]`
            println!("matches!")
        }
    }
}
```

Note:

* ~~I created `PatInfo.history` to store parent-child relationships for patterns, but this may be inefficient.~~
  * I use two fields `parent_kind` and `current_kind` instead of vec. It may not performance issue.
* Currently only looking at direct parents, but may need to look at deeper ancestry.
2024-03-17 14:04:14 +01:00
..
rustc
rustc_abi Auto merge of #121668 - erikdesjardins:commonprim, r=scottmcm,oli-obk 2024-03-13 15:25:35 +00:00
rustc_arena rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
rustc_ast Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_ast_ir Fix typo in VisitorResult 2024-03-08 23:20:29 -05:00
rustc_ast_lowering Rollup merge of #122564 - Bryanskiy:delegation-fixes, r=compiler-errors 2024-03-16 23:28:48 +01:00
rustc_ast_passes Rollup merge of #121545 - gvozdvmozgu:fix-attribute-validation-associated-items, r=fmease 2024-03-16 23:28:47 +01:00
rustc_ast_pretty Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_attr Rename IntoDiagnostic as Diagnostic. 2024-03-11 09:15:09 +11:00
rustc_baked_icu_data
rustc_borrowck Rollup merge of #122254 - estebank:issue-48677, r=oli-obk 2024-03-15 21:51:56 +01:00
rustc_builtin_macros delay expand macro bang when there has indeterminate path 2024-03-13 16:11:16 +08:00
rustc_codegen_cranelift Merge commit '4cf4ffc6ba514f171b3f52d1c731063e4fc45be3' into sync_cg_clif-2024-03-16 2024-03-16 17:23:11 +00:00
rustc_codegen_gcc Some comment nits 2024-03-12 08:51:20 +00:00
rustc_codegen_llvm Register LLVM handlers for bad-alloc / OOM 2024-03-15 15:49:06 -07:00
rustc_codegen_ssa Auto merge of #121297 - michaelwoerister:set-pdb-alt-path, r=wesleywiser 2024-03-15 14:14:34 +00:00
rustc_const_eval Rename some things around validation error reporting to signal that it is in fact about validation failures 2024-03-14 12:21:35 +00:00
rustc_data_structures Issue 122262: MAP_PRIVATE for more reliability on virtualised filesystems. 2024-03-15 18:31:07 -04:00
rustc_driver
rustc_driver_impl Rollup merge of #121764 - Zoxc:incr-sess-no-source, r=oli-obk 2024-03-14 20:00:18 +01:00
rustc_error_codes Improve error message for opaque captures 2024-03-08 19:08:13 +00:00
rustc_error_messages Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +11:00
rustc_errors Make SubdiagMessageOp well-formed 2024-03-14 13:13:08 -04:00
rustc_expand Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_feature Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_fluent_macro Rename SubdiagnosticMessage as SubdiagMessage. 2024-03-05 12:14:49 +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 Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_hir_analysis Rollup merge of #122577 - fmease:speculative-say-what, r=compiler-errors 2024-03-16 23:28:49 +01:00
rustc_hir_pretty Rollup merge of #122487 - GuillaumeGomez:rename-stmtkind-local, r=oli-obk 2024-03-14 20:00:21 +01:00
rustc_hir_typeck Don't show suggestion if slice pattern is enclosed by any patterns 2024-03-17 19:21:13 +09:00
rustc_incremental Make incremental sessions identity no longer depend on the crate names provided by source code 2024-03-13 16:40:02 +01:00
rustc_index doc: Add better explanation 2024-03-06 16:54:42 +01:00
rustc_index_macros Step all bootstrap cfgs forward 2024-02-08 07:44:34 -05:00
rustc_infer Rollup merge of #122513 - petrochenkov:somehir4, r=fmease 2024-03-15 17:24:09 +01:00
rustc_interface Rollup merge of #121764 - Zoxc:incr-sess-no-source, r=oli-obk 2024-03-14 20:00:18 +01:00
rustc_lexer Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_lint Rollup merge of #122608 - Urgau:check-cfg-move-diagnostic-logic, r=fmease 2024-03-17 08:23:26 +01:00
rustc_lint_defs Rollup merge of #121720 - tmandry:split-refining, r=compiler-errors 2024-03-16 23:28:47 +01:00
rustc_llvm Install the bad-alloc handler before fatal errors 2024-03-15 16:49:08 -07:00
rustc_log rustc_log: expose tracing-tree "wraparound" in an env var 2024-03-03 12:33:26 +01:00
rustc_macros Rename diagnostic derive things. 2024-03-11 10:06:34 +11:00
rustc_metadata Rollup merge of #122605 - osiewicz:metadata-register-crate-store-crate-name-in-profile, r=Nadrieril 2024-03-16 23:28:50 +01:00
rustc_middle Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_mir_build Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_mir_dataflow Distinguish between library and lang UB in assert_unsafe_precondition 2024-03-08 18:53:58 -05:00
rustc_mir_transform Rollup merge of #122471 - RalfJung:const-eval-span, r=oli-obk 2024-03-15 10:14:54 +01:00
rustc_monomorphize preserve span when evaluating mir::ConstOperand 2024-03-14 21:55:07 +01:00
rustc_next_trait_solver Allow a way to add constructors for rustc_type_ir types 2024-03-04 15:39:59 +00:00
rustc_parse Rename ast::StmtKind::Local into ast::StmtKind::Let 2024-03-14 12:42:04 +01:00
rustc_parse_format remove a couple of redundant clones 2024-02-17 12:46:18 +01:00
rustc_passes Auto merge of #122371 - oli-obk:visit_nested_body, r=tmiasko 2024-03-16 04:35:02 +00:00
rustc_pattern_analysis Rollup merge of #122437 - Nadrieril:no-after-max, r=compiler-errors 2024-03-13 20:01:57 +01:00
rustc_privacy Test and implement reachability for trait objects and generic parameters of functions 2024-03-14 14:10:45 +00:00
rustc_query_impl Verify that query keys result in unique dep nodes 2024-03-12 05:31:41 +01:00
rustc_query_system Rollup merge of #122245 - saethlin:check-dep-graph-size, r=petrochenkov 2024-03-12 09:04:00 -07:00
rustc_resolve Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, r=compiler-errors,petrochenkov 2024-03-16 02:02:00 +00:00
rustc_serialize Replace NonZero::<_>::new with NonZero::new. 2024-02-15 08:09:42 +01:00
rustc_session Rollup merge of #121207 - chriswailes:z-external-clangrt, r=michaelwoerister 2024-03-15 10:14:53 +01:00
rustc_smir preserve span when evaluating mir::ConstOperand 2024-03-14 21:55:07 +01:00
rustc_span Add rustc_never_type_mode = "no_fallback" 2024-03-15 17:48:26 +00:00
rustc_symbol_mangling Rename IntoDiagnostic as Diagnostic. 2024-03-11 09:15:09 +11:00
rustc_target Rollup merge of #122212 - erikdesjardins:byval-align2, r=wesleywiser 2024-03-14 20:00:18 +01:00
rustc_trait_selection Auto merge of #122571 - matthiaskrgr:rollup-36wwovk, r=matthiaskrgr 2024-03-15 21:18:36 +00:00
rustc_traits Merge check_mod_impl_wf and check_mod_type_wf 2024-03-07 06:27:09 +00:00
rustc_transmute Safe Transmute: Use 'not yet supported', not 'unspecified' in errors 2024-03-15 17:42:29 +00:00
rustc_ty_utils Rollup merge of #122513 - petrochenkov:somehir4, r=fmease 2024-03-15 17:24:09 +01:00
rustc_type_ir Remove Ord from ClosureKind 2024-03-09 21:16:43 +08:00
stable_mir Rollup merge of #122405 - celinval:smir-new-const, r=oli-obk 2024-03-14 11:09:58 +01:00