@@ -1624,6 +1624,25 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
1624
1624
otherwise_block
1625
1625
}
1626
1626
1627
+ /// Given a match-pair that corresponds to an or-pattern, expand each subpattern into a new
1628
+ /// subcandidate. Any candidate that has been expanded that way should be passed to
1629
+ /// `finalize_or_candidate` after its subcandidates have been processed.
1630
+ fn create_or_subcandidates < ' pat > (
1631
+ & mut self ,
1632
+ candidate : & mut Candidate < ' pat , ' tcx > ,
1633
+ match_pair : MatchPair < ' pat , ' tcx > ,
1634
+ ) {
1635
+ let TestCase :: Or { pats } = match_pair. test_case else { bug ! ( ) } ;
1636
+ debug ! ( "expanding or-pattern: candidate={:#?}\n pats={:#?}" , candidate, pats) ;
1637
+ candidate. or_span = Some ( match_pair. pattern . span ) ;
1638
+ candidate. subcandidates = pats
1639
+ . into_vec ( )
1640
+ . into_iter ( )
1641
+ . map ( |flat_pat| Candidate :: from_flat_pat ( flat_pat, candidate. has_guard ) )
1642
+ . collect ( ) ;
1643
+ candidate. subcandidates [ 0 ] . false_edge_start_block = candidate. false_edge_start_block ;
1644
+ }
1645
+
1627
1646
/// Simplify subcandidates and process any leftover match pairs. The candidate should have been
1628
1647
/// expanded with `create_or_subcandidates`.
1629
1648
///
@@ -1724,25 +1743,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
1724
1743
}
1725
1744
}
1726
1745
1727
- /// Given a match-pair that corresponds to an or-pattern, expand each subpattern into a new
1728
- /// subcandidate. Any candidate that has been expanded that way should be passed to
1729
- /// `finalize_or_candidate` after its subcandidates have been processed.
1730
- fn create_or_subcandidates < ' pat > (
1731
- & mut self ,
1732
- candidate : & mut Candidate < ' pat , ' tcx > ,
1733
- match_pair : MatchPair < ' pat , ' tcx > ,
1734
- ) {
1735
- let TestCase :: Or { pats } = match_pair. test_case else { bug ! ( ) } ;
1736
- debug ! ( "expanding or-pattern: candidate={:#?}\n pats={:#?}" , candidate, pats) ;
1737
- candidate. or_span = Some ( match_pair. pattern . span ) ;
1738
- candidate. subcandidates = pats
1739
- . into_vec ( )
1740
- . into_iter ( )
1741
- . map ( |flat_pat| Candidate :: from_flat_pat ( flat_pat, candidate. has_guard ) )
1742
- . collect ( ) ;
1743
- candidate. subcandidates [ 0 ] . false_edge_start_block = candidate. false_edge_start_block ;
1744
- }
1745
-
1746
1746
/// Try to merge all of the subcandidates of the given candidate into one. This avoids
1747
1747
/// exponentially large CFGs in cases like `(1 | 2, 3 | 4, ...)`. The candidate should have been
1748
1748
/// expanded with `create_or_subcandidates`.
0 commit comments