@@ -306,7 +306,7 @@ type WithParsIter<I, P> = Either<
306
306
mod regex_hir {
307
307
use std:: mem;
308
308
309
- use regex_syntax:: hir:: { self , Hir , HirKind } ;
309
+ use regex_syntax:: hir:: { Hir , HirKind } ;
310
310
311
311
/// Checks whether the given [`Regex`] [`Hir`] contains any capturing
312
312
/// groups.
@@ -317,19 +317,9 @@ mod regex_hir {
317
317
HirKind :: Empty
318
318
| HirKind :: Literal ( _)
319
319
| HirKind :: Class ( _)
320
- | HirKind :: Anchor ( _)
321
- | HirKind :: WordBoundary ( _)
322
- | HirKind :: Repetition ( _)
323
- | HirKind :: Group ( hir:: Group {
324
- kind : hir:: GroupKind :: NonCapturing ,
325
- ..
326
- } ) => false ,
327
- HirKind :: Group ( hir:: Group {
328
- kind :
329
- hir:: GroupKind :: CaptureName { .. }
330
- | hir:: GroupKind :: CaptureIndex ( _) ,
331
- ..
332
- } ) => true ,
320
+ | HirKind :: Look ( _)
321
+ | HirKind :: Repetition ( _) => false ,
322
+ HirKind :: Capture ( _) => true ,
333
323
HirKind :: Concat ( inner) | HirKind :: Alternation ( inner) => {
334
324
inner. iter ( ) . any ( has_capture_groups)
335
325
}
@@ -343,7 +333,7 @@ mod regex_hir {
343
333
}
344
334
345
335
/// Renames capturing groups in the given [`Hir`] via
346
- /// `__{parameter_id}_{group_id}` naming scheme, using the given
336
+ /// `__{parameter_id}_{group_id}` naming scheme, using the provided
347
337
/// `group_id_indexer`.
348
338
fn rename_groups_inner (
349
339
hir : Hir ,
@@ -352,38 +342,28 @@ mod regex_hir {
352
342
) -> Hir {
353
343
match hir. into_kind ( ) {
354
344
HirKind :: Empty => Hir :: empty ( ) ,
355
- HirKind :: Literal ( lit) => Hir :: literal ( lit) ,
345
+ HirKind :: Literal ( lit) => Hir :: literal ( lit. 0 ) ,
356
346
HirKind :: Class ( cl) => Hir :: class ( cl) ,
357
- HirKind :: Anchor ( anc) => Hir :: anchor ( anc) ,
358
- HirKind :: WordBoundary ( bound) => Hir :: word_boundary ( bound) ,
347
+ HirKind :: Look ( l) => Hir :: look ( l) ,
359
348
HirKind :: Repetition ( rep) => Hir :: repetition ( rep) ,
360
- HirKind :: Group ( mut group) => {
361
- match group. kind {
362
- hir:: GroupKind :: CaptureIndex ( index)
363
- | hir:: GroupKind :: CaptureName { index, .. } => {
364
- group. kind = hir:: GroupKind :: CaptureName {
365
- name : format ! (
366
- "__{parameter_id}_{}" ,
367
- * group_id_indexer,
368
- ) ,
369
- index,
370
- } ;
371
- * group_id_indexer += 1 ;
372
- }
373
- hir:: GroupKind :: NonCapturing => { }
374
- }
375
-
376
- let inner_hir = mem:: replace ( group. hir . as_mut ( ) , Hir :: empty ( ) ) ;
349
+ HirKind :: Capture ( mut capture) => {
350
+ capture. name = Some (
351
+ format ! ( "__{parameter_id}_{}" , * group_id_indexer) . into ( ) ,
352
+ ) ;
353
+ * group_id_indexer += 1 ;
354
+
355
+ let inner_hir =
356
+ mem:: replace ( capture. sub . as_mut ( ) , Hir :: empty ( ) ) ;
377
357
drop ( mem:: replace (
378
- group . hir . as_mut ( ) ,
358
+ capture . sub . as_mut ( ) ,
379
359
rename_groups_inner (
380
360
inner_hir,
381
361
parameter_id,
382
362
group_id_indexer,
383
363
) ,
384
364
) ) ;
385
365
386
- Hir :: group ( group )
366
+ Hir :: capture ( capture )
387
367
}
388
368
HirKind :: Concat ( concat) => Hir :: concat (
389
369
concat
@@ -428,8 +408,10 @@ mod spec {
428
408
429
409
assert_eq ! (
430
410
expr. as_str( ) ,
431
- "^(?:\" (?P<__0_0>custom)\" |'(?P<__0_1>custom)') \
432
- (?:\" (?P<__1_0>custom)\" |'(?P<__1_1>custom)')$",
411
+ "^(?:(?:(?:\" (?P<__0_0>(?:custom))\" )\
412
+ |(?:'(?P<__0_1>(?:custom))'))) \
413
+ (?:(?:(?:\" (?P<__1_0>(?:custom))\" )\
414
+ |(?:'(?P<__1_1>(?:custom))')))$",
433
415
) ;
434
416
}
435
417
0 commit comments