Nadrieril
e088016f9d
Let ctor_sub_tys
return any Iterator they want
...
Since we always clone and allocate the types somewhere else ourselves,
no need to ask for `Cx` to do the allocation.
2024-01-24 16:55:26 +01:00
Nadrieril
796cdc590c
Remove Ty: Copy bound
2024-01-20 15:22:14 +01:00
Matthias Krüger
2587100a9b
Rollup merge of #119835 - Nadrieril:simplify-empty-logic, r=compiler-errors
...
Exhaustiveness: simplify empty pattern logic
The logic that handles empty patterns had gotten quite convoluted. This PR simplifies it a lot. I tried to make the logic as easy as possible to follow; this only does logically equivalent changes.
The first commit is a drive-by comment clarification that was requested after another PR a while back.
r? `@compiler-errors`
2024-01-19 19:27:00 +01:00
Nadrieril
448c4a4efb
Remove the unused overlapping_range_endpoints
Vec
2024-01-15 19:27:06 +01:00
Nadrieril
8b66f497eb
Lint overlapping ranges directly from exhaustiveness
2024-01-15 19:27:06 +01:00
Nadrieril
d95644d3ae
Simplify empty pattern logic some more
2024-01-15 16:56:18 +01:00
Nadrieril
de77f1a86e
Simplify empty pattern logic a bit
2024-01-15 16:56:18 +01:00
Nadrieril
edb27a306a
Make all the empty pattern decisions in usefulness
2024-01-15 16:56:18 +01:00
Nadrieril
bf913ad0ae
Simplify use of ValidityConstraint
...
We had reached a point where the shenanigans about omitting empty arms
are unnecessary.
2024-01-15 16:52:51 +01:00
Nadrieril
db36304102
rustc_pattern_analysis no longer needs to be passed an arena
2024-01-12 18:55:27 +01:00
Nadrieril
a24f4db41b
Only lint ranges that really overlap
2024-01-11 14:04:11 +01:00
Nadrieril
6f6ba2571d
Factor out collection of overlapping ranges
2024-01-11 13:59:41 +01:00
Nadrieril
89d01babe6
Track row intersections
2024-01-11 13:56:09 +01:00
bors
65b323b168
Auto merge of #119837 - matthiaskrgr:rollup-l2olpad, r=matthiaskrgr
...
Rollup of 11 pull requests
Successful merges:
- #115046 (Use version-sorting for all sorting)
- #118915 (Add some comments, add `can_define_opaque_ty` check to `try_normalize_ty_recur`)
- #119006 (Fix is_global special address handling)
- #119637 (Pass LLVM error message back to pass wrapper.)
- #119715 (Exhaustiveness: abort on type error)
- #119763 (Cleanup things in and around `Diagnostic`)
- #119788 (change function name in comments)
- #119790 (Fix all_trait* methods to return all traits available in StableMIR)
- #119803 (Silence some follow-up errors [1/x])
- #119804 (Stabilize mutex_unpoison feature)
- #119832 (Meta: Add project const traits to triagebot config)
r? `@ghost`
`@rustbot` modify labels: rollup
2024-01-11 02:10:34 +00:00
Nadrieril
4b2e8bc841
Abort analysis on type error
2024-01-07 22:13:08 +01:00
Nadrieril
07d5f19426
Add an error path to the algorithm
2024-01-07 22:13:08 +01:00
Nadrieril
1a3edc169b
We only need the arity of the subtype list now
2024-01-07 19:20:19 +01:00
Nadrieril
4ae2840e84
Use special enum to represent algorithm-generated wildcards in the matrix
2024-01-07 19:20:19 +01:00
Nadrieril
50b197c6ee
Reuse ctor_sub_tys
when we have one around
2024-01-06 18:03:13 +01:00
Nadrieril
d40f1b1172
Remove Matrix.wildcard_row
...
It was only used to track types and relevancy, so may as well store that
directly.
2024-01-06 17:56:54 +01:00
Nadrieril
c35272058d
Statically enforce revealing of opaques
2024-01-01 23:10:03 +01:00
Michael Goulet
4ae024c754
Elide more lifetimes
2023-12-26 02:12:33 +00:00
Michael Goulet
b91a98ba10
Even more
2023-12-26 02:02:01 +00:00
Michael Goulet
eebb2abe0b
Yeet some lifetimes
2023-12-26 01:59:18 +00:00
Nadrieril
efb04e6572
Rework the explanation of relevancy
2023-12-23 22:43:06 +01:00
Nadrieril
71e83347bb
Improve performance on wide matches
2023-12-23 13:11:38 +01:00
Nadrieril
5fccaee59c
Clarify the situation with dummy patterns and PatData
...
Use an explicit `Option` instead of requiring a `Default` bound
2023-12-23 00:08:38 +01:00
Nadrieril
c6aa16c469
Use derivative
for better derive bounds
2023-12-23 00:04:20 +01:00
Nadrieril
2a87bae48d
Reveal opaque types in exhaustiveness checking
2023-12-20 14:43:00 +01:00
Nadrieril
3016c29628
s/MatchCx/TypeCx/
2023-12-15 17:26:19 +01:00
Nadrieril
4bcf66f875
Introduce MatchCtxt
2023-12-15 16:58:38 +01:00
Nadrieril
60ea14bfaa
s/PatCtxt/PlaceCtxt/
2023-12-15 16:58:38 +01:00
Nadrieril
1e89a38423
pattern_analysis
doesn't need to know what spans are
2023-12-15 16:58:38 +01:00
Nadrieril
63c5b008e1
Make the crate compile on stable
2023-12-15 16:58:38 +01:00
Nadrieril
e646c9f723
Make the rustc_data_structures
dependency optional
2023-12-15 16:58:38 +01:00
Nadrieril
16bd6ac3ed
Gate rustc-specific code under a feature
2023-12-15 16:58:37 +01:00
Nadrieril
3d7c4df326
Abstract MatchCheckCtxt
into a trait
2023-12-15 16:58:36 +01:00
Nadrieril
3ad76f9325
Disentangle the arena from MatchCheckCtxt
2023-12-15 16:57:36 +01:00
Nadrieril
081c3dcf43
Remove all matching on ty.kind()
outside cx
2023-12-15 16:57:36 +01:00
Nadrieril
b111b2e839
Split Single
ctor into more specific variants
2023-12-15 16:57:36 +01:00
Nadrieril
43714edb6f
Fix doc links
2023-12-11 12:53:01 +01:00
Nadrieril
5d6c539c2d
Fix item visibilities
2023-12-11 11:20:55 +01:00
Nadrieril
24adca0a26
Move lints to their own module
2023-12-11 11:20:55 +01:00
Nadrieril
3691a0aee5
Gather rustc-specific functions around MatchCheckCtxt
2023-12-11 11:20:55 +01:00
Nadrieril
281002d42c
Extract exhaustiveness into its own crate
2023-12-11 11:20:55 +01:00