File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed
crates/ra_hir_ty/src/tests Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change @@ -1943,3 +1943,57 @@ fn test() {
19431943 "###
19441944 ) ;
19451945}
1946+
1947+ #[ test]
1948+ fn infer_labelled_break_with_val ( ) {
1949+ assert_snapshot ! (
1950+ infer( r#"
1951+ fn foo() {
1952+ let _x = || 'outer: loop {
1953+ let inner = 'inner: loop {
1954+ let i = Default::default();
1955+ if (break 'outer i) {
1956+ loop { break 'inner 5i8; };
1957+ } else if true {
1958+ break 'inner 6;
1959+ }
1960+ break 7;
1961+ };
1962+ break inner < 8;
1963+ };
1964+ }
1965+ "# ) ,
1966+ @r###"
1967+ 10..336 '{ ... }; }': ()
1968+ 20..22 '_x': || -> bool
1969+ 25..333 '|| 'ou... }': || -> bool
1970+ 28..333 ''outer... }': bool
1971+ 41..333 '{ ... }': ()
1972+ 55..60 'inner': i32
1973+ 63..301 ''inner... }': i32
1974+ 76..301 '{ ... }': ()
1975+ 94..95 'i': i32
1976+ 98..114 'Defaul...efault': {unknown}
1977+ 98..116 'Defaul...ault()': i32
1978+ 130..270 'if (br... }': ()
1979+ 134..148 'break 'outer i': !
1980+ 147..148 'i': i32
1981+ 150..209 '{ ... }': ()
1982+ 168..194 'loop {...5i8; }': i8
1983+ 173..194 '{ brea...5i8; }': ()
1984+ 175..191 'break ...er 5i8': !
1985+ 188..191 '5i8': i8
1986+ 215..270 'if tru... }': ()
1987+ 218..222 'true': bool
1988+ 223..270 '{ ... }': ()
1989+ 241..255 'break 'inner 6': !
1990+ 254..255 '6': i32
1991+ 283..290 'break 7': !
1992+ 289..290 '7': i32
1993+ 311..326 'break inner < 8': !
1994+ 317..322 'inner': i32
1995+ 317..326 'inner < 8': bool
1996+ 325..326 '8': i32
1997+ "###
1998+ ) ;
1999+ }
You can’t perform that action at this time.
0 commit comments