about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-10-12 21:33:31 +0000
committerbors <bors@rust-lang.org>2023-10-12 21:33:31 +0000
commite20cb7702117f1ad8127a16406ba9edd230c4f65 (patch)
treef53c0feda36d436436ab0f1213c8ef7071c0daae /compiler/rustc_codegen_llvm/src
parentdf4379b4eb5357263f0cf75475953f9b5c48c31f (diff)
parentc1b29b338dc37f96f0695e393743ce35508d3704 (diff)
downloadrust-e20cb7702117f1ad8127a16406ba9edd230c4f65.tar.gz
rust-e20cb7702117f1ad8127a16406ba9edd230c4f65.zip
Auto merge of #116391 - Nadrieril:constructorset, r=cjgillot
exhaustiveness: Rework constructor splitting

`SplitWildcard` was pretty opaque. I replaced it with a more legible abstraction: `ConstructorSet` represents the set of constructors for patterns of a given type. This clarifies responsibilities: `ConstructorSet` handles one clear task, and diagnostic-related shenanigans can be done separately.

I'm quite excited, I had has this in mind for years but could never quite introduce it. This opens up possibilities, including type-specific optimisations (like using a `FxHashSet` to collect enum variants, which had been [hackily attempted some years ago](https://github.com/rust-lang/rust/pull/76918)), my one-pass rewrite (https://github.com/rust-lang/rust/pull/116042), and future librarification.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions