1
Fork 0
rust/compiler
Matthias Krüger b849aa9f61
Rollup merge of #138360 - Urgau:fix-fp-expr_or_init, r=wesleywiser
Fix false-positive in `expr_or_init` and in the `invalid_from_utf8` lint

This PR fixes the logic for finding initializer in the `expr_or_init` and `expr_or_init_with_outside_body` functions.

If the binding were to be mutable (`let mut`), the logic wouldn't consider that the initializer expression could have been modified and would return the init expression even-trough multiple subsequent assignments could have been done.

Example:
```rust
let mut a = [99, 108, 130, 105, 112, 112]; // invalid, not UTF-8
loop {
    a = *b"clippy"; // valid
    break;
}
std::str::from_utf8_mut(&mut a); // currently warns, with this PR it doesn't
```

This PR modifies the logic to excludes mutable let bindings.

Found when using `expr_or_init` in https://github.com/rust-lang/rust/pull/119220.

r? compiler
2025-03-12 08:06:50 +01:00
..
rustc Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_abi Auto merge of #138302 - matthiaskrgr:rollup-an2up80, r=matthiaskrgr 2025-03-11 00:55:25 +00:00
rustc_arena Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_ast Introduce sym::dummy and Ident::dummy. 2025-03-12 09:35:11 +11:00
rustc_ast_ir Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_ast_lowering Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_ast_passes Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_ast_pretty Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_attr_data_structures Rollup merge of #138063 - compiler-errors:improve-attr-unpretty, r=jdonszelmann 2025-03-11 13:30:51 +01:00
rustc_attr_parsing Introduce sym::dummy and Ident::dummy. 2025-03-12 09:35:11 +11:00
rustc_baked_icu_data Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_borrowck Auto merge of #138366 - matthiaskrgr:rollup-cn16m7q, r=matthiaskrgr 2025-03-11 21:17:18 +00:00
rustc_builtin_macros Auto merge of #138366 - matthiaskrgr:rollup-cn16m7q, r=matthiaskrgr 2025-03-11 21:17:18 +00:00
rustc_codegen_cranelift Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_codegen_gcc Auto merge of #137586 - nnethercote:SetImpliedBits, r=bjorn3 2025-03-11 12:05:16 +00:00
rustc_codegen_llvm Auto merge of #137586 - nnethercote:SetImpliedBits, r=bjorn3 2025-03-11 12:05:16 +00:00
rustc_codegen_ssa Rollup merge of #138231 - Sa4dUs:autodiff-ice, r=ZuseZ4 2025-03-11 19:35:29 +01:00
rustc_const_eval miri native_calls: ensure we actually expose *mutable* provenance to the memory FFI can access 2025-03-11 14:34:21 +01:00
rustc_data_structures Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_driver Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_driver_impl Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_error_codes Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_error_messages Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_errors Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_expand Introduce sym::dummy and Ident::dummy. 2025-03-12 09:35:11 +11:00
rustc_feature Rollup merge of #138300 - RalfJung:unqualified-local-imports, r=jieyouxu 2025-03-11 13:30:53 +01:00
rustc_fluent_macro Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_fs_util Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_graphviz Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_hashes Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_hir Introduce sym::dummy and Ident::dummy. 2025-03-12 09:35:11 +11:00
rustc_hir_analysis Auto merge of #138366 - matthiaskrgr:rollup-cn16m7q, r=matthiaskrgr 2025-03-11 21:17:18 +00:00
rustc_hir_pretty Rollup merge of #138063 - compiler-errors:improve-attr-unpretty, r=jdonszelmann 2025-03-11 13:30:51 +01:00
rustc_hir_typeck Rollup merge of #138347 - nnethercote:less-kw-Empty-2, r=compiler-errors 2025-03-12 08:06:49 +01:00
rustc_incremental Auto merge of #138302 - matthiaskrgr:rollup-an2up80, r=matthiaskrgr 2025-03-11 00:55:25 +00:00
rustc_index Auto merge of #137795 - Jarcho:idx_opt, r=davidtwco 2025-03-12 00:30:16 +00:00
rustc_index_macros Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_infer Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_interface Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_lexer Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_lint Rollup merge of #138360 - Urgau:fix-fp-expr_or_init, r=wesleywiser 2025-03-12 08:06:50 +01:00
rustc_lint_defs Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_llvm Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_log Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_macros Rollup merge of #138063 - compiler-errors:improve-attr-unpretty, r=jdonszelmann 2025-03-11 13:30:51 +01:00
rustc_metadata Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_middle Auto merge of #138366 - matthiaskrgr:rollup-cn16m7q, r=matthiaskrgr 2025-03-11 21:17:18 +00:00
rustc_mir_build Rollup merge of #138284 - compiler-errors:const-param-ty-annotation, r=BoxyUwU 2025-03-11 19:35:32 +01:00
rustc_mir_dataflow Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_mir_transform Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_monomorphize Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_next_trait_solver Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_parse Auto merge of #128440 - oli-obk:defines, r=lcnr 2025-03-11 18:13:31 +00:00
rustc_parse_format Auto merge of #136932 - m-ou-se:fmt-width-precision-u16, r=scottmcm 2025-03-11 04:07:05 +00:00
rustc_passes Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_pattern_analysis Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_privacy Convert a kw::Empty occurrence to sym::dummy. 2025-03-12 09:35:13 +11:00
rustc_query_impl Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_query_system Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_resolve Introduce sym::dummy and Ident::dummy. 2025-03-12 09:35:11 +11:00
rustc_sanitizers Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_serialize Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_session Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_smir Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_span Introduce sym::dummy and Ident::dummy. 2025-03-12 09:35:11 +11:00
rustc_symbol_mangling Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_target Auto merge of #137586 - nnethercote:SetImpliedBits, r=bjorn3 2025-03-11 12:05:16 +00:00
rustc_trait_selection Rollup merge of #138174 - compiler-errors:elaborate-unsize-self-pred, r=BoxyUwU 2025-03-12 08:06:47 +01:00
rustc_traits Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_transmute Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_ty_utils Auto merge of #138366 - matthiaskrgr:rollup-cn16m7q, r=matthiaskrgr 2025-03-11 21:17:18 +00:00
rustc_type_ir Remove unnecessary [lints.rust] sections. 2025-03-11 12:11:04 +11:00
rustc_type_ir_macros Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
stable_mir Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00