File tree Expand file tree Collapse file tree 3 files changed +32
-4
lines changed Expand file tree Collapse file tree 3 files changed +32
-4
lines changed Original file line number Diff line number Diff line change @@ -1761,10 +1761,17 @@ where
17611761 match value {
17621762 Kind :: Start ( _, r) => started. push ( r) ,
17631763 Kind :: End ( _, er) => {
1764- if let Some ( sr) = started. pop ( ) {
1765- if sr != er {
1766- return Some ( ( er, sr) ) ;
1764+ let mut overlap = None ;
1765+
1766+ while let Some ( sr) = started. pop ( ) {
1767+ if sr == er {
1768+ break ;
17671769 }
1770+ overlap = Some ( sr) ;
1771+ }
1772+
1773+ if let Some ( sr) = overlap {
1774+ return Some ( ( er, sr) ) ;
17681775 }
17691776 } ,
17701777 }
Original file line number Diff line number Diff line change @@ -116,6 +116,15 @@ fn overlapping() {
116116 _ => ( ) ,
117117 }
118118
119+ // Only warn about the first if there are multiple overlaps
120+ match 42u128 {
121+ 0 ..=0x0000_0000_0000_00ff => ( ) ,
122+ 0 ..=0x0000_0000_0000_ffff => ( ) ,
123+ 0 ..=0x0000_0000_ffff_ffff => ( ) ,
124+ 0 ..=0xffff_ffff_ffff_ffff => ( ) ,
125+ _ => ( ) ,
126+ }
127+
119128 if let None = Some ( 42 ) {
120129 // nothing
121130 } else if let None = Some ( 42 ) {
Original file line number Diff line number Diff line change @@ -83,5 +83,17 @@ note: overlaps with this
8383LL | 21..=40 => (),
8484 | ^^^^^^^
8585
86- error: aborting due to 7 previous errors
86+ error: some ranges overlap
87+ --> $DIR/match_overlapping_arm.rs:121:9
88+ |
89+ LL | 0..=0x0000_0000_0000_00ff => (),
90+ | ^^^^^^^^^^^^^^^^^^^^^^^^^
91+ |
92+ note: overlaps with this
93+ --> $DIR/match_overlapping_arm.rs:122:9
94+ |
95+ LL | 0..=0x0000_0000_0000_ffff => (),
96+ | ^^^^^^^^^^^^^^^^^^^^^^^^^
97+
98+ error: aborting due to 8 previous errors
8799
You can’t perform that action at this time.
0 commit comments