summaryrefslogtreecommitdiffstats
path: root/vendor/regex-automata/src/dfa/onepass.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
commit9918693037dce8aa4bb6f08741b6812923486c18 (patch)
tree21d2b40bec7e6a7ea664acee056eb3d08e15a1cf /vendor/regex-automata/src/dfa/onepass.rs
parentReleasing progress-linux version 1.75.0+dfsg1-5~progress7.99u1. (diff)
downloadrustc-9918693037dce8aa4bb6f08741b6812923486c18.tar.xz
rustc-9918693037dce8aa4bb6f08741b6812923486c18.zip
Merging upstream version 1.76.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/regex-automata/src/dfa/onepass.rs')
-rw-r--r--vendor/regex-automata/src/dfa/onepass.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/vendor/regex-automata/src/dfa/onepass.rs b/vendor/regex-automata/src/dfa/onepass.rs
index 44691d0c8..e62bbd383 100644
--- a/vendor/regex-automata/src/dfa/onepass.rs
+++ b/vendor/regex-automata/src/dfa/onepass.rs
@@ -2581,10 +2581,11 @@ impl Cache {
/// Represents a single transition in a one-pass DFA.
///
-/// The high 24 bits corresponds to the state ID. The low 48 bits corresponds
-/// to the transition epsilons, which contains the slots that should be saved
-/// when this transition is followed and the conditional epsilon transitions
-/// that must be satisfied in order to follow this transition.
+/// The high 21 bits corresponds to the state ID. The bit following corresponds
+/// to the special "match wins" flag. The remaining low 42 bits corresponds to
+/// the transition epsilons, which contains the slots that should be saved when
+/// this transition is followed and the conditional epsilon transitions that
+/// must be satisfied in order to follow this transition.
#[derive(Clone, Copy, Eq, PartialEq)]
struct Transition(u64);
@@ -2741,7 +2742,7 @@ impl PatternEpsilons {
fn set_epsilons(self, epsilons: Epsilons) -> PatternEpsilons {
PatternEpsilons(
(self.0 & PatternEpsilons::PATTERN_ID_MASK)
- | u64::from(epsilons.0),
+ | (u64::from(epsilons.0) & PatternEpsilons::EPSILONS_MASK),
)
}
}
@@ -2814,12 +2815,15 @@ impl Epsilons {
/// Return the set of look-around assertions in these epsilon transitions.
fn looks(self) -> LookSet {
- LookSet { bits: (self.0 & Epsilons::LOOK_MASK).low_u16() }
+ LookSet { bits: (self.0 & Epsilons::LOOK_MASK).low_u32() }
}
/// Set the look-around assertions on these epsilon transitions.
fn set_looks(self, look_set: LookSet) -> Epsilons {
- Epsilons((self.0 & Epsilons::SLOT_MASK) | u64::from(look_set.bits))
+ Epsilons(
+ (self.0 & Epsilons::SLOT_MASK)
+ | (u64::from(look_set.bits) & Epsilons::LOOK_MASK),
+ )
}
}