rust/tests/ui/rfcs
bors ee80c8d0a8 Auto merge of #117611 - Nadrieril:linear-pass-take-4, r=cjgillot
Rewrite exhaustiveness in one pass

This is at least my 4th attempt at this in as many years x) Previous attempts were all too complicated or too slow. But we're finally here!

The previous version of the exhaustiveness algorithm computed reachability for each arm then exhaustiveness of the whole match. Since each of these steps does roughly the same things, this rewrites the algorithm to do them all in one go. I also think this makes things much simpler.

I also rewrote the documentation of the algorithm in depth. Hopefully it's up-to-date and easier to follow now. Plz comment if anything's unclear.

r? `@oli-obk` I think you're one of the rare other people to understand the exhaustiveness algorithm?

cc `@varkor` I know you're not active anymore, but if you feel like having a look you might enjoy this :D

Fixes https://github.com/rust-lang/rust/issues/79307
2023-11-26 00:14:14 +00:00
..
rfc-0107-bind-by-move-pattern-guards Better group RFC ui tests together 2023-06-05 16:09:46 +00:00
rfc-1014-stdout-existential-crisis Better group RFC ui tests together 2023-06-05 16:09:46 +00:00
rfc-1445-restrict-constants-in-patterns Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-1623-static Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
rfc-1717-dllimport Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-1789-as-cell
rfc-1857-stabilize-drop-order Better group RFC ui tests together 2023-06-05 16:09:46 +00:00
rfc-1937-termination-trait Manual find replace updates 2023-11-24 21:04:51 +01:00
rfc-2005-default-binding-mode Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2008-non-exhaustive Auto merge of #117611 - Nadrieril:linear-pass-take-4, r=cjgillot 2023-11-26 00:14:14 +00:00
rfc-2027-object-safe-for-dispatch Only consider object candidates for object-safe dyn types 2023-08-15 01:01:44 +00:00
rfc-2091-track-caller Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2093-infer-outlives Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2126-crate-paths Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2126-extern-absolute-paths Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2151-raw-identifiers
rfc-2175-or-if-while-let
rfc-2294-if-let-guard Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2302-self-struct-ctor Better group RFC ui tests together 2023-06-05 16:09:46 +00:00
rfc-2306-convert-id Better group RFC ui tests together 2023-06-05 16:09:46 +00:00
rfc-2361-dbg-macro Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2396-target_feature-11 Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2397-do-not-recommend Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2421-unreserve-pure-offsetof-sizeof-alignof Better group RFC ui tests together 2023-06-05 16:09:46 +00:00
rfc-2457-non-ascii-idents Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2497-if-let-chains Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2528-type-changing-struct-update Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2565-param-attrs Show number in error message even for one error 2023-11-24 19:15:52 +01:00
rfc-2627-raw-dylib Manual find replace updates 2023-11-24 21:04:51 +01:00
rfc-2632-const-trait-impl Auto merge of #118138 - Nilstrieb:one-previous-error, r=WaffleLapkin 2023-11-24 21:40:54 +00:00
rfc-3348-c-string-literals add proc macro test 2023-07-23 10:09:43 +00:00