diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2020-11-17 16:13:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-17 16:13:53 +0100 |
| commit | b6f52410bbdb3cc48abba8d7010db9c9c6fdc570 (patch) | |
| tree | 4dfcdfc447f3018eed3dd359660f8f844c031c11 /compiler/rustc_middle | |
| parent | dda479815ad382dc44a8b41dc516fb7fe3ebe8bc (diff) | |
| parent | a1cdf722f40da3f266496cb7866d271ce370338e (diff) | |
| download | rust-b6f52410bbdb3cc48abba8d7010db9c9c6fdc570.tar.gz rust-b6f52410bbdb3cc48abba8d7010db9c9c6fdc570.zip | |
Rollup merge of #79072 - oli-obk:byte_str_pat, r=estebank
Fix exhaustiveness in case a byte string literal is used at slice type fixes #79048
Diffstat (limited to 'compiler/rustc_middle')
| -rw-r--r-- | compiler/rustc_middle/src/ty/context.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index a5237ffaf78..36cbd36a770 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -422,6 +422,12 @@ pub struct TypeckResults<'tcx> { /// Stores the type, expression, span and optional scope span of all types /// that are live across the yield of this generator (if a generator). pub generator_interior_types: Vec<GeneratorInteriorTypeCause<'tcx>>, + + /// We sometimes treat byte string literals (which are of type `&[u8; N]`) + /// as `&[u8]`, depending on the pattern in which they are used. + /// This hashset records all instances where we behave + /// like this to allow `const_to_pat` to reliably handle this situation. + pub treat_byte_string_as_slice: ItemLocalSet, } impl<'tcx> TypeckResults<'tcx> { @@ -448,6 +454,7 @@ impl<'tcx> TypeckResults<'tcx> { closure_captures: Default::default(), closure_min_captures: Default::default(), generator_interior_types: Default::default(), + treat_byte_string_as_slice: Default::default(), } } @@ -683,6 +690,7 @@ impl<'a, 'tcx> HashStable<StableHashingContext<'a>> for TypeckResults<'tcx> { ref closure_captures, ref closure_min_captures, ref generator_interior_types, + ref treat_byte_string_as_slice, } = *self; hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| { @@ -717,6 +725,7 @@ impl<'a, 'tcx> HashStable<StableHashingContext<'a>> for TypeckResults<'tcx> { closure_captures.hash_stable(hcx, hasher); closure_min_captures.hash_stable(hcx, hasher); generator_interior_types.hash_stable(hcx, hasher); + treat_byte_string_as_slice.hash_stable(hcx, hasher); }) } } |
