about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWill Crichton <wcrichto@cs.stanford.edu>2021-08-27 11:17:27 -0700
committerWill Crichton <wcrichto@cs.stanford.edu>2021-08-27 11:17:27 -0700
commit86bd551e4c8954330e5e0d71c09c4ecbf514a5b6 (patch)
treeda22b660fa12e1a223f30c2cc915d7ebda65a25e
parentc7357270b8b93ef23f6295abecf8ff27948881c3 (diff)
downloadrust-86bd551e4c8954330e5e0d71c09c4ecbf514a5b6.tar.gz
rust-86bd551e4c8954330e5e0d71c09c4ecbf514a5b6.zip
Addd missing domain size assertions
-rw-r--r--compiler/rustc_index/src/bit_set.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_index/src/bit_set.rs b/compiler/rustc_index/src/bit_set.rs
index fad3b95cf43..8903ed9d9e2 100644
--- a/compiler/rustc_index/src/bit_set.rs
+++ b/compiler/rustc_index/src/bit_set.rs
@@ -289,6 +289,7 @@ fn dense_sparse_intersect<T: Idx>(
 // hybrid REL dense
 impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
     fn union(&mut self, other: &BitSet<T>) -> bool {
+        assert_eq!(self.domain_size(), other.domain_size);
         match self {
             HybridBitSet::Sparse(sparse) => {
                 // `self` is sparse and `other` is dense. To
@@ -316,6 +317,7 @@ impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
     }
 
     fn subtract(&mut self, other: &BitSet<T>) -> bool {
+        assert_eq!(self.domain_size(), other.domain_size);
         match self {
             HybridBitSet::Sparse(sparse) => {
                 sequential_update(|elem| sparse.remove(elem), other.iter())
@@ -325,6 +327,7 @@ impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
     }
 
     fn intersect(&mut self, other: &BitSet<T>) -> bool {
+        assert_eq!(self.domain_size(), other.domain_size);
         match self {
             HybridBitSet::Sparse(sparse) => sparse_intersect(sparse, |elem| other.contains(*elem)),
             HybridBitSet::Dense(dense) => dense.intersect(other),
@@ -385,7 +388,6 @@ impl<T: Idx> BitRelations<HybridBitSet<T>> for HybridBitSet<T> {
                         // Both sets are sparse. Add the elements in
                         // `other_sparse` to `self` one at a time. This
                         // may or may not cause `self` to be densified.
-                        assert_eq!(self.domain_size(), other.domain_size());
                         let mut changed = false;
                         for elem in other_sparse.iter() {
                             changed |= self.insert(*elem);