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
..
2024-11-27 07:18:25 -08:00
2025-01-22 00:00:31 -05:00
2025-03-07 10:50:31 +08:00
2025-02-10 20:21:39 +00:00
2024-12-23 20:25:41 +00:00
2024-09-27 14:29:34 -07:00
2024-10-28 16:57:08 +11:00
2025-03-11 12:05:02 +00:00
2024-12-18 19:27:44 +00:00
2024-12-12 23:36:27 +00:00
2025-02-10 20:21:39 +00:00
2024-11-27 07:18:25 -08:00
2025-02-22 23:03:14 +00:00
2024-09-14 16:12:00 +05:30
2024-11-27 07:18:25 -08:00
2025-03-07 10:50:31 +08:00
2024-07-31 00:07:42 -04:00
2025-02-10 20:21:39 +00:00
2024-09-25 13:26:48 +02:00
2024-09-27 16:37:43 +08:00
2024-09-27 16:37:43 +08:00
2024-09-13 11:51:17 +02:00
2025-02-11 08:52:08 +00:00
2025-03-06 10:50:23 +00:00
2025-02-11 19:42:47 -08:00
2025-02-11 19:42:47 -08:00
2025-02-11 19:42:47 -08:00
2024-08-31 14:00:54 +00:00
2024-08-08 13:09:58 +00:00
2024-12-23 20:25:41 +00:00
2024-10-18 18:18:41 +02:00
2024-10-18 18:18:41 +02:00
2024-10-18 18:18:41 +02:00
2024-10-18 18:18:41 +02:00
2024-08-22 13:32:01 +02:00
2024-08-22 13:32:01 +02:00
2024-08-22 13:32:01 +02:00
2024-05-29 17:40:34 +08:00
2024-05-29 16:53:28 +08:00
2024-05-29 16:53:28 +08:00
2024-05-29 16:53:28 +08:00
2024-05-29 16:53:28 +08:00
2024-06-25 17:22:22 +02:00
2024-11-03 13:55:52 -08:00
2024-11-03 13:55:52 -08:00
2024-06-25 22:32:46 +02:00
2024-06-25 22:32:46 +02:00
2024-09-06 20:51:06 +00:00
2024-12-09 17:31:16 +08:00
2024-12-09 17:31:16 +08:00
2024-12-15 23:46:42 +01:00
2024-12-20 23:48:46 +01:00
2024-12-20 23:48:46 +01:00
2024-12-02 18:43:37 +01:00
2024-12-02 18:43:37 +01:00
2024-12-02 18:43:37 +01:00
2024-12-02 18:43:37 +01:00
2025-02-10 20:21:39 +00:00
2025-02-10 20:21:39 +00:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 21:48:23 +01:00
2024-11-27 15:27:41 +01:00
2024-11-27 15:27:41 +01:00
2024-10-18 18:18:41 +02:00
2024-10-18 18:18:41 +02:00
2024-10-18 18:18:41 +02:00
2024-05-29 16:53:37 +08:00
2024-05-29 16:53:37 +08:00
2024-05-29 16:53:37 +08:00
2024-05-29 17:40:34 +08:00
2024-05-29 17:40:34 +08:00
2024-05-29 17:40:34 +08:00
2024-05-29 17:40:34 +08:00
2024-05-29 17:40:34 +08:00
2024-05-29 17:40:34 +08:00
2025-01-07 16:04:14 +01:00
2024-12-09 17:39:08 +08:00
2024-12-09 17:39:08 +08:00
2025-03-11 21:56:53 +01:00
2025-03-11 21:56:53 +01:00
2025-01-09 23:47:11 -08:00
2024-10-31 21:26:36 -05:00
2024-10-31 21:26:36 -05:00
2024-10-31 21:26:36 -05:00
2024-10-31 21:26:36 -05:00
2024-10-31 21:26:36 -05:00
2024-11-26 02:50:48 +08:00
2024-11-26 02:50:48 +08:00
2024-11-26 02:50:48 +08:00
2024-11-26 02:50:48 +08:00
2024-08-19 21:39:57 +02:00
2025-02-10 20:21:39 +00:00
2024-10-18 18:18:41 +02:00
2024-11-27 15:27:41 +01:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2024-11-16 20:03:31 +00:00
2024-07-18 20:08:38 +00:00
2025-02-02 01:00:33 +00:00
2025-02-02 01:00:33 +00:00
2025-02-10 20:21:39 +00:00
2025-02-10 20:21:39 +00:00
2025-01-20 16:46:00 -05:00
2025-01-20 16:46:00 -05:00
2025-01-20 16:46:00 -05:00
2025-02-10 20:21:39 +00:00
2024-08-16 14:10:06 -04:00
2025-01-06 03:17:04 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2024-12-09 17:31:16 +08:00
2024-12-09 17:31:16 +08:00
2024-12-09 17:31:16 +08:00
2025-02-11 08:30:35 +00:00
2025-02-11 08:30:35 +00:00
2024-12-09 17:31:16 +08:00
2024-12-09 17:31:16 +08:00
2024-09-23 12:55:56 -04:00
2025-01-07 16:04:14 +01:00
2025-01-07 16:04:14 +01:00
2024-10-06 22:36:51 -04:00
2024-10-06 22:36:51 -04:00
2025-01-26 12:18:33 +01:00
2025-01-26 12:18:33 +01:00
2024-06-21 19:00:18 -04:00
2025-02-20 13:39:39 +00:00
2025-02-20 13:39:39 +00:00
2024-12-23 20:25:41 +00:00
2024-12-23 20:25:41 +00:00
2024-09-09 14:51:39 +02:00
2024-09-09 14:51:39 +02:00
2024-10-23 18:05:27 +00:00
2024-09-11 12:14:35 +02:00
2024-08-16 14:10:06 -04:00
2024-11-26 02:50:48 +08:00
2024-11-03 13:55:52 -08:00
2025-02-09 20:39:43 +08:00
2025-02-09 20:39:43 +08:00
2024-12-27 19:58:16 +11:00
2024-08-31 14:00:54 +00:00
2024-08-31 14:00:54 +00:00
2024-08-31 14:00:54 +00:00
2024-08-31 14:00:54 +00:00
2024-11-03 13:55:52 -08:00
2024-11-03 13:55:52 -08:00
2024-11-03 13:55:52 -08:00
2024-11-03 13:55:52 -08:00
2024-11-03 13:55:52 -08:00
2024-10-21 15:22:17 +01:00
2025-02-10 20:21:39 +00:00
2024-10-21 15:22:17 +01:00
2025-02-14 00:44:10 -08:00
2025-01-26 12:18:33 +01:00
2025-01-26 12:18:33 +01:00
2024-07-07 17:11:05 +02:00
2024-07-07 17:11:05 +02:00
2024-08-31 14:00:54 +00:00
2024-08-31 14:00:54 +00:00
2024-08-31 14:00:54 +00:00
2024-08-18 19:46:53 +02:00
2024-08-18 19:46:53 +02:00
2024-08-18 19:46:53 +02:00
2024-12-12 23:36:27 +00:00
2024-09-14 16:12:00 +05:30
2024-07-31 19:36:47 +02:00
2024-07-31 19:36:47 +02:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2025-03-11 12:05:02 +00:00
2024-11-27 15:27:41 +01:00
2024-06-27 08:55:28 +10:00
2024-06-27 08:55:28 +10:00
2024-06-25 17:22:22 +02:00
2024-06-25 17:22:22 +02:00
2024-06-25 17:22:22 +02:00
2024-06-25 17:22:22 +02:00
2025-02-10 20:21:39 +00:00
2024-12-01 11:31:09 +13:00
2024-09-21 08:59:52 -07:00
2025-02-21 00:41:17 +00:00
2025-02-21 00:41:17 +00:00
2024-11-28 14:32:45 -08:00
2024-06-23 22:00:52 +00:00
2025-02-28 07:25:52 +05:30
2025-02-28 07:25:52 +05:30
2025-02-21 17:50:11 +00:00
2024-08-08 11:58:11 -04:00
2024-08-08 11:58:11 -04:00
2024-08-08 11:58:11 -04:00
2024-12-24 11:35:38 +08:00
2024-10-05 00:19:26 +00:00
2024-10-21 21:33:33 +08:00
2024-10-21 21:33:33 +08:00
2024-09-23 11:57:28 +02:00
2024-09-23 11:57:28 +02:00
2024-11-04 19:09:40 +01:00
2024-11-04 19:09:40 +01:00
2024-11-04 19:09:40 +01:00
2024-11-14 09:08:56 +08:00
2024-11-14 09:08:56 +08:00
2024-11-14 09:08:56 +08:00
2024-11-14 09:08:56 +08:00
2024-11-14 09:08:56 +08:00
2024-11-14 09:08:56 +08:00
2024-11-27 07:18:25 -08:00
2024-09-30 20:43:51 +03:00
2024-11-26 02:50:48 +08:00
2025-02-14 00:27:13 -08:00