@@ -1873,6 +1873,47 @@ mod pattern {
1873
1873
"* \t " ,
1874
1874
[ Reject ( 0 , 1 ) , Reject ( 1 , 2 ) , Reject ( 2 , 3 ) , ]
1875
1875
) ;
1876
+
1877
+ // See #85462
1878
+ #[ test]
1879
+ fn str_searcher_empty_needle_after_done ( ) {
1880
+ // Empty needle and haystack
1881
+ {
1882
+ let mut searcher = "" . into_searcher ( "" ) ;
1883
+
1884
+ assert_eq ! ( searcher. next( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1885
+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1886
+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1887
+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1888
+
1889
+ let mut searcher = "" . into_searcher ( "" ) ;
1890
+
1891
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1892
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1893
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1894
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1895
+ }
1896
+ // Empty needle and non-empty haystack
1897
+ {
1898
+ let mut searcher = "" . into_searcher ( "a" ) ;
1899
+
1900
+ assert_eq ! ( searcher. next( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1901
+ assert_eq ! ( searcher. next( ) , SearchStep :: Reject ( 0 , 1 ) ) ;
1902
+ assert_eq ! ( searcher. next( ) , SearchStep :: Match ( 1 , 1 ) ) ;
1903
+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1904
+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1905
+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1906
+
1907
+ let mut searcher = "" . into_searcher ( "a" ) ;
1908
+
1909
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Match ( 1 , 1 ) ) ;
1910
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Reject ( 0 , 1 ) ) ;
1911
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1912
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1913
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1914
+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1915
+ }
1916
+ }
1876
1917
}
1877
1918
1878
1919
macro_rules! generate_iterator_test {
0 commit comments