diff options
Diffstat (limited to 'crates/ide_assists/src/handlers/extract_function.rs')
-rw-r--r-- | crates/ide_assists/src/handlers/extract_function.rs | 747 |
1 files changed, 429 insertions, 318 deletions
diff --git a/crates/ide_assists/src/handlers/extract_function.rs b/crates/ide_assists/src/handlers/extract_function.rs index f2be091f4..870d4f665 100644 --- a/crates/ide_assists/src/handlers/extract_function.rs +++ b/crates/ide_assists/src/handlers/extract_function.rs | |||
@@ -109,10 +109,15 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext) -> Option | |||
109 | 109 | ||
110 | let new_indent = IndentLevel::from_node(&insert_after); | 110 | let new_indent = IndentLevel::from_node(&insert_after); |
111 | let old_indent = fun.body.indent_level(); | 111 | let old_indent = fun.body.indent_level(); |
112 | let body_contains_await = body_contains_await(&fun.body); | ||
112 | 113 | ||
113 | builder.replace(target_range, format_replacement(ctx, &fun, old_indent)); | 114 | builder.replace( |
115 | target_range, | ||
116 | format_replacement(ctx, &fun, old_indent, body_contains_await), | ||
117 | ); | ||
114 | 118 | ||
115 | let fn_def = format_function(ctx, module, &fun, old_indent, new_indent); | 119 | let fn_def = |
120 | format_function(ctx, module, &fun, old_indent, new_indent, body_contains_await); | ||
116 | let insert_offset = insert_after.text_range().end(); | 121 | let insert_offset = insert_after.text_range().end(); |
117 | match ctx.config.snippet_cap { | 122 | match ctx.config.snippet_cap { |
118 | Some(cap) => builder.insert_snippet(cap, insert_offset, fn_def), | 123 | Some(cap) => builder.insert_snippet(cap, insert_offset, fn_def), |
@@ -954,7 +959,12 @@ fn scope_for_fn_insertion_node(node: &SyntaxNode, anchor: Anchor) -> Option<Synt | |||
954 | last_ancestor | 959 | last_ancestor |
955 | } | 960 | } |
956 | 961 | ||
957 | fn format_replacement(ctx: &AssistContext, fun: &Function, indent: IndentLevel) -> String { | 962 | fn format_replacement( |
963 | ctx: &AssistContext, | ||
964 | fun: &Function, | ||
965 | indent: IndentLevel, | ||
966 | body_contains_await: bool, | ||
967 | ) -> String { | ||
958 | let ret_ty = fun.return_type(ctx); | 968 | let ret_ty = fun.return_type(ctx); |
959 | 969 | ||
960 | let args = fun.params.iter().map(|param| param.to_arg(ctx)); | 970 | let args = fun.params.iter().map(|param| param.to_arg(ctx)); |
@@ -994,6 +1004,9 @@ fn format_replacement(ctx: &AssistContext, fun: &Function, indent: IndentLevel) | |||
994 | } | 1004 | } |
995 | } | 1005 | } |
996 | format_to!(buf, "{}", expr); | 1006 | format_to!(buf, "{}", expr); |
1007 | if body_contains_await { | ||
1008 | buf.push_str(".await"); | ||
1009 | } | ||
997 | if fun.ret_ty.is_unit() | 1010 | if fun.ret_ty.is_unit() |
998 | && (!fun.vars_defined_in_body_and_outlive.is_empty() || !expr.is_block_like()) | 1011 | && (!fun.vars_defined_in_body_and_outlive.is_empty() || !expr.is_block_like()) |
999 | { | 1012 | { |
@@ -1122,12 +1135,13 @@ fn format_function( | |||
1122 | fun: &Function, | 1135 | fun: &Function, |
1123 | old_indent: IndentLevel, | 1136 | old_indent: IndentLevel, |
1124 | new_indent: IndentLevel, | 1137 | new_indent: IndentLevel, |
1138 | body_contains_await: bool, | ||
1125 | ) -> String { | 1139 | ) -> String { |
1126 | let mut fn_def = String::new(); | 1140 | let mut fn_def = String::new(); |
1127 | let params = make_param_list(ctx, module, fun); | 1141 | let params = make_param_list(ctx, module, fun); |
1128 | let ret_ty = make_ret_ty(ctx, module, fun); | 1142 | let ret_ty = make_ret_ty(ctx, module, fun); |
1129 | let body = make_body(ctx, old_indent, new_indent, fun); | 1143 | let body = make_body(ctx, old_indent, new_indent, fun); |
1130 | let async_kw = if body_contains_await(&fun.body) { "async " } else { "" }; | 1144 | let async_kw = if body_contains_await { "async " } else { "" }; |
1131 | match ctx.config.snippet_cap { | 1145 | match ctx.config.snippet_cap { |
1132 | Some(_) => format_to!(fn_def, "\n\n{}{}fn $0{}{}", new_indent, async_kw, fun.name, params), | 1146 | Some(_) => format_to!(fn_def, "\n\n{}{}fn $0{}{}", new_indent, async_kw, fun.name, params), |
1133 | None => format_to!(fn_def, "\n\n{}{}fn {}{}", new_indent, async_kw, fun.name, params), | 1147 | None => format_to!(fn_def, "\n\n{}{}fn {}{}", new_indent, async_kw, fun.name, params), |
@@ -1384,7 +1398,7 @@ fn fix_param_usages(ctx: &AssistContext, params: &[Param], syntax: &SyntaxNode) | |||
1384 | for (param, usages) in usages_for_param { | 1398 | for (param, usages) in usages_for_param { |
1385 | for usage in usages { | 1399 | for usage in usages { |
1386 | match usage.syntax().ancestors().skip(1).find_map(ast::Expr::cast) { | 1400 | match usage.syntax().ancestors().skip(1).find_map(ast::Expr::cast) { |
1387 | Some(ast::Expr::MethodCallExpr(_)) | Some(ast::Expr::FieldExpr(_)) => { | 1401 | Some(ast::Expr::MethodCallExpr(_) | ast::Expr::FieldExpr(_)) => { |
1388 | // do nothing | 1402 | // do nothing |
1389 | } | 1403 | } |
1390 | Some(ast::Expr::RefExpr(node)) | 1404 | Some(ast::Expr::RefExpr(node)) |
@@ -1501,7 +1515,8 @@ mod tests { | |||
1501 | r#" | 1515 | r#" |
1502 | fn foo() { | 1516 | fn foo() { |
1503 | foo($01 + 1$0); | 1517 | foo($01 + 1$0); |
1504 | }"#, | 1518 | } |
1519 | "#, | ||
1505 | r#" | 1520 | r#" |
1506 | fn foo() { | 1521 | fn foo() { |
1507 | foo(fun_name()); | 1522 | foo(fun_name()); |
@@ -1509,7 +1524,8 @@ fn foo() { | |||
1509 | 1524 | ||
1510 | fn $0fun_name() -> i32 { | 1525 | fn $0fun_name() -> i32 { |
1511 | 1 + 1 | 1526 | 1 + 1 |
1512 | }"#, | 1527 | } |
1528 | "#, | ||
1513 | ); | 1529 | ); |
1514 | } | 1530 | } |
1515 | 1531 | ||
@@ -1522,7 +1538,8 @@ mod bar { | |||
1522 | fn foo() { | 1538 | fn foo() { |
1523 | foo($01 + 1$0); | 1539 | foo($01 + 1$0); |
1524 | } | 1540 | } |
1525 | }"#, | 1541 | } |
1542 | "#, | ||
1526 | r#" | 1543 | r#" |
1527 | mod bar { | 1544 | mod bar { |
1528 | fn foo() { | 1545 | fn foo() { |
@@ -1532,7 +1549,8 @@ mod bar { | |||
1532 | fn $0fun_name() -> i32 { | 1549 | fn $0fun_name() -> i32 { |
1533 | 1 + 1 | 1550 | 1 + 1 |
1534 | } | 1551 | } |
1535 | }"#, | 1552 | } |
1553 | "#, | ||
1536 | ); | 1554 | ); |
1537 | } | 1555 | } |
1538 | 1556 | ||
@@ -1543,7 +1561,8 @@ mod bar { | |||
1543 | r#" | 1561 | r#" |
1544 | fn foo() { | 1562 | fn foo() { |
1545 | $0{ 1 + 1 }$0; | 1563 | $0{ 1 + 1 }$0; |
1546 | }"#, | 1564 | } |
1565 | "#, | ||
1547 | r#" | 1566 | r#" |
1548 | fn foo() { | 1567 | fn foo() { |
1549 | fun_name(); | 1568 | fun_name(); |
@@ -1551,7 +1570,8 @@ fn foo() { | |||
1551 | 1570 | ||
1552 | fn $0fun_name() -> i32 { | 1571 | fn $0fun_name() -> i32 { |
1553 | 1 + 1 | 1572 | 1 + 1 |
1554 | }"#, | 1573 | } |
1574 | "#, | ||
1555 | ); | 1575 | ); |
1556 | } | 1576 | } |
1557 | 1577 | ||
@@ -1564,7 +1584,8 @@ fn foo() -> i32 { | |||
1564 | let k = 1; | 1584 | let k = 1; |
1565 | $0let m = 1; | 1585 | $0let m = 1; |
1566 | m + 1$0 | 1586 | m + 1$0 |
1567 | }"#, | 1587 | } |
1588 | "#, | ||
1568 | r#" | 1589 | r#" |
1569 | fn foo() -> i32 { | 1590 | fn foo() -> i32 { |
1570 | let k = 1; | 1591 | let k = 1; |
@@ -1574,7 +1595,8 @@ fn foo() -> i32 { | |||
1574 | fn $0fun_name() -> i32 { | 1595 | fn $0fun_name() -> i32 { |
1575 | let m = 1; | 1596 | let m = 1; |
1576 | m + 1 | 1597 | m + 1 |
1577 | }"#, | 1598 | } |
1599 | "#, | ||
1578 | ); | 1600 | ); |
1579 | } | 1601 | } |
1580 | 1602 | ||
@@ -1588,7 +1610,8 @@ fn foo() { | |||
1588 | $0let m = 1; | 1610 | $0let m = 1; |
1589 | let n = m + 1;$0 | 1611 | let n = m + 1;$0 |
1590 | let g = 5; | 1612 | let g = 5; |
1591 | }"#, | 1613 | } |
1614 | "#, | ||
1592 | r#" | 1615 | r#" |
1593 | fn foo() { | 1616 | fn foo() { |
1594 | let k = 3; | 1617 | let k = 3; |
@@ -1599,7 +1622,8 @@ fn foo() { | |||
1599 | fn $0fun_name() { | 1622 | fn $0fun_name() { |
1600 | let m = 1; | 1623 | let m = 1; |
1601 | let n = m + 1; | 1624 | let n = m + 1; |
1602 | }"#, | 1625 | } |
1626 | "#, | ||
1603 | ); | 1627 | ); |
1604 | } | 1628 | } |
1605 | 1629 | ||
@@ -1610,7 +1634,8 @@ fn $0fun_name() { | |||
1610 | r#" | 1634 | r#" |
1611 | fn foo() { | 1635 | fn foo() { |
1612 | $0if true { }$0 | 1636 | $0if true { }$0 |
1613 | }"#, | 1637 | } |
1638 | "#, | ||
1614 | r#" | 1639 | r#" |
1615 | fn foo() { | 1640 | fn foo() { |
1616 | fun_name(); | 1641 | fun_name(); |
@@ -1618,7 +1643,8 @@ fn foo() { | |||
1618 | 1643 | ||
1619 | fn $0fun_name() { | 1644 | fn $0fun_name() { |
1620 | if true { } | 1645 | if true { } |
1621 | }"#, | 1646 | } |
1647 | "#, | ||
1622 | ); | 1648 | ); |
1623 | } | 1649 | } |
1624 | 1650 | ||
@@ -1629,7 +1655,8 @@ fn $0fun_name() { | |||
1629 | r#" | 1655 | r#" |
1630 | fn foo() -> i32 { | 1656 | fn foo() -> i32 { |
1631 | $0if true { 1 } else { 2 }$0 | 1657 | $0if true { 1 } else { 2 }$0 |
1632 | }"#, | 1658 | } |
1659 | "#, | ||
1633 | r#" | 1660 | r#" |
1634 | fn foo() -> i32 { | 1661 | fn foo() -> i32 { |
1635 | fun_name() | 1662 | fun_name() |
@@ -1637,7 +1664,8 @@ fn foo() -> i32 { | |||
1637 | 1664 | ||
1638 | fn $0fun_name() -> i32 { | 1665 | fn $0fun_name() -> i32 { |
1639 | if true { 1 } else { 2 } | 1666 | if true { 1 } else { 2 } |
1640 | }"#, | 1667 | } |
1668 | "#, | ||
1641 | ); | 1669 | ); |
1642 | } | 1670 | } |
1643 | 1671 | ||
@@ -1648,7 +1676,8 @@ fn $0fun_name() -> i32 { | |||
1648 | r#" | 1676 | r#" |
1649 | fn foo() -> i32 { | 1677 | fn foo() -> i32 { |
1650 | $0if let true = false { 1 } else { 2 }$0 | 1678 | $0if let true = false { 1 } else { 2 }$0 |
1651 | }"#, | 1679 | } |
1680 | "#, | ||
1652 | r#" | 1681 | r#" |
1653 | fn foo() -> i32 { | 1682 | fn foo() -> i32 { |
1654 | fun_name() | 1683 | fun_name() |
@@ -1656,7 +1685,8 @@ fn foo() -> i32 { | |||
1656 | 1685 | ||
1657 | fn $0fun_name() -> i32 { | 1686 | fn $0fun_name() -> i32 { |
1658 | if let true = false { 1 } else { 2 } | 1687 | if let true = false { 1 } else { 2 } |
1659 | }"#, | 1688 | } |
1689 | "#, | ||
1660 | ); | 1690 | ); |
1661 | } | 1691 | } |
1662 | 1692 | ||
@@ -1670,7 +1700,8 @@ fn foo() -> i32 { | |||
1670 | true => 1, | 1700 | true => 1, |
1671 | false => 2, | 1701 | false => 2, |
1672 | }$0 | 1702 | }$0 |
1673 | }"#, | 1703 | } |
1704 | "#, | ||
1674 | r#" | 1705 | r#" |
1675 | fn foo() -> i32 { | 1706 | fn foo() -> i32 { |
1676 | fun_name() | 1707 | fun_name() |
@@ -1681,7 +1712,8 @@ fn $0fun_name() -> i32 { | |||
1681 | true => 1, | 1712 | true => 1, |
1682 | false => 2, | 1713 | false => 2, |
1683 | } | 1714 | } |
1684 | }"#, | 1715 | } |
1716 | "#, | ||
1685 | ); | 1717 | ); |
1686 | } | 1718 | } |
1687 | 1719 | ||
@@ -1692,7 +1724,8 @@ fn $0fun_name() -> i32 { | |||
1692 | r#" | 1724 | r#" |
1693 | fn foo() { | 1725 | fn foo() { |
1694 | $0while true { }$0 | 1726 | $0while true { }$0 |
1695 | }"#, | 1727 | } |
1728 | "#, | ||
1696 | r#" | 1729 | r#" |
1697 | fn foo() { | 1730 | fn foo() { |
1698 | fun_name(); | 1731 | fun_name(); |
@@ -1700,7 +1733,8 @@ fn foo() { | |||
1700 | 1733 | ||
1701 | fn $0fun_name() { | 1734 | fn $0fun_name() { |
1702 | while true { } | 1735 | while true { } |
1703 | }"#, | 1736 | } |
1737 | "#, | ||
1704 | ); | 1738 | ); |
1705 | } | 1739 | } |
1706 | 1740 | ||
@@ -1711,7 +1745,8 @@ fn $0fun_name() { | |||
1711 | r#" | 1745 | r#" |
1712 | fn foo() { | 1746 | fn foo() { |
1713 | $0for v in &[0, 1] { }$0 | 1747 | $0for v in &[0, 1] { }$0 |
1714 | }"#, | 1748 | } |
1749 | "#, | ||
1715 | r#" | 1750 | r#" |
1716 | fn foo() { | 1751 | fn foo() { |
1717 | fun_name(); | 1752 | fun_name(); |
@@ -1719,7 +1754,8 @@ fn foo() { | |||
1719 | 1754 | ||
1720 | fn $0fun_name() { | 1755 | fn $0fun_name() { |
1721 | for v in &[0, 1] { } | 1756 | for v in &[0, 1] { } |
1722 | }"#, | 1757 | } |
1758 | "#, | ||
1723 | ); | 1759 | ); |
1724 | } | 1760 | } |
1725 | 1761 | ||
@@ -1732,7 +1768,8 @@ fn foo() { | |||
1732 | $0loop { | 1768 | $0loop { |
1733 | let m = 1; | 1769 | let m = 1; |
1734 | }$0 | 1770 | }$0 |
1735 | }"#, | 1771 | } |
1772 | "#, | ||
1736 | r#" | 1773 | r#" |
1737 | fn foo() { | 1774 | fn foo() { |
1738 | fun_name() | 1775 | fun_name() |
@@ -1742,7 +1779,8 @@ fn $0fun_name() -> ! { | |||
1742 | loop { | 1779 | loop { |
1743 | let m = 1; | 1780 | let m = 1; |
1744 | } | 1781 | } |
1745 | }"#, | 1782 | } |
1783 | "#, | ||
1746 | ); | 1784 | ); |
1747 | } | 1785 | } |
1748 | 1786 | ||
@@ -1756,7 +1794,8 @@ fn foo() { | |||
1756 | let m = 1; | 1794 | let m = 1; |
1757 | break m; | 1795 | break m; |
1758 | }$0; | 1796 | }$0; |
1759 | }"#, | 1797 | } |
1798 | "#, | ||
1760 | r#" | 1799 | r#" |
1761 | fn foo() { | 1800 | fn foo() { |
1762 | let v = fun_name(); | 1801 | let v = fun_name(); |
@@ -1767,7 +1806,8 @@ fn $0fun_name() -> i32 { | |||
1767 | let m = 1; | 1806 | let m = 1; |
1768 | break m; | 1807 | break m; |
1769 | } | 1808 | } |
1770 | }"#, | 1809 | } |
1810 | "#, | ||
1771 | ); | 1811 | ); |
1772 | } | 1812 | } |
1773 | 1813 | ||
@@ -1781,7 +1821,8 @@ fn foo() { | |||
1781 | Some(x) => x, | 1821 | Some(x) => x, |
1782 | None => 0, | 1822 | None => 0, |
1783 | }$0; | 1823 | }$0; |
1784 | }"#, | 1824 | } |
1825 | "#, | ||
1785 | r#" | 1826 | r#" |
1786 | fn foo() { | 1827 | fn foo() { |
1787 | let v: i32 = fun_name(); | 1828 | let v: i32 = fun_name(); |
@@ -1792,7 +1833,8 @@ fn $0fun_name() -> i32 { | |||
1792 | Some(x) => x, | 1833 | Some(x) => x, |
1793 | None => 0, | 1834 | None => 0, |
1794 | } | 1835 | } |
1795 | }"#, | 1836 | } |
1837 | "#, | ||
1796 | ); | 1838 | ); |
1797 | } | 1839 | } |
1798 | 1840 | ||
@@ -1805,7 +1847,8 @@ fn foo() { | |||
1805 | let n = 1; | 1847 | let n = 1; |
1806 | let mut v = $0n * n;$0 | 1848 | let mut v = $0n * n;$0 |
1807 | v += 1; | 1849 | v += 1; |
1808 | }"#, | 1850 | } |
1851 | "#, | ||
1809 | r#" | 1852 | r#" |
1810 | fn foo() { | 1853 | fn foo() { |
1811 | let n = 1; | 1854 | let n = 1; |
@@ -1816,7 +1859,8 @@ fn foo() { | |||
1816 | fn $0fun_name(n: i32) -> i32 { | 1859 | fn $0fun_name(n: i32) -> i32 { |
1817 | let mut v = n * n; | 1860 | let mut v = n * n; |
1818 | v | 1861 | v |
1819 | }"#, | 1862 | } |
1863 | "#, | ||
1820 | ); | 1864 | ); |
1821 | } | 1865 | } |
1822 | 1866 | ||
@@ -1832,7 +1876,8 @@ fn foo() { | |||
1832 | let mut w = 3;$0 | 1876 | let mut w = 3;$0 |
1833 | v += 1; | 1877 | v += 1; |
1834 | w += 1; | 1878 | w += 1; |
1835 | }"#, | 1879 | } |
1880 | "#, | ||
1836 | r#" | 1881 | r#" |
1837 | fn foo() { | 1882 | fn foo() { |
1838 | let m = 2; | 1883 | let m = 2; |
@@ -1846,7 +1891,8 @@ fn $0fun_name(m: i32, n: i32) -> (i32, i32) { | |||
1846 | let mut v = m * n; | 1891 | let mut v = m * n; |
1847 | let mut w = 3; | 1892 | let mut w = 3; |
1848 | (v, w) | 1893 | (v, w) |
1849 | }"#, | 1894 | } |
1895 | "#, | ||
1850 | ); | 1896 | ); |
1851 | } | 1897 | } |
1852 | 1898 | ||
@@ -1854,12 +1900,13 @@ fn $0fun_name(m: i32, n: i32) -> (i32, i32) { | |||
1854 | fn argument_form_expr() { | 1900 | fn argument_form_expr() { |
1855 | check_assist( | 1901 | check_assist( |
1856 | extract_function, | 1902 | extract_function, |
1857 | r" | 1903 | r#" |
1858 | fn foo() -> u32 { | 1904 | fn foo() -> u32 { |
1859 | let n = 2; | 1905 | let n = 2; |
1860 | $0n+2$0 | 1906 | $0n+2$0 |
1861 | }", | 1907 | } |
1862 | r" | 1908 | "#, |
1909 | r#" | ||
1863 | fn foo() -> u32 { | 1910 | fn foo() -> u32 { |
1864 | let n = 2; | 1911 | let n = 2; |
1865 | fun_name(n) | 1912 | fun_name(n) |
@@ -1867,7 +1914,8 @@ fn foo() -> u32 { | |||
1867 | 1914 | ||
1868 | fn $0fun_name(n: u32) -> u32 { | 1915 | fn $0fun_name(n: u32) -> u32 { |
1869 | n+2 | 1916 | n+2 |
1870 | }", | 1917 | } |
1918 | "#, | ||
1871 | ) | 1919 | ) |
1872 | } | 1920 | } |
1873 | 1921 | ||
@@ -1875,12 +1923,13 @@ fn $0fun_name(n: u32) -> u32 { | |||
1875 | fn argument_used_twice_form_expr() { | 1923 | fn argument_used_twice_form_expr() { |
1876 | check_assist( | 1924 | check_assist( |
1877 | extract_function, | 1925 | extract_function, |
1878 | r" | 1926 | r#" |
1879 | fn foo() -> u32 { | 1927 | fn foo() -> u32 { |
1880 | let n = 2; | 1928 | let n = 2; |
1881 | $0n+n$0 | 1929 | $0n+n$0 |
1882 | }", | 1930 | } |
1883 | r" | 1931 | "#, |
1932 | r#" | ||
1884 | fn foo() -> u32 { | 1933 | fn foo() -> u32 { |
1885 | let n = 2; | 1934 | let n = 2; |
1886 | fun_name(n) | 1935 | fun_name(n) |
@@ -1888,7 +1937,8 @@ fn foo() -> u32 { | |||
1888 | 1937 | ||
1889 | fn $0fun_name(n: u32) -> u32 { | 1938 | fn $0fun_name(n: u32) -> u32 { |
1890 | n+n | 1939 | n+n |
1891 | }", | 1940 | } |
1941 | "#, | ||
1892 | ) | 1942 | ) |
1893 | } | 1943 | } |
1894 | 1944 | ||
@@ -1896,13 +1946,14 @@ fn $0fun_name(n: u32) -> u32 { | |||
1896 | fn two_arguments_form_expr() { | 1946 | fn two_arguments_form_expr() { |
1897 | check_assist( | 1947 | check_assist( |
1898 | extract_function, | 1948 | extract_function, |
1899 | r" | 1949 | r#" |
1900 | fn foo() -> u32 { | 1950 | fn foo() -> u32 { |
1901 | let n = 2; | 1951 | let n = 2; |
1902 | let m = 3; | 1952 | let m = 3; |
1903 | $0n+n*m$0 | 1953 | $0n+n*m$0 |
1904 | }", | 1954 | } |
1905 | r" | 1955 | "#, |
1956 | r#" | ||
1906 | fn foo() -> u32 { | 1957 | fn foo() -> u32 { |
1907 | let n = 2; | 1958 | let n = 2; |
1908 | let m = 3; | 1959 | let m = 3; |
@@ -1911,7 +1962,8 @@ fn foo() -> u32 { | |||
1911 | 1962 | ||
1912 | fn $0fun_name(n: u32, m: u32) -> u32 { | 1963 | fn $0fun_name(n: u32, m: u32) -> u32 { |
1913 | n+n*m | 1964 | n+n*m |
1914 | }", | 1965 | } |
1966 | "#, | ||
1915 | ) | 1967 | ) |
1916 | } | 1968 | } |
1917 | 1969 | ||
@@ -1919,13 +1971,14 @@ fn $0fun_name(n: u32, m: u32) -> u32 { | |||
1919 | fn argument_and_locals() { | 1971 | fn argument_and_locals() { |
1920 | check_assist( | 1972 | check_assist( |
1921 | extract_function, | 1973 | extract_function, |
1922 | r" | 1974 | r#" |
1923 | fn foo() -> u32 { | 1975 | fn foo() -> u32 { |
1924 | let n = 2; | 1976 | let n = 2; |
1925 | $0let m = 1; | 1977 | $0let m = 1; |
1926 | n + m$0 | 1978 | n + m$0 |
1927 | }", | 1979 | } |
1928 | r" | 1980 | "#, |
1981 | r#" | ||
1929 | fn foo() -> u32 { | 1982 | fn foo() -> u32 { |
1930 | let n = 2; | 1983 | let n = 2; |
1931 | fun_name(n) | 1984 | fun_name(n) |
@@ -1934,7 +1987,8 @@ fn foo() -> u32 { | |||
1934 | fn $0fun_name(n: u32) -> u32 { | 1987 | fn $0fun_name(n: u32) -> u32 { |
1935 | let m = 1; | 1988 | let m = 1; |
1936 | n + m | 1989 | n + m |
1937 | }", | 1990 | } |
1991 | "#, | ||
1938 | ) | 1992 | ) |
1939 | } | 1993 | } |
1940 | 1994 | ||
@@ -1948,18 +2002,20 @@ fn $0fun_name(n: u32) -> u32 { | |||
1948 | fn part_of_expr_stmt() { | 2002 | fn part_of_expr_stmt() { |
1949 | check_assist( | 2003 | check_assist( |
1950 | extract_function, | 2004 | extract_function, |
1951 | " | 2005 | r#" |
1952 | fn foo() { | 2006 | fn foo() { |
1953 | $01$0 + 1; | 2007 | $01$0 + 1; |
1954 | }", | 2008 | } |
1955 | " | 2009 | "#, |
2010 | r#" | ||
1956 | fn foo() { | 2011 | fn foo() { |
1957 | fun_name() + 1; | 2012 | fun_name() + 1; |
1958 | } | 2013 | } |
1959 | 2014 | ||
1960 | fn $0fun_name() -> i32 { | 2015 | fn $0fun_name() -> i32 { |
1961 | 1 | 2016 | 1 |
1962 | }", | 2017 | } |
2018 | "#, | ||
1963 | ); | 2019 | ); |
1964 | } | 2020 | } |
1965 | 2021 | ||
@@ -1970,7 +2026,8 @@ fn $0fun_name() -> i32 { | |||
1970 | r#" | 2026 | r#" |
1971 | fn foo() { | 2027 | fn foo() { |
1972 | $0bar(1 + 1)$0 | 2028 | $0bar(1 + 1)$0 |
1973 | }"#, | 2029 | } |
2030 | "#, | ||
1974 | r#" | 2031 | r#" |
1975 | fn foo() { | 2032 | fn foo() { |
1976 | fun_name(); | 2033 | fun_name(); |
@@ -1978,7 +2035,8 @@ fn foo() { | |||
1978 | 2035 | ||
1979 | fn $0fun_name() { | 2036 | fn $0fun_name() { |
1980 | bar(1 + 1) | 2037 | bar(1 + 1) |
1981 | }"#, | 2038 | } |
2039 | "#, | ||
1982 | ) | 2040 | ) |
1983 | } | 2041 | } |
1984 | 2042 | ||
@@ -1986,15 +2044,16 @@ fn $0fun_name() { | |||
1986 | fn extract_from_nested() { | 2044 | fn extract_from_nested() { |
1987 | check_assist( | 2045 | check_assist( |
1988 | extract_function, | 2046 | extract_function, |
1989 | r" | 2047 | r#" |
1990 | fn main() { | 2048 | fn main() { |
1991 | let x = true; | 2049 | let x = true; |
1992 | let tuple = match x { | 2050 | let tuple = match x { |
1993 | true => ($02 + 2$0, true) | 2051 | true => ($02 + 2$0, true) |
1994 | _ => (0, false) | 2052 | _ => (0, false) |
1995 | }; | 2053 | }; |
1996 | }", | 2054 | } |
1997 | r" | 2055 | "#, |
2056 | r#" | ||
1998 | fn main() { | 2057 | fn main() { |
1999 | let x = true; | 2058 | let x = true; |
2000 | let tuple = match x { | 2059 | let tuple = match x { |
@@ -2005,7 +2064,8 @@ fn main() { | |||
2005 | 2064 | ||
2006 | fn $0fun_name() -> i32 { | 2065 | fn $0fun_name() -> i32 { |
2007 | 2 + 2 | 2066 | 2 + 2 |
2008 | }", | 2067 | } |
2068 | "#, | ||
2009 | ); | 2069 | ); |
2010 | } | 2070 | } |
2011 | 2071 | ||
@@ -2013,18 +2073,20 @@ fn $0fun_name() -> i32 { | |||
2013 | fn param_from_closure() { | 2073 | fn param_from_closure() { |
2014 | check_assist( | 2074 | check_assist( |
2015 | extract_function, | 2075 | extract_function, |
2016 | r" | 2076 | r#" |
2017 | fn main() { | 2077 | fn main() { |
2018 | let lambda = |x: u32| $0x * 2$0; | 2078 | let lambda = |x: u32| $0x * 2$0; |
2019 | }", | 2079 | } |
2020 | r" | 2080 | "#, |
2081 | r#" | ||
2021 | fn main() { | 2082 | fn main() { |
2022 | let lambda = |x: u32| fun_name(x); | 2083 | let lambda = |x: u32| fun_name(x); |
2023 | } | 2084 | } |
2024 | 2085 | ||
2025 | fn $0fun_name(x: u32) -> u32 { | 2086 | fn $0fun_name(x: u32) -> u32 { |
2026 | x * 2 | 2087 | x * 2 |
2027 | }", | 2088 | } |
2089 | "#, | ||
2028 | ); | 2090 | ); |
2029 | } | 2091 | } |
2030 | 2092 | ||
@@ -2032,18 +2094,20 @@ fn $0fun_name(x: u32) -> u32 { | |||
2032 | fn extract_return_stmt() { | 2094 | fn extract_return_stmt() { |
2033 | check_assist( | 2095 | check_assist( |
2034 | extract_function, | 2096 | extract_function, |
2035 | r" | 2097 | r#" |
2036 | fn foo() -> u32 { | 2098 | fn foo() -> u32 { |
2037 | $0return 2 + 2$0; | 2099 | $0return 2 + 2$0; |
2038 | }", | 2100 | } |
2039 | r" | 2101 | "#, |
2102 | r#" | ||
2040 | fn foo() -> u32 { | 2103 | fn foo() -> u32 { |
2041 | return fun_name(); | 2104 | return fun_name(); |
2042 | } | 2105 | } |
2043 | 2106 | ||
2044 | fn $0fun_name() -> u32 { | 2107 | fn $0fun_name() -> u32 { |
2045 | 2 + 2 | 2108 | 2 + 2 |
2046 | }", | 2109 | } |
2110 | "#, | ||
2047 | ); | 2111 | ); |
2048 | } | 2112 | } |
2049 | 2113 | ||
@@ -2051,13 +2115,14 @@ fn $0fun_name() -> u32 { | |||
2051 | fn does_not_add_extra_whitespace() { | 2115 | fn does_not_add_extra_whitespace() { |
2052 | check_assist( | 2116 | check_assist( |
2053 | extract_function, | 2117 | extract_function, |
2054 | r" | 2118 | r#" |
2055 | fn foo() -> u32 { | 2119 | fn foo() -> u32 { |
2056 | 2120 | ||
2057 | 2121 | ||
2058 | $0return 2 + 2$0; | 2122 | $0return 2 + 2$0; |
2059 | }", | 2123 | } |
2060 | r" | 2124 | "#, |
2125 | r#" | ||
2061 | fn foo() -> u32 { | 2126 | fn foo() -> u32 { |
2062 | 2127 | ||
2063 | 2128 | ||
@@ -2066,7 +2131,8 @@ fn foo() -> u32 { | |||
2066 | 2131 | ||
2067 | fn $0fun_name() -> u32 { | 2132 | fn $0fun_name() -> u32 { |
2068 | 2 + 2 | 2133 | 2 + 2 |
2069 | }", | 2134 | } |
2135 | "#, | ||
2070 | ); | 2136 | ); |
2071 | } | 2137 | } |
2072 | 2138 | ||
@@ -2074,13 +2140,14 @@ fn $0fun_name() -> u32 { | |||
2074 | fn break_stmt() { | 2140 | fn break_stmt() { |
2075 | check_assist( | 2141 | check_assist( |
2076 | extract_function, | 2142 | extract_function, |
2077 | r" | 2143 | r#" |
2078 | fn main() { | 2144 | fn main() { |
2079 | let result = loop { | 2145 | let result = loop { |
2080 | $0break 2 + 2$0; | 2146 | $0break 2 + 2$0; |
2081 | }; | 2147 | }; |
2082 | }", | 2148 | } |
2083 | r" | 2149 | "#, |
2150 | r#" | ||
2084 | fn main() { | 2151 | fn main() { |
2085 | let result = loop { | 2152 | let result = loop { |
2086 | break fun_name(); | 2153 | break fun_name(); |
@@ -2089,7 +2156,8 @@ fn main() { | |||
2089 | 2156 | ||
2090 | fn $0fun_name() -> i32 { | 2157 | fn $0fun_name() -> i32 { |
2091 | 2 + 2 | 2158 | 2 + 2 |
2092 | }", | 2159 | } |
2160 | "#, | ||
2093 | ); | 2161 | ); |
2094 | } | 2162 | } |
2095 | 2163 | ||
@@ -2097,18 +2165,20 @@ fn $0fun_name() -> i32 { | |||
2097 | fn extract_cast() { | 2165 | fn extract_cast() { |
2098 | check_assist( | 2166 | check_assist( |
2099 | extract_function, | 2167 | extract_function, |
2100 | r" | 2168 | r#" |
2101 | fn main() { | 2169 | fn main() { |
2102 | let v = $00f32 as u32$0; | 2170 | let v = $00f32 as u32$0; |
2103 | }", | 2171 | } |
2104 | r" | 2172 | "#, |
2173 | r#" | ||
2105 | fn main() { | 2174 | fn main() { |
2106 | let v = fun_name(); | 2175 | let v = fun_name(); |
2107 | } | 2176 | } |
2108 | 2177 | ||
2109 | fn $0fun_name() -> u32 { | 2178 | fn $0fun_name() -> u32 { |
2110 | 0f32 as u32 | 2179 | 0f32 as u32 |
2111 | }", | 2180 | } |
2181 | "#, | ||
2112 | ); | 2182 | ); |
2113 | } | 2183 | } |
2114 | 2184 | ||
@@ -2121,15 +2191,16 @@ fn $0fun_name() -> u32 { | |||
2121 | fn method_to_freestanding() { | 2191 | fn method_to_freestanding() { |
2122 | check_assist( | 2192 | check_assist( |
2123 | extract_function, | 2193 | extract_function, |
2124 | r" | 2194 | r#" |
2125 | struct S; | 2195 | struct S; |
2126 | 2196 | ||
2127 | impl S { | 2197 | impl S { |
2128 | fn foo(&self) -> i32 { | 2198 | fn foo(&self) -> i32 { |
2129 | $01+1$0 | 2199 | $01+1$0 |
2130 | } | 2200 | } |
2131 | }", | 2201 | } |
2132 | r" | 2202 | "#, |
2203 | r#" | ||
2133 | struct S; | 2204 | struct S; |
2134 | 2205 | ||
2135 | impl S { | 2206 | impl S { |
@@ -2140,7 +2211,8 @@ impl S { | |||
2140 | 2211 | ||
2141 | fn $0fun_name() -> i32 { | 2212 | fn $0fun_name() -> i32 { |
2142 | 1+1 | 2213 | 1+1 |
2143 | }", | 2214 | } |
2215 | "#, | ||
2144 | ); | 2216 | ); |
2145 | } | 2217 | } |
2146 | 2218 | ||
@@ -2148,15 +2220,16 @@ fn $0fun_name() -> i32 { | |||
2148 | fn method_with_reference() { | 2220 | fn method_with_reference() { |
2149 | check_assist( | 2221 | check_assist( |
2150 | extract_function, | 2222 | extract_function, |
2151 | r" | 2223 | r#" |
2152 | struct S { f: i32 }; | 2224 | struct S { f: i32 }; |
2153 | 2225 | ||
2154 | impl S { | 2226 | impl S { |
2155 | fn foo(&self) -> i32 { | 2227 | fn foo(&self) -> i32 { |
2156 | $01+self.f$0 | 2228 | $01+self.f$0 |
2157 | } | 2229 | } |
2158 | }", | 2230 | } |
2159 | r" | 2231 | "#, |
2232 | r#" | ||
2160 | struct S { f: i32 }; | 2233 | struct S { f: i32 }; |
2161 | 2234 | ||
2162 | impl S { | 2235 | impl S { |
@@ -2167,7 +2240,8 @@ impl S { | |||
2167 | fn $0fun_name(&self) -> i32 { | 2240 | fn $0fun_name(&self) -> i32 { |
2168 | 1+self.f | 2241 | 1+self.f |
2169 | } | 2242 | } |
2170 | }", | 2243 | } |
2244 | "#, | ||
2171 | ); | 2245 | ); |
2172 | } | 2246 | } |
2173 | 2247 | ||
@@ -2175,15 +2249,16 @@ impl S { | |||
2175 | fn method_with_mut() { | 2249 | fn method_with_mut() { |
2176 | check_assist( | 2250 | check_assist( |
2177 | extract_function, | 2251 | extract_function, |
2178 | r" | 2252 | r#" |
2179 | struct S { f: i32 }; | 2253 | struct S { f: i32 }; |
2180 | 2254 | ||
2181 | impl S { | 2255 | impl S { |
2182 | fn foo(&mut self) { | 2256 | fn foo(&mut self) { |
2183 | $0self.f += 1;$0 | 2257 | $0self.f += 1;$0 |
2184 | } | 2258 | } |
2185 | }", | 2259 | } |
2186 | r" | 2260 | "#, |
2261 | r#" | ||
2187 | struct S { f: i32 }; | 2262 | struct S { f: i32 }; |
2188 | 2263 | ||
2189 | impl S { | 2264 | impl S { |
@@ -2194,7 +2269,8 @@ impl S { | |||
2194 | fn $0fun_name(&mut self) { | 2269 | fn $0fun_name(&mut self) { |
2195 | self.f += 1; | 2270 | self.f += 1; |
2196 | } | 2271 | } |
2197 | }", | 2272 | } |
2273 | "#, | ||
2198 | ); | 2274 | ); |
2199 | } | 2275 | } |
2200 | 2276 | ||
@@ -2202,13 +2278,14 @@ impl S { | |||
2202 | fn variable_defined_inside_and_used_after_no_ret() { | 2278 | fn variable_defined_inside_and_used_after_no_ret() { |
2203 | check_assist( | 2279 | check_assist( |
2204 | extract_function, | 2280 | extract_function, |
2205 | r" | 2281 | r#" |
2206 | fn foo() { | 2282 | fn foo() { |
2207 | let n = 1; | 2283 | let n = 1; |
2208 | $0let k = n * n;$0 | 2284 | $0let k = n * n;$0 |
2209 | let m = k + 1; | 2285 | let m = k + 1; |
2210 | }", | 2286 | } |
2211 | r" | 2287 | "#, |
2288 | r#" | ||
2212 | fn foo() { | 2289 | fn foo() { |
2213 | let n = 1; | 2290 | let n = 1; |
2214 | let k = fun_name(n); | 2291 | let k = fun_name(n); |
@@ -2218,7 +2295,8 @@ fn foo() { | |||
2218 | fn $0fun_name(n: i32) -> i32 { | 2295 | fn $0fun_name(n: i32) -> i32 { |
2219 | let k = n * n; | 2296 | let k = n * n; |
2220 | k | 2297 | k |
2221 | }", | 2298 | } |
2299 | "#, | ||
2222 | ); | 2300 | ); |
2223 | } | 2301 | } |
2224 | 2302 | ||
@@ -2226,13 +2304,14 @@ fn $0fun_name(n: i32) -> i32 { | |||
2226 | fn variable_defined_inside_and_used_after_mutably_no_ret() { | 2304 | fn variable_defined_inside_and_used_after_mutably_no_ret() { |
2227 | check_assist( | 2305 | check_assist( |
2228 | extract_function, | 2306 | extract_function, |
2229 | r" | 2307 | r#" |
2230 | fn foo() { | 2308 | fn foo() { |
2231 | let n = 1; | 2309 | let n = 1; |
2232 | $0let mut k = n * n;$0 | 2310 | $0let mut k = n * n;$0 |
2233 | k += 1; | 2311 | k += 1; |
2234 | }", | 2312 | } |
2235 | r" | 2313 | "#, |
2314 | r#" | ||
2236 | fn foo() { | 2315 | fn foo() { |
2237 | let n = 1; | 2316 | let n = 1; |
2238 | let mut k = fun_name(n); | 2317 | let mut k = fun_name(n); |
@@ -2242,7 +2321,8 @@ fn foo() { | |||
2242 | fn $0fun_name(n: i32) -> i32 { | 2321 | fn $0fun_name(n: i32) -> i32 { |
2243 | let mut k = n * n; | 2322 | let mut k = n * n; |
2244 | k | 2323 | k |
2245 | }", | 2324 | } |
2325 | "#, | ||
2246 | ); | 2326 | ); |
2247 | } | 2327 | } |
2248 | 2328 | ||
@@ -2250,14 +2330,15 @@ fn $0fun_name(n: i32) -> i32 { | |||
2250 | fn two_variables_defined_inside_and_used_after_no_ret() { | 2330 | fn two_variables_defined_inside_and_used_after_no_ret() { |
2251 | check_assist( | 2331 | check_assist( |
2252 | extract_function, | 2332 | extract_function, |
2253 | r" | 2333 | r#" |
2254 | fn foo() { | 2334 | fn foo() { |
2255 | let n = 1; | 2335 | let n = 1; |
2256 | $0let k = n * n; | 2336 | $0let k = n * n; |
2257 | let m = k + 2;$0 | 2337 | let m = k + 2;$0 |
2258 | let h = k + m; | 2338 | let h = k + m; |
2259 | }", | 2339 | } |
2260 | r" | 2340 | "#, |
2341 | r#" | ||
2261 | fn foo() { | 2342 | fn foo() { |
2262 | let n = 1; | 2343 | let n = 1; |
2263 | let (k, m) = fun_name(n); | 2344 | let (k, m) = fun_name(n); |
@@ -2268,7 +2349,8 @@ fn $0fun_name(n: i32) -> (i32, i32) { | |||
2268 | let k = n * n; | 2349 | let k = n * n; |
2269 | let m = k + 2; | 2350 | let m = k + 2; |
2270 | (k, m) | 2351 | (k, m) |
2271 | }", | 2352 | } |
2353 | "#, | ||
2272 | ); | 2354 | ); |
2273 | } | 2355 | } |
2274 | 2356 | ||
@@ -2276,7 +2358,7 @@ fn $0fun_name(n: i32) -> (i32, i32) { | |||
2276 | fn multi_variables_defined_inside_and_used_after_mutably_no_ret() { | 2358 | fn multi_variables_defined_inside_and_used_after_mutably_no_ret() { |
2277 | check_assist( | 2359 | check_assist( |
2278 | extract_function, | 2360 | extract_function, |
2279 | r" | 2361 | r#" |
2280 | fn foo() { | 2362 | fn foo() { |
2281 | let n = 1; | 2363 | let n = 1; |
2282 | $0let mut k = n * n; | 2364 | $0let mut k = n * n; |
@@ -2285,8 +2367,9 @@ fn foo() { | |||
2285 | o += 1;$0 | 2367 | o += 1;$0 |
2286 | k += o; | 2368 | k += o; |
2287 | m = 1; | 2369 | m = 1; |
2288 | }", | 2370 | } |
2289 | r" | 2371 | "#, |
2372 | r#" | ||
2290 | fn foo() { | 2373 | fn foo() { |
2291 | let n = 1; | 2374 | let n = 1; |
2292 | let (mut k, mut m, o) = fun_name(n); | 2375 | let (mut k, mut m, o) = fun_name(n); |
@@ -2300,7 +2383,8 @@ fn $0fun_name(n: i32) -> (i32, i32, i32) { | |||
2300 | let mut o = m + 3; | 2383 | let mut o = m + 3; |
2301 | o += 1; | 2384 | o += 1; |
2302 | (k, m, o) | 2385 | (k, m, o) |
2303 | }", | 2386 | } |
2387 | "#, | ||
2304 | ); | 2388 | ); |
2305 | } | 2389 | } |
2306 | 2390 | ||
@@ -2308,13 +2392,14 @@ fn $0fun_name(n: i32) -> (i32, i32, i32) { | |||
2308 | fn nontrivial_patterns_define_variables() { | 2392 | fn nontrivial_patterns_define_variables() { |
2309 | check_assist( | 2393 | check_assist( |
2310 | extract_function, | 2394 | extract_function, |
2311 | r" | 2395 | r#" |
2312 | struct Counter(i32); | 2396 | struct Counter(i32); |
2313 | fn foo() { | 2397 | fn foo() { |
2314 | $0let Counter(n) = Counter(0);$0 | 2398 | $0let Counter(n) = Counter(0);$0 |
2315 | let m = n; | 2399 | let m = n; |
2316 | }", | 2400 | } |
2317 | r" | 2401 | "#, |
2402 | r#" | ||
2318 | struct Counter(i32); | 2403 | struct Counter(i32); |
2319 | fn foo() { | 2404 | fn foo() { |
2320 | let n = fun_name(); | 2405 | let n = fun_name(); |
@@ -2324,7 +2409,8 @@ fn foo() { | |||
2324 | fn $0fun_name() -> i32 { | 2409 | fn $0fun_name() -> i32 { |
2325 | let Counter(n) = Counter(0); | 2410 | let Counter(n) = Counter(0); |
2326 | n | 2411 | n |
2327 | }", | 2412 | } |
2413 | "#, | ||
2328 | ); | 2414 | ); |
2329 | } | 2415 | } |
2330 | 2416 | ||
@@ -2332,13 +2418,14 @@ fn $0fun_name() -> i32 { | |||
2332 | fn struct_with_two_fields_pattern_define_variables() { | 2418 | fn struct_with_two_fields_pattern_define_variables() { |
2333 | check_assist( | 2419 | check_assist( |
2334 | extract_function, | 2420 | extract_function, |
2335 | r" | 2421 | r#" |
2336 | struct Counter { n: i32, m: i32 }; | 2422 | struct Counter { n: i32, m: i32 }; |
2337 | fn foo() { | 2423 | fn foo() { |
2338 | $0let Counter { n, m: k } = Counter { n: 1, m: 2 };$0 | 2424 | $0let Counter { n, m: k } = Counter { n: 1, m: 2 };$0 |
2339 | let h = n + k; | 2425 | let h = n + k; |
2340 | }", | 2426 | } |
2341 | r" | 2427 | "#, |
2428 | r#" | ||
2342 | struct Counter { n: i32, m: i32 }; | 2429 | struct Counter { n: i32, m: i32 }; |
2343 | fn foo() { | 2430 | fn foo() { |
2344 | let (n, k) = fun_name(); | 2431 | let (n, k) = fun_name(); |
@@ -2348,7 +2435,8 @@ fn foo() { | |||
2348 | fn $0fun_name() -> (i32, i32) { | 2435 | fn $0fun_name() -> (i32, i32) { |
2349 | let Counter { n, m: k } = Counter { n: 1, m: 2 }; | 2436 | let Counter { n, m: k } = Counter { n: 1, m: 2 }; |
2350 | (n, k) | 2437 | (n, k) |
2351 | }", | 2438 | } |
2439 | "#, | ||
2352 | ); | 2440 | ); |
2353 | } | 2441 | } |
2354 | 2442 | ||
@@ -2356,13 +2444,14 @@ fn $0fun_name() -> (i32, i32) { | |||
2356 | fn mut_var_from_outer_scope() { | 2444 | fn mut_var_from_outer_scope() { |
2357 | check_assist( | 2445 | check_assist( |
2358 | extract_function, | 2446 | extract_function, |
2359 | r" | 2447 | r#" |
2360 | fn foo() { | 2448 | fn foo() { |
2361 | let mut n = 1; | 2449 | let mut n = 1; |
2362 | $0n += 1;$0 | 2450 | $0n += 1;$0 |
2363 | let m = n + 1; | 2451 | let m = n + 1; |
2364 | }", | 2452 | } |
2365 | r" | 2453 | "#, |
2454 | r#" | ||
2366 | fn foo() { | 2455 | fn foo() { |
2367 | let mut n = 1; | 2456 | let mut n = 1; |
2368 | fun_name(&mut n); | 2457 | fun_name(&mut n); |
@@ -2371,7 +2460,8 @@ fn foo() { | |||
2371 | 2460 | ||
2372 | fn $0fun_name(n: &mut i32) { | 2461 | fn $0fun_name(n: &mut i32) { |
2373 | *n += 1; | 2462 | *n += 1; |
2374 | }", | 2463 | } |
2464 | "#, | ||
2375 | ); | 2465 | ); |
2376 | } | 2466 | } |
2377 | 2467 | ||
@@ -2379,14 +2469,15 @@ fn $0fun_name(n: &mut i32) { | |||
2379 | fn mut_field_from_outer_scope() { | 2469 | fn mut_field_from_outer_scope() { |
2380 | check_assist( | 2470 | check_assist( |
2381 | extract_function, | 2471 | extract_function, |
2382 | r" | 2472 | r#" |
2383 | struct C { n: i32 } | 2473 | struct C { n: i32 } |
2384 | fn foo() { | 2474 | fn foo() { |
2385 | let mut c = C { n: 0 }; | 2475 | let mut c = C { n: 0 }; |
2386 | $0c.n += 1;$0 | 2476 | $0c.n += 1;$0 |
2387 | let m = c.n + 1; | 2477 | let m = c.n + 1; |
2388 | }", | 2478 | } |
2389 | r" | 2479 | "#, |
2480 | r#" | ||
2390 | struct C { n: i32 } | 2481 | struct C { n: i32 } |
2391 | fn foo() { | 2482 | fn foo() { |
2392 | let mut c = C { n: 0 }; | 2483 | let mut c = C { n: 0 }; |
@@ -2396,7 +2487,8 @@ fn foo() { | |||
2396 | 2487 | ||
2397 | fn $0fun_name(c: &mut C) { | 2488 | fn $0fun_name(c: &mut C) { |
2398 | c.n += 1; | 2489 | c.n += 1; |
2399 | }", | 2490 | } |
2491 | "#, | ||
2400 | ); | 2492 | ); |
2401 | } | 2493 | } |
2402 | 2494 | ||
@@ -2404,7 +2496,7 @@ fn $0fun_name(c: &mut C) { | |||
2404 | fn mut_nested_field_from_outer_scope() { | 2496 | fn mut_nested_field_from_outer_scope() { |
2405 | check_assist( | 2497 | check_assist( |
2406 | extract_function, | 2498 | extract_function, |
2407 | r" | 2499 | r#" |
2408 | struct P { n: i32} | 2500 | struct P { n: i32} |
2409 | struct C { p: P } | 2501 | struct C { p: P } |
2410 | fn foo() { | 2502 | fn foo() { |
@@ -2414,8 +2506,9 @@ fn foo() { | |||
2414 | $0c.p.n += u.p.n; | 2506 | $0c.p.n += u.p.n; |
2415 | let r = &mut v.p.n;$0 | 2507 | let r = &mut v.p.n;$0 |
2416 | let m = c.p.n + v.p.n + u.p.n; | 2508 | let m = c.p.n + v.p.n + u.p.n; |
2417 | }", | 2509 | } |
2418 | r" | 2510 | "#, |
2511 | r#" | ||
2419 | struct P { n: i32} | 2512 | struct P { n: i32} |
2420 | struct C { p: P } | 2513 | struct C { p: P } |
2421 | fn foo() { | 2514 | fn foo() { |
@@ -2429,7 +2522,8 @@ fn foo() { | |||
2429 | fn $0fun_name(c: &mut C, u: &C, v: &mut C) { | 2522 | fn $0fun_name(c: &mut C, u: &C, v: &mut C) { |
2430 | c.p.n += u.p.n; | 2523 | c.p.n += u.p.n; |
2431 | let r = &mut v.p.n; | 2524 | let r = &mut v.p.n; |
2432 | }", | 2525 | } |
2526 | "#, | ||
2433 | ); | 2527 | ); |
2434 | } | 2528 | } |
2435 | 2529 | ||
@@ -2437,7 +2531,7 @@ fn $0fun_name(c: &mut C, u: &C, v: &mut C) { | |||
2437 | fn mut_param_many_usages_stmt() { | 2531 | fn mut_param_many_usages_stmt() { |
2438 | check_assist( | 2532 | check_assist( |
2439 | extract_function, | 2533 | extract_function, |
2440 | r" | 2534 | r#" |
2441 | fn bar(k: i32) {} | 2535 | fn bar(k: i32) {} |
2442 | trait I: Copy { | 2536 | trait I: Copy { |
2443 | fn succ(&self) -> Self; | 2537 | fn succ(&self) -> Self; |
@@ -2458,8 +2552,9 @@ fn foo() { | |||
2458 | *v = v.succ(); | 2552 | *v = v.succ(); |
2459 | n.succ();$0 | 2553 | n.succ();$0 |
2460 | let m = n + 1; | 2554 | let m = n + 1; |
2461 | }", | 2555 | } |
2462 | r" | 2556 | "#, |
2557 | r#" | ||
2463 | fn bar(k: i32) {} | 2558 | fn bar(k: i32) {} |
2464 | trait I: Copy { | 2559 | trait I: Copy { |
2465 | fn succ(&self) -> Self; | 2560 | fn succ(&self) -> Self; |
@@ -2484,7 +2579,8 @@ fn $0fun_name(n: &mut i32) { | |||
2484 | let v = n; | 2579 | let v = n; |
2485 | *v = v.succ(); | 2580 | *v = v.succ(); |
2486 | n.succ(); | 2581 | n.succ(); |
2487 | }", | 2582 | } |
2583 | "#, | ||
2488 | ); | 2584 | ); |
2489 | } | 2585 | } |
2490 | 2586 | ||
@@ -2492,7 +2588,7 @@ fn $0fun_name(n: &mut i32) { | |||
2492 | fn mut_param_many_usages_expr() { | 2588 | fn mut_param_many_usages_expr() { |
2493 | check_assist( | 2589 | check_assist( |
2494 | extract_function, | 2590 | extract_function, |
2495 | r" | 2591 | r#" |
2496 | fn bar(k: i32) {} | 2592 | fn bar(k: i32) {} |
2497 | trait I: Copy { | 2593 | trait I: Copy { |
2498 | fn succ(&self) -> Self; | 2594 | fn succ(&self) -> Self; |
@@ -2515,8 +2611,9 @@ fn foo() { | |||
2515 | n.succ(); | 2611 | n.succ(); |
2516 | }$0 | 2612 | }$0 |
2517 | let m = n + 1; | 2613 | let m = n + 1; |
2518 | }", | 2614 | } |
2519 | r" | 2615 | "#, |
2616 | r#" | ||
2520 | fn bar(k: i32) {} | 2617 | fn bar(k: i32) {} |
2521 | trait I: Copy { | 2618 | trait I: Copy { |
2522 | fn succ(&self) -> Self; | 2619 | fn succ(&self) -> Self; |
@@ -2541,7 +2638,8 @@ fn $0fun_name(n: &mut i32) { | |||
2541 | let v = n; | 2638 | let v = n; |
2542 | *v = v.succ(); | 2639 | *v = v.succ(); |
2543 | n.succ(); | 2640 | n.succ(); |
2544 | }", | 2641 | } |
2642 | "#, | ||
2545 | ); | 2643 | ); |
2546 | } | 2644 | } |
2547 | 2645 | ||
@@ -2549,11 +2647,12 @@ fn $0fun_name(n: &mut i32) { | |||
2549 | fn mut_param_by_value() { | 2647 | fn mut_param_by_value() { |
2550 | check_assist( | 2648 | check_assist( |
2551 | extract_function, | 2649 | extract_function, |
2552 | r" | 2650 | r#" |
2553 | fn foo() { | 2651 | fn foo() { |
2554 | let mut n = 1; | 2652 | let mut n = 1; |
2555 | $0n += 1;$0 | 2653 | $0n += 1;$0 |
2556 | }", | 2654 | } |
2655 | "#, | ||
2557 | r" | 2656 | r" |
2558 | fn foo() { | 2657 | fn foo() { |
2559 | let mut n = 1; | 2658 | let mut n = 1; |
@@ -2562,7 +2661,8 @@ fn foo() { | |||
2562 | 2661 | ||
2563 | fn $0fun_name(mut n: i32) { | 2662 | fn $0fun_name(mut n: i32) { |
2564 | n += 1; | 2663 | n += 1; |
2565 | }", | 2664 | } |
2665 | ", | ||
2566 | ); | 2666 | ); |
2567 | } | 2667 | } |
2568 | 2668 | ||
@@ -2570,14 +2670,15 @@ fn $0fun_name(mut n: i32) { | |||
2570 | fn mut_param_because_of_mut_ref() { | 2670 | fn mut_param_because_of_mut_ref() { |
2571 | check_assist( | 2671 | check_assist( |
2572 | extract_function, | 2672 | extract_function, |
2573 | r" | 2673 | r#" |
2574 | fn foo() { | 2674 | fn foo() { |
2575 | let mut n = 1; | 2675 | let mut n = 1; |
2576 | $0let v = &mut n; | 2676 | $0let v = &mut n; |
2577 | *v += 1;$0 | 2677 | *v += 1;$0 |
2578 | let k = n; | 2678 | let k = n; |
2579 | }", | 2679 | } |
2580 | r" | 2680 | "#, |
2681 | r#" | ||
2581 | fn foo() { | 2682 | fn foo() { |
2582 | let mut n = 1; | 2683 | let mut n = 1; |
2583 | fun_name(&mut n); | 2684 | fun_name(&mut n); |
@@ -2587,7 +2688,8 @@ fn foo() { | |||
2587 | fn $0fun_name(n: &mut i32) { | 2688 | fn $0fun_name(n: &mut i32) { |
2588 | let v = n; | 2689 | let v = n; |
2589 | *v += 1; | 2690 | *v += 1; |
2590 | }", | 2691 | } |
2692 | "#, | ||
2591 | ); | 2693 | ); |
2592 | } | 2694 | } |
2593 | 2695 | ||
@@ -2600,8 +2702,9 @@ fn foo() { | |||
2600 | let mut n = 1; | 2702 | let mut n = 1; |
2601 | $0let v = &mut n; | 2703 | $0let v = &mut n; |
2602 | *v += 1;$0 | 2704 | *v += 1;$0 |
2603 | }", | 2705 | } |
2604 | r" | 2706 | ", |
2707 | r#" | ||
2605 | fn foo() { | 2708 | fn foo() { |
2606 | let mut n = 1; | 2709 | let mut n = 1; |
2607 | fun_name(n); | 2710 | fun_name(n); |
@@ -2610,7 +2713,8 @@ fn foo() { | |||
2610 | fn $0fun_name(mut n: i32) { | 2713 | fn $0fun_name(mut n: i32) { |
2611 | let v = &mut n; | 2714 | let v = &mut n; |
2612 | *v += 1; | 2715 | *v += 1; |
2613 | }", | 2716 | } |
2717 | "#, | ||
2614 | ); | 2718 | ); |
2615 | } | 2719 | } |
2616 | 2720 | ||
@@ -2618,7 +2722,7 @@ fn $0fun_name(mut n: i32) { | |||
2618 | fn mut_method_call() { | 2722 | fn mut_method_call() { |
2619 | check_assist( | 2723 | check_assist( |
2620 | extract_function, | 2724 | extract_function, |
2621 | r" | 2725 | r#" |
2622 | trait I { | 2726 | trait I { |
2623 | fn inc(&mut self); | 2727 | fn inc(&mut self); |
2624 | } | 2728 | } |
@@ -2628,8 +2732,9 @@ impl I for i32 { | |||
2628 | fn foo() { | 2732 | fn foo() { |
2629 | let mut n = 1; | 2733 | let mut n = 1; |
2630 | $0n.inc();$0 | 2734 | $0n.inc();$0 |
2631 | }", | 2735 | } |
2632 | r" | 2736 | "#, |
2737 | r#" | ||
2633 | trait I { | 2738 | trait I { |
2634 | fn inc(&mut self); | 2739 | fn inc(&mut self); |
2635 | } | 2740 | } |
@@ -2643,7 +2748,8 @@ fn foo() { | |||
2643 | 2748 | ||
2644 | fn $0fun_name(mut n: i32) { | 2749 | fn $0fun_name(mut n: i32) { |
2645 | n.inc(); | 2750 | n.inc(); |
2646 | }", | 2751 | } |
2752 | "#, | ||
2647 | ); | 2753 | ); |
2648 | } | 2754 | } |
2649 | 2755 | ||
@@ -2651,7 +2757,7 @@ fn $0fun_name(mut n: i32) { | |||
2651 | fn shared_method_call() { | 2757 | fn shared_method_call() { |
2652 | check_assist( | 2758 | check_assist( |
2653 | extract_function, | 2759 | extract_function, |
2654 | r" | 2760 | r#" |
2655 | trait I { | 2761 | trait I { |
2656 | fn succ(&self); | 2762 | fn succ(&self); |
2657 | } | 2763 | } |
@@ -2661,7 +2767,8 @@ impl I for i32 { | |||
2661 | fn foo() { | 2767 | fn foo() { |
2662 | let mut n = 1; | 2768 | let mut n = 1; |
2663 | $0n.succ();$0 | 2769 | $0n.succ();$0 |
2664 | }", | 2770 | } |
2771 | "#, | ||
2665 | r" | 2772 | r" |
2666 | trait I { | 2773 | trait I { |
2667 | fn succ(&self); | 2774 | fn succ(&self); |
@@ -2676,7 +2783,8 @@ fn foo() { | |||
2676 | 2783 | ||
2677 | fn $0fun_name(n: i32) { | 2784 | fn $0fun_name(n: i32) { |
2678 | n.succ(); | 2785 | n.succ(); |
2679 | }", | 2786 | } |
2787 | ", | ||
2680 | ); | 2788 | ); |
2681 | } | 2789 | } |
2682 | 2790 | ||
@@ -2684,7 +2792,7 @@ fn $0fun_name(n: i32) { | |||
2684 | fn mut_method_call_with_other_receiver() { | 2792 | fn mut_method_call_with_other_receiver() { |
2685 | check_assist( | 2793 | check_assist( |
2686 | extract_function, | 2794 | extract_function, |
2687 | r" | 2795 | r#" |
2688 | trait I { | 2796 | trait I { |
2689 | fn inc(&mut self, n: i32); | 2797 | fn inc(&mut self, n: i32); |
2690 | } | 2798 | } |
@@ -2695,7 +2803,8 @@ fn foo() { | |||
2695 | let mut n = 1; | 2803 | let mut n = 1; |
2696 | $0let mut m = 2; | 2804 | $0let mut m = 2; |
2697 | m.inc(n);$0 | 2805 | m.inc(n);$0 |
2698 | }", | 2806 | } |
2807 | "#, | ||
2699 | r" | 2808 | r" |
2700 | trait I { | 2809 | trait I { |
2701 | fn inc(&mut self, n: i32); | 2810 | fn inc(&mut self, n: i32); |
@@ -2711,7 +2820,8 @@ fn foo() { | |||
2711 | fn $0fun_name(n: i32) { | 2820 | fn $0fun_name(n: i32) { |
2712 | let mut m = 2; | 2821 | let mut m = 2; |
2713 | m.inc(n); | 2822 | m.inc(n); |
2714 | }", | 2823 | } |
2824 | ", | ||
2715 | ); | 2825 | ); |
2716 | } | 2826 | } |
2717 | 2827 | ||
@@ -2719,12 +2829,13 @@ fn $0fun_name(n: i32) { | |||
2719 | fn non_copy_without_usages_after() { | 2829 | fn non_copy_without_usages_after() { |
2720 | check_assist( | 2830 | check_assist( |
2721 | extract_function, | 2831 | extract_function, |
2722 | r" | 2832 | r#" |
2723 | struct Counter(i32); | 2833 | struct Counter(i32); |
2724 | fn foo() { | 2834 | fn foo() { |
2725 | let c = Counter(0); | 2835 | let c = Counter(0); |
2726 | $0let n = c.0;$0 | 2836 | $0let n = c.0;$0 |
2727 | }", | 2837 | } |
2838 | "#, | ||
2728 | r" | 2839 | r" |
2729 | struct Counter(i32); | 2840 | struct Counter(i32); |
2730 | fn foo() { | 2841 | fn foo() { |
@@ -2734,7 +2845,8 @@ fn foo() { | |||
2734 | 2845 | ||
2735 | fn $0fun_name(c: Counter) { | 2846 | fn $0fun_name(c: Counter) { |
2736 | let n = c.0; | 2847 | let n = c.0; |
2737 | }", | 2848 | } |
2849 | ", | ||
2738 | ); | 2850 | ); |
2739 | } | 2851 | } |
2740 | 2852 | ||
@@ -2748,8 +2860,9 @@ fn foo() { | |||
2748 | let c = Counter(0); | 2860 | let c = Counter(0); |
2749 | $0let n = c.0;$0 | 2861 | $0let n = c.0;$0 |
2750 | let m = c.0; | 2862 | let m = c.0; |
2751 | }", | 2863 | } |
2752 | r" | 2864 | ", |
2865 | r#" | ||
2753 | struct Counter(i32); | 2866 | struct Counter(i32); |
2754 | fn foo() { | 2867 | fn foo() { |
2755 | let c = Counter(0); | 2868 | let c = Counter(0); |
@@ -2759,7 +2872,8 @@ fn foo() { | |||
2759 | 2872 | ||
2760 | fn $0fun_name(c: &Counter) { | 2873 | fn $0fun_name(c: &Counter) { |
2761 | let n = c.0; | 2874 | let n = c.0; |
2762 | }", | 2875 | } |
2876 | "#, | ||
2763 | ); | 2877 | ); |
2764 | } | 2878 | } |
2765 | 2879 | ||
@@ -2767,19 +2881,15 @@ fn $0fun_name(c: &Counter) { | |||
2767 | fn copy_used_after() { | 2881 | fn copy_used_after() { |
2768 | check_assist( | 2882 | check_assist( |
2769 | extract_function, | 2883 | extract_function, |
2770 | r##" | 2884 | r#" |
2771 | #[lang = "copy"] | 2885 | //- minicore: copy |
2772 | pub trait Copy {} | ||
2773 | impl Copy for i32 {} | ||
2774 | fn foo() { | 2886 | fn foo() { |
2775 | let n = 0; | 2887 | let n = 0; |
2776 | $0let m = n;$0 | 2888 | $0let m = n;$0 |
2777 | let k = n; | 2889 | let k = n; |
2778 | }"##, | 2890 | } |
2779 | r##" | 2891 | "#, |
2780 | #[lang = "copy"] | 2892 | r#" |
2781 | pub trait Copy {} | ||
2782 | impl Copy for i32 {} | ||
2783 | fn foo() { | 2893 | fn foo() { |
2784 | let n = 0; | 2894 | let n = 0; |
2785 | fun_name(n); | 2895 | fun_name(n); |
@@ -2788,7 +2898,8 @@ fn foo() { | |||
2788 | 2898 | ||
2789 | fn $0fun_name(n: i32) { | 2899 | fn $0fun_name(n: i32) { |
2790 | let m = n; | 2900 | let m = n; |
2791 | }"##, | 2901 | } |
2902 | "#, | ||
2792 | ) | 2903 | ) |
2793 | } | 2904 | } |
2794 | 2905 | ||
@@ -2796,21 +2907,19 @@ fn $0fun_name(n: i32) { | |||
2796 | fn copy_custom_used_after() { | 2907 | fn copy_custom_used_after() { |
2797 | check_assist( | 2908 | check_assist( |
2798 | extract_function, | 2909 | extract_function, |
2799 | r##" | 2910 | r#" |
2800 | #[lang = "copy"] | 2911 | //- minicore: copy, derive |
2801 | pub trait Copy {} | 2912 | #[derive(Clone, Copy)] |
2802 | struct Counter(i32); | 2913 | struct Counter(i32); |
2803 | impl Copy for Counter {} | ||
2804 | fn foo() { | 2914 | fn foo() { |
2805 | let c = Counter(0); | 2915 | let c = Counter(0); |
2806 | $0let n = c.0;$0 | 2916 | $0let n = c.0;$0 |
2807 | let m = c.0; | 2917 | let m = c.0; |
2808 | }"##, | 2918 | } |
2809 | r##" | 2919 | "#, |
2810 | #[lang = "copy"] | 2920 | r#" |
2811 | pub trait Copy {} | 2921 | #[derive(Clone, Copy)] |
2812 | struct Counter(i32); | 2922 | struct Counter(i32); |
2813 | impl Copy for Counter {} | ||
2814 | fn foo() { | 2923 | fn foo() { |
2815 | let c = Counter(0); | 2924 | let c = Counter(0); |
2816 | fun_name(c); | 2925 | fun_name(c); |
@@ -2819,7 +2928,8 @@ fn foo() { | |||
2819 | 2928 | ||
2820 | fn $0fun_name(c: Counter) { | 2929 | fn $0fun_name(c: Counter) { |
2821 | let n = c.0; | 2930 | let n = c.0; |
2822 | }"##, | 2931 | } |
2932 | "#, | ||
2823 | ); | 2933 | ); |
2824 | } | 2934 | } |
2825 | 2935 | ||
@@ -2827,7 +2937,7 @@ fn $0fun_name(c: Counter) { | |||
2827 | fn indented_stmts() { | 2937 | fn indented_stmts() { |
2828 | check_assist( | 2938 | check_assist( |
2829 | extract_function, | 2939 | extract_function, |
2830 | r" | 2940 | r#" |
2831 | fn foo() { | 2941 | fn foo() { |
2832 | if true { | 2942 | if true { |
2833 | loop { | 2943 | loop { |
@@ -2835,8 +2945,9 @@ fn foo() { | |||
2835 | let m = 2;$0 | 2945 | let m = 2;$0 |
2836 | } | 2946 | } |
2837 | } | 2947 | } |
2838 | }", | 2948 | } |
2839 | r" | 2949 | "#, |
2950 | r#" | ||
2840 | fn foo() { | 2951 | fn foo() { |
2841 | if true { | 2952 | if true { |
2842 | loop { | 2953 | loop { |
@@ -2848,7 +2959,8 @@ fn foo() { | |||
2848 | fn $0fun_name() { | 2959 | fn $0fun_name() { |
2849 | let n = 1; | 2960 | let n = 1; |
2850 | let m = 2; | 2961 | let m = 2; |
2851 | }", | 2962 | } |
2963 | "#, | ||
2852 | ); | 2964 | ); |
2853 | } | 2965 | } |
2854 | 2966 | ||
@@ -2856,7 +2968,7 @@ fn $0fun_name() { | |||
2856 | fn indented_stmts_inside_mod() { | 2968 | fn indented_stmts_inside_mod() { |
2857 | check_assist( | 2969 | check_assist( |
2858 | extract_function, | 2970 | extract_function, |
2859 | r" | 2971 | r#" |
2860 | mod bar { | 2972 | mod bar { |
2861 | fn foo() { | 2973 | fn foo() { |
2862 | if true { | 2974 | if true { |
@@ -2866,8 +2978,9 @@ mod bar { | |||
2866 | } | 2978 | } |
2867 | } | 2979 | } |
2868 | } | 2980 | } |
2869 | }", | 2981 | } |
2870 | r" | 2982 | "#, |
2983 | r#" | ||
2871 | mod bar { | 2984 | mod bar { |
2872 | fn foo() { | 2985 | fn foo() { |
2873 | if true { | 2986 | if true { |
@@ -2881,7 +2994,8 @@ mod bar { | |||
2881 | let n = 1; | 2994 | let n = 1; |
2882 | let m = 2; | 2995 | let m = 2; |
2883 | } | 2996 | } |
2884 | }", | 2997 | } |
2998 | "#, | ||
2885 | ); | 2999 | ); |
2886 | } | 3000 | } |
2887 | 3001 | ||
@@ -2889,12 +3003,8 @@ mod bar { | |||
2889 | fn break_loop() { | 3003 | fn break_loop() { |
2890 | check_assist( | 3004 | check_assist( |
2891 | extract_function, | 3005 | extract_function, |
2892 | r##" | 3006 | r#" |
2893 | enum Option<T> { | 3007 | //- minicore: option |
2894 | #[lang = "None"] None, | ||
2895 | #[lang = "Some"] Some(T), | ||
2896 | } | ||
2897 | use Option::*; | ||
2898 | fn foo() { | 3008 | fn foo() { |
2899 | loop { | 3009 | loop { |
2900 | let n = 1; | 3010 | let n = 1; |
@@ -2903,13 +3013,9 @@ fn foo() { | |||
2903 | let k = 2;$0 | 3013 | let k = 2;$0 |
2904 | let h = 1 + k; | 3014 | let h = 1 + k; |
2905 | } | 3015 | } |
2906 | }"##, | ||
2907 | r##" | ||
2908 | enum Option<T> { | ||
2909 | #[lang = "None"] None, | ||
2910 | #[lang = "Some"] Some(T), | ||
2911 | } | 3016 | } |
2912 | use Option::*; | 3017 | "#, |
3018 | r#" | ||
2913 | fn foo() { | 3019 | fn foo() { |
2914 | loop { | 3020 | loop { |
2915 | let n = 1; | 3021 | let n = 1; |
@@ -2926,7 +3032,8 @@ fn $0fun_name(n: i32) -> Option<i32> { | |||
2926 | return None; | 3032 | return None; |
2927 | let k = 2; | 3033 | let k = 2; |
2928 | Some(k) | 3034 | Some(k) |
2929 | }"##, | 3035 | } |
3036 | "#, | ||
2930 | ); | 3037 | ); |
2931 | } | 3038 | } |
2932 | 3039 | ||
@@ -2934,31 +3041,17 @@ fn $0fun_name(n: i32) -> Option<i32> { | |||
2934 | fn return_to_parent() { | 3041 | fn return_to_parent() { |
2935 | check_assist( | 3042 | check_assist( |
2936 | extract_function, | 3043 | extract_function, |
2937 | r##" | 3044 | r#" |
2938 | #[lang = "copy"] | 3045 | //- minicore: copy, result |
2939 | pub trait Copy {} | ||
2940 | impl Copy for i32 {} | ||
2941 | enum Result<T, E> { | ||
2942 | #[lang = "Ok"] Ok(T), | ||
2943 | #[lang = "Err"] Err(E), | ||
2944 | } | ||
2945 | use Result::*; | ||
2946 | fn foo() -> i64 { | 3046 | fn foo() -> i64 { |
2947 | let n = 1; | 3047 | let n = 1; |
2948 | $0let m = n + 1; | 3048 | $0let m = n + 1; |
2949 | return 1; | 3049 | return 1; |
2950 | let k = 2;$0 | 3050 | let k = 2;$0 |
2951 | (n + k) as i64 | 3051 | (n + k) as i64 |
2952 | }"##, | 3052 | } |
2953 | r##" | 3053 | "#, |
2954 | #[lang = "copy"] | 3054 | r#" |
2955 | pub trait Copy {} | ||
2956 | impl Copy for i32 {} | ||
2957 | enum Result<T, E> { | ||
2958 | #[lang = "Ok"] Ok(T), | ||
2959 | #[lang = "Err"] Err(E), | ||
2960 | } | ||
2961 | use Result::*; | ||
2962 | fn foo() -> i64 { | 3055 | fn foo() -> i64 { |
2963 | let n = 1; | 3056 | let n = 1; |
2964 | let k = match fun_name(n) { | 3057 | let k = match fun_name(n) { |
@@ -2973,7 +3066,8 @@ fn $0fun_name(n: i32) -> Result<i32, i64> { | |||
2973 | return Err(1); | 3066 | return Err(1); |
2974 | let k = 2; | 3067 | let k = 2; |
2975 | Ok(k) | 3068 | Ok(k) |
2976 | }"##, | 3069 | } |
3070 | "#, | ||
2977 | ); | 3071 | ); |
2978 | } | 3072 | } |
2979 | 3073 | ||
@@ -2982,7 +3076,7 @@ fn $0fun_name(n: i32) -> Result<i32, i64> { | |||
2982 | cov_mark::check!(external_control_flow_break_and_continue); | 3076 | cov_mark::check!(external_control_flow_break_and_continue); |
2983 | check_assist_not_applicable( | 3077 | check_assist_not_applicable( |
2984 | extract_function, | 3078 | extract_function, |
2985 | r##" | 3079 | r#" |
2986 | fn foo() { | 3080 | fn foo() { |
2987 | loop { | 3081 | loop { |
2988 | let n = 1; | 3082 | let n = 1; |
@@ -2993,7 +3087,8 @@ fn foo() { | |||
2993 | let k = k + 1;$0 | 3087 | let k = k + 1;$0 |
2994 | let r = n + k; | 3088 | let r = n + k; |
2995 | } | 3089 | } |
2996 | }"##, | 3090 | } |
3091 | "#, | ||
2997 | ); | 3092 | ); |
2998 | } | 3093 | } |
2999 | 3094 | ||
@@ -3002,7 +3097,7 @@ fn foo() { | |||
3002 | cov_mark::check!(external_control_flow_return_and_bc); | 3097 | cov_mark::check!(external_control_flow_return_and_bc); |
3003 | check_assist_not_applicable( | 3098 | check_assist_not_applicable( |
3004 | extract_function, | 3099 | extract_function, |
3005 | r##" | 3100 | r#" |
3006 | fn foo() { | 3101 | fn foo() { |
3007 | loop { | 3102 | loop { |
3008 | let n = 1; | 3103 | let n = 1; |
@@ -3013,7 +3108,8 @@ fn foo() { | |||
3013 | let k = k + 1;$0 | 3108 | let k = k + 1;$0 |
3014 | let r = n + k; | 3109 | let r = n + k; |
3015 | } | 3110 | } |
3016 | }"##, | 3111 | } |
3112 | "#, | ||
3017 | ); | 3113 | ); |
3018 | } | 3114 | } |
3019 | 3115 | ||
@@ -3021,7 +3117,7 @@ fn foo() { | |||
3021 | fn break_loop_with_if() { | 3117 | fn break_loop_with_if() { |
3022 | check_assist( | 3118 | check_assist( |
3023 | extract_function, | 3119 | extract_function, |
3024 | r##" | 3120 | r#" |
3025 | fn foo() { | 3121 | fn foo() { |
3026 | loop { | 3122 | loop { |
3027 | let mut n = 1; | 3123 | let mut n = 1; |
@@ -3030,8 +3126,9 @@ fn foo() { | |||
3030 | n += m;$0 | 3126 | n += m;$0 |
3031 | let h = 1 + n; | 3127 | let h = 1 + n; |
3032 | } | 3128 | } |
3033 | }"##, | 3129 | } |
3034 | r##" | 3130 | "#, |
3131 | r#" | ||
3035 | fn foo() { | 3132 | fn foo() { |
3036 | loop { | 3133 | loop { |
3037 | let mut n = 1; | 3134 | let mut n = 1; |
@@ -3047,7 +3144,8 @@ fn $0fun_name(n: &mut i32) -> bool { | |||
3047 | return true; | 3144 | return true; |
3048 | *n += m; | 3145 | *n += m; |
3049 | false | 3146 | false |
3050 | }"##, | 3147 | } |
3148 | "#, | ||
3051 | ); | 3149 | ); |
3052 | } | 3150 | } |
3053 | 3151 | ||
@@ -3055,7 +3153,7 @@ fn $0fun_name(n: &mut i32) -> bool { | |||
3055 | fn break_loop_nested() { | 3153 | fn break_loop_nested() { |
3056 | check_assist( | 3154 | check_assist( |
3057 | extract_function, | 3155 | extract_function, |
3058 | r##" | 3156 | r#" |
3059 | fn foo() { | 3157 | fn foo() { |
3060 | loop { | 3158 | loop { |
3061 | let mut n = 1; | 3159 | let mut n = 1; |
@@ -3065,8 +3163,9 @@ fn foo() { | |||
3065 | }$0 | 3163 | }$0 |
3066 | let h = 1; | 3164 | let h = 1; |
3067 | } | 3165 | } |
3068 | }"##, | 3166 | } |
3069 | r##" | 3167 | "#, |
3168 | r#" | ||
3070 | fn foo() { | 3169 | fn foo() { |
3071 | loop { | 3170 | loop { |
3072 | let mut n = 1; | 3171 | let mut n = 1; |
@@ -3083,7 +3182,8 @@ fn $0fun_name(n: i32) -> bool { | |||
3083 | return true; | 3182 | return true; |
3084 | } | 3183 | } |
3085 | false | 3184 | false |
3086 | }"##, | 3185 | } |
3186 | "#, | ||
3087 | ); | 3187 | ); |
3088 | } | 3188 | } |
3089 | 3189 | ||
@@ -3091,7 +3191,7 @@ fn $0fun_name(n: i32) -> bool { | |||
3091 | fn return_from_nested_loop() { | 3191 | fn return_from_nested_loop() { |
3092 | check_assist( | 3192 | check_assist( |
3093 | extract_function, | 3193 | extract_function, |
3094 | r##" | 3194 | r#" |
3095 | fn foo() { | 3195 | fn foo() { |
3096 | loop { | 3196 | loop { |
3097 | let n = 1; | 3197 | let n = 1; |
@@ -3103,8 +3203,9 @@ fn foo() { | |||
3103 | let m = k + 1;$0 | 3203 | let m = k + 1;$0 |
3104 | let h = 1 + m; | 3204 | let h = 1 + m; |
3105 | } | 3205 | } |
3106 | }"##, | 3206 | } |
3107 | r##" | 3207 | "#, |
3208 | r#" | ||
3108 | fn foo() { | 3209 | fn foo() { |
3109 | loop { | 3210 | loop { |
3110 | let n = 1; | 3211 | let n = 1; |
@@ -3123,7 +3224,8 @@ fn $0fun_name() -> Option<i32> { | |||
3123 | } | 3224 | } |
3124 | let m = k + 1; | 3225 | let m = k + 1; |
3125 | Some(m) | 3226 | Some(m) |
3126 | }"##, | 3227 | } |
3228 | "#, | ||
3127 | ); | 3229 | ); |
3128 | } | 3230 | } |
3129 | 3231 | ||
@@ -3131,7 +3233,7 @@ fn $0fun_name() -> Option<i32> { | |||
3131 | fn break_from_nested_loop() { | 3233 | fn break_from_nested_loop() { |
3132 | check_assist( | 3234 | check_assist( |
3133 | extract_function, | 3235 | extract_function, |
3134 | r##" | 3236 | r#" |
3135 | fn foo() { | 3237 | fn foo() { |
3136 | loop { | 3238 | loop { |
3137 | let n = 1; | 3239 | let n = 1; |
@@ -3142,8 +3244,9 @@ fn foo() { | |||
3142 | let m = k + 1;$0 | 3244 | let m = k + 1;$0 |
3143 | let h = 1 + m; | 3245 | let h = 1 + m; |
3144 | } | 3246 | } |
3145 | }"##, | 3247 | } |
3146 | r##" | 3248 | "#, |
3249 | r#" | ||
3147 | fn foo() { | 3250 | fn foo() { |
3148 | loop { | 3251 | loop { |
3149 | let n = 1; | 3252 | let n = 1; |
@@ -3159,7 +3262,8 @@ fn $0fun_name() -> i32 { | |||
3159 | } | 3262 | } |
3160 | let m = k + 1; | 3263 | let m = k + 1; |
3161 | m | 3264 | m |
3162 | }"##, | 3265 | } |
3266 | "#, | ||
3163 | ); | 3267 | ); |
3164 | } | 3268 | } |
3165 | 3269 | ||
@@ -3167,7 +3271,7 @@ fn $0fun_name() -> i32 { | |||
3167 | fn break_from_nested_and_outer_loops() { | 3271 | fn break_from_nested_and_outer_loops() { |
3168 | check_assist( | 3272 | check_assist( |
3169 | extract_function, | 3273 | extract_function, |
3170 | r##" | 3274 | r#" |
3171 | fn foo() { | 3275 | fn foo() { |
3172 | loop { | 3276 | loop { |
3173 | let n = 1; | 3277 | let n = 1; |
@@ -3181,8 +3285,9 @@ fn foo() { | |||
3181 | let m = k + 1;$0 | 3285 | let m = k + 1;$0 |
3182 | let h = 1 + m; | 3286 | let h = 1 + m; |
3183 | } | 3287 | } |
3184 | }"##, | 3288 | } |
3185 | r##" | 3289 | "#, |
3290 | r#" | ||
3186 | fn foo() { | 3291 | fn foo() { |
3187 | loop { | 3292 | loop { |
3188 | let n = 1; | 3293 | let n = 1; |
@@ -3204,7 +3309,8 @@ fn $0fun_name() -> Option<i32> { | |||
3204 | } | 3309 | } |
3205 | let m = k + 1; | 3310 | let m = k + 1; |
3206 | Some(m) | 3311 | Some(m) |
3207 | }"##, | 3312 | } |
3313 | "#, | ||
3208 | ); | 3314 | ); |
3209 | } | 3315 | } |
3210 | 3316 | ||
@@ -3212,7 +3318,7 @@ fn $0fun_name() -> Option<i32> { | |||
3212 | fn return_from_nested_fn() { | 3318 | fn return_from_nested_fn() { |
3213 | check_assist( | 3319 | check_assist( |
3214 | extract_function, | 3320 | extract_function, |
3215 | r##" | 3321 | r#" |
3216 | fn foo() { | 3322 | fn foo() { |
3217 | loop { | 3323 | loop { |
3218 | let n = 1; | 3324 | let n = 1; |
@@ -3223,8 +3329,9 @@ fn foo() { | |||
3223 | let m = k + 1;$0 | 3329 | let m = k + 1;$0 |
3224 | let h = 1 + m; | 3330 | let h = 1 + m; |
3225 | } | 3331 | } |
3226 | }"##, | 3332 | } |
3227 | r##" | 3333 | "#, |
3334 | r#" | ||
3228 | fn foo() { | 3335 | fn foo() { |
3229 | loop { | 3336 | loop { |
3230 | let n = 1; | 3337 | let n = 1; |
@@ -3240,7 +3347,8 @@ fn $0fun_name() -> i32 { | |||
3240 | } | 3347 | } |
3241 | let m = k + 1; | 3348 | let m = k + 1; |
3242 | m | 3349 | m |
3243 | }"##, | 3350 | } |
3351 | "#, | ||
3244 | ); | 3352 | ); |
3245 | } | 3353 | } |
3246 | 3354 | ||
@@ -3248,7 +3356,7 @@ fn $0fun_name() -> i32 { | |||
3248 | fn break_with_value() { | 3356 | fn break_with_value() { |
3249 | check_assist( | 3357 | check_assist( |
3250 | extract_function, | 3358 | extract_function, |
3251 | r##" | 3359 | r#" |
3252 | fn foo() -> i32 { | 3360 | fn foo() -> i32 { |
3253 | loop { | 3361 | loop { |
3254 | let n = 1; | 3362 | let n = 1; |
@@ -3259,8 +3367,9 @@ fn foo() -> i32 { | |||
3259 | let m = k + 1;$0 | 3367 | let m = k + 1;$0 |
3260 | let h = 1; | 3368 | let h = 1; |
3261 | } | 3369 | } |
3262 | }"##, | 3370 | } |
3263 | r##" | 3371 | "#, |
3372 | r#" | ||
3264 | fn foo() -> i32 { | 3373 | fn foo() -> i32 { |
3265 | loop { | 3374 | loop { |
3266 | let n = 1; | 3375 | let n = 1; |
@@ -3278,7 +3387,8 @@ fn $0fun_name() -> Option<i32> { | |||
3278 | } | 3387 | } |
3279 | let m = k + 1; | 3388 | let m = k + 1; |
3280 | None | 3389 | None |
3281 | }"##, | 3390 | } |
3391 | "#, | ||
3282 | ); | 3392 | ); |
3283 | } | 3393 | } |
3284 | 3394 | ||
@@ -3286,7 +3396,7 @@ fn $0fun_name() -> Option<i32> { | |||
3286 | fn break_with_value_and_return() { | 3396 | fn break_with_value_and_return() { |
3287 | check_assist( | 3397 | check_assist( |
3288 | extract_function, | 3398 | extract_function, |
3289 | r##" | 3399 | r#" |
3290 | fn foo() -> i64 { | 3400 | fn foo() -> i64 { |
3291 | loop { | 3401 | loop { |
3292 | let n = 1; | 3402 | let n = 1; |
@@ -3298,8 +3408,9 @@ fn foo() -> i64 { | |||
3298 | let m = k + 1;$0 | 3408 | let m = k + 1;$0 |
3299 | let h = 1 + m; | 3409 | let h = 1 + m; |
3300 | } | 3410 | } |
3301 | }"##, | 3411 | } |
3302 | r##" | 3412 | "#, |
3413 | r#" | ||
3303 | fn foo() -> i64 { | 3414 | fn foo() -> i64 { |
3304 | loop { | 3415 | loop { |
3305 | let n = 1; | 3416 | let n = 1; |
@@ -3318,7 +3429,8 @@ fn $0fun_name() -> Result<i32, i64> { | |||
3318 | } | 3429 | } |
3319 | let m = k + 1; | 3430 | let m = k + 1; |
3320 | Ok(m) | 3431 | Ok(m) |
3321 | }"##, | 3432 | } |
3433 | "#, | ||
3322 | ); | 3434 | ); |
3323 | } | 3435 | } |
3324 | 3436 | ||
@@ -3326,9 +3438,8 @@ fn $0fun_name() -> Result<i32, i64> { | |||
3326 | fn try_option() { | 3438 | fn try_option() { |
3327 | check_assist( | 3439 | check_assist( |
3328 | extract_function, | 3440 | extract_function, |
3329 | r##" | 3441 | r#" |
3330 | enum Option<T> { None, Some(T), } | 3442 | //- minicore: option |
3331 | use Option::*; | ||
3332 | fn bar() -> Option<i32> { None } | 3443 | fn bar() -> Option<i32> { None } |
3333 | fn foo() -> Option<()> { | 3444 | fn foo() -> Option<()> { |
3334 | let n = bar()?; | 3445 | let n = bar()?; |
@@ -3336,10 +3447,9 @@ fn foo() -> Option<()> { | |||
3336 | let m = k + 1;$0 | 3447 | let m = k + 1;$0 |
3337 | let h = 1 + m; | 3448 | let h = 1 + m; |
3338 | Some(()) | 3449 | Some(()) |
3339 | }"##, | 3450 | } |
3340 | r##" | 3451 | "#, |
3341 | enum Option<T> { None, Some(T), } | 3452 | r#" |
3342 | use Option::*; | ||
3343 | fn bar() -> Option<i32> { None } | 3453 | fn bar() -> Option<i32> { None } |
3344 | fn foo() -> Option<()> { | 3454 | fn foo() -> Option<()> { |
3345 | let n = bar()?; | 3455 | let n = bar()?; |
@@ -3352,7 +3462,8 @@ fn $0fun_name() -> Option<i32> { | |||
3352 | let k = foo()?; | 3462 | let k = foo()?; |
3353 | let m = k + 1; | 3463 | let m = k + 1; |
3354 | Some(m) | 3464 | Some(m) |
3355 | }"##, | 3465 | } |
3466 | "#, | ||
3356 | ); | 3467 | ); |
3357 | } | 3468 | } |
3358 | 3469 | ||
@@ -3360,19 +3471,17 @@ fn $0fun_name() -> Option<i32> { | |||
3360 | fn try_option_unit() { | 3471 | fn try_option_unit() { |
3361 | check_assist( | 3472 | check_assist( |
3362 | extract_function, | 3473 | extract_function, |
3363 | r##" | 3474 | r#" |
3364 | enum Option<T> { None, Some(T), } | 3475 | //- minicore: option |
3365 | use Option::*; | ||
3366 | fn foo() -> Option<()> { | 3476 | fn foo() -> Option<()> { |
3367 | let n = 1; | 3477 | let n = 1; |
3368 | $0let k = foo()?; | 3478 | $0let k = foo()?; |
3369 | let m = k + 1;$0 | 3479 | let m = k + 1;$0 |
3370 | let h = 1 + n; | 3480 | let h = 1 + n; |
3371 | Some(()) | 3481 | Some(()) |
3372 | }"##, | 3482 | } |
3373 | r##" | 3483 | "#, |
3374 | enum Option<T> { None, Some(T), } | 3484 | r#" |
3375 | use Option::*; | ||
3376 | fn foo() -> Option<()> { | 3485 | fn foo() -> Option<()> { |
3377 | let n = 1; | 3486 | let n = 1; |
3378 | fun_name()?; | 3487 | fun_name()?; |
@@ -3384,7 +3493,8 @@ fn $0fun_name() -> Option<()> { | |||
3384 | let k = foo()?; | 3493 | let k = foo()?; |
3385 | let m = k + 1; | 3494 | let m = k + 1; |
3386 | Some(()) | 3495 | Some(()) |
3387 | }"##, | 3496 | } |
3497 | "#, | ||
3388 | ); | 3498 | ); |
3389 | } | 3499 | } |
3390 | 3500 | ||
@@ -3392,19 +3502,17 @@ fn $0fun_name() -> Option<()> { | |||
3392 | fn try_result() { | 3502 | fn try_result() { |
3393 | check_assist( | 3503 | check_assist( |
3394 | extract_function, | 3504 | extract_function, |
3395 | r##" | 3505 | r#" |
3396 | enum Result<T, E> { Ok(T), Err(E), } | 3506 | //- minicore: result |
3397 | use Result::*; | ||
3398 | fn foo() -> Result<(), i64> { | 3507 | fn foo() -> Result<(), i64> { |
3399 | let n = 1; | 3508 | let n = 1; |
3400 | $0let k = foo()?; | 3509 | $0let k = foo()?; |
3401 | let m = k + 1;$0 | 3510 | let m = k + 1;$0 |
3402 | let h = 1 + m; | 3511 | let h = 1 + m; |
3403 | Ok(()) | 3512 | Ok(()) |
3404 | }"##, | 3513 | } |
3405 | r##" | 3514 | "#, |
3406 | enum Result<T, E> { Ok(T), Err(E), } | 3515 | r#" |
3407 | use Result::*; | ||
3408 | fn foo() -> Result<(), i64> { | 3516 | fn foo() -> Result<(), i64> { |
3409 | let n = 1; | 3517 | let n = 1; |
3410 | let m = fun_name()?; | 3518 | let m = fun_name()?; |
@@ -3416,7 +3524,8 @@ fn $0fun_name() -> Result<i32, i64> { | |||
3416 | let k = foo()?; | 3524 | let k = foo()?; |
3417 | let m = k + 1; | 3525 | let m = k + 1; |
3418 | Ok(m) | 3526 | Ok(m) |
3419 | }"##, | 3527 | } |
3528 | "#, | ||
3420 | ); | 3529 | ); |
3421 | } | 3530 | } |
3422 | 3531 | ||
@@ -3424,9 +3533,8 @@ fn $0fun_name() -> Result<i32, i64> { | |||
3424 | fn try_option_with_return() { | 3533 | fn try_option_with_return() { |
3425 | check_assist( | 3534 | check_assist( |
3426 | extract_function, | 3535 | extract_function, |
3427 | r##" | 3536 | r#" |
3428 | enum Option<T> { None, Some(T) } | 3537 | //- minicore: option |
3429 | use Option::*; | ||
3430 | fn foo() -> Option<()> { | 3538 | fn foo() -> Option<()> { |
3431 | let n = 1; | 3539 | let n = 1; |
3432 | $0let k = foo()?; | 3540 | $0let k = foo()?; |
@@ -3436,10 +3544,9 @@ fn foo() -> Option<()> { | |||
3436 | let m = k + 1;$0 | 3544 | let m = k + 1;$0 |
3437 | let h = 1 + m; | 3545 | let h = 1 + m; |
3438 | Some(()) | 3546 | Some(()) |
3439 | }"##, | 3547 | } |
3440 | r##" | 3548 | "#, |
3441 | enum Option<T> { None, Some(T) } | 3549 | r#" |
3442 | use Option::*; | ||
3443 | fn foo() -> Option<()> { | 3550 | fn foo() -> Option<()> { |
3444 | let n = 1; | 3551 | let n = 1; |
3445 | let m = fun_name()?; | 3552 | let m = fun_name()?; |
@@ -3454,7 +3561,8 @@ fn $0fun_name() -> Option<i32> { | |||
3454 | } | 3561 | } |
3455 | let m = k + 1; | 3562 | let m = k + 1; |
3456 | Some(m) | 3563 | Some(m) |
3457 | }"##, | 3564 | } |
3565 | "#, | ||
3458 | ); | 3566 | ); |
3459 | } | 3567 | } |
3460 | 3568 | ||
@@ -3462,9 +3570,8 @@ fn $0fun_name() -> Option<i32> { | |||
3462 | fn try_result_with_return() { | 3570 | fn try_result_with_return() { |
3463 | check_assist( | 3571 | check_assist( |
3464 | extract_function, | 3572 | extract_function, |
3465 | r##" | 3573 | r#" |
3466 | enum Result<T, E> { Ok(T), Err(E), } | 3574 | //- minicore: result |
3467 | use Result::*; | ||
3468 | fn foo() -> Result<(), i64> { | 3575 | fn foo() -> Result<(), i64> { |
3469 | let n = 1; | 3576 | let n = 1; |
3470 | $0let k = foo()?; | 3577 | $0let k = foo()?; |
@@ -3474,10 +3581,9 @@ fn foo() -> Result<(), i64> { | |||
3474 | let m = k + 1;$0 | 3581 | let m = k + 1;$0 |
3475 | let h = 1 + m; | 3582 | let h = 1 + m; |
3476 | Ok(()) | 3583 | Ok(()) |
3477 | }"##, | 3584 | } |
3478 | r##" | 3585 | "#, |
3479 | enum Result<T, E> { Ok(T), Err(E), } | 3586 | r#" |
3480 | use Result::*; | ||
3481 | fn foo() -> Result<(), i64> { | 3587 | fn foo() -> Result<(), i64> { |
3482 | let n = 1; | 3588 | let n = 1; |
3483 | let m = fun_name()?; | 3589 | let m = fun_name()?; |
@@ -3492,7 +3598,8 @@ fn $0fun_name() -> Result<i32, i64> { | |||
3492 | } | 3598 | } |
3493 | let m = k + 1; | 3599 | let m = k + 1; |
3494 | Ok(m) | 3600 | Ok(m) |
3495 | }"##, | 3601 | } |
3602 | "#, | ||
3496 | ); | 3603 | ); |
3497 | } | 3604 | } |
3498 | 3605 | ||
@@ -3501,9 +3608,8 @@ fn $0fun_name() -> Result<i32, i64> { | |||
3501 | cov_mark::check!(external_control_flow_try_and_bc); | 3608 | cov_mark::check!(external_control_flow_try_and_bc); |
3502 | check_assist_not_applicable( | 3609 | check_assist_not_applicable( |
3503 | extract_function, | 3610 | extract_function, |
3504 | r##" | 3611 | r#" |
3505 | enum Option<T> { None, Some(T) } | 3612 | //- minicore: option |
3506 | use Option::*; | ||
3507 | fn foo() -> Option<()> { | 3613 | fn foo() -> Option<()> { |
3508 | loop { | 3614 | loop { |
3509 | let n = Some(1); | 3615 | let n = Some(1); |
@@ -3514,7 +3620,8 @@ fn foo() -> Option<()> { | |||
3514 | let r = n + k; | 3620 | let r = n + k; |
3515 | } | 3621 | } |
3516 | Some(()) | 3622 | Some(()) |
3517 | }"##, | 3623 | } |
3624 | "#, | ||
3518 | ); | 3625 | ); |
3519 | } | 3626 | } |
3520 | 3627 | ||
@@ -3523,9 +3630,8 @@ fn foo() -> Option<()> { | |||
3523 | cov_mark::check!(external_control_flow_try_and_return_non_err); | 3630 | cov_mark::check!(external_control_flow_try_and_return_non_err); |
3524 | check_assist_not_applicable( | 3631 | check_assist_not_applicable( |
3525 | extract_function, | 3632 | extract_function, |
3526 | r##" | 3633 | r#" |
3527 | enum Result<T, E> { Ok(T), Err(E), } | 3634 | //- minicore: result |
3528 | use Result::*; | ||
3529 | fn foo() -> Result<(), i64> { | 3635 | fn foo() -> Result<(), i64> { |
3530 | let n = 1; | 3636 | let n = 1; |
3531 | $0let k = foo()?; | 3637 | $0let k = foo()?; |
@@ -3535,7 +3641,8 @@ fn foo() -> Result<(), i64> { | |||
3535 | let m = k + 1;$0 | 3641 | let m = k + 1;$0 |
3536 | let h = 1 + m; | 3642 | let h = 1 + m; |
3537 | Ok(()) | 3643 | Ok(()) |
3538 | }"##, | 3644 | } |
3645 | "#, | ||
3539 | ); | 3646 | ); |
3540 | } | 3647 | } |
3541 | 3648 | ||
@@ -3543,7 +3650,7 @@ fn foo() -> Result<(), i64> { | |||
3543 | fn param_usage_in_macro() { | 3650 | fn param_usage_in_macro() { |
3544 | check_assist( | 3651 | check_assist( |
3545 | extract_function, | 3652 | extract_function, |
3546 | r" | 3653 | r#" |
3547 | macro_rules! m { | 3654 | macro_rules! m { |
3548 | ($val:expr) => { $val }; | 3655 | ($val:expr) => { $val }; |
3549 | } | 3656 | } |
@@ -3552,8 +3659,9 @@ fn foo() { | |||
3552 | let n = 1; | 3659 | let n = 1; |
3553 | $0let k = n * m!(n);$0 | 3660 | $0let k = n * m!(n);$0 |
3554 | let m = k + 1; | 3661 | let m = k + 1; |
3555 | }", | 3662 | } |
3556 | r" | 3663 | "#, |
3664 | r#" | ||
3557 | macro_rules! m { | 3665 | macro_rules! m { |
3558 | ($val:expr) => { $val }; | 3666 | ($val:expr) => { $val }; |
3559 | } | 3667 | } |
@@ -3567,7 +3675,8 @@ fn foo() { | |||
3567 | fn $0fun_name(n: i32) -> i32 { | 3675 | fn $0fun_name(n: i32) -> i32 { |
3568 | let k = n * m!(n); | 3676 | let k = n * m!(n); |
3569 | k | 3677 | k |
3570 | }", | 3678 | } |
3679 | "#, | ||
3571 | ); | 3680 | ); |
3572 | } | 3681 | } |
3573 | 3682 | ||
@@ -3575,7 +3684,8 @@ fn $0fun_name(n: i32) -> i32 { | |||
3575 | fn extract_with_await() { | 3684 | fn extract_with_await() { |
3576 | check_assist( | 3685 | check_assist( |
3577 | extract_function, | 3686 | extract_function, |
3578 | r#"fn main() { | 3687 | r#" |
3688 | fn main() { | ||
3579 | $0some_function().await;$0 | 3689 | $0some_function().await;$0 |
3580 | } | 3690 | } |
3581 | 3691 | ||
@@ -3585,7 +3695,7 @@ async fn some_function() { | |||
3585 | "#, | 3695 | "#, |
3586 | r#" | 3696 | r#" |
3587 | fn main() { | 3697 | fn main() { |
3588 | fun_name(); | 3698 | fun_name().await; |
3589 | } | 3699 | } |
3590 | 3700 | ||
3591 | async fn $0fun_name() { | 3701 | async fn $0fun_name() { |
@@ -3603,7 +3713,8 @@ async fn some_function() { | |||
3603 | fn extract_with_await_in_args() { | 3713 | fn extract_with_await_in_args() { |
3604 | check_assist( | 3714 | check_assist( |
3605 | extract_function, | 3715 | extract_function, |
3606 | r#"fn main() { | 3716 | r#" |
3717 | fn main() { | ||
3607 | $0function_call("a", some_function().await);$0 | 3718 | $0function_call("a", some_function().await);$0 |
3608 | } | 3719 | } |
3609 | 3720 | ||
@@ -3613,7 +3724,7 @@ async fn some_function() { | |||
3613 | "#, | 3724 | "#, |
3614 | r#" | 3725 | r#" |
3615 | fn main() { | 3726 | fn main() { |
3616 | fun_name(); | 3727 | fun_name().await; |
3617 | } | 3728 | } |
3618 | 3729 | ||
3619 | async fn $0fun_name() { | 3730 | async fn $0fun_name() { |