|
1 | 1 | //! Determinization and minimization of an NFA into the final DFA used by the engines.
|
2 | 2 |
|
3 |
| -use std::rc::Rc; |
| 3 | +use std::sync::Arc; |
4 | 4 |
|
5 | 5 | // NOTE: Some comments in this module are outdated, because the minimizer doesn't
|
6 | 6 | // actually produce minimal automata as of now - see #91.
|
@@ -50,7 +50,7 @@ pub(super) struct Minimizer {
|
50 | 50 | #[derive(Debug)]
|
51 | 51 | struct SuperstateTransitionTable {
|
52 | 52 | array: ArrayTransitionSet,
|
53 |
| - member: VecMap<Rc<StringPattern>, SmallSet256>, |
| 53 | + member: VecMap<Arc<StringPattern>, SmallSet256>, |
54 | 54 | wildcard: SmallSet256,
|
55 | 55 | }
|
56 | 56 |
|
@@ -177,7 +177,7 @@ impl Minimizer {
|
177 | 177 | &self,
|
178 | 178 | id: DfaStateId,
|
179 | 179 | array_transitions: &[ArrayTransition],
|
180 |
| - member_transitions: &[(Rc<StringPattern>, DfaStateId)], |
| 180 | + member_transitions: &[(Arc<StringPattern>, DfaStateId)], |
181 | 181 | fallback: DfaStateId,
|
182 | 182 | ) -> StateAttributes {
|
183 | 183 | let mut attrs = StateAttributesBuilder::new();
|
@@ -554,8 +554,8 @@ mod tests {
|
554 | 554 | #[test]
|
555 | 555 | fn interstitial_descendant_wildcard() {
|
556 | 556 | // Query = $..a.b..*.a..b
|
557 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
558 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
| 557 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 558 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
559 | 559 |
|
560 | 560 | let nfa = NondeterministicAutomaton {
|
561 | 561 | ordered_states: vec![
|
@@ -623,8 +623,8 @@ mod tests {
|
623 | 623 | #[test]
|
624 | 624 | fn interstitial_nondescendant_wildcard() {
|
625 | 625 | // Query = $..a.b.*.a..b
|
626 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
627 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
| 626 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 627 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
628 | 628 |
|
629 | 629 | let nfa = NondeterministicAutomaton {
|
630 | 630 | ordered_states: vec![
|
@@ -698,7 +698,7 @@ mod tests {
|
698 | 698 | #[test]
|
699 | 699 | fn simple_multi_accepting() {
|
700 | 700 | // Query = $..a.*
|
701 |
| - let label = Rc::new(StringPattern::new(&JsonString::new("a"))); |
| 701 | + let label = Arc::new(StringPattern::new(&JsonString::new("a"))); |
702 | 702 |
|
703 | 703 | let nfa = NondeterministicAutomaton {
|
704 | 704 | ordered_states: vec![
|
@@ -796,7 +796,7 @@ mod tests {
|
796 | 796 | #[test]
|
797 | 797 | fn chained_wildcard_children() {
|
798 | 798 | // Query = $.a.*.*.*
|
799 |
| - let label = Rc::new(StringPattern::new(&JsonString::new("a"))); |
| 799 | + let label = Arc::new(StringPattern::new(&JsonString::new("a"))); |
800 | 800 |
|
801 | 801 | let nfa = NondeterministicAutomaton {
|
802 | 802 | ordered_states: vec![
|
@@ -857,7 +857,7 @@ mod tests {
|
857 | 857 | #[test]
|
858 | 858 | fn chained_wildcard_children_after_descendant() {
|
859 | 859 | // Query = $..a.*.*
|
860 |
| - let label = Rc::new(StringPattern::new(&JsonString::new("a"))); |
| 860 | + let label = Arc::new(StringPattern::new(&JsonString::new("a"))); |
861 | 861 |
|
862 | 862 | let nfa = NondeterministicAutomaton {
|
863 | 863 | ordered_states: vec![
|
@@ -935,11 +935,11 @@ mod tests {
|
935 | 935 | #[test]
|
936 | 936 | fn child_and_descendant() {
|
937 | 937 | // Query = $.x..a.b.a.b.c..d
|
938 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
939 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
940 |
| - let label_c = Rc::new(StringPattern::new(&JsonString::new("c"))); |
941 |
| - let label_d = Rc::new(StringPattern::new(&JsonString::new("d"))); |
942 |
| - let label_x = Rc::new(StringPattern::new(&JsonString::new("x"))); |
| 938 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 939 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
| 940 | + let label_c = Arc::new(StringPattern::new(&JsonString::new("c"))); |
| 941 | + let label_d = Arc::new(StringPattern::new(&JsonString::new("d"))); |
| 942 | + let label_x = Arc::new(StringPattern::new(&JsonString::new("x"))); |
943 | 943 |
|
944 | 944 | let nfa = NondeterministicAutomaton {
|
945 | 945 | ordered_states: vec![
|
@@ -1021,9 +1021,9 @@ mod tests {
|
1021 | 1021 | #[test]
|
1022 | 1022 | fn child_descendant_and_child_wildcard() {
|
1023 | 1023 | // Query = $.x.*..a.*.b
|
1024 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
1025 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
1026 |
| - let label_x = Rc::new(StringPattern::new(&JsonString::new("x"))); |
| 1024 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 1025 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
| 1026 | + let label_x = Arc::new(StringPattern::new(&JsonString::new("x"))); |
1027 | 1027 |
|
1028 | 1028 | let nfa = NondeterministicAutomaton {
|
1029 | 1029 | ordered_states: vec![
|
@@ -1103,10 +1103,10 @@ mod tests {
|
1103 | 1103 | #[test]
|
1104 | 1104 | fn all_name_and_wildcard_selectors() {
|
1105 | 1105 | // Query = $.a.b..c..d.*..*
|
1106 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
1107 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
1108 |
| - let label_c = Rc::new(StringPattern::new(&JsonString::new("c"))); |
1109 |
| - let label_d = Rc::new(StringPattern::new(&JsonString::new("d"))); |
| 1106 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 1107 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
| 1108 | + let label_c = Arc::new(StringPattern::new(&JsonString::new("c"))); |
| 1109 | + let label_d = Arc::new(StringPattern::new(&JsonString::new("d"))); |
1110 | 1110 |
|
1111 | 1111 | let nfa = NondeterministicAutomaton {
|
1112 | 1112 | ordered_states: vec![
|
|
0 commit comments