File tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed
crates/ra_hir_ty/src/tests Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change @@ -1860,3 +1860,66 @@ fn test() {
1860
1860
"###
1861
1861
) ;
1862
1862
}
1863
+
1864
+ #[ test]
1865
+ fn infer_loop_break_with_val ( ) {
1866
+ assert_snapshot ! (
1867
+ infer( r#"
1868
+ enum Option<T> { Some(T), None }
1869
+ use Option::*;
1870
+
1871
+ fn test() {
1872
+ let x = loop {
1873
+ if false {
1874
+ break None;
1875
+ }
1876
+
1877
+ break Some(true);
1878
+ };
1879
+ }
1880
+ "# ) ,
1881
+ @r###"
1882
+ 60..169 '{ ... }; }': ()
1883
+ 70..71 'x': Option<bool>
1884
+ 74..166 'loop {... }': Option<bool>
1885
+ 79..166 '{ ... }': ()
1886
+ 89..133 'if fal... }': ()
1887
+ 92..97 'false': bool
1888
+ 98..133 '{ ... }': ()
1889
+ 112..122 'break None': !
1890
+ 118..122 'None': Option<bool>
1891
+ 143..159 'break ...(true)': !
1892
+ 149..153 'Some': Some<bool>(bool) -> Option<bool>
1893
+ 149..159 'Some(true)': Option<bool>
1894
+ 154..158 'true': bool
1895
+ "###
1896
+ ) ;
1897
+ }
1898
+
1899
+ #[ test]
1900
+ fn infer_loop_break_without_val ( ) {
1901
+ assert_snapshot ! (
1902
+ infer( r#"
1903
+ enum Option<T> { Some(T), None }
1904
+ use Option::*;
1905
+
1906
+ fn test() {
1907
+ let x = loop {
1908
+ if false {
1909
+ break;
1910
+ }
1911
+ };
1912
+ }
1913
+ "# ) ,
1914
+ @r###"
1915
+ 60..137 '{ ... }; }': ()
1916
+ 70..71 'x': ()
1917
+ 74..134 'loop {... }': ()
1918
+ 79..134 '{ ... }': ()
1919
+ 89..128 'if fal... }': ()
1920
+ 92..97 'false': bool
1921
+ 98..128 '{ ... }': ()
1922
+ 112..117 'break': !
1923
+ "###
1924
+ ) ;
1925
+ }
You can’t perform that action at this time.
0 commit comments