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() {
18601860 "###
18611861 ) ;
18621862}
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