@@ -3,6 +3,7 @@ use std::{cmp::Ordering, ops::Range};
3
3
use bstr:: { BStr , ByteSlice , ByteVec } ;
4
4
use filetime:: FileTime ;
5
5
6
+ use crate :: entry:: { Stage , StageRaw } ;
6
7
use crate :: { entry, extension, AccelerateLookup , Entry , PathStorage , PathStorageRef , State , Version } ;
7
8
8
9
// TODO: integrate this somehow, somewhere, depending on later usage.
@@ -81,7 +82,7 @@ impl State {
81
82
res
82
83
} )
83
84
. ok ( ) ?;
84
- self . entry_index_by_idx_and_stage ( path, idx, stage, stage_cmp)
85
+ self . entry_index_by_idx_and_stage ( path, idx, stage as StageRaw , stage_cmp)
85
86
}
86
87
87
88
/// Walk as far in `direction` as possible, with [`Ordering::Greater`] towards higher stages, and [`Ordering::Less`]
@@ -112,7 +113,7 @@ impl State {
112
113
& self ,
113
114
path : & BStr ,
114
115
idx : usize ,
115
- wanted_stage : entry:: Stage ,
116
+ wanted_stage : entry:: StageRaw ,
116
117
stage_cmp : Ordering ,
117
118
) -> Option < usize > {
118
119
match stage_cmp {
@@ -121,15 +122,15 @@ impl State {
121
122
. enumerate ( )
122
123
. rev ( )
123
124
. take_while ( |( _, e) | e. path ( self ) == path)
124
- . find_map ( |( idx, e) | ( e. stage ( ) == wanted_stage) . then_some ( idx) ) ,
125
+ . find_map ( |( idx, e) | ( e. stage_raw ( ) == wanted_stage) . then_some ( idx) ) ,
125
126
Ordering :: Equal => Some ( idx) ,
126
127
Ordering :: Less => self
127
128
. entries
128
129
. get ( idx + 1 ..) ?
129
130
. iter ( )
130
131
. enumerate ( )
131
132
. take_while ( |( _, e) | e. path ( self ) == path)
132
- . find_map ( |( ofs, e) | ( e. stage ( ) == wanted_stage) . then_some ( idx + ofs + 1 ) ) ,
133
+ . find_map ( |( ofs, e) | ( e. stage_raw ( ) == wanted_stage) . then_some ( idx + ofs + 1 ) ) ,
133
134
}
134
135
}
135
136
@@ -291,15 +292,15 @@ impl State {
291
292
. binary_search_by ( |e| {
292
293
let res = e. path ( self ) . cmp ( path) ;
293
294
if res. is_eq ( ) {
294
- stage_at_index = e. stage ( ) ;
295
+ stage_at_index = e. stage_raw ( ) ;
295
296
}
296
297
res
297
298
} )
298
299
. ok ( ) ?;
299
300
let idx = if stage_at_index == 0 || stage_at_index == 2 {
300
301
idx
301
302
} else {
302
- self . entry_index_by_idx_and_stage ( path, idx, 2 , stage_at_index. cmp ( & 2 ) ) ?
303
+ self . entry_index_by_idx_and_stage ( path, idx, Stage :: Ours as StageRaw , stage_at_index. cmp ( & 2 ) ) ?
303
304
} ;
304
305
Some ( & self . entries [ idx] )
305
306
}
@@ -334,13 +335,13 @@ impl State {
334
335
+ self . entries [ low..] . partition_point ( |e| e. path ( self ) . get ( ..prefix_len) . map_or ( false , |p| p <= prefix) ) ;
335
336
336
337
let low_entry = & self . entries . get ( low) ?;
337
- if low_entry. stage ( ) != 0 {
338
+ if low_entry. stage_raw ( ) != 0 {
338
339
low = self
339
340
. walk_entry_stages ( low_entry. path ( self ) , low, Ordering :: Less )
340
341
. unwrap_or ( low) ;
341
342
}
342
343
if let Some ( high_entry) = self . entries . get ( high) {
343
- if high_entry. stage ( ) != 0 {
344
+ if high_entry. stage_raw ( ) != 0 {
344
345
high = self
345
346
. walk_entry_stages ( high_entry. path ( self ) , high, Ordering :: Less )
346
347
. unwrap_or ( high) ;
@@ -374,7 +375,7 @@ impl State {
374
375
. binary_search_by ( |e| {
375
376
let res = e. path ( self ) . cmp ( path) ;
376
377
if res. is_eq ( ) {
377
- stage_at_index = e. stage ( ) ;
378
+ stage_at_index = e. stage_raw ( ) ;
378
379
}
379
380
res
380
381
} )
0 commit comments