@@ -3,15 +3,15 @@ use crate::{
3
3
capture,
4
4
engine:: { Continuation , UnitFuture } ,
5
5
} ;
6
+ use Materializable :: * ;
7
+ use Pattern :: * ;
6
8
use optd_dsl:: analyzer:: {
7
9
context:: Context ,
8
10
hir:: {
9
11
CoreData , Expr , LogicalOp , MatchArm , Materializable , Operator , Pattern , PhysicalOp , Value ,
10
12
} ,
11
13
} ;
12
14
use std:: sync:: Arc ;
13
- use Materializable :: * ;
14
- use Pattern :: * ;
15
15
16
16
/// A type representing a match result, which is a value and an optional context.
17
17
///
@@ -133,7 +133,7 @@ fn match_pattern<G>(
133
133
value : Value ,
134
134
pattern : Pattern ,
135
135
ctx : Context ,
136
- gen : G ,
136
+ r# gen: G ,
137
137
k : MatchContinuation ,
138
138
) -> UnitFuture
139
139
where
@@ -154,23 +154,23 @@ where
154
154
}
155
155
// Complex patterns.
156
156
( Bind ( ident, inner_pattern) , _) => {
157
- match_bind_pattern ( value. clone ( ) , ident, * inner_pattern, ctx, gen, k) . await ;
157
+ match_bind_pattern ( value. clone ( ) , ident, * inner_pattern, ctx, r# gen, k) . await ;
158
158
}
159
159
( ArrayDecomp ( head_pat, tail_pat) , CoreData :: Array ( arr) ) => {
160
160
if arr. is_empty ( ) {
161
161
k ( ( value, None ) ) . await ;
162
162
return ;
163
163
}
164
164
165
- match_array_pattern ( * head_pat, * tail_pat, arr, ctx, gen, k) . await ;
165
+ match_array_pattern ( * head_pat, * tail_pat, arr, ctx, r# gen, k) . await ;
166
166
}
167
167
( Struct ( pat_name, pat_fields) , CoreData :: Struct ( val_name, val_fields) ) => {
168
168
if pat_name != * val_name || pat_fields. len ( ) != val_fields. len ( ) {
169
169
k ( ( value, None ) ) . await ;
170
170
return ;
171
171
}
172
172
173
- match_struct_pattern ( pat_name, pat_fields, val_fields, ctx, gen, k) . await ;
173
+ match_struct_pattern ( pat_name, pat_fields, val_fields, ctx, r# gen, k) . await ;
174
174
}
175
175
( Operator ( op_pattern) , CoreData :: Logical ( LogicalOp ( Materialized ( operator) ) ) ) => {
176
176
if op_pattern. tag != operator. tag
@@ -181,7 +181,8 @@ where
181
181
return ;
182
182
}
183
183
184
- match_materialized_operator ( true , op_pattern, operator. clone ( ) , ctx, gen, k) . await ;
184
+ match_materialized_operator ( true , op_pattern, operator. clone ( ) , ctx, r#gen, k)
185
+ . await ;
185
186
}
186
187
( Operator ( op_pattern) , CoreData :: Physical ( PhysicalOp ( Materialized ( operator) ) ) ) => {
187
188
if op_pattern. tag != operator. tag
@@ -192,29 +193,32 @@ where
192
193
return ;
193
194
}
194
195
195
- match_materialized_operator ( false , op_pattern, operator. clone ( ) , ctx, gen, k) . await ;
196
+ match_materialized_operator ( false , op_pattern, operator. clone ( ) , ctx, r#gen, k)
197
+ . await ;
196
198
}
197
199
// Unmaterialized operators.
198
200
( Operator ( op_pattern) , CoreData :: Logical ( LogicalOp ( UnMaterialized ( group_id) ) ) ) => {
199
- gen. clone ( )
201
+ r#gen
202
+ . clone ( )
200
203
. yield_group (
201
204
* group_id,
202
205
Arc :: new ( move |expanded_value| {
203
- Box :: pin ( capture ! ( [ op_pattern, ctx, gen , k] , async move {
204
- match_pattern( expanded_value, Operator ( op_pattern) , ctx, gen , k)
206
+ Box :: pin ( capture ! ( [ op_pattern, ctx, r# gen, k] , async move {
207
+ match_pattern( expanded_value, Operator ( op_pattern) , ctx, r# gen, k)
205
208
. await ;
206
209
} ) )
207
210
} ) ,
208
211
)
209
212
. await ;
210
213
}
211
214
( Operator ( op_pattern) , CoreData :: Physical ( PhysicalOp ( UnMaterialized ( goal) ) ) ) => {
212
- gen. clone ( )
215
+ r#gen
216
+ . clone ( )
213
217
. yield_goal (
214
218
goal,
215
219
Arc :: new ( move |expanded_value| {
216
- Box :: pin ( capture ! ( [ op_pattern, ctx, gen , k] , async move {
217
- match_pattern( expanded_value, Operator ( op_pattern) , ctx, gen , k)
220
+ Box :: pin ( capture ! ( [ op_pattern, ctx, r# gen, k] , async move {
221
+ match_pattern( expanded_value, Operator ( op_pattern) , ctx, r# gen, k)
218
222
. await ;
219
223
} ) )
220
224
} ) ,
@@ -385,7 +389,7 @@ async fn match_materialized_operator<G>(
385
389
op_pattern : Operator < Pattern > ,
386
390
operator : Operator < Value > ,
387
391
ctx : Context ,
388
- gen : G ,
392
+ r# gen: G ,
389
393
k : MatchContinuation ,
390
394
) where
391
395
G : Generator ,
@@ -410,7 +414,7 @@ async fn match_materialized_operator<G>(
410
414
all_patterns,
411
415
all_values,
412
416
ctx. clone ( ) ,
413
- gen,
417
+ r# gen,
414
418
Arc :: new ( move |results| {
415
419
Box :: pin ( capture ! ( [ ctx, operator, k] , async move {
416
420
// Check if all components matched successfully.
@@ -541,13 +545,13 @@ where
541
545
#[ cfg( test) ]
542
546
mod tests {
543
547
use crate :: engine:: {
548
+ Engine ,
544
549
test_utils:: {
545
- array_decomp_pattern, array_val, bind_pattern, create_logical_operator,
550
+ MockGenerator , array_decomp_pattern, array_val, bind_pattern, create_logical_operator,
546
551
create_physical_operator, evaluate_and_collect, int, lit_expr, lit_val,
547
552
literal_pattern, match_arm, operator_pattern, pattern_match_expr, ref_expr, string,
548
- struct_pattern, struct_val, wildcard_pattern, MockGenerator ,
553
+ struct_pattern, struct_val, wildcard_pattern,
549
554
} ,
550
- Engine ,
551
555
} ;
552
556
use optd_dsl:: analyzer:: {
553
557
context:: Context ,
@@ -1499,9 +1503,11 @@ mod tests {
1499
1503
for result in & results {
1500
1504
match & result. 0 {
1501
1505
CoreData :: Literal ( Literal :: String ( s) ) => {
1502
- assert ! ( expected_combinations
1503
- . map( |( expected, _) | expected)
1504
- . contains( & s. as_str( ) ) ) ;
1506
+ assert ! (
1507
+ expected_combinations
1508
+ . map( |( expected, _) | expected)
1509
+ . contains( & s. as_str( ) )
1510
+ ) ;
1505
1511
}
1506
1512
_ => panic ! ( "Expected string literal" ) ,
1507
1513
}
0 commit comments