rust/src/tools
bors 7e552b46af Auto merge of #140106 - dianne:deref-pat-usefulness, r=Nadrieril
allow deref patterns to participate in exhaustiveness analysis

Per [this proposal](https://hackmd.io/4qDDMcvyQ-GDB089IPcHGg#Exhaustiveness), this PR allows deref patterns to participate in exhaustiveness analysis. Currently all deref patterns enforce `DerefPure` bounds on their scrutinees, so this assumes all patterns it's analyzing are well-behaved. This also doesn't support [mixed exhaustiveness](https://hackmd.io/4qDDMcvyQ-GDB089IPcHGg#Mixed-exhaustiveness), and instead emits an error if deref patterns are used together with normal constructors. I think mixed exhaustiveness would be nice to have (especially if we eventually want to support arbitrary `Deref` impls[^1]), but it'd require more work to get reasonable diagnostics[^2].

Tracking issue for deref patterns: #87121

r? `@Nadrieril`

[^1]: Regardless of whether we support limited exhaustiveness checking for untrusted `Deref` or always require other arms to be exhaustive, I think it'd be useful to allow mixed matching for user-defined smart pointers. And it'd be strange if it worked there but not for `Cow`.

[^2]: I think listing out witnesses of non-exhaustiveness can be confusing when they're not necessarily disjoint, and when you only need to cover some of them, so we'd probably want special formatting and/or explanatory subdiagnostics. And if it's implemented similarly to unions, we'd probably also want some way of merging witnesses; the way witnesses for unions can appear duplicated is pretty unfortunate. I'm not sure yet how the diagnostics should look, especially for deeply nested patterns.
2025-05-08 02:16:45 +00:00
..
build-manifest remove rls specific parts from tidy and build-manifest 2025-03-12 09:13:56 +03:00
bump-stage0 Remove git_repository field from GitConfig 2025-04-23 10:41:20 +02:00
cargo@7918c7eb59 Update cargo 2025-04-27 07:44:01 -04:00
cargotest Reformat use declarations. 2024-07-29 08:26:52 +10:00
clippy Rollup merge of #139773 - thaliaarchi:vec-into-iter-last, r=workingjubilee 2025-05-06 16:28:39 +10:00
collect-license-metadata collect-license-metadata: move JSON to root, and add a 'check' mode 2024-11-25 14:14:57 +00:00
compiletest compiletest: Support matching on non-json lines in compiler output 2025-05-04 18:27:45 +03:00
coverage-dump coverage-dump: Dump filenames instead of global file IDs (and bless) 2025-05-06 11:58:58 +10:00
enzyme@a35f4f7731 update enzyme to handle range metadata 2025-02-28 03:53:22 -05:00
error_index_generator Move error_index_generator to the rustbook workspace 2025-02-17 10:58:15 -08:00
features-status-dump Remove backtrace dep from anyhow in features status dump tool 2025-05-01 07:45:47 -04:00
generate-copyright Update rinja version in generate-copyright 2025-04-06 01:47:10 +02:00
generate-windows-sys Update windows-bindgen to 0.61.0 2025-04-04 16:41:40 +00:00
html-checker rustdoc: redesign toolbar and disclosure widgets 2024-09-10 17:56:05 -07:00
jsondocck jsondocck: Require command is at start of line 2025-04-20 11:37:00 +00:00
jsondoclint rustdoc: Output target feature information 2025-04-15 21:26:14 -05:00
libcxx-version
linkchecker bump html5ever to 0.29 with deps 2025-03-13 19:59:53 +03:00
lint-docs Rollup merge of #134273 - RalfJung:de-stabilize-bench, r=ibraheemdev,traviscross 2025-05-07 00:29:20 +00:00
lld-wrapper Reformat use declarations. 2024-07-29 08:26:52 +10:00
llvm-bitcode-linker Pass through of target features to llvm-bitcode-linker and handling them 2025-02-16 21:57:03 +01:00
miri Merge pull request #4310 from RalfJung/addr-space-conservation 2025-05-05 13:11:48 +00:00
miropt-test-tools Emit error on skip-filecheck test containing filecheck directives 2024-10-19 13:24:07 +00:00
nix-dev-shell Deduplicate nix code 2025-04-17 00:01:04 -04:00
opt-dist Update sysinfo to 0.35.0 in src/tools/opt-dist 2025-05-02 14:27:27 +02:00
remote-test-client Reformat use declarations. 2024-07-29 08:26:52 +10:00
remote-test-server Reformat use declarations. 2024-07-29 08:26:52 +10:00
replace-version-placeholder Include rustc and rustdoc book in replace-version-placeholder 2025-01-07 22:46:18 +01:00
run-make-support run-make-support: set rustc dylib path for cargo wrapper 2025-05-07 16:32:46 +02:00
rust-analyzer Auto merge of #140106 - dianne:deref-pat-usefulness, r=Nadrieril 2025-05-08 02:16:45 +00:00
rust-installer Rustfmt 2025-02-08 22:12:13 +00:00
rustbook Update mdbook to 0.4.49 2025-05-05 15:13:40 -07:00
rustc-perf@c0f3b53c8e rustc-perf: update to c0f3b53c8e5de87714d18a5f42998859302ae03a 2025-04-07 15:19:38 +08:00
rustdoc librustdoc: 2024 edition! 🎊 2025-03-04 12:35:18 +02:00
rustdoc-gui Update browser-ui-test version to 0.20.2 2025-02-05 17:06:38 +01:00
rustdoc-gui-test Improve error output in case nodejs or npm is not installed for rustdoc-gui test suite 2025-05-01 17:42:22 +02:00
rustdoc-js tester.js: ignore displayTypeSignature if it is null 2025-03-27 16:00:44 -05:00
rustdoc-themes Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
rustfmt Also allow bool literals as first item of let chain 2025-04-29 15:36:23 -05:00
suggest-tests Remove git_repository field from GitConfig 2025-04-23 10:41:20 +02:00
tidy Auto merge of #140353 - rust-lang:cargo_update, r=Mark-Simulacrum 2025-05-05 02:11:37 +00:00
tier-check Add NuttX based targets for RISC-V and ARM 2024-07-19 22:00:42 +08:00
unicode-table-generator Remove unneeded parentheses. 2025-03-08 12:56:00 +01:00
unstable-book-gen Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
wasm-component-ld Update wasm-component-ld to 0.5.13 2025-04-23 14:37:17 -07:00
x Add src/tools/x to the main workspace 2025-03-13 12:18:32 -07:00
cherry-pick.sh
publish_toolstate.py Update toolstate maintainers 2025-01-23 09:55:21 -08:00