Commit 0022e5b
committed
Implement polymorphic lambdas using Closure nodes for efficiency
Previously, we desugared them manually into anonymous class instances,
but by using a Closure node instead, we ensure that they get translated
into indy lambdas on the JVM.
Also cleaned up and added a TODO in the desugaring of polymorphic function types
into refinement types since I realized that purity wasn't taken into account.1 parent 75ab141 commit 0022e5b
File tree
4 files changed
+87
-77
lines changed- compiler/src/dotty/tools/dotc
- ast
- core
- typer
- tests/neg
4 files changed
+87
-77
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1020 | 1020 | | |
1021 | 1021 | | |
1022 | 1022 | | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
1023 | 1057 | | |
1024 | 1058 | | |
1025 | 1059 | | |
| |||
1413 | 1447 | | |
1414 | 1448 | | |
1415 | 1449 | | |
1416 | | - | |
| 1450 | + | |
1417 | 1451 | | |
1418 | | - | |
| 1452 | + | |
1419 | 1453 | | |
1420 | 1454 | | |
1421 | | - | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
1422 | 1459 | | |
1423 | | - | |
| 1460 | + | |
1424 | 1461 | | |
1425 | 1462 | | |
1426 | 1463 | | |
| |||
1712 | 1749 | | |
1713 | 1750 | | |
1714 | 1751 | | |
1715 | | - | |
1716 | | - | |
1717 | | - | |
1718 | | - | |
1719 | | - | |
1720 | | - | |
1721 | | - | |
1722 | | - | |
1723 | | - | |
1724 | | - | |
1725 | | - | |
1726 | | - | |
1727 | | - | |
1728 | | - | |
1729 | | - | |
1730 | | - | |
1731 | | - | |
1732 | | - | |
1733 | | - | |
1734 | | - | |
1735 | | - | |
1736 | | - | |
1737 | | - | |
1738 | | - | |
1739 | | - | |
1740 | | - | |
1741 | | - | |
1742 | | - | |
1743 | | - | |
1744 | | - | |
1745 | | - | |
1746 | | - | |
1747 | | - | |
1748 | | - | |
1749 | | - | |
1750 | | - | |
1751 | | - | |
1752 | | - | |
1753 | | - | |
1754 | | - | |
1755 | | - | |
1756 | | - | |
1757 | | - | |
1758 | | - | |
1759 | | - | |
1760 | | - | |
1761 | | - | |
1762 | | - | |
1763 | | - | |
1764 | | - | |
1765 | 1752 | | |
1766 | 1753 | | |
1767 | 1754 | | |
| |||
1774 | 1761 | | |
1775 | 1762 | | |
1776 | 1763 | | |
1777 | | - | |
1778 | | - | |
1779 | 1764 | | |
1780 | 1765 | | |
1781 | 1766 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1842 | 1842 | | |
1843 | 1843 | | |
1844 | 1844 | | |
| 1845 | + | |
| 1846 | + | |
1845 | 1847 | | |
1846 | 1848 | | |
1847 | 1849 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1633 | 1633 | | |
1634 | 1634 | | |
1635 | 1635 | | |
1636 | | - | |
| 1636 | + | |
1637 | 1637 | | |
1638 | 1638 | | |
1639 | 1639 | | |
1640 | 1640 | | |
1641 | 1641 | | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
1642 | 1662 | | |
1643 | 1663 | | |
1644 | 1664 | | |
| |||
1676 | 1696 | | |
1677 | 1697 | | |
1678 | 1698 | | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
1679 | 1702 | | |
1680 | 1703 | | |
1681 | 1704 | | |
| |||
2433 | 2456 | | |
2434 | 2457 | | |
2435 | 2458 | | |
2436 | | - | |
| 2459 | + | |
2437 | 2460 | | |
2438 | 2461 | | |
2439 | 2462 | | |
| |||
2536 | 2559 | | |
2537 | 2560 | | |
2538 | 2561 | | |
2539 | | - | |
| 2562 | + | |
2540 | 2563 | | |
2541 | 2564 | | |
2542 | 2565 | | |
2543 | 2566 | | |
2544 | 2567 | | |
2545 | 2568 | | |
| 2569 | + | |
2546 | 2570 | | |
2547 | | - | |
| 2571 | + | |
2548 | 2572 | | |
2549 | 2573 | | |
2550 | 2574 | | |
2551 | 2575 | | |
| 2576 | + | |
| 2577 | + | |
| 2578 | + | |
| 2579 | + | |
| 2580 | + | |
| 2581 | + | |
| 2582 | + | |
| 2583 | + | |
| 2584 | + | |
| 2585 | + | |
| 2586 | + | |
2552 | 2587 | | |
2553 | 2588 | | |
2554 | 2589 | | |
| |||
2695 | 2730 | | |
2696 | 2731 | | |
2697 | 2732 | | |
2698 | | - | |
2699 | | - | |
2700 | | - | |
2701 | | - | |
2702 | | - | |
2703 | | - | |
2704 | | - | |
2705 | | - | |
2706 | | - | |
2707 | | - | |
2708 | | - | |
2709 | | - | |
2710 | | - | |
2711 | 2733 | | |
2712 | 2734 | | |
2713 | 2735 | | |
| |||
3059 | 3081 | | |
3060 | 3082 | | |
3061 | 3083 | | |
| 3084 | + | |
3062 | 3085 | | |
3063 | 3086 | | |
3064 | 3087 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
0 commit comments