|
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