OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library analyzer.test.src.summary.summary_common; | 5 library analyzer.test.src.summary.summary_common; |
6 | 6 |
7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
8 import 'package:analyzer/dart/ast/ast.dart'; | 8 import 'package:analyzer/dart/ast/ast.dart'; |
9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
10 import 'package:analyzer/src/dart/scanner/reader.dart'; | 10 import 'package:analyzer/src/dart/scanner/reader.dart'; |
(...skipping 1466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1477 checkInferredTypeSlot(executable.localFunctions[0].inferredReturnTypeSlot, | 1477 checkInferredTypeSlot(executable.localFunctions[0].inferredReturnTypeSlot, |
1478 absUri('/b.dart'), 'b.dart', 'D', | 1478 absUri('/b.dart'), 'b.dart', 'D', |
1479 onlyInStrongMode: false); | 1479 onlyInStrongMode: false); |
1480 if (!skipFullyLinkedData) { | 1480 if (!skipFullyLinkedData) { |
1481 checkHasDependency(absUri('/b.dart'), 'b.dart', fullyLinked: true); | 1481 checkHasDependency(absUri('/b.dart'), 'b.dart', fullyLinked: true); |
1482 } | 1482 } |
1483 } | 1483 } |
1484 | 1484 |
1485 test_constExpr_binary_add() { | 1485 test_constExpr_binary_add() { |
1486 UnlinkedVariable variable = serializeVariableText('const v = 1 + 2;'); | 1486 UnlinkedVariable variable = serializeVariableText('const v = 1 + 2;'); |
1487 _assertUnlinkedConst(variable.constExpr, operators: [ | 1487 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1488 UnlinkedConstOperation.pushInt, | 1488 UnlinkedConstOperation.pushInt, |
1489 UnlinkedConstOperation.pushInt, | 1489 UnlinkedConstOperation.pushInt, |
1490 UnlinkedConstOperation.add | 1490 UnlinkedConstOperation.add |
1491 ], ints: [ | 1491 ], ints: [ |
1492 1, | 1492 1, |
1493 2 | 1493 2 |
1494 ]); | 1494 ]); |
1495 } | 1495 } |
1496 | 1496 |
1497 test_constExpr_binary_and() { | 1497 test_constExpr_binary_and() { |
1498 UnlinkedVariable variable = | 1498 UnlinkedVariable variable = |
1499 serializeVariableText('const v = true && false;'); | 1499 serializeVariableText('const v = true && false;'); |
1500 _assertUnlinkedConst(variable.constExpr, operators: [ | 1500 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1501 UnlinkedConstOperation.pushTrue, | 1501 UnlinkedConstOperation.pushTrue, |
1502 UnlinkedConstOperation.pushFalse, | 1502 UnlinkedConstOperation.pushFalse, |
1503 UnlinkedConstOperation.and | 1503 UnlinkedConstOperation.and |
1504 ]); | 1504 ]); |
1505 } | 1505 } |
1506 | 1506 |
1507 test_constExpr_binary_bitAnd() { | 1507 test_constExpr_binary_bitAnd() { |
1508 UnlinkedVariable variable = serializeVariableText('const v = 1 & 2;'); | 1508 UnlinkedVariable variable = serializeVariableText('const v = 1 & 2;'); |
1509 _assertUnlinkedConst(variable.constExpr, operators: [ | 1509 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1510 UnlinkedConstOperation.pushInt, | 1510 UnlinkedConstOperation.pushInt, |
1511 UnlinkedConstOperation.pushInt, | 1511 UnlinkedConstOperation.pushInt, |
1512 UnlinkedConstOperation.bitAnd | 1512 UnlinkedConstOperation.bitAnd |
1513 ], ints: [ | 1513 ], ints: [ |
1514 1, | 1514 1, |
1515 2 | 1515 2 |
1516 ]); | 1516 ]); |
1517 } | 1517 } |
1518 | 1518 |
1519 test_constExpr_binary_bitOr() { | 1519 test_constExpr_binary_bitOr() { |
1520 UnlinkedVariable variable = serializeVariableText('const v = 1 | 2;'); | 1520 UnlinkedVariable variable = serializeVariableText('const v = 1 | 2;'); |
1521 _assertUnlinkedConst(variable.constExpr, operators: [ | 1521 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1522 UnlinkedConstOperation.pushInt, | 1522 UnlinkedConstOperation.pushInt, |
1523 UnlinkedConstOperation.pushInt, | 1523 UnlinkedConstOperation.pushInt, |
1524 UnlinkedConstOperation.bitOr | 1524 UnlinkedConstOperation.bitOr |
1525 ], ints: [ | 1525 ], ints: [ |
1526 1, | 1526 1, |
1527 2 | 1527 2 |
1528 ]); | 1528 ]); |
1529 } | 1529 } |
1530 | 1530 |
1531 test_constExpr_binary_bitShiftLeft() { | 1531 test_constExpr_binary_bitShiftLeft() { |
1532 UnlinkedVariable variable = serializeVariableText('const v = 1 << 2;'); | 1532 UnlinkedVariable variable = serializeVariableText('const v = 1 << 2;'); |
1533 _assertUnlinkedConst(variable.constExpr, operators: [ | 1533 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1534 UnlinkedConstOperation.pushInt, | 1534 UnlinkedConstOperation.pushInt, |
1535 UnlinkedConstOperation.pushInt, | 1535 UnlinkedConstOperation.pushInt, |
1536 UnlinkedConstOperation.bitShiftLeft | 1536 UnlinkedConstOperation.bitShiftLeft |
1537 ], ints: [ | 1537 ], ints: [ |
1538 1, | 1538 1, |
1539 2 | 1539 2 |
1540 ]); | 1540 ]); |
1541 } | 1541 } |
1542 | 1542 |
1543 test_constExpr_binary_bitShiftRight() { | 1543 test_constExpr_binary_bitShiftRight() { |
1544 UnlinkedVariable variable = serializeVariableText('const v = 1 >> 2;'); | 1544 UnlinkedVariable variable = serializeVariableText('const v = 1 >> 2;'); |
1545 _assertUnlinkedConst(variable.constExpr, operators: [ | 1545 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1546 UnlinkedConstOperation.pushInt, | 1546 UnlinkedConstOperation.pushInt, |
1547 UnlinkedConstOperation.pushInt, | 1547 UnlinkedConstOperation.pushInt, |
1548 UnlinkedConstOperation.bitShiftRight | 1548 UnlinkedConstOperation.bitShiftRight |
1549 ], ints: [ | 1549 ], ints: [ |
1550 1, | 1550 1, |
1551 2 | 1551 2 |
1552 ]); | 1552 ]); |
1553 } | 1553 } |
1554 | 1554 |
1555 test_constExpr_binary_bitXor() { | 1555 test_constExpr_binary_bitXor() { |
1556 UnlinkedVariable variable = serializeVariableText('const v = 1 ^ 2;'); | 1556 UnlinkedVariable variable = serializeVariableText('const v = 1 ^ 2;'); |
1557 _assertUnlinkedConst(variable.constExpr, operators: [ | 1557 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1558 UnlinkedConstOperation.pushInt, | 1558 UnlinkedConstOperation.pushInt, |
1559 UnlinkedConstOperation.pushInt, | 1559 UnlinkedConstOperation.pushInt, |
1560 UnlinkedConstOperation.bitXor | 1560 UnlinkedConstOperation.bitXor |
1561 ], ints: [ | 1561 ], ints: [ |
1562 1, | 1562 1, |
1563 2 | 1563 2 |
1564 ]); | 1564 ]); |
1565 } | 1565 } |
1566 | 1566 |
1567 test_constExpr_binary_divide() { | 1567 test_constExpr_binary_divide() { |
1568 UnlinkedVariable variable = serializeVariableText('const v = 1 / 2;'); | 1568 UnlinkedVariable variable = serializeVariableText('const v = 1 / 2;'); |
1569 _assertUnlinkedConst(variable.constExpr, operators: [ | 1569 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1570 UnlinkedConstOperation.pushInt, | 1570 UnlinkedConstOperation.pushInt, |
1571 UnlinkedConstOperation.pushInt, | 1571 UnlinkedConstOperation.pushInt, |
1572 UnlinkedConstOperation.divide | 1572 UnlinkedConstOperation.divide |
1573 ], ints: [ | 1573 ], ints: [ |
1574 1, | 1574 1, |
1575 2 | 1575 2 |
1576 ]); | 1576 ]); |
1577 } | 1577 } |
1578 | 1578 |
1579 test_constExpr_binary_equal() { | 1579 test_constExpr_binary_equal() { |
1580 UnlinkedVariable variable = serializeVariableText('const v = 1 == 2;'); | 1580 UnlinkedVariable variable = serializeVariableText('const v = 1 == 2;'); |
1581 _assertUnlinkedConst(variable.constExpr, operators: [ | 1581 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1582 UnlinkedConstOperation.pushInt, | 1582 UnlinkedConstOperation.pushInt, |
1583 UnlinkedConstOperation.pushInt, | 1583 UnlinkedConstOperation.pushInt, |
1584 UnlinkedConstOperation.equal | 1584 UnlinkedConstOperation.equal |
1585 ], ints: [ | 1585 ], ints: [ |
1586 1, | 1586 1, |
1587 2 | 1587 2 |
1588 ]); | 1588 ]); |
1589 } | 1589 } |
1590 | 1590 |
1591 test_constExpr_binary_equal_not() { | 1591 test_constExpr_binary_equal_not() { |
1592 UnlinkedVariable variable = serializeVariableText('const v = 1 != 2;'); | 1592 UnlinkedVariable variable = serializeVariableText('const v = 1 != 2;'); |
1593 _assertUnlinkedConst(variable.constExpr, operators: [ | 1593 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1594 UnlinkedConstOperation.pushInt, | 1594 UnlinkedConstOperation.pushInt, |
1595 UnlinkedConstOperation.pushInt, | 1595 UnlinkedConstOperation.pushInt, |
1596 UnlinkedConstOperation.notEqual | 1596 UnlinkedConstOperation.notEqual |
1597 ], ints: [ | 1597 ], ints: [ |
1598 1, | 1598 1, |
1599 2 | 1599 2 |
1600 ]); | 1600 ]); |
1601 } | 1601 } |
1602 | 1602 |
1603 test_constExpr_binary_floorDivide() { | 1603 test_constExpr_binary_floorDivide() { |
1604 UnlinkedVariable variable = serializeVariableText('const v = 1 ~/ 2;'); | 1604 UnlinkedVariable variable = serializeVariableText('const v = 1 ~/ 2;'); |
1605 _assertUnlinkedConst(variable.constExpr, operators: [ | 1605 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1606 UnlinkedConstOperation.pushInt, | 1606 UnlinkedConstOperation.pushInt, |
1607 UnlinkedConstOperation.pushInt, | 1607 UnlinkedConstOperation.pushInt, |
1608 UnlinkedConstOperation.floorDivide | 1608 UnlinkedConstOperation.floorDivide |
1609 ], ints: [ | 1609 ], ints: [ |
1610 1, | 1610 1, |
1611 2 | 1611 2 |
1612 ]); | 1612 ]); |
1613 } | 1613 } |
1614 | 1614 |
1615 test_constExpr_binary_greater() { | 1615 test_constExpr_binary_greater() { |
1616 UnlinkedVariable variable = serializeVariableText('const v = 1 > 2;'); | 1616 UnlinkedVariable variable = serializeVariableText('const v = 1 > 2;'); |
1617 _assertUnlinkedConst(variable.constExpr, operators: [ | 1617 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1618 UnlinkedConstOperation.pushInt, | 1618 UnlinkedConstOperation.pushInt, |
1619 UnlinkedConstOperation.pushInt, | 1619 UnlinkedConstOperation.pushInt, |
1620 UnlinkedConstOperation.greater | 1620 UnlinkedConstOperation.greater |
1621 ], ints: [ | 1621 ], ints: [ |
1622 1, | 1622 1, |
1623 2 | 1623 2 |
1624 ]); | 1624 ]); |
1625 } | 1625 } |
1626 | 1626 |
1627 test_constExpr_binary_greaterEqual() { | 1627 test_constExpr_binary_greaterEqual() { |
1628 UnlinkedVariable variable = serializeVariableText('const v = 1 >= 2;'); | 1628 UnlinkedVariable variable = serializeVariableText('const v = 1 >= 2;'); |
1629 _assertUnlinkedConst(variable.constExpr, operators: [ | 1629 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1630 UnlinkedConstOperation.pushInt, | 1630 UnlinkedConstOperation.pushInt, |
1631 UnlinkedConstOperation.pushInt, | 1631 UnlinkedConstOperation.pushInt, |
1632 UnlinkedConstOperation.greaterEqual | 1632 UnlinkedConstOperation.greaterEqual |
1633 ], ints: [ | 1633 ], ints: [ |
1634 1, | 1634 1, |
1635 2 | 1635 2 |
1636 ]); | 1636 ]); |
1637 } | 1637 } |
1638 | 1638 |
1639 test_constExpr_binary_less() { | 1639 test_constExpr_binary_less() { |
1640 UnlinkedVariable variable = serializeVariableText('const v = 1 < 2;'); | 1640 UnlinkedVariable variable = serializeVariableText('const v = 1 < 2;'); |
1641 _assertUnlinkedConst(variable.constExpr, operators: [ | 1641 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1642 UnlinkedConstOperation.pushInt, | 1642 UnlinkedConstOperation.pushInt, |
1643 UnlinkedConstOperation.pushInt, | 1643 UnlinkedConstOperation.pushInt, |
1644 UnlinkedConstOperation.less | 1644 UnlinkedConstOperation.less |
1645 ], ints: [ | 1645 ], ints: [ |
1646 1, | 1646 1, |
1647 2 | 1647 2 |
1648 ]); | 1648 ]); |
1649 } | 1649 } |
1650 | 1650 |
1651 test_constExpr_binary_lessEqual() { | 1651 test_constExpr_binary_lessEqual() { |
1652 UnlinkedVariable variable = serializeVariableText('const v = 1 <= 2;'); | 1652 UnlinkedVariable variable = serializeVariableText('const v = 1 <= 2;'); |
1653 _assertUnlinkedConst(variable.constExpr, operators: [ | 1653 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1654 UnlinkedConstOperation.pushInt, | 1654 UnlinkedConstOperation.pushInt, |
1655 UnlinkedConstOperation.pushInt, | 1655 UnlinkedConstOperation.pushInt, |
1656 UnlinkedConstOperation.lessEqual | 1656 UnlinkedConstOperation.lessEqual |
1657 ], ints: [ | 1657 ], ints: [ |
1658 1, | 1658 1, |
1659 2 | 1659 2 |
1660 ]); | 1660 ]); |
1661 } | 1661 } |
1662 | 1662 |
1663 test_constExpr_binary_modulo() { | 1663 test_constExpr_binary_modulo() { |
1664 UnlinkedVariable variable = serializeVariableText('const v = 1 % 2;'); | 1664 UnlinkedVariable variable = serializeVariableText('const v = 1 % 2;'); |
1665 _assertUnlinkedConst(variable.constExpr, operators: [ | 1665 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1666 UnlinkedConstOperation.pushInt, | 1666 UnlinkedConstOperation.pushInt, |
1667 UnlinkedConstOperation.pushInt, | 1667 UnlinkedConstOperation.pushInt, |
1668 UnlinkedConstOperation.modulo | 1668 UnlinkedConstOperation.modulo |
1669 ], ints: [ | 1669 ], ints: [ |
1670 1, | 1670 1, |
1671 2 | 1671 2 |
1672 ]); | 1672 ]); |
1673 } | 1673 } |
1674 | 1674 |
1675 test_constExpr_binary_multiply() { | 1675 test_constExpr_binary_multiply() { |
1676 UnlinkedVariable variable = serializeVariableText('const v = 1 * 2;'); | 1676 UnlinkedVariable variable = serializeVariableText('const v = 1 * 2;'); |
1677 _assertUnlinkedConst(variable.constExpr, operators: [ | 1677 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1678 UnlinkedConstOperation.pushInt, | 1678 UnlinkedConstOperation.pushInt, |
1679 UnlinkedConstOperation.pushInt, | 1679 UnlinkedConstOperation.pushInt, |
1680 UnlinkedConstOperation.multiply | 1680 UnlinkedConstOperation.multiply |
1681 ], ints: [ | 1681 ], ints: [ |
1682 1, | 1682 1, |
1683 2 | 1683 2 |
1684 ]); | 1684 ]); |
1685 } | 1685 } |
1686 | 1686 |
1687 test_constExpr_binary_or() { | 1687 test_constExpr_binary_or() { |
1688 UnlinkedVariable variable = | 1688 UnlinkedVariable variable = |
1689 serializeVariableText('const v = false || true;'); | 1689 serializeVariableText('const v = false || true;'); |
1690 _assertUnlinkedConst(variable.constExpr, operators: [ | 1690 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1691 UnlinkedConstOperation.pushFalse, | 1691 UnlinkedConstOperation.pushFalse, |
1692 UnlinkedConstOperation.pushTrue, | 1692 UnlinkedConstOperation.pushTrue, |
1693 UnlinkedConstOperation.or | 1693 UnlinkedConstOperation.or |
1694 ]); | 1694 ]); |
1695 } | 1695 } |
1696 | 1696 |
1697 test_constExpr_binary_subtract() { | 1697 test_constExpr_binary_subtract() { |
1698 UnlinkedVariable variable = serializeVariableText('const v = 1 - 2;'); | 1698 UnlinkedVariable variable = serializeVariableText('const v = 1 - 2;'); |
1699 _assertUnlinkedConst(variable.constExpr, operators: [ | 1699 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1700 UnlinkedConstOperation.pushInt, | 1700 UnlinkedConstOperation.pushInt, |
1701 UnlinkedConstOperation.pushInt, | 1701 UnlinkedConstOperation.pushInt, |
1702 UnlinkedConstOperation.subtract | 1702 UnlinkedConstOperation.subtract |
1703 ], ints: [ | 1703 ], ints: [ |
1704 1, | 1704 1, |
1705 2 | 1705 2 |
1706 ]); | 1706 ]); |
1707 } | 1707 } |
1708 | 1708 |
1709 test_constExpr_classMember_shadows_typeParam() { | 1709 test_constExpr_classMember_shadows_typeParam() { |
(...skipping 19 matching lines...) Expand all Loading... |
1729 prefixExpectations: [ | 1729 prefixExpectations: [ |
1730 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 1730 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
1731 numTypeParameters: 1) | 1731 numTypeParameters: 1) |
1732 ]) | 1732 ]) |
1733 ]); | 1733 ]); |
1734 } | 1734 } |
1735 | 1735 |
1736 test_constExpr_conditional() { | 1736 test_constExpr_conditional() { |
1737 UnlinkedVariable variable = | 1737 UnlinkedVariable variable = |
1738 serializeVariableText('const v = true ? 1 : 2;', allowErrors: true); | 1738 serializeVariableText('const v = true ? 1 : 2;', allowErrors: true); |
1739 _assertUnlinkedConst(variable.constExpr, operators: [ | 1739 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1740 UnlinkedConstOperation.pushTrue, | 1740 UnlinkedConstOperation.pushTrue, |
1741 UnlinkedConstOperation.pushInt, | 1741 UnlinkedConstOperation.pushInt, |
1742 UnlinkedConstOperation.pushInt, | 1742 UnlinkedConstOperation.pushInt, |
1743 UnlinkedConstOperation.conditional | 1743 UnlinkedConstOperation.conditional |
1744 ], ints: [ | 1744 ], ints: [ |
1745 1, | 1745 1, |
1746 2 | 1746 2 |
1747 ]); | 1747 ]); |
1748 } | 1748 } |
1749 | 1749 |
(...skipping 23 matching lines...) Expand all Loading... |
1773 } | 1773 } |
1774 | 1774 |
1775 test_constExpr_functionExpression_asArgument() { | 1775 test_constExpr_functionExpression_asArgument() { |
1776 // Even though function expressions are not allowed in constant | 1776 // Even though function expressions are not allowed in constant |
1777 // declarations, they might occur due to erroneous code, so make sure they | 1777 // declarations, they might occur due to erroneous code, so make sure they |
1778 // function correctly. | 1778 // function correctly. |
1779 UnlinkedVariable variable = serializeVariableText(''' | 1779 UnlinkedVariable variable = serializeVariableText(''' |
1780 const v = foo(5, () => 42); | 1780 const v = foo(5, () => 42); |
1781 foo(a, b) {} | 1781 foo(a, b) {} |
1782 '''); | 1782 '''); |
1783 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 1783 _assertUnlinkedConst(variable.initializer.bodyExpr, |
1784 UnlinkedConstOperation.pushInt, | 1784 isValidConst: false, |
1785 UnlinkedConstOperation.pushLocalFunctionReference, | 1785 operators: [ |
1786 UnlinkedConstOperation.invokeMethodRef | 1786 UnlinkedConstOperation.pushInt, |
1787 ], ints: [ | 1787 UnlinkedConstOperation.pushLocalFunctionReference, |
1788 5, | 1788 UnlinkedConstOperation.invokeMethodRef |
1789 0, | 1789 ], |
1790 0, | 1790 ints: [ |
1791 0, | 1791 5, |
1792 2 | 1792 0, |
1793 ], referenceValidators: [ | 1793 0, |
1794 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 1794 0, |
1795 expectedKind: ReferenceKind.topLevelFunction) | 1795 2 |
1796 ]); | 1796 ], |
| 1797 referenceValidators: [ |
| 1798 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
| 1799 expectedKind: ReferenceKind.topLevelFunction) |
| 1800 ]); |
1797 } | 1801 } |
1798 | 1802 |
1799 test_constExpr_functionExpression_asArgument_multiple() { | 1803 test_constExpr_functionExpression_asArgument_multiple() { |
1800 // Even though function expressions are not allowed in constant | 1804 // Even though function expressions are not allowed in constant |
1801 // declarations, they might occur due to erroneous code, so make sure they | 1805 // declarations, they might occur due to erroneous code, so make sure they |
1802 // function correctly. | 1806 // function correctly. |
1803 UnlinkedVariable variable = serializeVariableText(''' | 1807 UnlinkedVariable variable = serializeVariableText(''' |
1804 const v = foo(5, () => 42, () => 43); | 1808 const v = foo(5, () => 42, () => 43); |
1805 foo(a, b, c) {} | 1809 foo(a, b, c) {} |
1806 '''); | 1810 '''); |
1807 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 1811 _assertUnlinkedConst(variable.initializer.bodyExpr, |
1808 UnlinkedConstOperation.pushInt, | 1812 isValidConst: false, |
1809 UnlinkedConstOperation.pushLocalFunctionReference, | 1813 operators: [ |
1810 UnlinkedConstOperation.pushLocalFunctionReference, | 1814 UnlinkedConstOperation.pushInt, |
1811 UnlinkedConstOperation.invokeMethodRef | 1815 UnlinkedConstOperation.pushLocalFunctionReference, |
1812 ], ints: [ | 1816 UnlinkedConstOperation.pushLocalFunctionReference, |
1813 5, | 1817 UnlinkedConstOperation.invokeMethodRef |
1814 0, | 1818 ], |
1815 0, | 1819 ints: [ |
1816 0, | 1820 5, |
1817 1, | 1821 0, |
1818 0, | 1822 0, |
1819 3 | 1823 0, |
1820 ], referenceValidators: [ | 1824 1, |
1821 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 1825 0, |
1822 expectedKind: ReferenceKind.topLevelFunction) | 1826 3 |
1823 ]); | 1827 ], |
| 1828 referenceValidators: [ |
| 1829 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
| 1830 expectedKind: ReferenceKind.topLevelFunction) |
| 1831 ]); |
1824 } | 1832 } |
1825 | 1833 |
1826 test_constExpr_functionExpression_inConstructorInitializers() { | 1834 test_constExpr_functionExpression_inConstructorInitializers() { |
1827 // Even though function expressions are not allowed in constant | 1835 // Even though function expressions are not allowed in constant |
1828 // declarations, they might occur due to erroneous code, so make sure they | 1836 // declarations, they might occur due to erroneous code, so make sure they |
1829 // function correctly. | 1837 // function correctly. |
1830 UnlinkedExecutable executable = serializeClassText(''' | 1838 UnlinkedExecutable executable = serializeClassText(''' |
1831 class C { | 1839 class C { |
1832 final x, y; | 1840 final x, y; |
1833 const C() : x = (() => 42), y = (() => 43); | 1841 const C() : x = (() => 42), y = (() => 43); |
(...skipping 10 matching lines...) Expand all Loading... |
1844 ints: [0, 1]); | 1852 ints: [0, 1]); |
1845 } | 1853 } |
1846 | 1854 |
1847 test_constExpr_invokeConstructor_generic_named() { | 1855 test_constExpr_invokeConstructor_generic_named() { |
1848 UnlinkedVariable variable = serializeVariableText(''' | 1856 UnlinkedVariable variable = serializeVariableText(''' |
1849 class C<K, V> { | 1857 class C<K, V> { |
1850 const C.named(); | 1858 const C.named(); |
1851 } | 1859 } |
1852 const v = const C<int, String>.named(); | 1860 const v = const C<int, String>.named(); |
1853 '''); | 1861 '''); |
1854 _assertUnlinkedConst(variable.constExpr, operators: [ | 1862 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1855 UnlinkedConstOperation.invokeConstructor, | 1863 UnlinkedConstOperation.invokeConstructor, |
1856 ], ints: [ | 1864 ], ints: [ |
1857 0, | 1865 0, |
1858 0 | 1866 0 |
1859 ], referenceValidators: [ | 1867 ], referenceValidators: [ |
1860 (EntityRef r) { | 1868 (EntityRef r) { |
1861 checkTypeRef(r, null, null, 'named', | 1869 checkTypeRef(r, null, null, 'named', |
1862 expectedKind: ReferenceKind.constructor, | 1870 expectedKind: ReferenceKind.constructor, |
1863 prefixExpectations: [ | 1871 prefixExpectations: [ |
1864 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 1872 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
(...skipping 11 matching lines...) Expand all Loading... |
1876 '/a.dart', | 1884 '/a.dart', |
1877 ''' | 1885 ''' |
1878 class C<K, V> { | 1886 class C<K, V> { |
1879 const C.named(); | 1887 const C.named(); |
1880 } | 1888 } |
1881 '''); | 1889 '''); |
1882 UnlinkedVariable variable = serializeVariableText(''' | 1890 UnlinkedVariable variable = serializeVariableText(''' |
1883 import 'a.dart'; | 1891 import 'a.dart'; |
1884 const v = const C<int, String>.named(); | 1892 const v = const C<int, String>.named(); |
1885 '''); | 1893 '''); |
1886 _assertUnlinkedConst(variable.constExpr, operators: [ | 1894 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1887 UnlinkedConstOperation.invokeConstructor, | 1895 UnlinkedConstOperation.invokeConstructor, |
1888 ], ints: [ | 1896 ], ints: [ |
1889 0, | 1897 0, |
1890 0 | 1898 0 |
1891 ], referenceValidators: [ | 1899 ], referenceValidators: [ |
1892 (EntityRef r) { | 1900 (EntityRef r) { |
1893 checkTypeRef(r, null, null, 'named', | 1901 checkTypeRef(r, null, null, 'named', |
1894 expectedKind: ReferenceKind.constructor, | 1902 expectedKind: ReferenceKind.constructor, |
1895 prefixExpectations: [ | 1903 prefixExpectations: [ |
1896 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 1904 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
(...skipping 13 matching lines...) Expand all Loading... |
1910 '/a.dart', | 1918 '/a.dart', |
1911 ''' | 1919 ''' |
1912 class C<K, V> { | 1920 class C<K, V> { |
1913 const C.named(); | 1921 const C.named(); |
1914 } | 1922 } |
1915 '''); | 1923 '''); |
1916 UnlinkedVariable variable = serializeVariableText(''' | 1924 UnlinkedVariable variable = serializeVariableText(''' |
1917 import 'a.dart' as p; | 1925 import 'a.dart' as p; |
1918 const v = const p.C<int, String>.named(); | 1926 const v = const p.C<int, String>.named(); |
1919 '''); | 1927 '''); |
1920 _assertUnlinkedConst(variable.constExpr, operators: [ | 1928 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1921 UnlinkedConstOperation.invokeConstructor, | 1929 UnlinkedConstOperation.invokeConstructor, |
1922 ], ints: [ | 1930 ], ints: [ |
1923 0, | 1931 0, |
1924 0 | 1932 0 |
1925 ], referenceValidators: [ | 1933 ], referenceValidators: [ |
1926 (EntityRef r) { | 1934 (EntityRef r) { |
1927 checkTypeRef(r, null, null, 'named', | 1935 checkTypeRef(r, null, null, 'named', |
1928 expectedKind: ReferenceKind.constructor, | 1936 expectedKind: ReferenceKind.constructor, |
1929 prefixExpectations: [ | 1937 prefixExpectations: [ |
1930 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 1938 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
1931 absoluteUri: absUri('/a.dart'), | 1939 absoluteUri: absUri('/a.dart'), |
1932 relativeUri: 'a.dart', | 1940 relativeUri: 'a.dart', |
1933 numTypeParameters: 2), | 1941 numTypeParameters: 2), |
1934 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 1942 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
1935 ], | 1943 ], |
1936 numTypeArguments: 2); | 1944 numTypeArguments: 2); |
1937 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); | 1945 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); |
1938 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); | 1946 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); |
1939 } | 1947 } |
1940 ]); | 1948 ]); |
1941 } | 1949 } |
1942 | 1950 |
1943 test_constExpr_invokeConstructor_generic_unnamed() { | 1951 test_constExpr_invokeConstructor_generic_unnamed() { |
1944 UnlinkedVariable variable = serializeVariableText(''' | 1952 UnlinkedVariable variable = serializeVariableText(''' |
1945 class C<K, V> { | 1953 class C<K, V> { |
1946 const C(); | 1954 const C(); |
1947 } | 1955 } |
1948 const v = const C<int, String>(); | 1956 const v = const C<int, String>(); |
1949 '''); | 1957 '''); |
1950 _assertUnlinkedConst(variable.constExpr, operators: [ | 1958 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1951 UnlinkedConstOperation.invokeConstructor, | 1959 UnlinkedConstOperation.invokeConstructor, |
1952 ], ints: [ | 1960 ], ints: [ |
1953 0, | 1961 0, |
1954 0 | 1962 0 |
1955 ], referenceValidators: [ | 1963 ], referenceValidators: [ |
1956 (EntityRef r) { | 1964 (EntityRef r) { |
1957 checkTypeRef(r, null, null, 'C', | 1965 checkTypeRef(r, null, null, 'C', |
1958 expectedKind: ReferenceKind.classOrEnum, | 1966 expectedKind: ReferenceKind.classOrEnum, |
1959 numTypeParameters: 2, | 1967 numTypeParameters: 2, |
1960 numTypeArguments: 2); | 1968 numTypeArguments: 2); |
1961 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); | 1969 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); |
1962 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); | 1970 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); |
1963 } | 1971 } |
1964 ]); | 1972 ]); |
1965 } | 1973 } |
1966 | 1974 |
1967 test_constExpr_invokeConstructor_generic_unnamed_imported() { | 1975 test_constExpr_invokeConstructor_generic_unnamed_imported() { |
1968 addNamedSource( | 1976 addNamedSource( |
1969 '/a.dart', | 1977 '/a.dart', |
1970 ''' | 1978 ''' |
1971 class C<K, V> { | 1979 class C<K, V> { |
1972 const C(); | 1980 const C(); |
1973 } | 1981 } |
1974 '''); | 1982 '''); |
1975 UnlinkedVariable variable = serializeVariableText(''' | 1983 UnlinkedVariable variable = serializeVariableText(''' |
1976 import 'a.dart'; | 1984 import 'a.dart'; |
1977 const v = const C<int, String>(); | 1985 const v = const C<int, String>(); |
1978 '''); | 1986 '''); |
1979 _assertUnlinkedConst(variable.constExpr, operators: [ | 1987 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
1980 UnlinkedConstOperation.invokeConstructor, | 1988 UnlinkedConstOperation.invokeConstructor, |
1981 ], ints: [ | 1989 ], ints: [ |
1982 0, | 1990 0, |
1983 0 | 1991 0 |
1984 ], referenceValidators: [ | 1992 ], referenceValidators: [ |
1985 (EntityRef r) { | 1993 (EntityRef r) { |
1986 checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', | 1994 checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', |
1987 expectedKind: ReferenceKind.classOrEnum, | 1995 expectedKind: ReferenceKind.classOrEnum, |
1988 numTypeParameters: 2, | 1996 numTypeParameters: 2, |
1989 numTypeArguments: 2); | 1997 numTypeArguments: 2); |
1990 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); | 1998 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); |
1991 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); | 1999 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); |
1992 } | 2000 } |
1993 ]); | 2001 ]); |
1994 } | 2002 } |
1995 | 2003 |
1996 test_constExpr_invokeConstructor_generic_unnamed_imported_withPrefix() { | 2004 test_constExpr_invokeConstructor_generic_unnamed_imported_withPrefix() { |
1997 addNamedSource( | 2005 addNamedSource( |
1998 '/a.dart', | 2006 '/a.dart', |
1999 ''' | 2007 ''' |
2000 class C<K, V> { | 2008 class C<K, V> { |
2001 const C(); | 2009 const C(); |
2002 } | 2010 } |
2003 '''); | 2011 '''); |
2004 UnlinkedVariable variable = serializeVariableText(''' | 2012 UnlinkedVariable variable = serializeVariableText(''' |
2005 import 'a.dart' as p; | 2013 import 'a.dart' as p; |
2006 const v = const p.C<int, String>(); | 2014 const v = const p.C<int, String>(); |
2007 '''); | 2015 '''); |
2008 _assertUnlinkedConst(variable.constExpr, operators: [ | 2016 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2009 UnlinkedConstOperation.invokeConstructor, | 2017 UnlinkedConstOperation.invokeConstructor, |
2010 ], ints: [ | 2018 ], ints: [ |
2011 0, | 2019 0, |
2012 0 | 2020 0 |
2013 ], referenceValidators: [ | 2021 ], referenceValidators: [ |
2014 (EntityRef r) { | 2022 (EntityRef r) { |
2015 checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', | 2023 checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', |
2016 expectedKind: ReferenceKind.classOrEnum, | 2024 expectedKind: ReferenceKind.classOrEnum, |
2017 numTypeParameters: 2, | 2025 numTypeParameters: 2, |
2018 numTypeArguments: 2, | 2026 numTypeArguments: 2, |
2019 prefixExpectations: [ | 2027 prefixExpectations: [ |
2020 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2028 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2021 ]); | 2029 ]); |
2022 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); | 2030 checkTypeRef(r.typeArguments[0], 'dart:core', 'dart:core', 'int'); |
2023 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); | 2031 checkTypeRef(r.typeArguments[1], 'dart:core', 'dart:core', 'String'); |
2024 } | 2032 } |
2025 ]); | 2033 ]); |
2026 } | 2034 } |
2027 | 2035 |
2028 test_constExpr_invokeConstructor_named() { | 2036 test_constExpr_invokeConstructor_named() { |
2029 UnlinkedVariable variable = serializeVariableText(''' | 2037 UnlinkedVariable variable = serializeVariableText(''' |
2030 class C { | 2038 class C { |
2031 const C.named(); | 2039 const C.named(); |
2032 } | 2040 } |
2033 const v = const C.named(); | 2041 const v = const C.named(); |
2034 '''); | 2042 '''); |
2035 _assertUnlinkedConst(variable.constExpr, operators: [ | 2043 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2036 UnlinkedConstOperation.invokeConstructor, | 2044 UnlinkedConstOperation.invokeConstructor, |
2037 ], ints: [ | 2045 ], ints: [ |
2038 0, | 2046 0, |
2039 0 | 2047 0 |
2040 ], referenceValidators: [ | 2048 ], referenceValidators: [ |
2041 (EntityRef r) => checkTypeRef(r, null, null, 'named', | 2049 (EntityRef r) => checkTypeRef(r, null, null, 'named', |
2042 expectedKind: ReferenceKind.constructor, | 2050 expectedKind: ReferenceKind.constructor, |
2043 prefixExpectations: [ | 2051 prefixExpectations: [ |
2044 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2052 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2045 ]) | 2053 ]) |
2046 ]); | 2054 ]); |
2047 } | 2055 } |
2048 | 2056 |
2049 test_constExpr_invokeConstructor_named_imported() { | 2057 test_constExpr_invokeConstructor_named_imported() { |
2050 addNamedSource( | 2058 addNamedSource( |
2051 '/a.dart', | 2059 '/a.dart', |
2052 ''' | 2060 ''' |
2053 class C { | 2061 class C { |
2054 const C.named(); | 2062 const C.named(); |
2055 } | 2063 } |
2056 '''); | 2064 '''); |
2057 UnlinkedVariable variable = serializeVariableText(''' | 2065 UnlinkedVariable variable = serializeVariableText(''' |
2058 import 'a.dart'; | 2066 import 'a.dart'; |
2059 const v = const C.named(); | 2067 const v = const C.named(); |
2060 '''); | 2068 '''); |
2061 _assertUnlinkedConst(variable.constExpr, operators: [ | 2069 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2062 UnlinkedConstOperation.invokeConstructor, | 2070 UnlinkedConstOperation.invokeConstructor, |
2063 ], ints: [ | 2071 ], ints: [ |
2064 0, | 2072 0, |
2065 0 | 2073 0 |
2066 ], referenceValidators: [ | 2074 ], referenceValidators: [ |
2067 (EntityRef r) => checkTypeRef(r, null, null, 'named', | 2075 (EntityRef r) => checkTypeRef(r, null, null, 'named', |
2068 expectedKind: ReferenceKind.constructor, | 2076 expectedKind: ReferenceKind.constructor, |
2069 prefixExpectations: [ | 2077 prefixExpectations: [ |
2070 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2078 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2071 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 2079 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
2072 ]) | 2080 ]) |
2073 ]); | 2081 ]); |
2074 } | 2082 } |
2075 | 2083 |
2076 test_constExpr_invokeConstructor_named_imported_withPrefix() { | 2084 test_constExpr_invokeConstructor_named_imported_withPrefix() { |
2077 addNamedSource( | 2085 addNamedSource( |
2078 '/a.dart', | 2086 '/a.dart', |
2079 ''' | 2087 ''' |
2080 class C { | 2088 class C { |
2081 const C.named(); | 2089 const C.named(); |
2082 } | 2090 } |
2083 '''); | 2091 '''); |
2084 UnlinkedVariable variable = serializeVariableText(''' | 2092 UnlinkedVariable variable = serializeVariableText(''' |
2085 import 'a.dart' as p; | 2093 import 'a.dart' as p; |
2086 const v = const p.C.named(); | 2094 const v = const p.C.named(); |
2087 '''); | 2095 '''); |
2088 _assertUnlinkedConst(variable.constExpr, operators: [ | 2096 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2089 UnlinkedConstOperation.invokeConstructor, | 2097 UnlinkedConstOperation.invokeConstructor, |
2090 ], ints: [ | 2098 ], ints: [ |
2091 0, | 2099 0, |
2092 0 | 2100 0 |
2093 ], referenceValidators: [ | 2101 ], referenceValidators: [ |
2094 (EntityRef r) => checkTypeRef(r, null, null, 'named', | 2102 (EntityRef r) => checkTypeRef(r, null, null, 'named', |
2095 expectedKind: ReferenceKind.constructor, | 2103 expectedKind: ReferenceKind.constructor, |
2096 prefixExpectations: [ | 2104 prefixExpectations: [ |
2097 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2105 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2098 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 2106 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
2099 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2107 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2100 ]) | 2108 ]) |
2101 ]); | 2109 ]); |
2102 } | 2110 } |
2103 | 2111 |
2104 test_constExpr_invokeConstructor_unnamed() { | 2112 test_constExpr_invokeConstructor_unnamed() { |
2105 UnlinkedVariable variable = serializeVariableText(''' | 2113 UnlinkedVariable variable = serializeVariableText(''' |
2106 class C { | 2114 class C { |
2107 const C(a, b, c, d, {e, f, g}); | 2115 const C(a, b, c, d, {e, f, g}); |
2108 } | 2116 } |
2109 const v = const C(11, 22, 3.3, '444', e: 55, g: '777', f: 66); | 2117 const v = const C(11, 22, 3.3, '444', e: 55, g: '777', f: 66); |
2110 '''); | 2118 '''); |
2111 // Stack: 11 22 3.3 '444' 55 '777' 66 ^head | 2119 // Stack: 11 22 3.3 '444' 55 '777' 66 ^head |
2112 // Ints: ^pointer 3 4 | 2120 // Ints: ^pointer 3 4 |
2113 // Doubles: ^pointer | 2121 // Doubles: ^pointer |
2114 // Strings: ^pointer 'e' 'g' 'f' '' | 2122 // Strings: ^pointer 'e' 'g' 'f' '' |
2115 _assertUnlinkedConst(variable.constExpr, operators: [ | 2123 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2116 UnlinkedConstOperation.pushInt, | 2124 UnlinkedConstOperation.pushInt, |
2117 UnlinkedConstOperation.pushInt, | 2125 UnlinkedConstOperation.pushInt, |
2118 UnlinkedConstOperation.pushDouble, | 2126 UnlinkedConstOperation.pushDouble, |
2119 UnlinkedConstOperation.pushString, | 2127 UnlinkedConstOperation.pushString, |
2120 UnlinkedConstOperation.pushInt, | 2128 UnlinkedConstOperation.pushInt, |
2121 UnlinkedConstOperation.pushString, | 2129 UnlinkedConstOperation.pushString, |
2122 UnlinkedConstOperation.pushInt, | 2130 UnlinkedConstOperation.pushInt, |
2123 UnlinkedConstOperation.invokeConstructor, | 2131 UnlinkedConstOperation.invokeConstructor, |
2124 ], ints: [ | 2132 ], ints: [ |
2125 11, | 2133 11, |
(...skipping 21 matching lines...) Expand all Loading... |
2147 '/a.dart', | 2155 '/a.dart', |
2148 ''' | 2156 ''' |
2149 class C { | 2157 class C { |
2150 const C(); | 2158 const C(); |
2151 } | 2159 } |
2152 '''); | 2160 '''); |
2153 UnlinkedVariable variable = serializeVariableText(''' | 2161 UnlinkedVariable variable = serializeVariableText(''' |
2154 import 'a.dart'; | 2162 import 'a.dart'; |
2155 const v = const C(); | 2163 const v = const C(); |
2156 '''); | 2164 '''); |
2157 _assertUnlinkedConst(variable.constExpr, operators: [ | 2165 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2158 UnlinkedConstOperation.invokeConstructor, | 2166 UnlinkedConstOperation.invokeConstructor, |
2159 ], ints: [ | 2167 ], ints: [ |
2160 0, | 2168 0, |
2161 0 | 2169 0 |
2162 ], referenceValidators: [ | 2170 ], referenceValidators: [ |
2163 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', | 2171 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', |
2164 expectedKind: ReferenceKind.classOrEnum) | 2172 expectedKind: ReferenceKind.classOrEnum) |
2165 ]); | 2173 ]); |
2166 } | 2174 } |
2167 | 2175 |
2168 test_constExpr_invokeConstructor_unnamed_imported_withPrefix() { | 2176 test_constExpr_invokeConstructor_unnamed_imported_withPrefix() { |
2169 addNamedSource( | 2177 addNamedSource( |
2170 '/a.dart', | 2178 '/a.dart', |
2171 ''' | 2179 ''' |
2172 class C { | 2180 class C { |
2173 const C(); | 2181 const C(); |
2174 } | 2182 } |
2175 '''); | 2183 '''); |
2176 UnlinkedVariable variable = serializeVariableText(''' | 2184 UnlinkedVariable variable = serializeVariableText(''' |
2177 import 'a.dart' as p; | 2185 import 'a.dart' as p; |
2178 const v = const p.C(); | 2186 const v = const p.C(); |
2179 '''); | 2187 '''); |
2180 _assertUnlinkedConst(variable.constExpr, operators: [ | 2188 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2181 UnlinkedConstOperation.invokeConstructor, | 2189 UnlinkedConstOperation.invokeConstructor, |
2182 ], ints: [ | 2190 ], ints: [ |
2183 0, | 2191 0, |
2184 0 | 2192 0 |
2185 ], referenceValidators: [ | 2193 ], referenceValidators: [ |
2186 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', | 2194 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'C', |
2187 expectedKind: ReferenceKind.classOrEnum, | 2195 expectedKind: ReferenceKind.classOrEnum, |
2188 prefixExpectations: [ | 2196 prefixExpectations: [ |
2189 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2197 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2190 ]) | 2198 ]) |
2191 ]); | 2199 ]); |
2192 } | 2200 } |
2193 | 2201 |
2194 test_constExpr_invokeConstructor_unresolved_named() { | 2202 test_constExpr_invokeConstructor_unresolved_named() { |
2195 UnlinkedVariable variable = serializeVariableText( | 2203 UnlinkedVariable variable = serializeVariableText( |
2196 ''' | 2204 ''' |
2197 class C {} | 2205 class C {} |
2198 const v = const C.foo(); | 2206 const v = const C.foo(); |
2199 ''', | 2207 ''', |
2200 allowErrors: true); | 2208 allowErrors: true); |
2201 _assertUnlinkedConst(variable.constExpr, operators: [ | 2209 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2202 UnlinkedConstOperation.invokeConstructor, | 2210 UnlinkedConstOperation.invokeConstructor, |
2203 ], ints: [ | 2211 ], ints: [ |
2204 0, | 2212 0, |
2205 0 | 2213 0 |
2206 ], referenceValidators: [ | 2214 ], referenceValidators: [ |
2207 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 2215 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
2208 expectedKind: ReferenceKind.unresolved, | 2216 expectedKind: ReferenceKind.unresolved, |
2209 checkAstDerivedDataOverride: true, | 2217 checkAstDerivedDataOverride: true, |
2210 prefixExpectations: [ | 2218 prefixExpectations: [ |
2211 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2219 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2212 ]) | 2220 ]) |
2213 ]); | 2221 ]); |
2214 } | 2222 } |
2215 | 2223 |
2216 test_constExpr_invokeConstructor_unresolved_named2() { | 2224 test_constExpr_invokeConstructor_unresolved_named2() { |
2217 UnlinkedVariable variable = serializeVariableText( | 2225 UnlinkedVariable variable = serializeVariableText( |
2218 ''' | 2226 ''' |
2219 const v = const C.foo(); | 2227 const v = const C.foo(); |
2220 ''', | 2228 ''', |
2221 allowErrors: true); | 2229 allowErrors: true); |
2222 _assertUnlinkedConst(variable.constExpr, operators: [ | 2230 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2223 UnlinkedConstOperation.invokeConstructor, | 2231 UnlinkedConstOperation.invokeConstructor, |
2224 ], ints: [ | 2232 ], ints: [ |
2225 0, | 2233 0, |
2226 0 | 2234 0 |
2227 ], referenceValidators: [ | 2235 ], referenceValidators: [ |
2228 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 2236 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
2229 expectedKind: ReferenceKind.unresolved, | 2237 expectedKind: ReferenceKind.unresolved, |
2230 checkAstDerivedDataOverride: true, | 2238 checkAstDerivedDataOverride: true, |
2231 prefixExpectations: [ | 2239 prefixExpectations: [ |
2232 new _PrefixExpectation(ReferenceKind.unresolved, 'C') | 2240 new _PrefixExpectation(ReferenceKind.unresolved, 'C') |
2233 ]) | 2241 ]) |
2234 ]); | 2242 ]); |
2235 } | 2243 } |
2236 | 2244 |
2237 test_constExpr_invokeConstructor_unresolved_named_prefixed() { | 2245 test_constExpr_invokeConstructor_unresolved_named_prefixed() { |
2238 addNamedSource( | 2246 addNamedSource( |
2239 '/a.dart', | 2247 '/a.dart', |
2240 ''' | 2248 ''' |
2241 class C { | 2249 class C { |
2242 } | 2250 } |
2243 '''); | 2251 '''); |
2244 UnlinkedVariable variable = serializeVariableText( | 2252 UnlinkedVariable variable = serializeVariableText( |
2245 ''' | 2253 ''' |
2246 import 'a.dart' as p; | 2254 import 'a.dart' as p; |
2247 const v = const p.C.foo(); | 2255 const v = const p.C.foo(); |
2248 ''', | 2256 ''', |
2249 allowErrors: true); | 2257 allowErrors: true); |
2250 _assertUnlinkedConst(variable.constExpr, operators: [ | 2258 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2251 UnlinkedConstOperation.invokeConstructor, | 2259 UnlinkedConstOperation.invokeConstructor, |
2252 ], ints: [ | 2260 ], ints: [ |
2253 0, | 2261 0, |
2254 0 | 2262 0 |
2255 ], referenceValidators: [ | 2263 ], referenceValidators: [ |
2256 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 2264 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
2257 expectedKind: ReferenceKind.unresolved, | 2265 expectedKind: ReferenceKind.unresolved, |
2258 checkAstDerivedDataOverride: true, | 2266 checkAstDerivedDataOverride: true, |
2259 prefixExpectations: [ | 2267 prefixExpectations: [ |
2260 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2268 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2261 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 2269 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
2262 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2270 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2263 ]) | 2271 ]) |
2264 ]); | 2272 ]); |
2265 } | 2273 } |
2266 | 2274 |
2267 test_constExpr_invokeConstructor_unresolved_named_prefixed2() { | 2275 test_constExpr_invokeConstructor_unresolved_named_prefixed2() { |
2268 addNamedSource('/a.dart', ''); | 2276 addNamedSource('/a.dart', ''); |
2269 UnlinkedVariable variable = serializeVariableText( | 2277 UnlinkedVariable variable = serializeVariableText( |
2270 ''' | 2278 ''' |
2271 import 'a.dart' as p; | 2279 import 'a.dart' as p; |
2272 const v = const p.C.foo(); | 2280 const v = const p.C.foo(); |
2273 ''', | 2281 ''', |
2274 allowErrors: true); | 2282 allowErrors: true); |
2275 _assertUnlinkedConst(variable.constExpr, operators: [ | 2283 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2276 UnlinkedConstOperation.invokeConstructor, | 2284 UnlinkedConstOperation.invokeConstructor, |
2277 ], ints: [ | 2285 ], ints: [ |
2278 0, | 2286 0, |
2279 0 | 2287 0 |
2280 ], referenceValidators: [ | 2288 ], referenceValidators: [ |
2281 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 2289 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
2282 expectedKind: ReferenceKind.unresolved, | 2290 expectedKind: ReferenceKind.unresolved, |
2283 checkAstDerivedDataOverride: true, | 2291 checkAstDerivedDataOverride: true, |
2284 prefixExpectations: [ | 2292 prefixExpectations: [ |
2285 new _PrefixExpectation(ReferenceKind.unresolved, 'C'), | 2293 new _PrefixExpectation(ReferenceKind.unresolved, 'C'), |
2286 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2294 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2287 ]) | 2295 ]) |
2288 ]); | 2296 ]); |
2289 } | 2297 } |
2290 | 2298 |
2291 test_constExpr_invokeConstructor_unresolved_unnamed() { | 2299 test_constExpr_invokeConstructor_unresolved_unnamed() { |
2292 UnlinkedVariable variable = serializeVariableText( | 2300 UnlinkedVariable variable = serializeVariableText( |
2293 ''' | 2301 ''' |
2294 const v = const Foo(); | 2302 const v = const Foo(); |
2295 ''', | 2303 ''', |
2296 allowErrors: true); | 2304 allowErrors: true); |
2297 _assertUnlinkedConst(variable.constExpr, operators: [ | 2305 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2298 UnlinkedConstOperation.invokeConstructor, | 2306 UnlinkedConstOperation.invokeConstructor, |
2299 ], ints: [ | 2307 ], ints: [ |
2300 0, | 2308 0, |
2301 0 | 2309 0 |
2302 ], referenceValidators: [ | 2310 ], referenceValidators: [ |
2303 (EntityRef r) => checkTypeRef(r, null, null, 'Foo', | 2311 (EntityRef r) => checkTypeRef(r, null, null, 'Foo', |
2304 expectedKind: ReferenceKind.unresolved, | 2312 expectedKind: ReferenceKind.unresolved, |
2305 checkAstDerivedDataOverride: true) | 2313 checkAstDerivedDataOverride: true) |
2306 ]); | 2314 ]); |
2307 } | 2315 } |
2308 | 2316 |
2309 test_constExpr_invokeMethodRef_identical() { | 2317 test_constExpr_invokeMethodRef_identical() { |
2310 UnlinkedVariable variable = | 2318 UnlinkedVariable variable = |
2311 serializeVariableText('const v = identical(42, null);'); | 2319 serializeVariableText('const v = identical(42, null);'); |
2312 _assertUnlinkedConst(variable.constExpr, operators: [ | 2320 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2313 UnlinkedConstOperation.pushInt, | 2321 UnlinkedConstOperation.pushInt, |
2314 UnlinkedConstOperation.pushNull, | 2322 UnlinkedConstOperation.pushNull, |
2315 UnlinkedConstOperation.invokeMethodRef | 2323 UnlinkedConstOperation.invokeMethodRef |
2316 ], ints: [ | 2324 ], ints: [ |
2317 42, | 2325 42, |
2318 0, | 2326 0, |
2319 2 | 2327 2 |
2320 ], referenceValidators: [ | 2328 ], referenceValidators: [ |
2321 (EntityRef r) { | 2329 (EntityRef r) { |
2322 checkTypeRef(r, 'dart:core', 'dart:core', 'identical', | 2330 checkTypeRef(r, 'dart:core', 'dart:core', 'identical', |
2323 expectedKind: ReferenceKind.topLevelFunction); | 2331 expectedKind: ReferenceKind.topLevelFunction); |
2324 } | 2332 } |
2325 ]); | 2333 ]); |
2326 } | 2334 } |
2327 | 2335 |
2328 test_constExpr_length_classConstField() { | 2336 test_constExpr_length_classConstField() { |
2329 UnlinkedVariable variable = serializeVariableText(''' | 2337 UnlinkedVariable variable = serializeVariableText(''' |
2330 class C { | 2338 class C { |
2331 static const int length = 0; | 2339 static const int length = 0; |
2332 } | 2340 } |
2333 const int v = C.length; | 2341 const int v = C.length; |
2334 '''); | 2342 '''); |
2335 _assertUnlinkedConst(variable.constExpr, operators: [ | 2343 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2336 UnlinkedConstOperation.pushReference | 2344 UnlinkedConstOperation.pushReference |
2337 ], referenceValidators: [ | 2345 ], referenceValidators: [ |
2338 (EntityRef r) => checkTypeRef(r, null, null, 'length', | 2346 (EntityRef r) => checkTypeRef(r, null, null, 'length', |
2339 expectedKind: ReferenceKind.propertyAccessor, | 2347 expectedKind: ReferenceKind.propertyAccessor, |
2340 prefixExpectations: [ | 2348 prefixExpectations: [ |
2341 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2349 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2342 ]) | 2350 ]) |
2343 ]); | 2351 ]); |
2344 } | 2352 } |
2345 | 2353 |
2346 test_constExpr_length_classConstField_imported_withPrefix() { | 2354 test_constExpr_length_classConstField_imported_withPrefix() { |
2347 addNamedSource( | 2355 addNamedSource( |
2348 '/a.dart', | 2356 '/a.dart', |
2349 ''' | 2357 ''' |
2350 class C { | 2358 class C { |
2351 static const int length = 0; | 2359 static const int length = 0; |
2352 } | 2360 } |
2353 '''); | 2361 '''); |
2354 UnlinkedVariable variable = serializeVariableText(''' | 2362 UnlinkedVariable variable = serializeVariableText(''' |
2355 import 'a.dart' as p; | 2363 import 'a.dart' as p; |
2356 const int v = p.C.length; | 2364 const int v = p.C.length; |
2357 '''); | 2365 '''); |
2358 _assertUnlinkedConst(variable.constExpr, operators: [ | 2366 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2359 UnlinkedConstOperation.pushReference | 2367 UnlinkedConstOperation.pushReference |
2360 ], referenceValidators: [ | 2368 ], referenceValidators: [ |
2361 (EntityRef r) => checkTypeRef(r, null, null, 'length', | 2369 (EntityRef r) => checkTypeRef(r, null, null, 'length', |
2362 expectedKind: ReferenceKind.propertyAccessor, | 2370 expectedKind: ReferenceKind.propertyAccessor, |
2363 prefixExpectations: [ | 2371 prefixExpectations: [ |
2364 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2372 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2365 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 2373 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
2366 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2374 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2367 ]) | 2375 ]) |
2368 ]); | 2376 ]); |
2369 } | 2377 } |
2370 | 2378 |
2371 test_constExpr_length_identifierTarget() { | 2379 test_constExpr_length_identifierTarget() { |
2372 UnlinkedVariable variable = serializeVariableText(''' | 2380 UnlinkedVariable variable = serializeVariableText(''' |
2373 const String a = 'aaa'; | 2381 const String a = 'aaa'; |
2374 const int v = a.length; | 2382 const int v = a.length; |
2375 '''); | 2383 '''); |
2376 _assertUnlinkedConst(variable.constExpr, operators: [ | 2384 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2377 UnlinkedConstOperation.pushReference | 2385 UnlinkedConstOperation.pushReference |
2378 ], referenceValidators: [ | 2386 ], referenceValidators: [ |
2379 (EntityRef r) => checkTypeRef(r, null, null, 'length', | 2387 (EntityRef r) => checkTypeRef(r, null, null, 'length', |
2380 expectedKind: ReferenceKind.unresolved, | 2388 expectedKind: ReferenceKind.unresolved, |
2381 unresolvedHasName: true, | 2389 unresolvedHasName: true, |
2382 prefixExpectations: [ | 2390 prefixExpectations: [ |
2383 new _PrefixExpectation( | 2391 new _PrefixExpectation( |
2384 ReferenceKind.topLevelPropertyAccessor, 'a') | 2392 ReferenceKind.topLevelPropertyAccessor, 'a') |
2385 ]) | 2393 ]) |
2386 ]); | 2394 ]); |
2387 } | 2395 } |
2388 | 2396 |
2389 test_constExpr_length_identifierTarget_classConstField() { | 2397 test_constExpr_length_identifierTarget_classConstField() { |
2390 UnlinkedVariable variable = serializeVariableText(''' | 2398 UnlinkedVariable variable = serializeVariableText(''' |
2391 class C { | 2399 class C { |
2392 static const String F = ''; | 2400 static const String F = ''; |
2393 } | 2401 } |
2394 const int v = C.F.length; | 2402 const int v = C.F.length; |
2395 '''); | 2403 '''); |
2396 _assertUnlinkedConst(variable.constExpr, operators: [ | 2404 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2397 UnlinkedConstOperation.pushReference | 2405 UnlinkedConstOperation.pushReference |
2398 ], referenceValidators: [ | 2406 ], referenceValidators: [ |
2399 (EntityRef r) => checkTypeRef(r, null, null, 'length', | 2407 (EntityRef r) => checkTypeRef(r, null, null, 'length', |
2400 expectedKind: ReferenceKind.unresolved, | 2408 expectedKind: ReferenceKind.unresolved, |
2401 unresolvedHasName: true, | 2409 unresolvedHasName: true, |
2402 prefixExpectations: [ | 2410 prefixExpectations: [ |
2403 new _PrefixExpectation(ReferenceKind.propertyAccessor, 'F'), | 2411 new _PrefixExpectation(ReferenceKind.propertyAccessor, 'F'), |
2404 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C'), | 2412 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C'), |
2405 ]) | 2413 ]) |
2406 ]); | 2414 ]); |
2407 } | 2415 } |
2408 | 2416 |
2409 test_constExpr_length_identifierTarget_imported() { | 2417 test_constExpr_length_identifierTarget_imported() { |
2410 addNamedSource( | 2418 addNamedSource( |
2411 '/a.dart', | 2419 '/a.dart', |
2412 ''' | 2420 ''' |
2413 const String a = 'aaa'; | 2421 const String a = 'aaa'; |
2414 '''); | 2422 '''); |
2415 UnlinkedVariable variable = serializeVariableText(''' | 2423 UnlinkedVariable variable = serializeVariableText(''' |
2416 import 'a.dart'; | 2424 import 'a.dart'; |
2417 const int v = a.length; | 2425 const int v = a.length; |
2418 '''); | 2426 '''); |
2419 _assertUnlinkedConst(variable.constExpr, operators: [ | 2427 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2420 UnlinkedConstOperation.pushReference | 2428 UnlinkedConstOperation.pushReference |
2421 ], referenceValidators: [ | 2429 ], referenceValidators: [ |
2422 (EntityRef r) => checkTypeRef(r, null, null, 'length', | 2430 (EntityRef r) => checkTypeRef(r, null, null, 'length', |
2423 expectedKind: ReferenceKind.unresolved, | 2431 expectedKind: ReferenceKind.unresolved, |
2424 unresolvedHasName: true, | 2432 unresolvedHasName: true, |
2425 prefixExpectations: [ | 2433 prefixExpectations: [ |
2426 new _PrefixExpectation( | 2434 new _PrefixExpectation( |
2427 ReferenceKind.topLevelPropertyAccessor, 'a', | 2435 ReferenceKind.topLevelPropertyAccessor, 'a', |
2428 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 2436 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
2429 ]) | 2437 ]) |
2430 ]); | 2438 ]); |
2431 } | 2439 } |
2432 | 2440 |
2433 test_constExpr_length_identifierTarget_imported_withPrefix() { | 2441 test_constExpr_length_identifierTarget_imported_withPrefix() { |
2434 addNamedSource( | 2442 addNamedSource( |
2435 '/a.dart', | 2443 '/a.dart', |
2436 ''' | 2444 ''' |
2437 const String a = 'aaa'; | 2445 const String a = 'aaa'; |
2438 '''); | 2446 '''); |
2439 UnlinkedVariable variable = serializeVariableText(''' | 2447 UnlinkedVariable variable = serializeVariableText(''' |
2440 import 'a.dart' as p; | 2448 import 'a.dart' as p; |
2441 const int v = p.a.length; | 2449 const int v = p.a.length; |
2442 '''); | 2450 '''); |
2443 _assertUnlinkedConst(variable.constExpr, operators: [ | 2451 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2444 UnlinkedConstOperation.pushReference | 2452 UnlinkedConstOperation.pushReference |
2445 ], referenceValidators: [ | 2453 ], referenceValidators: [ |
2446 (EntityRef r) => checkTypeRef(r, null, null, 'length', | 2454 (EntityRef r) => checkTypeRef(r, null, null, 'length', |
2447 expectedKind: ReferenceKind.unresolved, | 2455 expectedKind: ReferenceKind.unresolved, |
2448 unresolvedHasName: true, | 2456 unresolvedHasName: true, |
2449 prefixExpectations: [ | 2457 prefixExpectations: [ |
2450 new _PrefixExpectation( | 2458 new _PrefixExpectation( |
2451 ReferenceKind.topLevelPropertyAccessor, 'a', | 2459 ReferenceKind.topLevelPropertyAccessor, 'a', |
2452 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 2460 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
2453 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2461 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2454 ]) | 2462 ]) |
2455 ]); | 2463 ]); |
2456 } | 2464 } |
2457 | 2465 |
2458 test_constExpr_length_parenthesizedBinaryTarget() { | 2466 test_constExpr_length_parenthesizedBinaryTarget() { |
2459 UnlinkedVariable variable = | 2467 UnlinkedVariable variable = |
2460 serializeVariableText('const v = ("abc" + "edf").length;'); | 2468 serializeVariableText('const v = ("abc" + "edf").length;'); |
2461 _assertUnlinkedConst(variable.constExpr, operators: [ | 2469 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2462 UnlinkedConstOperation.pushString, | 2470 UnlinkedConstOperation.pushString, |
2463 UnlinkedConstOperation.pushString, | 2471 UnlinkedConstOperation.pushString, |
2464 UnlinkedConstOperation.add, | 2472 UnlinkedConstOperation.add, |
2465 UnlinkedConstOperation.extractProperty | 2473 UnlinkedConstOperation.extractProperty |
2466 ], strings: [ | 2474 ], strings: [ |
2467 'abc', | 2475 'abc', |
2468 'edf', | 2476 'edf', |
2469 'length' | 2477 'length' |
2470 ]); | 2478 ]); |
2471 } | 2479 } |
2472 | 2480 |
2473 test_constExpr_length_parenthesizedStringTarget() { | 2481 test_constExpr_length_parenthesizedStringTarget() { |
2474 UnlinkedVariable variable = | 2482 UnlinkedVariable variable = |
2475 serializeVariableText('const v = ("abc").length;'); | 2483 serializeVariableText('const v = ("abc").length;'); |
2476 _assertUnlinkedConst(variable.constExpr, operators: [ | 2484 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2477 UnlinkedConstOperation.pushString, | 2485 UnlinkedConstOperation.pushString, |
2478 UnlinkedConstOperation.extractProperty | 2486 UnlinkedConstOperation.extractProperty |
2479 ], strings: [ | 2487 ], strings: [ |
2480 'abc', | 2488 'abc', |
2481 'length' | 2489 'length' |
2482 ]); | 2490 ]); |
2483 } | 2491 } |
2484 | 2492 |
2485 test_constExpr_length_stringLiteralTarget() { | 2493 test_constExpr_length_stringLiteralTarget() { |
2486 UnlinkedVariable variable = | 2494 UnlinkedVariable variable = |
2487 serializeVariableText('const v = "abc".length;'); | 2495 serializeVariableText('const v = "abc".length;'); |
2488 _assertUnlinkedConst(variable.constExpr, operators: [ | 2496 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2489 UnlinkedConstOperation.pushString, | 2497 UnlinkedConstOperation.pushString, |
2490 UnlinkedConstOperation.extractProperty | 2498 UnlinkedConstOperation.extractProperty |
2491 ], strings: [ | 2499 ], strings: [ |
2492 'abc', | 2500 'abc', |
2493 'length' | 2501 'length' |
2494 ]); | 2502 ]); |
2495 } | 2503 } |
2496 | 2504 |
2497 test_constExpr_makeSymbol() { | 2505 test_constExpr_makeSymbol() { |
2498 UnlinkedVariable variable = serializeVariableText('const v = #a.bb.ccc;'); | 2506 UnlinkedVariable variable = serializeVariableText('const v = #a.bb.ccc;'); |
2499 _assertUnlinkedConst(variable.constExpr, | 2507 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2500 operators: [UnlinkedConstOperation.makeSymbol], strings: ['a.bb.ccc']); | 2508 operators: [UnlinkedConstOperation.makeSymbol], strings: ['a.bb.ccc']); |
2501 } | 2509 } |
2502 | 2510 |
2503 test_constExpr_makeTypedList() { | 2511 test_constExpr_makeTypedList() { |
2504 UnlinkedVariable variable = | 2512 UnlinkedVariable variable = |
2505 serializeVariableText('const v = const <int>[11, 22, 33];'); | 2513 serializeVariableText('const v = const <int>[11, 22, 33];'); |
2506 _assertUnlinkedConst(variable.constExpr, operators: [ | 2514 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2507 UnlinkedConstOperation.pushInt, | 2515 UnlinkedConstOperation.pushInt, |
2508 UnlinkedConstOperation.pushInt, | 2516 UnlinkedConstOperation.pushInt, |
2509 UnlinkedConstOperation.pushInt, | 2517 UnlinkedConstOperation.pushInt, |
2510 UnlinkedConstOperation.makeTypedList | 2518 UnlinkedConstOperation.makeTypedList |
2511 ], ints: [ | 2519 ], ints: [ |
2512 11, | 2520 11, |
2513 22, | 2521 22, |
2514 33, | 2522 33, |
2515 3 | 2523 3 |
2516 ], referenceValidators: [ | 2524 ], referenceValidators: [ |
2517 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'int', | 2525 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'int', |
2518 expectedKind: ReferenceKind.classOrEnum) | 2526 expectedKind: ReferenceKind.classOrEnum) |
2519 ]); | 2527 ]); |
2520 } | 2528 } |
2521 | 2529 |
2522 test_constExpr_makeTypedList_dynamic() { | 2530 test_constExpr_makeTypedList_dynamic() { |
2523 UnlinkedVariable variable = | 2531 UnlinkedVariable variable = |
2524 serializeVariableText('const v = const <dynamic>[11, 22, 33];'); | 2532 serializeVariableText('const v = const <dynamic>[11, 22, 33];'); |
2525 _assertUnlinkedConst(variable.constExpr, operators: [ | 2533 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2526 UnlinkedConstOperation.pushInt, | 2534 UnlinkedConstOperation.pushInt, |
2527 UnlinkedConstOperation.pushInt, | 2535 UnlinkedConstOperation.pushInt, |
2528 UnlinkedConstOperation.pushInt, | 2536 UnlinkedConstOperation.pushInt, |
2529 UnlinkedConstOperation.makeTypedList | 2537 UnlinkedConstOperation.makeTypedList |
2530 ], ints: [ | 2538 ], ints: [ |
2531 11, | 2539 11, |
2532 22, | 2540 22, |
2533 33, | 2541 33, |
2534 3 | 2542 3 |
2535 ], referenceValidators: [ | 2543 ], referenceValidators: [ |
2536 (EntityRef r) => checkDynamicTypeRef(r) | 2544 (EntityRef r) => checkDynamicTypeRef(r) |
2537 ]); | 2545 ]); |
2538 } | 2546 } |
2539 | 2547 |
2540 test_constExpr_makeTypedMap() { | 2548 test_constExpr_makeTypedMap() { |
2541 UnlinkedVariable variable = serializeVariableText( | 2549 UnlinkedVariable variable = serializeVariableText( |
2542 'const v = const <int, String>{11: "aaa", 22: "bbb", 33: "ccc"};'); | 2550 'const v = const <int, String>{11: "aaa", 22: "bbb", 33: "ccc"};'); |
2543 _assertUnlinkedConst(variable.constExpr, operators: [ | 2551 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2544 UnlinkedConstOperation.pushInt, | 2552 UnlinkedConstOperation.pushInt, |
2545 UnlinkedConstOperation.pushString, | 2553 UnlinkedConstOperation.pushString, |
2546 UnlinkedConstOperation.pushInt, | 2554 UnlinkedConstOperation.pushInt, |
2547 UnlinkedConstOperation.pushString, | 2555 UnlinkedConstOperation.pushString, |
2548 UnlinkedConstOperation.pushInt, | 2556 UnlinkedConstOperation.pushInt, |
2549 UnlinkedConstOperation.pushString, | 2557 UnlinkedConstOperation.pushString, |
2550 UnlinkedConstOperation.makeTypedMap | 2558 UnlinkedConstOperation.makeTypedMap |
2551 ], ints: [ | 2559 ], ints: [ |
2552 11, | 2560 11, |
2553 22, | 2561 22, |
2554 33, | 2562 33, |
2555 3 | 2563 3 |
2556 ], strings: [ | 2564 ], strings: [ |
2557 'aaa', | 2565 'aaa', |
2558 'bbb', | 2566 'bbb', |
2559 'ccc' | 2567 'ccc' |
2560 ], referenceValidators: [ | 2568 ], referenceValidators: [ |
2561 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'int', | 2569 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'int', |
2562 expectedKind: ReferenceKind.classOrEnum), | 2570 expectedKind: ReferenceKind.classOrEnum), |
2563 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'String', | 2571 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'String', |
2564 expectedKind: ReferenceKind.classOrEnum) | 2572 expectedKind: ReferenceKind.classOrEnum) |
2565 ]); | 2573 ]); |
2566 } | 2574 } |
2567 | 2575 |
2568 test_constExpr_makeTypedMap_dynamic() { | 2576 test_constExpr_makeTypedMap_dynamic() { |
2569 UnlinkedVariable variable = serializeVariableText( | 2577 UnlinkedVariable variable = serializeVariableText( |
2570 'const v = const <dynamic, dynamic>{11: "aaa", 22: "bbb", 33: "ccc"};'); | 2578 'const v = const <dynamic, dynamic>{11: "aaa", 22: "bbb", 33: "ccc"};'); |
2571 _assertUnlinkedConst(variable.constExpr, operators: [ | 2579 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2572 UnlinkedConstOperation.pushInt, | 2580 UnlinkedConstOperation.pushInt, |
2573 UnlinkedConstOperation.pushString, | 2581 UnlinkedConstOperation.pushString, |
2574 UnlinkedConstOperation.pushInt, | 2582 UnlinkedConstOperation.pushInt, |
2575 UnlinkedConstOperation.pushString, | 2583 UnlinkedConstOperation.pushString, |
2576 UnlinkedConstOperation.pushInt, | 2584 UnlinkedConstOperation.pushInt, |
2577 UnlinkedConstOperation.pushString, | 2585 UnlinkedConstOperation.pushString, |
2578 UnlinkedConstOperation.makeTypedMap | 2586 UnlinkedConstOperation.makeTypedMap |
2579 ], ints: [ | 2587 ], ints: [ |
2580 11, | 2588 11, |
2581 22, | 2589 22, |
2582 33, | 2590 33, |
2583 3 | 2591 3 |
2584 ], strings: [ | 2592 ], strings: [ |
2585 'aaa', | 2593 'aaa', |
2586 'bbb', | 2594 'bbb', |
2587 'ccc' | 2595 'ccc' |
2588 ], referenceValidators: [ | 2596 ], referenceValidators: [ |
2589 (EntityRef r) => checkDynamicTypeRef(r), | 2597 (EntityRef r) => checkDynamicTypeRef(r), |
2590 (EntityRef r) => checkDynamicTypeRef(r) | 2598 (EntityRef r) => checkDynamicTypeRef(r) |
2591 ]); | 2599 ]); |
2592 } | 2600 } |
2593 | 2601 |
2594 test_constExpr_makeUntypedList() { | 2602 test_constExpr_makeUntypedList() { |
2595 UnlinkedVariable variable = | 2603 UnlinkedVariable variable = |
2596 serializeVariableText('const v = const [11, 22, 33];'); | 2604 serializeVariableText('const v = const [11, 22, 33];'); |
2597 _assertUnlinkedConst(variable.constExpr, operators: [ | 2605 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2598 UnlinkedConstOperation.pushInt, | 2606 UnlinkedConstOperation.pushInt, |
2599 UnlinkedConstOperation.pushInt, | 2607 UnlinkedConstOperation.pushInt, |
2600 UnlinkedConstOperation.pushInt, | 2608 UnlinkedConstOperation.pushInt, |
2601 UnlinkedConstOperation.makeUntypedList | 2609 UnlinkedConstOperation.makeUntypedList |
2602 ], ints: [ | 2610 ], ints: [ |
2603 11, | 2611 11, |
2604 22, | 2612 22, |
2605 33, | 2613 33, |
2606 3 | 2614 3 |
2607 ]); | 2615 ]); |
2608 } | 2616 } |
2609 | 2617 |
2610 test_constExpr_makeUntypedMap() { | 2618 test_constExpr_makeUntypedMap() { |
2611 UnlinkedVariable variable = serializeVariableText( | 2619 UnlinkedVariable variable = serializeVariableText( |
2612 'const v = const {11: "aaa", 22: "bbb", 33: "ccc"};'); | 2620 'const v = const {11: "aaa", 22: "bbb", 33: "ccc"};'); |
2613 _assertUnlinkedConst(variable.constExpr, operators: [ | 2621 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2614 UnlinkedConstOperation.pushInt, | 2622 UnlinkedConstOperation.pushInt, |
2615 UnlinkedConstOperation.pushString, | 2623 UnlinkedConstOperation.pushString, |
2616 UnlinkedConstOperation.pushInt, | 2624 UnlinkedConstOperation.pushInt, |
2617 UnlinkedConstOperation.pushString, | 2625 UnlinkedConstOperation.pushString, |
2618 UnlinkedConstOperation.pushInt, | 2626 UnlinkedConstOperation.pushInt, |
2619 UnlinkedConstOperation.pushString, | 2627 UnlinkedConstOperation.pushString, |
2620 UnlinkedConstOperation.makeUntypedMap | 2628 UnlinkedConstOperation.makeUntypedMap |
2621 ], ints: [ | 2629 ], ints: [ |
2622 11, | 2630 11, |
2623 22, | 2631 22, |
2624 33, | 2632 33, |
2625 3 | 2633 3 |
2626 ], strings: [ | 2634 ], strings: [ |
2627 'aaa', | 2635 'aaa', |
2628 'bbb', | 2636 'bbb', |
2629 'ccc' | 2637 'ccc' |
2630 ]); | 2638 ]); |
2631 } | 2639 } |
2632 | 2640 |
2633 test_constExpr_parenthesized() { | 2641 test_constExpr_parenthesized() { |
2634 UnlinkedVariable variable = serializeVariableText('const v = (1 + 2) * 3;'); | 2642 UnlinkedVariable variable = serializeVariableText('const v = (1 + 2) * 3;'); |
2635 _assertUnlinkedConst(variable.constExpr, operators: [ | 2643 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2636 UnlinkedConstOperation.pushInt, | 2644 UnlinkedConstOperation.pushInt, |
2637 UnlinkedConstOperation.pushInt, | 2645 UnlinkedConstOperation.pushInt, |
2638 UnlinkedConstOperation.add, | 2646 UnlinkedConstOperation.add, |
2639 UnlinkedConstOperation.pushInt, | 2647 UnlinkedConstOperation.pushInt, |
2640 UnlinkedConstOperation.multiply, | 2648 UnlinkedConstOperation.multiply, |
2641 ], ints: [ | 2649 ], ints: [ |
2642 1, | 2650 1, |
2643 2, | 2651 2, |
2644 3 | 2652 3 |
2645 ]); | 2653 ]); |
2646 } | 2654 } |
2647 | 2655 |
2648 test_constExpr_prefix_complement() { | 2656 test_constExpr_prefix_complement() { |
2649 UnlinkedVariable variable = serializeVariableText('const v = ~2;'); | 2657 UnlinkedVariable variable = serializeVariableText('const v = ~2;'); |
2650 _assertUnlinkedConst(variable.constExpr, operators: [ | 2658 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2651 UnlinkedConstOperation.pushInt, | 2659 UnlinkedConstOperation.pushInt, |
2652 UnlinkedConstOperation.complement | 2660 UnlinkedConstOperation.complement |
2653 ], ints: [ | 2661 ], ints: [ |
2654 2 | 2662 2 |
2655 ]); | 2663 ]); |
2656 } | 2664 } |
2657 | 2665 |
2658 test_constExpr_prefix_negate() { | 2666 test_constExpr_prefix_negate() { |
2659 UnlinkedVariable variable = serializeVariableText('const v = -(2);'); | 2667 UnlinkedVariable variable = serializeVariableText('const v = -(2);'); |
2660 _assertUnlinkedConst(variable.constExpr, operators: [ | 2668 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2661 UnlinkedConstOperation.pushInt, | 2669 UnlinkedConstOperation.pushInt, |
2662 UnlinkedConstOperation.negate | 2670 UnlinkedConstOperation.negate |
2663 ], ints: [ | 2671 ], ints: [ |
2664 2 | 2672 2 |
2665 ]); | 2673 ]); |
2666 } | 2674 } |
2667 | 2675 |
2668 test_constExpr_prefix_not() { | 2676 test_constExpr_prefix_not() { |
2669 UnlinkedVariable variable = serializeVariableText('const v = !true;'); | 2677 UnlinkedVariable variable = serializeVariableText('const v = !true;'); |
2670 _assertUnlinkedConst(variable.constExpr, operators: [ | 2678 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2671 UnlinkedConstOperation.pushTrue, | 2679 UnlinkedConstOperation.pushTrue, |
2672 UnlinkedConstOperation.not | 2680 UnlinkedConstOperation.not |
2673 ]); | 2681 ]); |
2674 } | 2682 } |
2675 | 2683 |
2676 test_constExpr_pushDouble() { | 2684 test_constExpr_pushDouble() { |
2677 UnlinkedVariable variable = serializeVariableText('const v = 123.4567;'); | 2685 UnlinkedVariable variable = serializeVariableText('const v = 123.4567;'); |
2678 _assertUnlinkedConst(variable.constExpr, | 2686 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2679 operators: [UnlinkedConstOperation.pushDouble], doubles: [123.4567]); | 2687 operators: [UnlinkedConstOperation.pushDouble], doubles: [123.4567]); |
2680 } | 2688 } |
2681 | 2689 |
2682 test_constExpr_pushFalse() { | 2690 test_constExpr_pushFalse() { |
2683 UnlinkedVariable variable = serializeVariableText('const v = false;'); | 2691 UnlinkedVariable variable = serializeVariableText('const v = false;'); |
2684 _assertUnlinkedConst(variable.constExpr, | 2692 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2685 operators: [UnlinkedConstOperation.pushFalse]); | 2693 operators: [UnlinkedConstOperation.pushFalse]); |
2686 } | 2694 } |
2687 | 2695 |
2688 test_constExpr_pushInt() { | 2696 test_constExpr_pushInt() { |
2689 UnlinkedVariable variable = serializeVariableText('const v = 1;'); | 2697 UnlinkedVariable variable = serializeVariableText('const v = 1;'); |
2690 _assertUnlinkedConst(variable.constExpr, | 2698 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2691 operators: [UnlinkedConstOperation.pushInt], ints: [1]); | 2699 operators: [UnlinkedConstOperation.pushInt], ints: [1]); |
2692 } | 2700 } |
2693 | 2701 |
2694 test_constExpr_pushInt_max() { | 2702 test_constExpr_pushInt_max() { |
2695 UnlinkedVariable variable = serializeVariableText('const v = 0xFFFFFFFF;'); | 2703 UnlinkedVariable variable = serializeVariableText('const v = 0xFFFFFFFF;'); |
2696 _assertUnlinkedConst(variable.constExpr, | 2704 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2697 operators: [UnlinkedConstOperation.pushInt,], ints: [0xFFFFFFFF]); | 2705 operators: [UnlinkedConstOperation.pushInt,], ints: [0xFFFFFFFF]); |
2698 } | 2706 } |
2699 | 2707 |
2700 test_constExpr_pushInt_negative() { | 2708 test_constExpr_pushInt_negative() { |
2701 UnlinkedVariable variable = serializeVariableText('const v = -5;'); | 2709 UnlinkedVariable variable = serializeVariableText('const v = -5;'); |
2702 _assertUnlinkedConst(variable.constExpr, operators: [ | 2710 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2703 UnlinkedConstOperation.pushInt, | 2711 UnlinkedConstOperation.pushInt, |
2704 UnlinkedConstOperation.negate | 2712 UnlinkedConstOperation.negate |
2705 ], ints: [ | 2713 ], ints: [ |
2706 5 | 2714 5 |
2707 ]); | 2715 ]); |
2708 } | 2716 } |
2709 | 2717 |
2710 test_constExpr_pushLongInt() { | 2718 test_constExpr_pushLongInt() { |
2711 UnlinkedVariable variable = | 2719 UnlinkedVariable variable = |
2712 serializeVariableText('const v = 0xA123456789ABCDEF012345678;'); | 2720 serializeVariableText('const v = 0xA123456789ABCDEF012345678;'); |
2713 _assertUnlinkedConst(variable.constExpr, | 2721 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2714 operators: [UnlinkedConstOperation.pushLongInt], | 2722 operators: [UnlinkedConstOperation.pushLongInt], |
2715 ints: [4, 0xA, 0x12345678, 0x9ABCDEF0, 0x12345678]); | 2723 ints: [4, 0xA, 0x12345678, 0x9ABCDEF0, 0x12345678]); |
2716 } | 2724 } |
2717 | 2725 |
2718 test_constExpr_pushLongInt_min2() { | 2726 test_constExpr_pushLongInt_min2() { |
2719 UnlinkedVariable variable = serializeVariableText('const v = 0x100000000;'); | 2727 UnlinkedVariable variable = serializeVariableText('const v = 0x100000000;'); |
2720 _assertUnlinkedConst(variable.constExpr, | 2728 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2721 operators: [UnlinkedConstOperation.pushLongInt], ints: [2, 1, 0,]); | 2729 operators: [UnlinkedConstOperation.pushLongInt], ints: [2, 1, 0,]); |
2722 } | 2730 } |
2723 | 2731 |
2724 test_constExpr_pushLongInt_min3() { | 2732 test_constExpr_pushLongInt_min3() { |
2725 UnlinkedVariable variable = | 2733 UnlinkedVariable variable = |
2726 serializeVariableText('const v = 0x10000000000000000;'); | 2734 serializeVariableText('const v = 0x10000000000000000;'); |
2727 _assertUnlinkedConst(variable.constExpr, | 2735 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2728 operators: [UnlinkedConstOperation.pushLongInt], ints: [3, 1, 0, 0,]); | 2736 operators: [UnlinkedConstOperation.pushLongInt], ints: [3, 1, 0, 0,]); |
2729 } | 2737 } |
2730 | 2738 |
2731 test_constExpr_pushNull() { | 2739 test_constExpr_pushNull() { |
2732 UnlinkedVariable variable = serializeVariableText('const v = null;'); | 2740 UnlinkedVariable variable = serializeVariableText('const v = null;'); |
2733 _assertUnlinkedConst(variable.constExpr, | 2741 _assertUnlinkedConst(variable.initializer.bodyExpr, |
2734 operators: [UnlinkedConstOperation.pushNull]); | 2742 operators: [UnlinkedConstOperation.pushNull]); |
2735 } | 2743 } |
2736 | 2744 |
2737 test_constExpr_pushReference_class() { | 2745 test_constExpr_pushReference_class() { |
2738 UnlinkedVariable variable = serializeVariableText(''' | 2746 UnlinkedVariable variable = serializeVariableText(''' |
2739 class C {} | 2747 class C {} |
2740 const v = C; | 2748 const v = C; |
2741 '''); | 2749 '''); |
2742 _assertUnlinkedConst(variable.constExpr, operators: [ | 2750 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2743 UnlinkedConstOperation.pushReference | 2751 UnlinkedConstOperation.pushReference |
2744 ], referenceValidators: [ | 2752 ], referenceValidators: [ |
2745 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 2753 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
2746 expectedKind: ReferenceKind.classOrEnum) | 2754 expectedKind: ReferenceKind.classOrEnum) |
2747 ]); | 2755 ]); |
2748 } | 2756 } |
2749 | 2757 |
2750 test_constExpr_pushReference_enum() { | 2758 test_constExpr_pushReference_enum() { |
2751 UnlinkedVariable variable = serializeVariableText(''' | 2759 UnlinkedVariable variable = serializeVariableText(''' |
2752 enum C {V1, V2, V3} | 2760 enum C {V1, V2, V3} |
2753 const v = C; | 2761 const v = C; |
2754 '''); | 2762 '''); |
2755 _assertUnlinkedConst(variable.constExpr, operators: [ | 2763 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2756 UnlinkedConstOperation.pushReference | 2764 UnlinkedConstOperation.pushReference |
2757 ], referenceValidators: [ | 2765 ], referenceValidators: [ |
2758 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 2766 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
2759 expectedKind: ReferenceKind.classOrEnum) | 2767 expectedKind: ReferenceKind.classOrEnum) |
2760 ]); | 2768 ]); |
2761 } | 2769 } |
2762 | 2770 |
2763 test_constExpr_pushReference_enumValue() { | 2771 test_constExpr_pushReference_enumValue() { |
2764 UnlinkedVariable variable = serializeVariableText(''' | 2772 UnlinkedVariable variable = serializeVariableText(''' |
2765 enum C {V1, V2, V3} | 2773 enum C {V1, V2, V3} |
2766 const v = C.V1; | 2774 const v = C.V1; |
2767 '''); | 2775 '''); |
2768 _assertUnlinkedConst(variable.constExpr, operators: [ | 2776 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2769 UnlinkedConstOperation.pushReference | 2777 UnlinkedConstOperation.pushReference |
2770 ], referenceValidators: [ | 2778 ], referenceValidators: [ |
2771 (EntityRef r) => checkTypeRef(r, null, null, 'V1', | 2779 (EntityRef r) => checkTypeRef(r, null, null, 'V1', |
2772 expectedKind: ReferenceKind.propertyAccessor, | 2780 expectedKind: ReferenceKind.propertyAccessor, |
2773 prefixExpectations: [ | 2781 prefixExpectations: [ |
2774 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2782 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2775 ]) | 2783 ]) |
2776 ]); | 2784 ]); |
2777 } | 2785 } |
2778 | 2786 |
2779 test_constExpr_pushReference_enumValue_viaImport() { | 2787 test_constExpr_pushReference_enumValue_viaImport() { |
2780 addNamedSource( | 2788 addNamedSource( |
2781 '/a.dart', | 2789 '/a.dart', |
2782 ''' | 2790 ''' |
2783 enum C {V1, V2, V3} | 2791 enum C {V1, V2, V3} |
2784 '''); | 2792 '''); |
2785 UnlinkedVariable variable = serializeVariableText(''' | 2793 UnlinkedVariable variable = serializeVariableText(''' |
2786 import 'a.dart'; | 2794 import 'a.dart'; |
2787 const v = C.V1; | 2795 const v = C.V1; |
2788 '''); | 2796 '''); |
2789 _assertUnlinkedConst(variable.constExpr, operators: [ | 2797 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2790 UnlinkedConstOperation.pushReference | 2798 UnlinkedConstOperation.pushReference |
2791 ], referenceValidators: [ | 2799 ], referenceValidators: [ |
2792 (EntityRef r) => checkTypeRef(r, null, null, 'V1', | 2800 (EntityRef r) => checkTypeRef(r, null, null, 'V1', |
2793 expectedKind: ReferenceKind.propertyAccessor, | 2801 expectedKind: ReferenceKind.propertyAccessor, |
2794 prefixExpectations: [ | 2802 prefixExpectations: [ |
2795 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2803 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2796 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 2804 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
2797 ]) | 2805 ]) |
2798 ]); | 2806 ]); |
2799 } | 2807 } |
2800 | 2808 |
2801 test_constExpr_pushReference_enumValues() { | 2809 test_constExpr_pushReference_enumValues() { |
2802 UnlinkedVariable variable = serializeVariableText(''' | 2810 UnlinkedVariable variable = serializeVariableText(''' |
2803 enum C {V1, V2, V3} | 2811 enum C {V1, V2, V3} |
2804 const v = C.values; | 2812 const v = C.values; |
2805 '''); | 2813 '''); |
2806 _assertUnlinkedConst(variable.constExpr, operators: [ | 2814 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2807 UnlinkedConstOperation.pushReference | 2815 UnlinkedConstOperation.pushReference |
2808 ], referenceValidators: [ | 2816 ], referenceValidators: [ |
2809 (EntityRef r) => checkTypeRef(r, null, null, 'values', | 2817 (EntityRef r) => checkTypeRef(r, null, null, 'values', |
2810 expectedKind: ReferenceKind.propertyAccessor, | 2818 expectedKind: ReferenceKind.propertyAccessor, |
2811 prefixExpectations: [ | 2819 prefixExpectations: [ |
2812 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2820 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2813 ]) | 2821 ]) |
2814 ]); | 2822 ]); |
2815 } | 2823 } |
2816 | 2824 |
2817 test_constExpr_pushReference_enumValues_viaImport() { | 2825 test_constExpr_pushReference_enumValues_viaImport() { |
2818 addNamedSource( | 2826 addNamedSource( |
2819 '/a.dart', | 2827 '/a.dart', |
2820 ''' | 2828 ''' |
2821 enum C {V1, V2, V3} | 2829 enum C {V1, V2, V3} |
2822 '''); | 2830 '''); |
2823 UnlinkedVariable variable = serializeVariableText(''' | 2831 UnlinkedVariable variable = serializeVariableText(''' |
2824 import 'a.dart'; | 2832 import 'a.dart'; |
2825 const v = C.values; | 2833 const v = C.values; |
2826 '''); | 2834 '''); |
2827 _assertUnlinkedConst(variable.constExpr, operators: [ | 2835 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2828 UnlinkedConstOperation.pushReference | 2836 UnlinkedConstOperation.pushReference |
2829 ], referenceValidators: [ | 2837 ], referenceValidators: [ |
2830 (EntityRef r) => checkTypeRef(r, null, null, 'values', | 2838 (EntityRef r) => checkTypeRef(r, null, null, 'values', |
2831 expectedKind: ReferenceKind.propertyAccessor, | 2839 expectedKind: ReferenceKind.propertyAccessor, |
2832 prefixExpectations: [ | 2840 prefixExpectations: [ |
2833 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2841 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2834 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 2842 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
2835 ]) | 2843 ]) |
2836 ]); | 2844 ]); |
2837 } | 2845 } |
2838 | 2846 |
2839 test_constExpr_pushReference_field() { | 2847 test_constExpr_pushReference_field() { |
2840 UnlinkedVariable variable = serializeVariableText(''' | 2848 UnlinkedVariable variable = serializeVariableText(''' |
2841 class C { | 2849 class C { |
2842 static const int F = 1; | 2850 static const int F = 1; |
2843 } | 2851 } |
2844 const v = C.F; | 2852 const v = C.F; |
2845 '''); | 2853 '''); |
2846 _assertUnlinkedConst(variable.constExpr, operators: [ | 2854 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2847 UnlinkedConstOperation.pushReference | 2855 UnlinkedConstOperation.pushReference |
2848 ], referenceValidators: [ | 2856 ], referenceValidators: [ |
2849 (EntityRef r) => checkTypeRef(r, null, null, 'F', | 2857 (EntityRef r) => checkTypeRef(r, null, null, 'F', |
2850 expectedKind: ReferenceKind.propertyAccessor, | 2858 expectedKind: ReferenceKind.propertyAccessor, |
2851 prefixExpectations: [ | 2859 prefixExpectations: [ |
2852 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2860 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2853 ]) | 2861 ]) |
2854 ]); | 2862 ]); |
2855 } | 2863 } |
2856 | 2864 |
2857 test_constExpr_pushReference_field_imported() { | 2865 test_constExpr_pushReference_field_imported() { |
2858 addNamedSource( | 2866 addNamedSource( |
2859 '/a.dart', | 2867 '/a.dart', |
2860 ''' | 2868 ''' |
2861 class C { | 2869 class C { |
2862 static const int F = 1; | 2870 static const int F = 1; |
2863 } | 2871 } |
2864 '''); | 2872 '''); |
2865 UnlinkedVariable variable = serializeVariableText(''' | 2873 UnlinkedVariable variable = serializeVariableText(''' |
2866 import 'a.dart'; | 2874 import 'a.dart'; |
2867 const v = C.F; | 2875 const v = C.F; |
2868 '''); | 2876 '''); |
2869 _assertUnlinkedConst(variable.constExpr, operators: [ | 2877 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2870 UnlinkedConstOperation.pushReference | 2878 UnlinkedConstOperation.pushReference |
2871 ], referenceValidators: [ | 2879 ], referenceValidators: [ |
2872 (EntityRef r) => checkTypeRef(r, null, null, 'F', | 2880 (EntityRef r) => checkTypeRef(r, null, null, 'F', |
2873 expectedKind: ReferenceKind.propertyAccessor, | 2881 expectedKind: ReferenceKind.propertyAccessor, |
2874 prefixExpectations: [ | 2882 prefixExpectations: [ |
2875 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2883 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2876 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 2884 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
2877 ]) | 2885 ]) |
2878 ]); | 2886 ]); |
2879 } | 2887 } |
2880 | 2888 |
2881 test_constExpr_pushReference_field_imported_withPrefix() { | 2889 test_constExpr_pushReference_field_imported_withPrefix() { |
2882 addNamedSource( | 2890 addNamedSource( |
2883 '/a.dart', | 2891 '/a.dart', |
2884 ''' | 2892 ''' |
2885 class C { | 2893 class C { |
2886 static const int F = 1; | 2894 static const int F = 1; |
2887 } | 2895 } |
2888 '''); | 2896 '''); |
2889 UnlinkedVariable variable = serializeVariableText(''' | 2897 UnlinkedVariable variable = serializeVariableText(''' |
2890 import 'a.dart' as p; | 2898 import 'a.dart' as p; |
2891 const v = p.C.F; | 2899 const v = p.C.F; |
2892 '''); | 2900 '''); |
2893 _assertUnlinkedConst(variable.constExpr, operators: [ | 2901 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2894 UnlinkedConstOperation.pushReference | 2902 UnlinkedConstOperation.pushReference |
2895 ], referenceValidators: [ | 2903 ], referenceValidators: [ |
2896 (EntityRef r) => checkTypeRef(r, null, null, 'F', | 2904 (EntityRef r) => checkTypeRef(r, null, null, 'F', |
2897 expectedKind: ReferenceKind.propertyAccessor, | 2905 expectedKind: ReferenceKind.propertyAccessor, |
2898 prefixExpectations: [ | 2906 prefixExpectations: [ |
2899 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2907 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2900 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 2908 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
2901 new _PrefixExpectation(ReferenceKind.prefix, 'p'), | 2909 new _PrefixExpectation(ReferenceKind.prefix, 'p'), |
2902 ]) | 2910 ]) |
2903 ]); | 2911 ]); |
2904 } | 2912 } |
2905 | 2913 |
2906 test_constExpr_pushReference_field_simpleIdentifier() { | 2914 test_constExpr_pushReference_field_simpleIdentifier() { |
2907 UnlinkedVariable variable = serializeClassText(''' | 2915 UnlinkedVariable variable = serializeClassText(''' |
2908 class C { | 2916 class C { |
2909 static const a = b; | 2917 static const a = b; |
2910 static const b = null; | 2918 static const b = null; |
2911 } | 2919 } |
2912 ''').fields[0]; | 2920 ''').fields[0]; |
2913 _assertUnlinkedConst(variable.constExpr, operators: [ | 2921 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2914 UnlinkedConstOperation.pushReference | 2922 UnlinkedConstOperation.pushReference |
2915 ], referenceValidators: [ | 2923 ], referenceValidators: [ |
2916 (EntityRef r) => checkTypeRef(r, null, null, 'b', | 2924 (EntityRef r) => checkTypeRef(r, null, null, 'b', |
2917 expectedKind: ReferenceKind.propertyAccessor, | 2925 expectedKind: ReferenceKind.propertyAccessor, |
2918 prefixExpectations: [ | 2926 prefixExpectations: [ |
2919 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2927 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2920 ]) | 2928 ]) |
2921 ]); | 2929 ]); |
2922 } | 2930 } |
2923 | 2931 |
2924 test_constExpr_pushReference_staticGetter() { | 2932 test_constExpr_pushReference_staticGetter() { |
2925 UnlinkedVariable variable = serializeVariableText(''' | 2933 UnlinkedVariable variable = serializeVariableText(''' |
2926 class C { | 2934 class C { |
2927 static int get x => null; | 2935 static int get x => null; |
2928 } | 2936 } |
2929 const v = C.x; | 2937 const v = C.x; |
2930 '''); | 2938 '''); |
2931 _assertUnlinkedConst(variable.constExpr, operators: [ | 2939 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2932 UnlinkedConstOperation.pushReference | 2940 UnlinkedConstOperation.pushReference |
2933 ], referenceValidators: [ | 2941 ], referenceValidators: [ |
2934 (EntityRef r) => checkTypeRef(r, null, null, 'x', | 2942 (EntityRef r) => checkTypeRef(r, null, null, 'x', |
2935 expectedKind: ReferenceKind.propertyAccessor, | 2943 expectedKind: ReferenceKind.propertyAccessor, |
2936 prefixExpectations: [ | 2944 prefixExpectations: [ |
2937 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 2945 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
2938 ]) | 2946 ]) |
2939 ]); | 2947 ]); |
2940 } | 2948 } |
2941 | 2949 |
2942 test_constExpr_pushReference_staticGetter_imported() { | 2950 test_constExpr_pushReference_staticGetter_imported() { |
2943 addNamedSource( | 2951 addNamedSource( |
2944 '/a.dart', | 2952 '/a.dart', |
2945 ''' | 2953 ''' |
2946 class C { | 2954 class C { |
2947 static int get x => null; | 2955 static int get x => null; |
2948 } | 2956 } |
2949 '''); | 2957 '''); |
2950 UnlinkedVariable variable = serializeVariableText(''' | 2958 UnlinkedVariable variable = serializeVariableText(''' |
2951 import 'a.dart'; | 2959 import 'a.dart'; |
2952 const v = C.x; | 2960 const v = C.x; |
2953 '''); | 2961 '''); |
2954 _assertUnlinkedConst(variable.constExpr, operators: [ | 2962 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2955 UnlinkedConstOperation.pushReference | 2963 UnlinkedConstOperation.pushReference |
2956 ], referenceValidators: [ | 2964 ], referenceValidators: [ |
2957 (EntityRef r) => checkTypeRef(r, null, null, 'x', | 2965 (EntityRef r) => checkTypeRef(r, null, null, 'x', |
2958 expectedKind: ReferenceKind.propertyAccessor, | 2966 expectedKind: ReferenceKind.propertyAccessor, |
2959 prefixExpectations: [ | 2967 prefixExpectations: [ |
2960 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2968 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2961 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 2969 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
2962 ]) | 2970 ]) |
2963 ]); | 2971 ]); |
2964 } | 2972 } |
2965 | 2973 |
2966 test_constExpr_pushReference_staticGetter_imported_withPrefix() { | 2974 test_constExpr_pushReference_staticGetter_imported_withPrefix() { |
2967 addNamedSource( | 2975 addNamedSource( |
2968 '/a.dart', | 2976 '/a.dart', |
2969 ''' | 2977 ''' |
2970 class C { | 2978 class C { |
2971 static int get x => null; | 2979 static int get x => null; |
2972 } | 2980 } |
2973 '''); | 2981 '''); |
2974 UnlinkedVariable variable = serializeVariableText(''' | 2982 UnlinkedVariable variable = serializeVariableText(''' |
2975 import 'a.dart' as p; | 2983 import 'a.dart' as p; |
2976 const v = p.C.x; | 2984 const v = p.C.x; |
2977 '''); | 2985 '''); |
2978 _assertUnlinkedConst(variable.constExpr, operators: [ | 2986 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2979 UnlinkedConstOperation.pushReference | 2987 UnlinkedConstOperation.pushReference |
2980 ], referenceValidators: [ | 2988 ], referenceValidators: [ |
2981 (EntityRef r) => checkTypeRef(r, null, null, 'x', | 2989 (EntityRef r) => checkTypeRef(r, null, null, 'x', |
2982 expectedKind: ReferenceKind.propertyAccessor, | 2990 expectedKind: ReferenceKind.propertyAccessor, |
2983 prefixExpectations: [ | 2991 prefixExpectations: [ |
2984 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 2992 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
2985 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 2993 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
2986 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 2994 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
2987 ]) | 2995 ]) |
2988 ]); | 2996 ]); |
2989 } | 2997 } |
2990 | 2998 |
2991 test_constExpr_pushReference_staticMethod() { | 2999 test_constExpr_pushReference_staticMethod() { |
2992 UnlinkedVariable variable = serializeVariableText(''' | 3000 UnlinkedVariable variable = serializeVariableText(''' |
2993 class C { | 3001 class C { |
2994 static m() {} | 3002 static m() {} |
2995 } | 3003 } |
2996 const v = C.m; | 3004 const v = C.m; |
2997 '''); | 3005 '''); |
2998 _assertUnlinkedConst(variable.constExpr, operators: [ | 3006 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
2999 UnlinkedConstOperation.pushReference | 3007 UnlinkedConstOperation.pushReference |
3000 ], referenceValidators: [ | 3008 ], referenceValidators: [ |
3001 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 3009 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
3002 expectedKind: ReferenceKind.method, | 3010 expectedKind: ReferenceKind.method, |
3003 prefixExpectations: [ | 3011 prefixExpectations: [ |
3004 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 3012 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
3005 ]) | 3013 ]) |
3006 ]); | 3014 ]); |
3007 } | 3015 } |
3008 | 3016 |
3009 test_constExpr_pushReference_staticMethod_imported() { | 3017 test_constExpr_pushReference_staticMethod_imported() { |
3010 addNamedSource( | 3018 addNamedSource( |
3011 '/a.dart', | 3019 '/a.dart', |
3012 ''' | 3020 ''' |
3013 class C { | 3021 class C { |
3014 static m() {} | 3022 static m() {} |
3015 } | 3023 } |
3016 '''); | 3024 '''); |
3017 UnlinkedVariable variable = serializeVariableText(''' | 3025 UnlinkedVariable variable = serializeVariableText(''' |
3018 import 'a.dart'; | 3026 import 'a.dart'; |
3019 const v = C.m; | 3027 const v = C.m; |
3020 '''); | 3028 '''); |
3021 _assertUnlinkedConst(variable.constExpr, operators: [ | 3029 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3022 UnlinkedConstOperation.pushReference | 3030 UnlinkedConstOperation.pushReference |
3023 ], referenceValidators: [ | 3031 ], referenceValidators: [ |
3024 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 3032 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
3025 expectedKind: ReferenceKind.method, | 3033 expectedKind: ReferenceKind.method, |
3026 prefixExpectations: [ | 3034 prefixExpectations: [ |
3027 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 3035 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
3028 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') | 3036 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart') |
3029 ]) | 3037 ]) |
3030 ]); | 3038 ]); |
3031 } | 3039 } |
3032 | 3040 |
3033 test_constExpr_pushReference_staticMethod_imported_withPrefix() { | 3041 test_constExpr_pushReference_staticMethod_imported_withPrefix() { |
3034 addNamedSource( | 3042 addNamedSource( |
3035 '/a.dart', | 3043 '/a.dart', |
3036 ''' | 3044 ''' |
3037 class C { | 3045 class C { |
3038 static m() {} | 3046 static m() {} |
3039 } | 3047 } |
3040 '''); | 3048 '''); |
3041 UnlinkedVariable variable = serializeVariableText(''' | 3049 UnlinkedVariable variable = serializeVariableText(''' |
3042 import 'a.dart' as p; | 3050 import 'a.dart' as p; |
3043 const v = p.C.m; | 3051 const v = p.C.m; |
3044 '''); | 3052 '''); |
3045 _assertUnlinkedConst(variable.constExpr, operators: [ | 3053 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3046 UnlinkedConstOperation.pushReference | 3054 UnlinkedConstOperation.pushReference |
3047 ], referenceValidators: [ | 3055 ], referenceValidators: [ |
3048 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 3056 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
3049 expectedKind: ReferenceKind.method, | 3057 expectedKind: ReferenceKind.method, |
3050 prefixExpectations: [ | 3058 prefixExpectations: [ |
3051 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 3059 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
3052 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 3060 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
3053 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 3061 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
3054 ]) | 3062 ]) |
3055 ]); | 3063 ]); |
3056 } | 3064 } |
3057 | 3065 |
3058 test_constExpr_pushReference_staticMethod_simpleIdentifier() { | 3066 test_constExpr_pushReference_staticMethod_simpleIdentifier() { |
3059 UnlinkedVariable variable = serializeClassText(''' | 3067 UnlinkedVariable variable = serializeClassText(''' |
3060 class C { | 3068 class C { |
3061 static const a = m; | 3069 static const a = m; |
3062 static m() {} | 3070 static m() {} |
3063 } | 3071 } |
3064 ''').fields[0]; | 3072 ''').fields[0]; |
3065 _assertUnlinkedConst(variable.constExpr, operators: [ | 3073 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3066 UnlinkedConstOperation.pushReference | 3074 UnlinkedConstOperation.pushReference |
3067 ], referenceValidators: [ | 3075 ], referenceValidators: [ |
3068 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 3076 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
3069 expectedKind: ReferenceKind.method, | 3077 expectedKind: ReferenceKind.method, |
3070 prefixExpectations: [ | 3078 prefixExpectations: [ |
3071 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 3079 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
3072 ]) | 3080 ]) |
3073 ]); | 3081 ]); |
3074 } | 3082 } |
3075 | 3083 |
3076 test_constExpr_pushReference_topLevelFunction() { | 3084 test_constExpr_pushReference_topLevelFunction() { |
3077 UnlinkedVariable variable = serializeVariableText(''' | 3085 UnlinkedVariable variable = serializeVariableText(''' |
3078 f() {} | 3086 f() {} |
3079 const v = f; | 3087 const v = f; |
3080 '''); | 3088 '''); |
3081 _assertUnlinkedConst(variable.constExpr, operators: [ | 3089 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3082 UnlinkedConstOperation.pushReference | 3090 UnlinkedConstOperation.pushReference |
3083 ], referenceValidators: [ | 3091 ], referenceValidators: [ |
3084 (EntityRef r) => checkTypeRef(r, null, null, 'f', | 3092 (EntityRef r) => checkTypeRef(r, null, null, 'f', |
3085 expectedKind: ReferenceKind.topLevelFunction) | 3093 expectedKind: ReferenceKind.topLevelFunction) |
3086 ]); | 3094 ]); |
3087 } | 3095 } |
3088 | 3096 |
3089 test_constExpr_pushReference_topLevelFunction_imported() { | 3097 test_constExpr_pushReference_topLevelFunction_imported() { |
3090 addNamedSource( | 3098 addNamedSource( |
3091 '/a.dart', | 3099 '/a.dart', |
3092 ''' | 3100 ''' |
3093 f() {} | 3101 f() {} |
3094 '''); | 3102 '''); |
3095 UnlinkedVariable variable = serializeVariableText(''' | 3103 UnlinkedVariable variable = serializeVariableText(''' |
3096 import 'a.dart'; | 3104 import 'a.dart'; |
3097 const v = f; | 3105 const v = f; |
3098 '''); | 3106 '''); |
3099 _assertUnlinkedConst(variable.constExpr, operators: [ | 3107 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3100 UnlinkedConstOperation.pushReference | 3108 UnlinkedConstOperation.pushReference |
3101 ], referenceValidators: [ | 3109 ], referenceValidators: [ |
3102 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'f', | 3110 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'f', |
3103 expectedKind: ReferenceKind.topLevelFunction) | 3111 expectedKind: ReferenceKind.topLevelFunction) |
3104 ]); | 3112 ]); |
3105 } | 3113 } |
3106 | 3114 |
3107 test_constExpr_pushReference_topLevelFunction_imported_withPrefix() { | 3115 test_constExpr_pushReference_topLevelFunction_imported_withPrefix() { |
3108 addNamedSource( | 3116 addNamedSource( |
3109 '/a.dart', | 3117 '/a.dart', |
3110 ''' | 3118 ''' |
3111 f() {} | 3119 f() {} |
3112 '''); | 3120 '''); |
3113 UnlinkedVariable variable = serializeVariableText(''' | 3121 UnlinkedVariable variable = serializeVariableText(''' |
3114 import 'a.dart' as p; | 3122 import 'a.dart' as p; |
3115 const v = p.f; | 3123 const v = p.f; |
3116 '''); | 3124 '''); |
3117 _assertUnlinkedConst(variable.constExpr, operators: [ | 3125 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3118 UnlinkedConstOperation.pushReference | 3126 UnlinkedConstOperation.pushReference |
3119 ], referenceValidators: [ | 3127 ], referenceValidators: [ |
3120 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'f', | 3128 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'f', |
3121 expectedKind: ReferenceKind.topLevelFunction, | 3129 expectedKind: ReferenceKind.topLevelFunction, |
3122 prefixExpectations: [ | 3130 prefixExpectations: [ |
3123 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 3131 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
3124 ]) | 3132 ]) |
3125 ]); | 3133 ]); |
3126 } | 3134 } |
3127 | 3135 |
3128 test_constExpr_pushReference_topLevelGetter() { | 3136 test_constExpr_pushReference_topLevelGetter() { |
3129 UnlinkedVariable variable = serializeVariableText(''' | 3137 UnlinkedVariable variable = serializeVariableText(''' |
3130 int get x => null; | 3138 int get x => null; |
3131 const v = x; | 3139 const v = x; |
3132 '''); | 3140 '''); |
3133 _assertUnlinkedConst(variable.constExpr, operators: [ | 3141 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3134 UnlinkedConstOperation.pushReference | 3142 UnlinkedConstOperation.pushReference |
3135 ], referenceValidators: [ | 3143 ], referenceValidators: [ |
3136 (EntityRef r) => checkTypeRef(r, null, null, 'x', | 3144 (EntityRef r) => checkTypeRef(r, null, null, 'x', |
3137 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 3145 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
3138 ]); | 3146 ]); |
3139 } | 3147 } |
3140 | 3148 |
3141 test_constExpr_pushReference_topLevelGetter_imported() { | 3149 test_constExpr_pushReference_topLevelGetter_imported() { |
3142 addNamedSource('/a.dart', 'int get x => null;'); | 3150 addNamedSource('/a.dart', 'int get x => null;'); |
3143 UnlinkedVariable variable = serializeVariableText(''' | 3151 UnlinkedVariable variable = serializeVariableText(''' |
3144 import 'a.dart'; | 3152 import 'a.dart'; |
3145 const v = x; | 3153 const v = x; |
3146 '''); | 3154 '''); |
3147 _assertUnlinkedConst(variable.constExpr, operators: [ | 3155 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3148 UnlinkedConstOperation.pushReference | 3156 UnlinkedConstOperation.pushReference |
3149 ], referenceValidators: [ | 3157 ], referenceValidators: [ |
3150 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'x', | 3158 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'x', |
3151 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 3159 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
3152 ]); | 3160 ]); |
3153 } | 3161 } |
3154 | 3162 |
3155 test_constExpr_pushReference_topLevelGetter_imported_withPrefix() { | 3163 test_constExpr_pushReference_topLevelGetter_imported_withPrefix() { |
3156 addNamedSource('/a.dart', 'int get x => null;'); | 3164 addNamedSource('/a.dart', 'int get x => null;'); |
3157 UnlinkedVariable variable = serializeVariableText(''' | 3165 UnlinkedVariable variable = serializeVariableText(''' |
3158 import 'a.dart' as p; | 3166 import 'a.dart' as p; |
3159 const v = p.x; | 3167 const v = p.x; |
3160 '''); | 3168 '''); |
3161 _assertUnlinkedConst(variable.constExpr, operators: [ | 3169 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3162 UnlinkedConstOperation.pushReference | 3170 UnlinkedConstOperation.pushReference |
3163 ], referenceValidators: [ | 3171 ], referenceValidators: [ |
3164 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'x', | 3172 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'x', |
3165 expectedKind: ReferenceKind.topLevelPropertyAccessor, | 3173 expectedKind: ReferenceKind.topLevelPropertyAccessor, |
3166 expectedPrefix: 'p') | 3174 expectedPrefix: 'p') |
3167 ]); | 3175 ]); |
3168 } | 3176 } |
3169 | 3177 |
3170 test_constExpr_pushReference_topLevelVariable() { | 3178 test_constExpr_pushReference_topLevelVariable() { |
3171 UnlinkedVariable variable = serializeVariableText(''' | 3179 UnlinkedVariable variable = serializeVariableText(''' |
3172 const int a = 1; | 3180 const int a = 1; |
3173 const v = a; | 3181 const v = a; |
3174 '''); | 3182 '''); |
3175 _assertUnlinkedConst(variable.constExpr, operators: [ | 3183 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3176 UnlinkedConstOperation.pushReference | 3184 UnlinkedConstOperation.pushReference |
3177 ], referenceValidators: [ | 3185 ], referenceValidators: [ |
3178 (EntityRef r) => checkTypeRef(r, null, null, 'a', | 3186 (EntityRef r) => checkTypeRef(r, null, null, 'a', |
3179 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 3187 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
3180 ]); | 3188 ]); |
3181 } | 3189 } |
3182 | 3190 |
3183 test_constExpr_pushReference_topLevelVariable_imported() { | 3191 test_constExpr_pushReference_topLevelVariable_imported() { |
3184 addNamedSource('/a.dart', 'const int a = 1;'); | 3192 addNamedSource('/a.dart', 'const int a = 1;'); |
3185 UnlinkedVariable variable = serializeVariableText(''' | 3193 UnlinkedVariable variable = serializeVariableText(''' |
3186 import 'a.dart'; | 3194 import 'a.dart'; |
3187 const v = a; | 3195 const v = a; |
3188 '''); | 3196 '''); |
3189 _assertUnlinkedConst(variable.constExpr, operators: [ | 3197 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3190 UnlinkedConstOperation.pushReference | 3198 UnlinkedConstOperation.pushReference |
3191 ], referenceValidators: [ | 3199 ], referenceValidators: [ |
3192 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', | 3200 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', |
3193 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 3201 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
3194 ]); | 3202 ]); |
3195 } | 3203 } |
3196 | 3204 |
3197 test_constExpr_pushReference_topLevelVariable_imported_withPrefix() { | 3205 test_constExpr_pushReference_topLevelVariable_imported_withPrefix() { |
3198 addNamedSource('/a.dart', 'const int a = 1;'); | 3206 addNamedSource('/a.dart', 'const int a = 1;'); |
3199 UnlinkedVariable variable = serializeVariableText(''' | 3207 UnlinkedVariable variable = serializeVariableText(''' |
3200 import 'a.dart' as p; | 3208 import 'a.dart' as p; |
3201 const v = p.a; | 3209 const v = p.a; |
3202 '''); | 3210 '''); |
3203 _assertUnlinkedConst(variable.constExpr, operators: [ | 3211 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3204 UnlinkedConstOperation.pushReference | 3212 UnlinkedConstOperation.pushReference |
3205 ], referenceValidators: [ | 3213 ], referenceValidators: [ |
3206 (EntityRef r) { | 3214 (EntityRef r) { |
3207 return checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', | 3215 return checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', |
3208 expectedKind: ReferenceKind.topLevelPropertyAccessor, | 3216 expectedKind: ReferenceKind.topLevelPropertyAccessor, |
3209 expectedPrefix: 'p'); | 3217 expectedPrefix: 'p'); |
3210 } | 3218 } |
3211 ]); | 3219 ]); |
3212 } | 3220 } |
3213 | 3221 |
3214 test_constExpr_pushReference_typeParameter() { | 3222 test_constExpr_pushReference_typeParameter() { |
3215 String text = ''' | 3223 String text = ''' |
3216 class C<T> { | 3224 class C<T> { |
3217 static const a = T; | 3225 static const a = T; |
3218 } | 3226 } |
3219 '''; | 3227 '''; |
3220 UnlinkedVariable variable = | 3228 UnlinkedVariable variable = |
3221 serializeClassText(text, allowErrors: true).fields[0]; | 3229 serializeClassText(text, allowErrors: true).fields[0]; |
3222 _assertUnlinkedConst(variable.constExpr, operators: [ | 3230 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3223 UnlinkedConstOperation.pushReference | 3231 UnlinkedConstOperation.pushReference |
3224 ], referenceValidators: [ | 3232 ], referenceValidators: [ |
3225 (EntityRef r) { | 3233 (EntityRef r) { |
3226 return checkParamTypeRef(r, 1); | 3234 return checkParamTypeRef(r, 1); |
3227 } | 3235 } |
3228 ]); | 3236 ]); |
3229 } | 3237 } |
3230 | 3238 |
3231 test_constExpr_pushReference_unresolved_prefix0() { | 3239 test_constExpr_pushReference_unresolved_prefix0() { |
3232 UnlinkedVariable variable = serializeVariableText( | 3240 UnlinkedVariable variable = serializeVariableText( |
3233 ''' | 3241 ''' |
3234 const v = foo; | 3242 const v = foo; |
3235 ''', | 3243 ''', |
3236 allowErrors: true); | 3244 allowErrors: true); |
3237 _assertUnlinkedConst(variable.constExpr, operators: [ | 3245 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3238 UnlinkedConstOperation.pushReference | 3246 UnlinkedConstOperation.pushReference |
3239 ], referenceValidators: [ | 3247 ], referenceValidators: [ |
3240 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 3248 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
3241 expectedKind: ReferenceKind.unresolved, | 3249 expectedKind: ReferenceKind.unresolved, |
3242 checkAstDerivedDataOverride: true) | 3250 checkAstDerivedDataOverride: true) |
3243 ]); | 3251 ]); |
3244 } | 3252 } |
3245 | 3253 |
3246 test_constExpr_pushReference_unresolved_prefix1() { | 3254 test_constExpr_pushReference_unresolved_prefix1() { |
3247 UnlinkedVariable variable = serializeVariableText( | 3255 UnlinkedVariable variable = serializeVariableText( |
3248 ''' | 3256 ''' |
3249 class C {} | 3257 class C {} |
3250 const v = C.foo; | 3258 const v = C.foo; |
3251 ''', | 3259 ''', |
3252 allowErrors: true); | 3260 allowErrors: true); |
3253 _assertUnlinkedConst(variable.constExpr, operators: [ | 3261 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3254 UnlinkedConstOperation.pushReference | 3262 UnlinkedConstOperation.pushReference |
3255 ], referenceValidators: [ | 3263 ], referenceValidators: [ |
3256 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 3264 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
3257 expectedKind: ReferenceKind.unresolved, | 3265 expectedKind: ReferenceKind.unresolved, |
3258 checkAstDerivedDataOverride: true, | 3266 checkAstDerivedDataOverride: true, |
3259 prefixExpectations: [ | 3267 prefixExpectations: [ |
3260 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 3268 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
3261 ]) | 3269 ]) |
3262 ]); | 3270 ]); |
3263 } | 3271 } |
3264 | 3272 |
3265 test_constExpr_pushReference_unresolved_prefix2() { | 3273 test_constExpr_pushReference_unresolved_prefix2() { |
3266 addNamedSource( | 3274 addNamedSource( |
3267 '/a.dart', | 3275 '/a.dart', |
3268 ''' | 3276 ''' |
3269 class C {} | 3277 class C {} |
3270 '''); | 3278 '''); |
3271 UnlinkedVariable variable = serializeVariableText( | 3279 UnlinkedVariable variable = serializeVariableText( |
3272 ''' | 3280 ''' |
3273 import 'a.dart' as p; | 3281 import 'a.dart' as p; |
3274 const v = p.C.foo; | 3282 const v = p.C.foo; |
3275 ''', | 3283 ''', |
3276 allowErrors: true); | 3284 allowErrors: true); |
3277 _assertUnlinkedConst(variable.constExpr, operators: [ | 3285 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3278 UnlinkedConstOperation.pushReference | 3286 UnlinkedConstOperation.pushReference |
3279 ], referenceValidators: [ | 3287 ], referenceValidators: [ |
3280 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 3288 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
3281 expectedKind: ReferenceKind.unresolved, | 3289 expectedKind: ReferenceKind.unresolved, |
3282 checkAstDerivedDataOverride: true, | 3290 checkAstDerivedDataOverride: true, |
3283 prefixExpectations: [ | 3291 prefixExpectations: [ |
3284 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 3292 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
3285 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 3293 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
3286 new _PrefixExpectation(ReferenceKind.prefix, 'p'), | 3294 new _PrefixExpectation(ReferenceKind.prefix, 'p'), |
3287 ]) | 3295 ]) |
3288 ]); | 3296 ]); |
3289 } | 3297 } |
3290 | 3298 |
3291 test_constExpr_pushString_adjacent() { | 3299 test_constExpr_pushString_adjacent() { |
3292 UnlinkedVariable variable = | 3300 UnlinkedVariable variable = |
3293 serializeVariableText('const v = "aaa" "b" "ccc";'); | 3301 serializeVariableText('const v = "aaa" "b" "ccc";'); |
3294 _assertUnlinkedConst(variable.constExpr, | 3302 _assertUnlinkedConst(variable.initializer.bodyExpr, |
3295 operators: [UnlinkedConstOperation.pushString], strings: ['aaabccc']); | 3303 operators: [UnlinkedConstOperation.pushString], strings: ['aaabccc']); |
3296 } | 3304 } |
3297 | 3305 |
3298 test_constExpr_pushString_adjacent_interpolation() { | 3306 test_constExpr_pushString_adjacent_interpolation() { |
3299 UnlinkedVariable variable = | 3307 UnlinkedVariable variable = |
3300 serializeVariableText(r'const v = "aaa" "bb ${42} bbb" "cccc";'); | 3308 serializeVariableText(r'const v = "aaa" "bb ${42} bbb" "cccc";'); |
3301 _assertUnlinkedConst(variable.constExpr, operators: [ | 3309 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3302 UnlinkedConstOperation.pushString, | 3310 UnlinkedConstOperation.pushString, |
3303 UnlinkedConstOperation.pushString, | 3311 UnlinkedConstOperation.pushString, |
3304 UnlinkedConstOperation.pushInt, | 3312 UnlinkedConstOperation.pushInt, |
3305 UnlinkedConstOperation.pushString, | 3313 UnlinkedConstOperation.pushString, |
3306 UnlinkedConstOperation.concatenate, | 3314 UnlinkedConstOperation.concatenate, |
3307 UnlinkedConstOperation.pushString, | 3315 UnlinkedConstOperation.pushString, |
3308 UnlinkedConstOperation.concatenate, | 3316 UnlinkedConstOperation.concatenate, |
3309 ], ints: [ | 3317 ], ints: [ |
3310 42, | 3318 42, |
3311 3, | 3319 3, |
3312 3, | 3320 3, |
3313 ], strings: [ | 3321 ], strings: [ |
3314 'aaa', | 3322 'aaa', |
3315 'bb ', | 3323 'bb ', |
3316 ' bbb', | 3324 ' bbb', |
3317 'cccc' | 3325 'cccc' |
3318 ]); | 3326 ]); |
3319 } | 3327 } |
3320 | 3328 |
3321 test_constExpr_pushString_interpolation() { | 3329 test_constExpr_pushString_interpolation() { |
3322 UnlinkedVariable variable = | 3330 UnlinkedVariable variable = |
3323 serializeVariableText(r'const v = "aaa ${42} bbb";'); | 3331 serializeVariableText(r'const v = "aaa ${42} bbb";'); |
3324 _assertUnlinkedConst(variable.constExpr, operators: [ | 3332 _assertUnlinkedConst(variable.initializer.bodyExpr, operators: [ |
3325 UnlinkedConstOperation.pushString, | 3333 UnlinkedConstOperation.pushString, |
3326 UnlinkedConstOperation.pushInt, | 3334 UnlinkedConstOperation.pushInt, |
3327 UnlinkedConstOperation.pushString, | 3335 UnlinkedConstOperation.pushString, |
3328 UnlinkedConstOperation.concatenate | 3336 UnlinkedConstOperation.concatenate |
3329 ], ints: [ | 3337 ], ints: [ |
3330 42, | 3338 42, |
3331 3 | 3339 3 |
3332 ], strings: [ | 3340 ], strings: [ |
3333 'aaa ', | 3341 'aaa ', |
3334 ' bbb' | 3342 ' bbb' |
3335 ]); | 3343 ]); |
3336 } | 3344 } |
3337 | 3345 |
3338 test_constExpr_pushString_simple() { | 3346 test_constExpr_pushString_simple() { |
3339 UnlinkedVariable variable = serializeVariableText('const v = "abc";'); | 3347 UnlinkedVariable variable = serializeVariableText('const v = "abc";'); |
3340 _assertUnlinkedConst(variable.constExpr, | 3348 _assertUnlinkedConst(variable.initializer.bodyExpr, |
3341 operators: [UnlinkedConstOperation.pushString], strings: ['abc']); | 3349 operators: [UnlinkedConstOperation.pushString], strings: ['abc']); |
3342 } | 3350 } |
3343 | 3351 |
3344 test_constExpr_pushTrue() { | 3352 test_constExpr_pushTrue() { |
3345 UnlinkedVariable variable = serializeVariableText('const v = true;'); | 3353 UnlinkedVariable variable = serializeVariableText('const v = true;'); |
3346 _assertUnlinkedConst(variable.constExpr, | 3354 _assertUnlinkedConst(variable.initializer.bodyExpr, |
3347 operators: [UnlinkedConstOperation.pushTrue]); | 3355 operators: [UnlinkedConstOperation.pushTrue]); |
3348 } | 3356 } |
3349 | 3357 |
3350 test_constructor() { | 3358 test_constructor() { |
3351 String text = 'class C { C(); }'; | 3359 String text = 'class C { C(); }'; |
3352 UnlinkedExecutable executable = | 3360 UnlinkedExecutable executable = |
3353 findExecutable('', executables: serializeClassText(text).executables); | 3361 findExecutable('', executables: serializeClassText(text).executables); |
3354 expect(executable.kind, UnlinkedExecutableKind.constructor); | 3362 expect(executable.kind, UnlinkedExecutableKind.constructor); |
3355 expect(executable.returnType, isNull); | 3363 expect(executable.returnType, isNull); |
3356 expect(executable.isAsynchronous, isFalse); | 3364 expect(executable.isAsynchronous, isFalse); |
(...skipping 2981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6338 } | 6346 } |
6339 class B { | 6347 class B { |
6340 C c; | 6348 C c; |
6341 } | 6349 } |
6342 class C { | 6350 class C { |
6343 List<int> f = <int>[0, 1, 2]; | 6351 List<int> f = <int>[0, 1, 2]; |
6344 } | 6352 } |
6345 A a = new A(); | 6353 A a = new A(); |
6346 final v = (a.b.c.f[1] = 5); | 6354 final v = (a.b.c.f[1] = 5); |
6347 '''); | 6355 '''); |
6348 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6356 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6349 UnlinkedConstOperation.pushInt, | 6357 isValidConst: false, |
6350 UnlinkedConstOperation.pushReference, | 6358 operators: [ |
6351 UnlinkedConstOperation.pushInt, | 6359 UnlinkedConstOperation.pushInt, |
6352 UnlinkedConstOperation.assignToIndex, | 6360 UnlinkedConstOperation.pushReference, |
6353 ], assignmentOperators: [ | 6361 UnlinkedConstOperation.pushInt, |
6354 (UnlinkedExprAssignOperator.assign) | 6362 UnlinkedConstOperation.assignToIndex, |
6355 ], ints: [ | 6363 ], |
6356 5, | 6364 assignmentOperators: [ |
6357 1 | 6365 (UnlinkedExprAssignOperator.assign) |
6358 ], strings: [], referenceValidators: [ | 6366 ], |
6359 (EntityRef r) => checkTypeRef(r, null, null, 'f', | 6367 ints: [ |
6360 expectedKind: ReferenceKind.unresolved, | 6368 5, |
6361 prefixExpectations: [ | 6369 1 |
6362 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), | 6370 ], |
6363 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), | 6371 strings: [], |
6364 new _PrefixExpectation( | 6372 referenceValidators: [ |
6365 ReferenceKind.topLevelPropertyAccessor, 'a') | 6373 (EntityRef r) => checkTypeRef(r, null, null, 'f', |
6366 ]) | 6374 expectedKind: ReferenceKind.unresolved, |
6367 ]); | 6375 prefixExpectations: [ |
| 6376 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), |
| 6377 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), |
| 6378 new _PrefixExpectation( |
| 6379 ReferenceKind.topLevelPropertyAccessor, 'a') |
| 6380 ]) |
| 6381 ]); |
6368 } | 6382 } |
6369 | 6383 |
6370 test_expr_assignToIndex_ofIndexExpression() { | 6384 test_expr_assignToIndex_ofIndexExpression() { |
6371 if (skipNonConstInitializers) { | 6385 if (skipNonConstInitializers) { |
6372 return; | 6386 return; |
6373 } | 6387 } |
6374 UnlinkedVariable variable = serializeVariableText(''' | 6388 UnlinkedVariable variable = serializeVariableText(''' |
6375 class A { | 6389 class A { |
6376 List<B> b; | 6390 List<B> b; |
6377 } | 6391 } |
6378 class B { | 6392 class B { |
6379 List<C> c; | 6393 List<C> c; |
6380 } | 6394 } |
6381 class C { | 6395 class C { |
6382 List<int> f = <int>[0, 1, 2]; | 6396 List<int> f = <int>[0, 1, 2]; |
6383 } | 6397 } |
6384 A a = new A(); | 6398 A a = new A(); |
6385 final v = (a.b[1].c[2].f[3] = 5); | 6399 final v = (a.b[1].c[2].f[3] = 5); |
6386 '''); | 6400 '''); |
6387 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6401 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6388 // 5 | 6402 isValidConst: false, |
6389 UnlinkedConstOperation.pushInt, | 6403 operators: [ |
6390 // a.b[1] | 6404 // 5 |
6391 UnlinkedConstOperation.pushReference, | 6405 UnlinkedConstOperation.pushInt, |
6392 UnlinkedConstOperation.pushInt, | 6406 // a.b[1] |
6393 UnlinkedConstOperation.extractIndex, | 6407 UnlinkedConstOperation.pushReference, |
6394 // c[2] | 6408 UnlinkedConstOperation.pushInt, |
6395 UnlinkedConstOperation.extractProperty, | 6409 UnlinkedConstOperation.extractIndex, |
6396 UnlinkedConstOperation.pushInt, | 6410 // c[2] |
6397 UnlinkedConstOperation.extractIndex, | 6411 UnlinkedConstOperation.extractProperty, |
6398 // f[3] = 5 | 6412 UnlinkedConstOperation.pushInt, |
6399 UnlinkedConstOperation.extractProperty, | 6413 UnlinkedConstOperation.extractIndex, |
6400 UnlinkedConstOperation.pushInt, | 6414 // f[3] = 5 |
6401 UnlinkedConstOperation.assignToIndex, | 6415 UnlinkedConstOperation.extractProperty, |
6402 ], assignmentOperators: [ | 6416 UnlinkedConstOperation.pushInt, |
6403 (UnlinkedExprAssignOperator.assign) | 6417 UnlinkedConstOperation.assignToIndex, |
6404 ], ints: [ | 6418 ], |
6405 5, | 6419 assignmentOperators: [ |
6406 1, | 6420 (UnlinkedExprAssignOperator.assign) |
6407 2, | 6421 ], |
6408 3, | 6422 ints: [ |
6409 ], strings: [ | 6423 5, |
6410 'c', | 6424 1, |
6411 'f' | 6425 2, |
6412 ], referenceValidators: [ | 6426 3, |
6413 (EntityRef r) => checkTypeRef(r, null, null, | 6427 ], |
6414 'b', expectedKind: ReferenceKind.unresolved, prefixExpectations: [ | 6428 strings: [ |
6415 new _PrefixExpectation(ReferenceKind.topLevelPropertyAccessor, 'a') | 6429 'c', |
6416 ]) | 6430 'f' |
6417 ]); | 6431 ], |
| 6432 referenceValidators: [ |
| 6433 (EntityRef r) => checkTypeRef(r, null, null, 'b', |
| 6434 expectedKind: ReferenceKind.unresolved, |
| 6435 prefixExpectations: [ |
| 6436 new _PrefixExpectation( |
| 6437 ReferenceKind.topLevelPropertyAccessor, 'a') |
| 6438 ]) |
| 6439 ]); |
6418 } | 6440 } |
6419 | 6441 |
6420 test_expr_assignToIndex_ofTopLevelVariable() { | 6442 test_expr_assignToIndex_ofTopLevelVariable() { |
6421 if (skipNonConstInitializers) { | 6443 if (skipNonConstInitializers) { |
6422 return; | 6444 return; |
6423 } | 6445 } |
6424 UnlinkedVariable variable = serializeVariableText(''' | 6446 UnlinkedVariable variable = serializeVariableText(''' |
6425 List<int> a = <int>[0, 1, 2]; | 6447 List<int> a = <int>[0, 1, 2]; |
6426 final v = (a[1] = 5); | 6448 final v = (a[1] = 5); |
6427 '''); | 6449 '''); |
6428 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6450 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6429 UnlinkedConstOperation.pushInt, | 6451 isValidConst: false, |
6430 UnlinkedConstOperation.pushReference, | 6452 operators: [ |
6431 UnlinkedConstOperation.pushInt, | 6453 UnlinkedConstOperation.pushInt, |
6432 UnlinkedConstOperation.assignToIndex, | 6454 UnlinkedConstOperation.pushReference, |
6433 ], assignmentOperators: [ | 6455 UnlinkedConstOperation.pushInt, |
6434 (UnlinkedExprAssignOperator.assign) | 6456 UnlinkedConstOperation.assignToIndex, |
6435 ], ints: [ | 6457 ], |
6436 5, | 6458 assignmentOperators: [ |
6437 1, | 6459 (UnlinkedExprAssignOperator.assign) |
6438 ], strings: [], referenceValidators: [ | 6460 ], |
6439 (EntityRef r) => checkTypeRef(r, null, null, 'a', | 6461 ints: [ |
6440 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 6462 5, |
6441 ]); | 6463 1, |
| 6464 ], |
| 6465 strings: [], |
| 6466 referenceValidators: [ |
| 6467 (EntityRef r) => checkTypeRef(r, null, null, 'a', |
| 6468 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 6469 ]); |
6442 } | 6470 } |
6443 | 6471 |
6444 test_expr_assignToProperty_ofInstanceCreation() { | 6472 test_expr_assignToProperty_ofInstanceCreation() { |
6445 if (skipNonConstInitializers) { | 6473 if (skipNonConstInitializers) { |
6446 return; | 6474 return; |
6447 } | 6475 } |
6448 UnlinkedVariable variable = serializeVariableText(''' | 6476 UnlinkedVariable variable = serializeVariableText(''' |
6449 class C { | 6477 class C { |
6450 int f; | 6478 int f; |
6451 } | 6479 } |
6452 final v = (new C().f = 5); | 6480 final v = (new C().f = 5); |
6453 '''); | 6481 '''); |
6454 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6482 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6455 UnlinkedConstOperation.pushInt, | 6483 isValidConst: false, |
6456 UnlinkedConstOperation.invokeConstructor, | 6484 operators: [ |
6457 UnlinkedConstOperation.assignToProperty, | 6485 UnlinkedConstOperation.pushInt, |
6458 ], assignmentOperators: [ | 6486 UnlinkedConstOperation.invokeConstructor, |
6459 (UnlinkedExprAssignOperator.assign) | 6487 UnlinkedConstOperation.assignToProperty, |
6460 ], ints: [ | 6488 ], |
6461 5, | 6489 assignmentOperators: [ |
6462 0, | 6490 (UnlinkedExprAssignOperator.assign) |
6463 0, | 6491 ], |
6464 ], strings: [ | 6492 ints: [ |
6465 'f' | 6493 5, |
6466 ], referenceValidators: [ | 6494 0, |
6467 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 6495 0, |
6468 expectedKind: ReferenceKind.classOrEnum) | 6496 ], |
6469 ]); | 6497 strings: [ |
| 6498 'f' |
| 6499 ], |
| 6500 referenceValidators: [ |
| 6501 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
| 6502 expectedKind: ReferenceKind.classOrEnum) |
| 6503 ]); |
6470 } | 6504 } |
6471 | 6505 |
6472 test_expr_assignToRef_classStaticField() { | 6506 test_expr_assignToRef_classStaticField() { |
6473 if (skipNonConstInitializers) { | 6507 if (skipNonConstInitializers) { |
6474 return; | 6508 return; |
6475 } | 6509 } |
6476 UnlinkedVariable variable = serializeVariableText(''' | 6510 UnlinkedVariable variable = serializeVariableText(''' |
6477 class C { | 6511 class C { |
6478 static int f; | 6512 static int f; |
6479 } | 6513 } |
6480 final v = (C.f = 1); | 6514 final v = (C.f = 1); |
6481 '''); | 6515 '''); |
6482 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6516 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6483 UnlinkedConstOperation.pushInt, | 6517 isValidConst: false, |
6484 UnlinkedConstOperation.assignToRef, | 6518 operators: [ |
6485 ], assignmentOperators: [ | 6519 UnlinkedConstOperation.pushInt, |
6486 (UnlinkedExprAssignOperator.assign) | 6520 UnlinkedConstOperation.assignToRef, |
6487 ], ints: [ | 6521 ], |
6488 1, | 6522 assignmentOperators: [ |
6489 ], strings: [], referenceValidators: [ | 6523 (UnlinkedExprAssignOperator.assign) |
6490 (EntityRef r) => checkTypeRef(r, null, null, 'f', | 6524 ], |
6491 expectedKind: ReferenceKind.unresolved, | 6525 ints: [ |
6492 prefixExpectations: [ | 6526 1, |
6493 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 6527 ], |
6494 ]) | 6528 strings: [], |
6495 ]); | 6529 referenceValidators: [ |
| 6530 (EntityRef r) => checkTypeRef(r, null, null, 'f', |
| 6531 expectedKind: ReferenceKind.unresolved, |
| 6532 prefixExpectations: [ |
| 6533 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 6534 ]) |
| 6535 ]); |
6496 } | 6536 } |
6497 | 6537 |
6498 test_expr_assignToRef_fieldSequence() { | 6538 test_expr_assignToRef_fieldSequence() { |
6499 if (skipNonConstInitializers) { | 6539 if (skipNonConstInitializers) { |
6500 return; | 6540 return; |
6501 } | 6541 } |
6502 UnlinkedVariable variable = serializeVariableText(''' | 6542 UnlinkedVariable variable = serializeVariableText(''' |
6503 class A { | 6543 class A { |
6504 B b; | 6544 B b; |
6505 } | 6545 } |
6506 class B { | 6546 class B { |
6507 C c; | 6547 C c; |
6508 } | 6548 } |
6509 class C { | 6549 class C { |
6510 int f; | 6550 int f; |
6511 } | 6551 } |
6512 A a = new A(); | 6552 A a = new A(); |
6513 final v = (a.b.c.f = 1); | 6553 final v = (a.b.c.f = 1); |
6514 '''); | 6554 '''); |
6515 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6555 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6516 UnlinkedConstOperation.pushInt, | 6556 isValidConst: false, |
6517 UnlinkedConstOperation.assignToRef, | 6557 operators: [ |
6518 ], assignmentOperators: [ | 6558 UnlinkedConstOperation.pushInt, |
6519 (UnlinkedExprAssignOperator.assign) | 6559 UnlinkedConstOperation.assignToRef, |
6520 ], ints: [ | 6560 ], |
6521 1, | 6561 assignmentOperators: [ |
6522 ], strings: [], referenceValidators: [ | 6562 (UnlinkedExprAssignOperator.assign) |
6523 (EntityRef r) => checkTypeRef(r, null, null, 'f', | 6563 ], |
6524 expectedKind: ReferenceKind.unresolved, | 6564 ints: [ |
6525 prefixExpectations: [ | 6565 1, |
6526 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), | 6566 ], |
6527 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), | 6567 strings: [], |
6528 new _PrefixExpectation( | 6568 referenceValidators: [ |
6529 ReferenceKind.topLevelPropertyAccessor, 'a') | 6569 (EntityRef r) => checkTypeRef(r, null, null, 'f', |
6530 ]) | 6570 expectedKind: ReferenceKind.unresolved, |
6531 ]); | 6571 prefixExpectations: [ |
| 6572 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), |
| 6573 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), |
| 6574 new _PrefixExpectation( |
| 6575 ReferenceKind.topLevelPropertyAccessor, 'a') |
| 6576 ]) |
| 6577 ]); |
6532 } | 6578 } |
6533 | 6579 |
6534 test_expr_assignToRef_postfixDecrement() { | 6580 test_expr_assignToRef_postfixDecrement() { |
6535 _assertRefPrefixPostfixIncrementDecrement( | 6581 _assertRefPrefixPostfixIncrementDecrement( |
6536 'a-- + 2', UnlinkedExprAssignOperator.postfixDecrement); | 6582 'a-- + 2', UnlinkedExprAssignOperator.postfixDecrement); |
6537 } | 6583 } |
6538 | 6584 |
6539 test_expr_assignToRef_postfixIncrement() { | 6585 test_expr_assignToRef_postfixIncrement() { |
6540 _assertRefPrefixPostfixIncrementDecrement( | 6586 _assertRefPrefixPostfixIncrementDecrement( |
6541 'a++ + 2', UnlinkedExprAssignOperator.postfixIncrement); | 6587 'a++ + 2', UnlinkedExprAssignOperator.postfixIncrement); |
(...skipping 10 matching lines...) Expand all Loading... |
6552 } | 6598 } |
6553 | 6599 |
6554 test_expr_assignToRef_topLevelVariable() { | 6600 test_expr_assignToRef_topLevelVariable() { |
6555 if (skipNonConstInitializers) { | 6601 if (skipNonConstInitializers) { |
6556 return; | 6602 return; |
6557 } | 6603 } |
6558 UnlinkedVariable variable = serializeVariableText(''' | 6604 UnlinkedVariable variable = serializeVariableText(''' |
6559 int a = 0; | 6605 int a = 0; |
6560 final v = (a = 1); | 6606 final v = (a = 1); |
6561 '''); | 6607 '''); |
6562 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6608 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6563 UnlinkedConstOperation.pushInt, | 6609 isValidConst: false, |
6564 UnlinkedConstOperation.assignToRef, | 6610 operators: [ |
6565 ], assignmentOperators: [ | 6611 UnlinkedConstOperation.pushInt, |
6566 (UnlinkedExprAssignOperator.assign) | 6612 UnlinkedConstOperation.assignToRef, |
6567 ], ints: [ | 6613 ], |
6568 1, | 6614 assignmentOperators: [ |
6569 ], strings: [], referenceValidators: [ | 6615 (UnlinkedExprAssignOperator.assign) |
6570 (EntityRef r) => checkTypeRef(r, null, null, 'a', | 6616 ], |
6571 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 6617 ints: [ |
6572 ]); | 6618 1, |
| 6619 ], |
| 6620 strings: [], |
| 6621 referenceValidators: [ |
| 6622 (EntityRef r) => checkTypeRef(r, null, null, 'a', |
| 6623 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 6624 ]); |
6573 } | 6625 } |
6574 | 6626 |
6575 test_expr_assignToRef_topLevelVariable_imported() { | 6627 test_expr_assignToRef_topLevelVariable_imported() { |
6576 if (skipNonConstInitializers) { | 6628 if (skipNonConstInitializers) { |
6577 return; | 6629 return; |
6578 } | 6630 } |
6579 addNamedSource( | 6631 addNamedSource( |
6580 '/a.dart', | 6632 '/a.dart', |
6581 ''' | 6633 ''' |
6582 int a = 0; | 6634 int a = 0; |
6583 '''); | 6635 '''); |
6584 UnlinkedVariable variable = serializeVariableText(''' | 6636 UnlinkedVariable variable = serializeVariableText(''' |
6585 import 'a.dart'; | 6637 import 'a.dart'; |
6586 final v = (a = 1); | 6638 final v = (a = 1); |
6587 '''); | 6639 '''); |
6588 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6640 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6589 UnlinkedConstOperation.pushInt, | 6641 isValidConst: false, |
6590 UnlinkedConstOperation.assignToRef, | 6642 operators: [ |
6591 ], assignmentOperators: [ | 6643 UnlinkedConstOperation.pushInt, |
6592 (UnlinkedExprAssignOperator.assign) | 6644 UnlinkedConstOperation.assignToRef, |
6593 ], ints: [ | 6645 ], |
6594 1, | 6646 assignmentOperators: [ |
6595 ], strings: [], referenceValidators: [ | 6647 (UnlinkedExprAssignOperator.assign) |
6596 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', | 6648 ], |
6597 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 6649 ints: [ |
6598 ]); | 6650 1, |
| 6651 ], |
| 6652 strings: [], |
| 6653 referenceValidators: [ |
| 6654 (EntityRef r) => checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', |
| 6655 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 6656 ]); |
6599 } | 6657 } |
6600 | 6658 |
6601 test_expr_assignToRef_topLevelVariable_imported_withPrefix() { | 6659 test_expr_assignToRef_topLevelVariable_imported_withPrefix() { |
6602 if (skipNonConstInitializers) { | 6660 if (skipNonConstInitializers) { |
6603 return; | 6661 return; |
6604 } | 6662 } |
6605 addNamedSource( | 6663 addNamedSource( |
6606 '/a.dart', | 6664 '/a.dart', |
6607 ''' | 6665 ''' |
6608 int a = 0; | 6666 int a = 0; |
6609 '''); | 6667 '''); |
6610 UnlinkedVariable variable = serializeVariableText(''' | 6668 UnlinkedVariable variable = serializeVariableText(''' |
6611 import 'a.dart' as p; | 6669 import 'a.dart' as p; |
6612 final v = (p.a = 1); | 6670 final v = (p.a = 1); |
6613 '''); | 6671 '''); |
6614 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6672 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6615 UnlinkedConstOperation.pushInt, | 6673 isValidConst: false, |
6616 UnlinkedConstOperation.assignToRef, | 6674 operators: [ |
6617 ], assignmentOperators: [ | 6675 UnlinkedConstOperation.pushInt, |
6618 (UnlinkedExprAssignOperator.assign) | 6676 UnlinkedConstOperation.assignToRef, |
6619 ], ints: [ | 6677 ], |
6620 1, | 6678 assignmentOperators: [ |
6621 ], strings: [], referenceValidators: [ | 6679 (UnlinkedExprAssignOperator.assign) |
6622 (EntityRef r) { | 6680 ], |
6623 return checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', | 6681 ints: [ |
6624 expectedKind: ReferenceKind.topLevelPropertyAccessor, | 6682 1, |
6625 expectedPrefix: 'p'); | 6683 ], |
6626 } | 6684 strings: [], |
6627 ]); | 6685 referenceValidators: [ |
| 6686 (EntityRef r) { |
| 6687 return checkTypeRef(r, absUri('/a.dart'), 'a.dart', 'a', |
| 6688 expectedKind: ReferenceKind.topLevelPropertyAccessor, |
| 6689 expectedPrefix: 'p'); |
| 6690 } |
| 6691 ]); |
6628 } | 6692 } |
6629 | 6693 |
6630 test_expr_cascadeSection_assignToIndex() { | 6694 test_expr_cascadeSection_assignToIndex() { |
6631 if (skipNonConstInitializers) { | 6695 if (skipNonConstInitializers) { |
6632 return; | 6696 return; |
6633 } | 6697 } |
6634 UnlinkedVariable variable = serializeVariableText(''' | 6698 UnlinkedVariable variable = serializeVariableText(''' |
6635 class C { | 6699 class C { |
6636 List<int> items; | 6700 List<int> items; |
6637 } | 6701 } |
6638 final C c = new C(); | 6702 final C c = new C(); |
6639 final v = c.items..[1] = 2; | 6703 final v = c.items..[1] = 2; |
6640 '''); | 6704 '''); |
6641 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6705 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6642 UnlinkedConstOperation.pushReference, | 6706 isValidConst: false, |
6643 // ..[1] = 2 | 6707 operators: [ |
6644 UnlinkedConstOperation.cascadeSectionBegin, | 6708 UnlinkedConstOperation.pushReference, |
6645 UnlinkedConstOperation.pushInt, | 6709 // ..[1] = 2 |
6646 UnlinkedConstOperation.pushInt, | 6710 UnlinkedConstOperation.cascadeSectionBegin, |
6647 UnlinkedConstOperation.assignToIndex, | 6711 UnlinkedConstOperation.pushInt, |
6648 // c | 6712 UnlinkedConstOperation.pushInt, |
6649 UnlinkedConstOperation.cascadeSectionEnd, | 6713 UnlinkedConstOperation.assignToIndex, |
6650 ], assignmentOperators: [ | 6714 // c |
6651 UnlinkedExprAssignOperator.assign, | 6715 UnlinkedConstOperation.cascadeSectionEnd, |
6652 ], ints: [ | 6716 ], |
6653 2, | 6717 assignmentOperators: [ |
6654 1 | 6718 UnlinkedExprAssignOperator.assign, |
6655 ], strings: [], referenceValidators: [ | 6719 ], |
6656 (EntityRef r) => checkTypeRef(r, null, null, 'items', | 6720 ints: [ |
6657 expectedKind: ReferenceKind.unresolved, | 6721 2, |
6658 prefixExpectations: [ | 6722 1 |
6659 new _PrefixExpectation( | 6723 ], |
6660 ReferenceKind.topLevelPropertyAccessor, 'c'), | 6724 strings: [], |
6661 ]) | 6725 referenceValidators: [ |
6662 ]); | 6726 (EntityRef r) => checkTypeRef(r, null, null, 'items', |
| 6727 expectedKind: ReferenceKind.unresolved, |
| 6728 prefixExpectations: [ |
| 6729 new _PrefixExpectation( |
| 6730 ReferenceKind.topLevelPropertyAccessor, 'c'), |
| 6731 ]) |
| 6732 ]); |
6663 } | 6733 } |
6664 | 6734 |
6665 test_expr_cascadeSection_assignToProperty() { | 6735 test_expr_cascadeSection_assignToProperty() { |
6666 if (skipNonConstInitializers) { | 6736 if (skipNonConstInitializers) { |
6667 return; | 6737 return; |
6668 } | 6738 } |
6669 UnlinkedVariable variable = serializeVariableText(''' | 6739 UnlinkedVariable variable = serializeVariableText(''' |
6670 class C { | 6740 class C { |
6671 int f1 = 0; | 6741 int f1 = 0; |
6672 int f2 = 0; | 6742 int f2 = 0; |
6673 } | 6743 } |
6674 final v = new C()..f1 = 1..f2 += 2; | 6744 final v = new C()..f1 = 1..f2 += 2; |
6675 '''); | 6745 '''); |
6676 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6746 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6677 // new C() | 6747 isValidConst: false, |
6678 UnlinkedConstOperation.invokeConstructor, | 6748 operators: [ |
6679 // ..f1 = 1 | 6749 // new C() |
6680 UnlinkedConstOperation.cascadeSectionBegin, | 6750 UnlinkedConstOperation.invokeConstructor, |
6681 UnlinkedConstOperation.pushInt, | 6751 // ..f1 = 1 |
6682 UnlinkedConstOperation.assignToProperty, | 6752 UnlinkedConstOperation.cascadeSectionBegin, |
6683 // C | 6753 UnlinkedConstOperation.pushInt, |
6684 UnlinkedConstOperation.cascadeSectionEnd, | 6754 UnlinkedConstOperation.assignToProperty, |
6685 // ..f2 += 2 | 6755 // C |
6686 UnlinkedConstOperation.cascadeSectionBegin, | 6756 UnlinkedConstOperation.cascadeSectionEnd, |
6687 UnlinkedConstOperation.pushInt, | 6757 // ..f2 += 2 |
6688 UnlinkedConstOperation.assignToProperty, | 6758 UnlinkedConstOperation.cascadeSectionBegin, |
6689 // C | 6759 UnlinkedConstOperation.pushInt, |
6690 UnlinkedConstOperation.cascadeSectionEnd, | 6760 UnlinkedConstOperation.assignToProperty, |
6691 ], assignmentOperators: [ | 6761 // C |
6692 UnlinkedExprAssignOperator.assign, | 6762 UnlinkedConstOperation.cascadeSectionEnd, |
6693 UnlinkedExprAssignOperator.plus, | 6763 ], |
6694 ], ints: [ | 6764 assignmentOperators: [ |
6695 0, 0, // new C() | 6765 UnlinkedExprAssignOperator.assign, |
6696 1, // f1 = 1 | 6766 UnlinkedExprAssignOperator.plus, |
6697 2, // f2 += 2 | 6767 ], |
6698 ], strings: [ | 6768 ints: [ |
6699 'f1', | 6769 0, 0, // new C() |
6700 'f2', | 6770 1, // f1 = 1 |
6701 ], referenceValidators: [ | 6771 2, // f2 += 2 |
6702 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 6772 ], |
6703 expectedKind: ReferenceKind.classOrEnum) | 6773 strings: [ |
6704 ]); | 6774 'f1', |
| 6775 'f2', |
| 6776 ], |
| 6777 referenceValidators: [ |
| 6778 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
| 6779 expectedKind: ReferenceKind.classOrEnum) |
| 6780 ]); |
6705 } | 6781 } |
6706 | 6782 |
6707 test_expr_cascadeSection_embedded() { | 6783 test_expr_cascadeSection_embedded() { |
6708 if (skipNonConstInitializers) { | 6784 if (skipNonConstInitializers) { |
6709 return; | 6785 return; |
6710 } | 6786 } |
6711 UnlinkedVariable variable = serializeVariableText(''' | 6787 UnlinkedVariable variable = serializeVariableText(''' |
6712 class A { | 6788 class A { |
6713 int fa1; | 6789 int fa1; |
6714 B b; | 6790 B b; |
6715 int fa2; | 6791 int fa2; |
6716 } | 6792 } |
6717 class B { | 6793 class B { |
6718 int fb; | 6794 int fb; |
6719 } | 6795 } |
6720 final v = new A() | 6796 final v = new A() |
6721 ..fa1 = 1 | 6797 ..fa1 = 1 |
6722 ..b = (new B()..fb = 2) | 6798 ..b = (new B()..fb = 2) |
6723 ..fa2 = 3; | 6799 ..fa2 = 3; |
6724 '''); | 6800 '''); |
6725 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6801 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6726 // new A() | 6802 isValidConst: false, |
6727 UnlinkedConstOperation.invokeConstructor, | 6803 operators: [ |
6728 // ..fa1 = 1 | 6804 // new A() |
6729 UnlinkedConstOperation.cascadeSectionBegin, | 6805 UnlinkedConstOperation.invokeConstructor, |
6730 UnlinkedConstOperation.pushInt, | 6806 // ..fa1 = 1 |
6731 UnlinkedConstOperation.assignToProperty, | 6807 UnlinkedConstOperation.cascadeSectionBegin, |
6732 UnlinkedConstOperation.cascadeSectionEnd, | 6808 UnlinkedConstOperation.pushInt, |
6733 // ..b | 6809 UnlinkedConstOperation.assignToProperty, |
6734 UnlinkedConstOperation.cascadeSectionBegin, | 6810 UnlinkedConstOperation.cascadeSectionEnd, |
6735 // new B() | 6811 // ..b |
6736 UnlinkedConstOperation.invokeConstructor, | 6812 UnlinkedConstOperation.cascadeSectionBegin, |
6737 // ..fb = 2 | 6813 // new B() |
6738 UnlinkedConstOperation.cascadeSectionBegin, | 6814 UnlinkedConstOperation.invokeConstructor, |
6739 UnlinkedConstOperation.pushInt, | 6815 // ..fb = 2 |
6740 UnlinkedConstOperation.assignToProperty, | 6816 UnlinkedConstOperation.cascadeSectionBegin, |
6741 UnlinkedConstOperation.cascadeSectionEnd, | 6817 UnlinkedConstOperation.pushInt, |
6742 // ..b = <pop value> | 6818 UnlinkedConstOperation.assignToProperty, |
6743 UnlinkedConstOperation.assignToProperty, | 6819 UnlinkedConstOperation.cascadeSectionEnd, |
6744 UnlinkedConstOperation.cascadeSectionEnd, | 6820 // ..b = <pop value> |
6745 // ..fa2 = 3 | 6821 UnlinkedConstOperation.assignToProperty, |
6746 UnlinkedConstOperation.cascadeSectionBegin, | 6822 UnlinkedConstOperation.cascadeSectionEnd, |
6747 UnlinkedConstOperation.pushInt, | 6823 // ..fa2 = 3 |
6748 UnlinkedConstOperation.assignToProperty, | 6824 UnlinkedConstOperation.cascadeSectionBegin, |
6749 UnlinkedConstOperation.cascadeSectionEnd, | 6825 UnlinkedConstOperation.pushInt, |
6750 ], assignmentOperators: [ | 6826 UnlinkedConstOperation.assignToProperty, |
6751 UnlinkedExprAssignOperator.assign, | 6827 UnlinkedConstOperation.cascadeSectionEnd, |
6752 UnlinkedExprAssignOperator.assign, | 6828 ], |
6753 UnlinkedExprAssignOperator.assign, | 6829 assignmentOperators: [ |
6754 UnlinkedExprAssignOperator.assign, | 6830 UnlinkedExprAssignOperator.assign, |
6755 ], ints: [ | 6831 UnlinkedExprAssignOperator.assign, |
6756 0, | 6832 UnlinkedExprAssignOperator.assign, |
6757 0, | 6833 UnlinkedExprAssignOperator.assign, |
6758 1, | 6834 ], |
6759 0, | 6835 ints: [ |
6760 0, | 6836 0, |
6761 2, | 6837 0, |
6762 3, | 6838 1, |
6763 ], strings: [ | 6839 0, |
6764 'fa1', | 6840 0, |
6765 'fb', | 6841 2, |
6766 'b', | 6842 3, |
6767 'fa2', | 6843 ], |
6768 ], referenceValidators: [ | 6844 strings: [ |
6769 (EntityRef r) => checkTypeRef(r, null, null, 'A', | 6845 'fa1', |
6770 expectedKind: ReferenceKind.classOrEnum), | 6846 'fb', |
6771 (EntityRef r) => checkTypeRef(r, null, null, 'B', | 6847 'b', |
6772 expectedKind: ReferenceKind.classOrEnum), | 6848 'fa2', |
6773 ]); | 6849 ], |
| 6850 referenceValidators: [ |
| 6851 (EntityRef r) => checkTypeRef(r, null, null, 'A', |
| 6852 expectedKind: ReferenceKind.classOrEnum), |
| 6853 (EntityRef r) => checkTypeRef(r, null, null, 'B', |
| 6854 expectedKind: ReferenceKind.classOrEnum), |
| 6855 ]); |
6774 } | 6856 } |
6775 | 6857 |
6776 test_expr_cascadeSection_invokeMethod() { | 6858 test_expr_cascadeSection_invokeMethod() { |
6777 if (skipNonConstInitializers) { | 6859 if (skipNonConstInitializers) { |
6778 return; | 6860 return; |
6779 } | 6861 } |
6780 UnlinkedVariable variable = serializeVariableText(''' | 6862 UnlinkedVariable variable = serializeVariableText(''' |
6781 class A { | 6863 class A { |
6782 int m(int _) => 0; | 6864 int m(int _) => 0; |
6783 } | 6865 } |
6784 final A a = new A(); | 6866 final A a = new A(); |
6785 final v = a..m(5).abs()..m(6); | 6867 final v = a..m(5).abs()..m(6); |
6786 '''); | 6868 '''); |
6787 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6869 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6788 // a | 6870 isValidConst: false, |
6789 UnlinkedConstOperation.pushReference, | 6871 operators: [ |
6790 // ..m(5) | 6872 // a |
6791 UnlinkedConstOperation.cascadeSectionBegin, | 6873 UnlinkedConstOperation.pushReference, |
6792 UnlinkedConstOperation.pushInt, | 6874 // ..m(5) |
6793 UnlinkedConstOperation.invokeMethod, | 6875 UnlinkedConstOperation.cascadeSectionBegin, |
6794 // ..abs() | 6876 UnlinkedConstOperation.pushInt, |
6795 UnlinkedConstOperation.invokeMethod, | 6877 UnlinkedConstOperation.invokeMethod, |
6796 // a | 6878 // ..abs() |
6797 UnlinkedConstOperation.cascadeSectionEnd, | 6879 UnlinkedConstOperation.invokeMethod, |
6798 // ..m(6) | 6880 // a |
6799 UnlinkedConstOperation.cascadeSectionBegin, | 6881 UnlinkedConstOperation.cascadeSectionEnd, |
6800 UnlinkedConstOperation.pushInt, | 6882 // ..m(6) |
6801 UnlinkedConstOperation.invokeMethod, | 6883 UnlinkedConstOperation.cascadeSectionBegin, |
6802 // a | 6884 UnlinkedConstOperation.pushInt, |
6803 UnlinkedConstOperation.cascadeSectionEnd, | 6885 UnlinkedConstOperation.invokeMethod, |
6804 ], ints: [ | 6886 // a |
6805 5, 0, 1, // m(5) | 6887 UnlinkedConstOperation.cascadeSectionEnd, |
6806 0, 0, // abs() | 6888 ], |
6807 6, 0, 1, // m(5) | 6889 ints: [ |
6808 ], strings: [ | 6890 5, 0, 1, // m(5) |
6809 'm', | 6891 0, 0, // abs() |
6810 'abs', | 6892 6, 0, 1, // m(5) |
6811 'm', | 6893 ], |
6812 ], referenceValidators: [ | 6894 strings: [ |
6813 (EntityRef r) => checkTypeRef(r, null, null, 'a', | 6895 'm', |
6814 expectedKind: ReferenceKind.topLevelPropertyAccessor), | 6896 'abs', |
6815 ]); | 6897 'm', |
| 6898 ], |
| 6899 referenceValidators: [ |
| 6900 (EntityRef r) => checkTypeRef(r, null, null, 'a', |
| 6901 expectedKind: ReferenceKind.topLevelPropertyAccessor), |
| 6902 ]); |
6816 } | 6903 } |
6817 | 6904 |
6818 test_expr_extractIndex_ofClassField() { | 6905 test_expr_extractIndex_ofClassField() { |
6819 if (skipNonConstInitializers) { | 6906 if (skipNonConstInitializers) { |
6820 return; | 6907 return; |
6821 } | 6908 } |
6822 UnlinkedVariable variable = serializeVariableText(''' | 6909 UnlinkedVariable variable = serializeVariableText(''' |
6823 class C { | 6910 class C { |
6824 List<int> get items => null; | 6911 List<int> get items => null; |
6825 } | 6912 } |
6826 final v = new C().items[5]; | 6913 final v = new C().items[5]; |
6827 '''); | 6914 '''); |
6828 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6915 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6829 UnlinkedConstOperation.invokeConstructor, | 6916 isValidConst: false, |
6830 UnlinkedConstOperation.extractProperty, | 6917 operators: [ |
6831 UnlinkedConstOperation.pushInt, | 6918 UnlinkedConstOperation.invokeConstructor, |
6832 UnlinkedConstOperation.extractIndex, | 6919 UnlinkedConstOperation.extractProperty, |
6833 ], ints: [ | 6920 UnlinkedConstOperation.pushInt, |
6834 0, | 6921 UnlinkedConstOperation.extractIndex, |
6835 0, | 6922 ], |
6836 5 | 6923 ints: [ |
6837 ], strings: [ | 6924 0, |
6838 'items' | 6925 0, |
6839 ], referenceValidators: [ | 6926 5 |
6840 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 6927 ], |
6841 expectedKind: ReferenceKind.classOrEnum) | 6928 strings: [ |
6842 ]); | 6929 'items' |
| 6930 ], |
| 6931 referenceValidators: [ |
| 6932 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
| 6933 expectedKind: ReferenceKind.classOrEnum) |
| 6934 ]); |
6843 } | 6935 } |
6844 | 6936 |
6845 test_expr_extractProperty_ofInvokeConstructor() { | 6937 test_expr_extractProperty_ofInvokeConstructor() { |
6846 if (skipNonConstInitializers) { | 6938 if (skipNonConstInitializers) { |
6847 return; | 6939 return; |
6848 } | 6940 } |
6849 UnlinkedVariable variable = serializeVariableText(''' | 6941 UnlinkedVariable variable = serializeVariableText(''' |
6850 class C { | 6942 class C { |
6851 int f = 0; | 6943 int f = 0; |
6852 } | 6944 } |
6853 final v = new C().f; | 6945 final v = new C().f; |
6854 '''); | 6946 '''); |
6855 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6947 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6856 UnlinkedConstOperation.invokeConstructor, | 6948 isValidConst: false, |
6857 UnlinkedConstOperation.extractProperty, | 6949 operators: [ |
6858 ], ints: [ | 6950 UnlinkedConstOperation.invokeConstructor, |
6859 0, | 6951 UnlinkedConstOperation.extractProperty, |
6860 0 | 6952 ], |
6861 ], strings: [ | 6953 ints: [ |
6862 'f' | 6954 0, |
6863 ], referenceValidators: [ | 6955 0 |
6864 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 6956 ], |
6865 expectedKind: ReferenceKind.classOrEnum) | 6957 strings: [ |
6866 ]); | 6958 'f' |
| 6959 ], |
| 6960 referenceValidators: [ |
| 6961 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
| 6962 expectedKind: ReferenceKind.classOrEnum) |
| 6963 ]); |
6867 } | 6964 } |
6868 | 6965 |
6869 test_expr_functionExpression_asArgument() { | 6966 test_expr_functionExpression_asArgument() { |
6870 if (skipNonConstInitializers) { | 6967 if (skipNonConstInitializers) { |
6871 return; | 6968 return; |
6872 } | 6969 } |
6873 UnlinkedVariable variable = serializeVariableText(''' | 6970 UnlinkedVariable variable = serializeVariableText(''' |
6874 final v = foo(5, () => 42); | 6971 final v = foo(5, () => 42); |
6875 foo(a, b) {} | 6972 foo(a, b) {} |
6876 '''); | 6973 '''); |
6877 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 6974 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6878 UnlinkedConstOperation.pushInt, | 6975 isValidConst: false, |
6879 UnlinkedConstOperation.pushLocalFunctionReference, | 6976 operators: [ |
6880 UnlinkedConstOperation.invokeMethodRef | 6977 UnlinkedConstOperation.pushInt, |
6881 ], ints: [ | 6978 UnlinkedConstOperation.pushLocalFunctionReference, |
6882 5, | 6979 UnlinkedConstOperation.invokeMethodRef |
6883 0, | 6980 ], |
6884 0, | 6981 ints: [ |
6885 0, | 6982 5, |
6886 2 | 6983 0, |
6887 ], referenceValidators: [ | 6984 0, |
6888 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 6985 0, |
6889 expectedKind: ReferenceKind.topLevelFunction) | 6986 2 |
6890 ]); | 6987 ], |
| 6988 referenceValidators: [ |
| 6989 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
| 6990 expectedKind: ReferenceKind.topLevelFunction) |
| 6991 ]); |
6891 } | 6992 } |
6892 | 6993 |
6893 test_expr_functionExpression_asArgument_multiple() { | 6994 test_expr_functionExpression_asArgument_multiple() { |
6894 if (skipNonConstInitializers) { | 6995 if (skipNonConstInitializers) { |
6895 return; | 6996 return; |
6896 } | 6997 } |
6897 UnlinkedVariable variable = serializeVariableText(''' | 6998 UnlinkedVariable variable = serializeVariableText(''' |
6898 final v = foo(5, () => 42, () => 43); | 6999 final v = foo(5, () => 42, () => 43); |
6899 foo(a, b, c) {} | 7000 foo(a, b, c) {} |
6900 '''); | 7001 '''); |
6901 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7002 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6902 UnlinkedConstOperation.pushInt, | 7003 isValidConst: false, |
6903 UnlinkedConstOperation.pushLocalFunctionReference, | 7004 operators: [ |
6904 UnlinkedConstOperation.pushLocalFunctionReference, | 7005 UnlinkedConstOperation.pushInt, |
6905 UnlinkedConstOperation.invokeMethodRef | 7006 UnlinkedConstOperation.pushLocalFunctionReference, |
6906 ], ints: [ | 7007 UnlinkedConstOperation.pushLocalFunctionReference, |
6907 5, | 7008 UnlinkedConstOperation.invokeMethodRef |
6908 0, | 7009 ], |
6909 0, | 7010 ints: [ |
6910 0, | 7011 5, |
6911 1, | 7012 0, |
6912 0, | 7013 0, |
6913 3 | 7014 0, |
6914 ], referenceValidators: [ | 7015 1, |
6915 (EntityRef r) => checkTypeRef(r, null, null, 'foo', | 7016 0, |
6916 expectedKind: ReferenceKind.topLevelFunction) | 7017 3 |
6917 ]); | 7018 ], |
| 7019 referenceValidators: [ |
| 7020 (EntityRef r) => checkTypeRef(r, null, null, 'foo', |
| 7021 expectedKind: ReferenceKind.topLevelFunction) |
| 7022 ]); |
6918 } | 7023 } |
6919 | 7024 |
6920 test_expr_functionExpression_withBlockBody() { | 7025 test_expr_functionExpression_withBlockBody() { |
6921 if (skipNonConstInitializers) { | 7026 if (skipNonConstInitializers) { |
6922 return; | 7027 return; |
6923 } | 7028 } |
6924 UnlinkedVariable variable = serializeVariableText(''' | 7029 UnlinkedVariable variable = serializeVariableText(''' |
6925 final v = () { return 42; }; | 7030 final v = () { return 42; }; |
6926 '''); | 7031 '''); |
6927 _assertUnlinkedConst(variable.constExpr, | 7032 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6928 isValidConst: false, | 7033 isValidConst: false, |
6929 operators: [UnlinkedConstOperation.pushLocalFunctionReference], | 7034 operators: [UnlinkedConstOperation.pushLocalFunctionReference], |
6930 ints: [0, 0]); | 7035 ints: [0, 0]); |
6931 } | 7036 } |
6932 | 7037 |
6933 test_expr_functionExpression_withExpressionBody() { | 7038 test_expr_functionExpression_withExpressionBody() { |
6934 if (skipNonConstInitializers) { | 7039 if (skipNonConstInitializers) { |
6935 return; | 7040 return; |
6936 } | 7041 } |
6937 UnlinkedVariable variable = serializeVariableText(''' | 7042 UnlinkedVariable variable = serializeVariableText(''' |
6938 final v = () => 42; | 7043 final v = () => 42; |
6939 '''); | 7044 '''); |
6940 _assertUnlinkedConst(variable.constExpr, | 7045 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6941 isValidConst: false, | 7046 isValidConst: false, |
6942 operators: [UnlinkedConstOperation.pushLocalFunctionReference], | 7047 operators: [UnlinkedConstOperation.pushLocalFunctionReference], |
6943 ints: [0, 0]); | 7048 ints: [0, 0]); |
6944 } | 7049 } |
6945 | 7050 |
6946 test_expr_functionExpressionInvocation_withBlockBody() { | 7051 test_expr_functionExpressionInvocation_withBlockBody() { |
6947 if (skipNonConstInitializers) { | 7052 if (skipNonConstInitializers) { |
6948 return; | 7053 return; |
6949 } | 7054 } |
6950 UnlinkedVariable variable = serializeVariableText(''' | 7055 UnlinkedVariable variable = serializeVariableText(''' |
6951 final v = ((a, b) {return 42;})(1, 2); | 7056 final v = ((a, b) {return 42;})(1, 2); |
6952 '''); | 7057 '''); |
6953 _assertUnlinkedConst(variable.constExpr, | 7058 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6954 isValidConst: false, operators: [UnlinkedConstOperation.pushNull]); | 7059 isValidConst: false, operators: [UnlinkedConstOperation.pushNull]); |
6955 } | 7060 } |
6956 | 7061 |
6957 test_expr_functionExpressionInvocation_withExpressionBody() { | 7062 test_expr_functionExpressionInvocation_withExpressionBody() { |
6958 if (skipNonConstInitializers) { | 7063 if (skipNonConstInitializers) { |
6959 return; | 7064 return; |
6960 } | 7065 } |
6961 UnlinkedVariable variable = serializeVariableText(''' | 7066 UnlinkedVariable variable = serializeVariableText(''' |
6962 final v = ((a, b) => 42)(1, 2); | 7067 final v = ((a, b) => 42)(1, 2); |
6963 '''); | 7068 '''); |
6964 _assertUnlinkedConst(variable.constExpr, | 7069 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6965 isValidConst: false, operators: [UnlinkedConstOperation.pushNull]); | 7070 isValidConst: false, operators: [UnlinkedConstOperation.pushNull]); |
6966 } | 7071 } |
6967 | 7072 |
6968 test_expr_invokeMethod_instance() { | 7073 test_expr_invokeMethod_instance() { |
6969 if (skipNonConstInitializers) { | 7074 if (skipNonConstInitializers) { |
6970 return; | 7075 return; |
6971 } | 7076 } |
6972 UnlinkedVariable variable = serializeVariableText(''' | 7077 UnlinkedVariable variable = serializeVariableText(''' |
6973 class C { | 7078 class C { |
6974 int m(a, {b, c}) => 42; | 7079 int m(a, {b, c}) => 42; |
6975 } | 7080 } |
6976 final v = new C().m(1, b: 2, c: 3); | 7081 final v = new C().m(1, b: 2, c: 3); |
6977 '''); | 7082 '''); |
6978 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7083 _assertUnlinkedConst(variable.initializer.bodyExpr, |
6979 UnlinkedConstOperation.invokeConstructor, | 7084 isValidConst: false, |
6980 UnlinkedConstOperation.pushInt, | 7085 operators: [ |
6981 UnlinkedConstOperation.pushInt, | 7086 UnlinkedConstOperation.invokeConstructor, |
6982 UnlinkedConstOperation.pushInt, | 7087 UnlinkedConstOperation.pushInt, |
6983 UnlinkedConstOperation.invokeMethod, | 7088 UnlinkedConstOperation.pushInt, |
6984 ], ints: [ | 7089 UnlinkedConstOperation.pushInt, |
6985 0, | 7090 UnlinkedConstOperation.invokeMethod, |
6986 0, | 7091 ], |
6987 1, | 7092 ints: [ |
6988 2, | 7093 0, |
6989 3, | 7094 0, |
6990 2, | 7095 1, |
6991 1 | 7096 2, |
6992 ], strings: [ | 7097 3, |
6993 'b', | 7098 2, |
6994 'c', | 7099 1 |
6995 'm' | 7100 ], |
6996 ], referenceValidators: [ | 7101 strings: [ |
6997 (EntityRef r) => checkTypeRef(r, null, null, 'C', | 7102 'b', |
6998 expectedKind: ReferenceKind.classOrEnum) | 7103 'c', |
6999 ]); | 7104 'm' |
| 7105 ], |
| 7106 referenceValidators: [ |
| 7107 (EntityRef r) => checkTypeRef(r, null, null, 'C', |
| 7108 expectedKind: ReferenceKind.classOrEnum) |
| 7109 ]); |
7000 } | 7110 } |
7001 | 7111 |
7002 test_expr_invokeMethodRef_instance() { | 7112 test_expr_invokeMethodRef_instance() { |
7003 if (skipNonConstInitializers) { | 7113 if (skipNonConstInitializers) { |
7004 return; | 7114 return; |
7005 } | 7115 } |
7006 UnlinkedVariable variable = serializeVariableText(''' | 7116 UnlinkedVariable variable = serializeVariableText(''' |
7007 class A { | 7117 class A { |
7008 B b; | 7118 B b; |
7009 } | 7119 } |
7010 class B { | 7120 class B { |
7011 C c; | 7121 C c; |
7012 } | 7122 } |
7013 class C { | 7123 class C { |
7014 int m(int a, int b) => a + b; | 7124 int m(int a, int b) => a + b; |
7015 } | 7125 } |
7016 A a = new A(); | 7126 A a = new A(); |
7017 final v = a.b.c.m(10, 20); | 7127 final v = a.b.c.m(10, 20); |
7018 '''); | 7128 '''); |
7019 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7129 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7020 UnlinkedConstOperation.pushInt, | 7130 isValidConst: false, |
7021 UnlinkedConstOperation.pushInt, | 7131 operators: [ |
7022 UnlinkedConstOperation.invokeMethodRef, | 7132 UnlinkedConstOperation.pushInt, |
7023 ], ints: [ | 7133 UnlinkedConstOperation.pushInt, |
7024 10, | 7134 UnlinkedConstOperation.invokeMethodRef, |
7025 20, | 7135 ], |
7026 0, | 7136 ints: [ |
7027 2 | 7137 10, |
7028 ], strings: [], referenceValidators: [ | 7138 20, |
7029 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 7139 0, |
7030 expectedKind: ReferenceKind.unresolved, | 7140 2 |
7031 prefixExpectations: [ | 7141 ], |
7032 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), | 7142 strings: [], |
7033 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), | 7143 referenceValidators: [ |
7034 new _PrefixExpectation( | 7144 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
7035 ReferenceKind.topLevelPropertyAccessor, 'a') | 7145 expectedKind: ReferenceKind.unresolved, |
7036 ]) | 7146 prefixExpectations: [ |
7037 ]); | 7147 new _PrefixExpectation(ReferenceKind.unresolved, 'c'), |
| 7148 new _PrefixExpectation(ReferenceKind.unresolved, 'b'), |
| 7149 new _PrefixExpectation( |
| 7150 ReferenceKind.topLevelPropertyAccessor, 'a') |
| 7151 ]) |
| 7152 ]); |
7038 } | 7153 } |
7039 | 7154 |
7040 test_expr_invokeMethodRef_static_importedWithPrefix() { | 7155 test_expr_invokeMethodRef_static_importedWithPrefix() { |
7041 if (skipNonConstInitializers) { | 7156 if (skipNonConstInitializers) { |
7042 return; | 7157 return; |
7043 } | 7158 } |
7044 addNamedSource( | 7159 addNamedSource( |
7045 '/a.dart', | 7160 '/a.dart', |
7046 ''' | 7161 ''' |
7047 class C { | 7162 class C { |
7048 static int m() => 42; | 7163 static int m() => 42; |
7049 } | 7164 } |
7050 '''); | 7165 '''); |
7051 UnlinkedVariable variable = serializeVariableText(''' | 7166 UnlinkedVariable variable = serializeVariableText(''' |
7052 import 'a.dart' as p; | 7167 import 'a.dart' as p; |
7053 final v = p.C.m(); | 7168 final v = p.C.m(); |
7054 '''); | 7169 '''); |
7055 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7170 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7056 UnlinkedConstOperation.invokeMethodRef, | 7171 isValidConst: false, |
7057 ], ints: [ | 7172 operators: [ |
7058 0, | 7173 UnlinkedConstOperation.invokeMethodRef, |
7059 0 | 7174 ], |
7060 ], strings: [], referenceValidators: [ | 7175 ints: [ |
7061 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 7176 0, |
7062 expectedKind: ReferenceKind.method, | 7177 0 |
7063 prefixExpectations: [ | 7178 ], |
7064 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', | 7179 strings: [], |
7065 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), | 7180 referenceValidators: [ |
7066 new _PrefixExpectation(ReferenceKind.prefix, 'p') | 7181 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
7067 ]) | 7182 expectedKind: ReferenceKind.method, |
7068 ]); | 7183 prefixExpectations: [ |
| 7184 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C', |
| 7185 absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart'), |
| 7186 new _PrefixExpectation(ReferenceKind.prefix, 'p') |
| 7187 ]) |
| 7188 ]); |
7069 } | 7189 } |
7070 | 7190 |
7071 test_expr_invokeMethodRef_with_reference_arg() { | 7191 test_expr_invokeMethodRef_with_reference_arg() { |
7072 if (skipNonConstInitializers) { | 7192 if (skipNonConstInitializers) { |
7073 return; | 7193 return; |
7074 } | 7194 } |
7075 UnlinkedVariable variable = serializeVariableText(''' | 7195 UnlinkedVariable variable = serializeVariableText(''' |
7076 f(x) => null; | 7196 f(x) => null; |
7077 final u = null; | 7197 final u = null; |
7078 final v = f(u); | 7198 final v = f(u); |
7079 '''); | 7199 '''); |
7080 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7200 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7081 UnlinkedConstOperation.pushReference, | 7201 isValidConst: false, |
7082 UnlinkedConstOperation.invokeMethodRef | 7202 operators: [ |
7083 ], ints: [ | 7203 UnlinkedConstOperation.pushReference, |
7084 0, | 7204 UnlinkedConstOperation.invokeMethodRef |
7085 1 | 7205 ], |
7086 ], referenceValidators: [ | 7206 ints: [ |
7087 (EntityRef r) => checkTypeRef(r, null, null, 'u', | 7207 0, |
7088 expectedKind: ReferenceKind.topLevelPropertyAccessor), | 7208 1 |
7089 (EntityRef r) => checkTypeRef(r, null, null, 'f', | 7209 ], |
7090 expectedKind: ReferenceKind.topLevelFunction) | 7210 referenceValidators: [ |
7091 ]); | 7211 (EntityRef r) => checkTypeRef(r, null, null, 'u', |
| 7212 expectedKind: ReferenceKind.topLevelPropertyAccessor), |
| 7213 (EntityRef r) => checkTypeRef(r, null, null, 'f', |
| 7214 expectedKind: ReferenceKind.topLevelFunction) |
| 7215 ]); |
7092 } | 7216 } |
7093 | 7217 |
7094 test_expr_throwException() { | 7218 test_expr_throwException() { |
7095 if (skipNonConstInitializers) { | 7219 if (skipNonConstInitializers) { |
7096 return; | 7220 return; |
7097 } | 7221 } |
7098 UnlinkedVariable variable = serializeVariableText(''' | 7222 UnlinkedVariable variable = serializeVariableText(''' |
7099 final v = throw 1 + 2; | 7223 final v = throw 1 + 2; |
7100 '''); | 7224 '''); |
7101 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7225 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7102 UnlinkedConstOperation.pushInt, | 7226 isValidConst: false, |
7103 UnlinkedConstOperation.pushInt, | 7227 operators: [ |
7104 UnlinkedConstOperation.add, | 7228 UnlinkedConstOperation.pushInt, |
7105 UnlinkedConstOperation.throwException, | 7229 UnlinkedConstOperation.pushInt, |
7106 ], ints: [ | 7230 UnlinkedConstOperation.add, |
7107 1, | 7231 UnlinkedConstOperation.throwException, |
7108 2 | 7232 ], |
7109 ]); | 7233 ints: [ |
| 7234 1, |
| 7235 2 |
| 7236 ]); |
7110 } | 7237 } |
7111 | 7238 |
7112 test_expr_typeCast() { | 7239 test_expr_typeCast() { |
7113 if (skipNonConstInitializers) { | 7240 if (skipNonConstInitializers) { |
7114 return; | 7241 return; |
7115 } | 7242 } |
7116 UnlinkedVariable variable = serializeVariableText(''' | 7243 UnlinkedVariable variable = serializeVariableText(''' |
7117 final v = 42 as num; | 7244 final v = 42 as num; |
7118 '''); | 7245 '''); |
7119 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7246 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7120 UnlinkedConstOperation.pushInt, | 7247 isValidConst: false, |
7121 UnlinkedConstOperation.typeCast, | 7248 operators: [ |
7122 ], ints: [ | 7249 UnlinkedConstOperation.pushInt, |
7123 42 | 7250 UnlinkedConstOperation.typeCast, |
7124 ], referenceValidators: [ | 7251 ], |
7125 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'num', | 7252 ints: [ |
7126 expectedKind: ReferenceKind.classOrEnum) | 7253 42 |
7127 ]); | 7254 ], |
| 7255 referenceValidators: [ |
| 7256 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'num', |
| 7257 expectedKind: ReferenceKind.classOrEnum) |
| 7258 ]); |
7128 } | 7259 } |
7129 | 7260 |
7130 test_expr_typeCheck() { | 7261 test_expr_typeCheck() { |
7131 if (skipNonConstInitializers) { | 7262 if (skipNonConstInitializers) { |
7132 return; | 7263 return; |
7133 } | 7264 } |
7134 UnlinkedVariable variable = serializeVariableText(''' | 7265 UnlinkedVariable variable = serializeVariableText(''' |
7135 final v = 42 is num; | 7266 final v = 42 is num; |
7136 '''); | 7267 '''); |
7137 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7268 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7138 UnlinkedConstOperation.pushInt, | 7269 isValidConst: false, |
7139 UnlinkedConstOperation.typeCheck, | 7270 operators: [ |
7140 ], ints: [ | 7271 UnlinkedConstOperation.pushInt, |
7141 42 | 7272 UnlinkedConstOperation.typeCheck, |
7142 ], referenceValidators: [ | 7273 ], |
7143 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'num', | 7274 ints: [ |
7144 expectedKind: ReferenceKind.classOrEnum) | 7275 42 |
7145 ]); | 7276 ], |
| 7277 referenceValidators: [ |
| 7278 (EntityRef r) => checkTypeRef(r, 'dart:core', 'dart:core', 'num', |
| 7279 expectedKind: ReferenceKind.classOrEnum) |
| 7280 ]); |
7146 } | 7281 } |
7147 | 7282 |
7148 test_field() { | 7283 test_field() { |
7149 UnlinkedClass cls = serializeClassText('class C { int i; }'); | 7284 UnlinkedClass cls = serializeClassText('class C { int i; }'); |
7150 UnlinkedVariable variable = findVariable('i', variables: cls.fields); | 7285 UnlinkedVariable variable = findVariable('i', variables: cls.fields); |
7151 expect(variable, isNotNull); | 7286 expect(variable, isNotNull); |
7152 expect(variable.isConst, isFalse); | 7287 expect(variable.isConst, isFalse); |
7153 expect(variable.isStatic, isFalse); | 7288 expect(variable.isStatic, isFalse); |
7154 expect(variable.isFinal, isFalse); | 7289 expect(variable.isFinal, isFalse); |
7155 expect(variable.constExpr, isNull); | 7290 expect(variable.initializer, isNull); |
7156 expect(findExecutable('i', executables: cls.executables), isNull); | 7291 expect(findExecutable('i', executables: cls.executables), isNull); |
7157 expect(findExecutable('i=', executables: cls.executables), isNull); | 7292 expect(findExecutable('i=', executables: cls.executables), isNull); |
7158 expect(unlinkedUnits[0].publicNamespace.names, hasLength(1)); | 7293 expect(unlinkedUnits[0].publicNamespace.names, hasLength(1)); |
7159 expect(unlinkedUnits[0].publicNamespace.names[0].name, 'C'); | 7294 expect(unlinkedUnits[0].publicNamespace.names[0].name, 'C'); |
7160 expect(unlinkedUnits[0].publicNamespace.names[0].members, isEmpty); | 7295 expect(unlinkedUnits[0].publicNamespace.names[0].members, isEmpty); |
7161 } | 7296 } |
7162 | 7297 |
7163 test_field_const() { | 7298 test_field_const() { |
7164 UnlinkedVariable variable = | 7299 UnlinkedVariable variable = |
7165 serializeClassText('class C { static const int i = 0; }').fields[0]; | 7300 serializeClassText('class C { static const int i = 0; }').fields[0]; |
7166 expect(variable.isConst, isTrue); | 7301 expect(variable.isConst, isTrue); |
7167 _assertUnlinkedConst(variable.constExpr, | 7302 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7168 operators: [UnlinkedConstOperation.pushInt], ints: [0]); | 7303 operators: [UnlinkedConstOperation.pushInt], ints: [0]); |
7169 } | 7304 } |
7170 | 7305 |
7171 test_field_documented() { | 7306 test_field_documented() { |
7172 String text = ''' | 7307 String text = ''' |
7173 class C { | 7308 class C { |
7174 /** | 7309 /** |
7175 * Docs | 7310 * Docs |
7176 */ | 7311 */ |
7177 var v; | 7312 var v; |
7178 }'''; | 7313 }'''; |
7179 UnlinkedVariable variable = serializeClassText(text).fields[0]; | 7314 UnlinkedVariable variable = serializeClassText(text).fields[0]; |
7180 expect(variable.documentationComment, isNotNull); | 7315 expect(variable.documentationComment, isNotNull); |
7181 checkDocumentationComment(variable.documentationComment, text); | 7316 checkDocumentationComment(variable.documentationComment, text); |
7182 } | 7317 } |
7183 | 7318 |
7184 test_field_final() { | 7319 test_field_final() { |
7185 UnlinkedVariable variable = | 7320 UnlinkedVariable variable = |
7186 serializeClassText('class C { final int i = 0; }').fields[0]; | 7321 serializeClassText('class C { final int i = 0; }').fields[0]; |
7187 expect(variable.isFinal, isTrue); | 7322 expect(variable.isFinal, isTrue); |
7188 _assertUnlinkedConst(variable.constExpr, | 7323 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7189 operators: [UnlinkedConstOperation.pushInt], ints: [0]); | 7324 operators: [UnlinkedConstOperation.pushInt], ints: [0]); |
7190 } | 7325 } |
7191 | 7326 |
7192 test_field_final_notConstExpr() { | 7327 test_field_final_notConstExpr() { |
7193 UnlinkedVariable variable = serializeClassText(r''' | 7328 UnlinkedVariable variable = serializeClassText(r''' |
7194 class C { | 7329 class C { |
7195 final int f = 1 + m(); | 7330 final int f = 1 + m(); |
7196 static int m() => 42; | 7331 static int m() => 42; |
7197 }''').fields[0]; | 7332 }''').fields[0]; |
7198 expect(variable.isFinal, isTrue); | 7333 expect(variable.isFinal, isTrue); |
7199 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 7334 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7200 UnlinkedConstOperation.pushInt, | 7335 isValidConst: false, |
7201 UnlinkedConstOperation.invokeMethodRef, | 7336 operators: [ |
7202 UnlinkedConstOperation.add, | 7337 UnlinkedConstOperation.pushInt, |
7203 ], ints: [ | 7338 UnlinkedConstOperation.invokeMethodRef, |
7204 1, | 7339 UnlinkedConstOperation.add, |
7205 0, | 7340 ], |
7206 0 | 7341 ints: [ |
7207 ], strings: [], referenceValidators: [ | 7342 1, |
7208 (EntityRef r) => checkTypeRef(r, null, null, 'm', | 7343 0, |
7209 expectedKind: ReferenceKind.method, | 7344 0 |
7210 prefixExpectations: [ | 7345 ], |
7211 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') | 7346 strings: [], |
7212 ]) | 7347 referenceValidators: [ |
7213 ]); | 7348 (EntityRef r) => checkTypeRef(r, null, null, 'm', |
| 7349 expectedKind: ReferenceKind.method, |
| 7350 prefixExpectations: [ |
| 7351 new _PrefixExpectation(ReferenceKind.classOrEnum, 'C') |
| 7352 ]) |
| 7353 ]); |
7214 } | 7354 } |
7215 | 7355 |
7216 test_field_final_typeParameter() { | 7356 test_field_final_typeParameter() { |
7217 UnlinkedVariable variable = serializeClassText(r''' | 7357 UnlinkedVariable variable = serializeClassText(r''' |
7218 class C<T> { | 7358 class C<T> { |
7219 final f = <T>[]; | 7359 final f = <T>[]; |
7220 }''').fields[0]; | 7360 }''').fields[0]; |
7221 expect(variable.isFinal, isTrue); | 7361 expect(variable.isFinal, isTrue); |
7222 _assertUnlinkedConst(variable.constExpr, | 7362 _assertUnlinkedConst(variable.initializer.bodyExpr, |
7223 operators: [UnlinkedConstOperation.makeTypedList], | 7363 operators: [UnlinkedConstOperation.makeTypedList], |
7224 ints: [0], | 7364 ints: [0], |
7225 referenceValidators: [(EntityRef r) => checkParamTypeRef(r, 1)]); | 7365 referenceValidators: [(EntityRef r) => checkParamTypeRef(r, 1)]); |
7226 } | 7366 } |
7227 | 7367 |
7228 test_field_formal_param_inferred_type_explicit() { | 7368 test_field_formal_param_inferred_type_explicit() { |
7229 UnlinkedClass cls = serializeClassText( | 7369 UnlinkedClass cls = serializeClassText( |
7230 'class C extends D { var v; C(int this.v); }' | 7370 'class C extends D { var v; C(int this.v); }' |
7231 ' abstract class D { num get v; }', | 7371 ' abstract class D { num get v; }', |
7232 className: 'C'); | 7372 className: 'C'); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7300 test_field_propagated_type_final_immediate() { | 7440 test_field_propagated_type_final_immediate() { |
7301 UnlinkedVariable v = | 7441 UnlinkedVariable v = |
7302 serializeClassText('class C { final v = 0; }').fields[0]; | 7442 serializeClassText('class C { final v = 0; }').fields[0]; |
7303 checkLinkedTypeSlot(v.propagatedTypeSlot, 'dart:core', 'dart:core', 'int'); | 7443 checkLinkedTypeSlot(v.propagatedTypeSlot, 'dart:core', 'dart:core', 'int'); |
7304 } | 7444 } |
7305 | 7445 |
7306 test_field_static() { | 7446 test_field_static() { |
7307 UnlinkedVariable variable = | 7447 UnlinkedVariable variable = |
7308 serializeClassText('class C { static int i; }').fields[0]; | 7448 serializeClassText('class C { static int i; }').fields[0]; |
7309 expect(variable.isStatic, isTrue); | 7449 expect(variable.isStatic, isTrue); |
7310 expect(variable.constExpr, isNull); | 7450 expect(variable.initializer, isNull); |
7311 expect(unlinkedUnits[0].publicNamespace.names, hasLength(1)); | 7451 expect(unlinkedUnits[0].publicNamespace.names, hasLength(1)); |
7312 expect(unlinkedUnits[0].publicNamespace.names[0].name, 'C'); | 7452 expect(unlinkedUnits[0].publicNamespace.names[0].name, 'C'); |
7313 expect(unlinkedUnits[0].publicNamespace.names[0].members, hasLength(1)); | 7453 expect(unlinkedUnits[0].publicNamespace.names[0].members, hasLength(1)); |
7314 expect(unlinkedUnits[0].publicNamespace.names[0].members[0].name, 'i'); | 7454 expect(unlinkedUnits[0].publicNamespace.names[0].members[0].name, 'i'); |
7315 expect(unlinkedUnits[0].publicNamespace.names[0].members[0].kind, | 7455 expect(unlinkedUnits[0].publicNamespace.names[0].members[0].kind, |
7316 ReferenceKind.propertyAccessor); | 7456 ReferenceKind.propertyAccessor); |
7317 expect( | 7457 expect( |
7318 unlinkedUnits[0].publicNamespace.names[0].members[0].numTypeParameters, | 7458 unlinkedUnits[0].publicNamespace.names[0].members[0].numTypeParameters, |
7319 0); | 7459 0); |
7320 expect( | 7460 expect( |
7321 unlinkedUnits[0].publicNamespace.names[0].members[0].members, isEmpty); | 7461 unlinkedUnits[0].publicNamespace.names[0].members[0].members, isEmpty); |
7322 } | 7462 } |
7323 | 7463 |
7324 test_field_static_final() { | 7464 test_field_static_final() { |
7325 UnlinkedVariable variable = | 7465 UnlinkedVariable variable = |
7326 serializeClassText('class C { static final int i = 0; }').fields[0]; | 7466 serializeClassText('class C { static final int i = 0; }').fields[0]; |
7327 expect(variable.isStatic, isTrue); | 7467 expect(variable.isStatic, isTrue); |
7328 expect(variable.isFinal, isTrue); | 7468 expect(variable.isFinal, isTrue); |
7329 expect(variable.constExpr, isNull); | 7469 expect(variable.initializer.bodyExpr, isNull); |
7330 } | 7470 } |
7331 | 7471 |
7332 test_field_static_final_untyped() { | 7472 test_field_static_final_untyped() { |
7333 if (!checkAstDerivedData) { | 7473 if (!checkAstDerivedData) { |
7334 // The element model doesn't contain the initializer expressions needed | 7474 // The element model doesn't contain the initializer expressions needed |
7335 // for type inference. TODO(paulberry): fix. | 7475 // for type inference. TODO(paulberry): fix. |
7336 return; | 7476 return; |
7337 } | 7477 } |
7338 UnlinkedVariable variable = | 7478 UnlinkedVariable variable = |
7339 serializeClassText('class C { static final x = 0; }').fields[0]; | 7479 serializeClassText('class C { static final x = 0; }').fields[0]; |
7340 expect(variable.constExpr, isNotNull); | 7480 expect(variable.initializer.bodyExpr, isNotNull); |
7341 } | 7481 } |
7342 | 7482 |
7343 test_field_untyped() { | 7483 test_field_untyped() { |
7344 if (!checkAstDerivedData) { | 7484 if (!checkAstDerivedData) { |
7345 // The element model doesn't contain the initializer expressions needed | 7485 // The element model doesn't contain the initializer expressions needed |
7346 // for type inference. TODO(paulberry): fix. | 7486 // for type inference. TODO(paulberry): fix. |
7347 return; | 7487 return; |
7348 } | 7488 } |
7349 UnlinkedVariable variable = | 7489 UnlinkedVariable variable = |
7350 serializeClassText('class C { var x = 0; }').fields[0]; | 7490 serializeClassText('class C { var x = 0; }').fields[0]; |
7351 expect(variable.constExpr, isNotNull); | 7491 expect(variable.initializer.bodyExpr, isNotNull); |
7352 } | 7492 } |
7353 | 7493 |
7354 test_fully_linked_references_follow_other_references() { | 7494 test_fully_linked_references_follow_other_references() { |
7355 if (skipFullyLinkedData) { | 7495 if (skipFullyLinkedData) { |
7356 return; | 7496 return; |
7357 } | 7497 } |
7358 serializeLibraryText('final x = 0; String y;'); | 7498 serializeLibraryText('final x = 0; String y;'); |
7359 checkLinkedTypeSlot(unlinkedUnits[0].variables[0].propagatedTypeSlot, | 7499 checkLinkedTypeSlot(unlinkedUnits[0].variables[0].propagatedTypeSlot, |
7360 'dart:core', 'dart:core', 'int'); | 7500 'dart:core', 'dart:core', 'int'); |
7361 checkTypeRef( | 7501 checkTypeRef( |
(...skipping 2388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9750 | 9890 |
9751 test_variable_explicit_dynamic() { | 9891 test_variable_explicit_dynamic() { |
9752 UnlinkedVariable variable = serializeVariableText('dynamic v;'); | 9892 UnlinkedVariable variable = serializeVariableText('dynamic v;'); |
9753 checkDynamicTypeRef(variable.type); | 9893 checkDynamicTypeRef(variable.type); |
9754 } | 9894 } |
9755 | 9895 |
9756 test_variable_final_top_level() { | 9896 test_variable_final_top_level() { |
9757 UnlinkedVariable variable = | 9897 UnlinkedVariable variable = |
9758 serializeVariableText('final int i = 0;', variableName: 'i'); | 9898 serializeVariableText('final int i = 0;', variableName: 'i'); |
9759 expect(variable.isFinal, isTrue); | 9899 expect(variable.isFinal, isTrue); |
9760 expect(variable.constExpr, isNull); | 9900 expect(variable.initializer.bodyExpr, isNull); |
9761 } | 9901 } |
9762 | 9902 |
9763 test_variable_final_top_level_untyped() { | 9903 test_variable_final_top_level_untyped() { |
9764 if (!checkAstDerivedData) { | 9904 if (!checkAstDerivedData) { |
9765 // The element model doesn't contain the initializer expressions needed | 9905 // The element model doesn't contain the initializer expressions needed |
9766 // for type inference. TODO(paulberry): fix. | 9906 // for type inference. TODO(paulberry): fix. |
9767 return; | 9907 return; |
9768 } | 9908 } |
9769 UnlinkedVariable variable = serializeVariableText('final v = 0;'); | 9909 UnlinkedVariable variable = serializeVariableText('final v = 0;'); |
9770 expect(variable.constExpr, isNotNull); | 9910 expect(variable.initializer.bodyExpr, isNotNull); |
9771 } | 9911 } |
9772 | 9912 |
9773 test_variable_implicit_dynamic() { | 9913 test_variable_implicit_dynamic() { |
9774 UnlinkedVariable variable = serializeVariableText('var v;'); | 9914 UnlinkedVariable variable = serializeVariableText('var v;'); |
9775 expect(variable.type, isNull); | 9915 expect(variable.type, isNull); |
9776 } | 9916 } |
9777 | 9917 |
9778 test_variable_inferred_type_explicit_initialized() { | 9918 test_variable_inferred_type_explicit_initialized() { |
9779 UnlinkedVariable v = serializeVariableText('int v = 0;'); | 9919 UnlinkedVariable v = serializeVariableText('int v = 0;'); |
9780 expect(v.inferredTypeSlot, 0); | 9920 expect(v.inferredTypeSlot, 0); |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9995 */ | 10135 */ |
9996 void _assertAssignmentOperator( | 10136 void _assertAssignmentOperator( |
9997 String expr, UnlinkedExprAssignOperator expectedAssignOperator) { | 10137 String expr, UnlinkedExprAssignOperator expectedAssignOperator) { |
9998 if (skipNonConstInitializers) { | 10138 if (skipNonConstInitializers) { |
9999 return; | 10139 return; |
10000 } | 10140 } |
10001 UnlinkedVariable variable = serializeVariableText(''' | 10141 UnlinkedVariable variable = serializeVariableText(''' |
10002 int a = 0; | 10142 int a = 0; |
10003 final v = $expr; | 10143 final v = $expr; |
10004 '''); | 10144 '''); |
10005 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 10145 _assertUnlinkedConst(variable.initializer.bodyExpr, |
10006 UnlinkedConstOperation.pushInt, | 10146 isValidConst: false, |
10007 UnlinkedConstOperation.pushInt, | 10147 operators: [ |
10008 UnlinkedConstOperation.add, | 10148 UnlinkedConstOperation.pushInt, |
10009 UnlinkedConstOperation.assignToRef, | 10149 UnlinkedConstOperation.pushInt, |
10010 UnlinkedConstOperation.pushInt, | 10150 UnlinkedConstOperation.add, |
10011 UnlinkedConstOperation.add, | 10151 UnlinkedConstOperation.assignToRef, |
10012 ], assignmentOperators: [ | 10152 UnlinkedConstOperation.pushInt, |
10013 expectedAssignOperator | 10153 UnlinkedConstOperation.add, |
10014 ], ints: [ | 10154 ], |
10015 1, | 10155 assignmentOperators: [ |
10016 2, | 10156 expectedAssignOperator |
10017 3 | 10157 ], |
10018 ], strings: [], referenceValidators: [ | 10158 ints: [ |
10019 (EntityRef r) => checkTypeRef(r, null, null, 'a', | 10159 1, |
10020 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 10160 2, |
10021 ]); | 10161 3 |
| 10162 ], |
| 10163 strings: [], |
| 10164 referenceValidators: [ |
| 10165 (EntityRef r) => checkTypeRef(r, null, null, 'a', |
| 10166 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 10167 ]); |
10022 } | 10168 } |
10023 | 10169 |
10024 void _assertCodeRange(CodeRange codeRange, int offset, int length) { | 10170 void _assertCodeRange(CodeRange codeRange, int offset, int length) { |
10025 expect(codeRange, isNotNull); | 10171 expect(codeRange, isNotNull); |
10026 expect(codeRange.offset, offset); | 10172 expect(codeRange.offset, offset); |
10027 expect(codeRange.length, length); | 10173 expect(codeRange.length, length); |
10028 } | 10174 } |
10029 | 10175 |
10030 void _assertExecutableVisible(String code, UnlinkedExecutable f, | 10176 void _assertExecutableVisible(String code, UnlinkedExecutable f, |
10031 String visibleBegin, String visibleEnd) { | 10177 String visibleBegin, String visibleEnd) { |
(...skipping 24 matching lines...) Expand all Loading... |
10056 */ | 10202 */ |
10057 void _assertRefPrefixPostfixIncrementDecrement( | 10203 void _assertRefPrefixPostfixIncrementDecrement( |
10058 String expr, UnlinkedExprAssignOperator expectedAssignmentOperator) { | 10204 String expr, UnlinkedExprAssignOperator expectedAssignmentOperator) { |
10059 if (skipNonConstInitializers) { | 10205 if (skipNonConstInitializers) { |
10060 return; | 10206 return; |
10061 } | 10207 } |
10062 UnlinkedVariable variable = serializeVariableText(''' | 10208 UnlinkedVariable variable = serializeVariableText(''' |
10063 int a = 0; | 10209 int a = 0; |
10064 final v = $expr; | 10210 final v = $expr; |
10065 '''); | 10211 '''); |
10066 _assertUnlinkedConst(variable.constExpr, isValidConst: false, operators: [ | 10212 _assertUnlinkedConst(variable.initializer.bodyExpr, |
10067 UnlinkedConstOperation.assignToRef, | 10213 isValidConst: false, |
10068 UnlinkedConstOperation.pushInt, | 10214 operators: [ |
10069 UnlinkedConstOperation.add, | 10215 UnlinkedConstOperation.assignToRef, |
10070 ], assignmentOperators: [ | 10216 UnlinkedConstOperation.pushInt, |
10071 expectedAssignmentOperator | 10217 UnlinkedConstOperation.add, |
10072 ], ints: [ | 10218 ], |
10073 2 | 10219 assignmentOperators: [ |
10074 ], strings: [], referenceValidators: [ | 10220 expectedAssignmentOperator |
10075 (EntityRef r) => checkTypeRef(r, null, null, 'a', | 10221 ], |
10076 expectedKind: ReferenceKind.topLevelPropertyAccessor) | 10222 ints: [ |
10077 ]); | 10223 2 |
| 10224 ], |
| 10225 strings: [], |
| 10226 referenceValidators: [ |
| 10227 (EntityRef r) => checkTypeRef(r, null, null, 'a', |
| 10228 expectedKind: ReferenceKind.topLevelPropertyAccessor) |
| 10229 ]); |
10078 } | 10230 } |
10079 | 10231 |
10080 /** | 10232 /** |
10081 * TODO(scheglov) rename "Const" to "Expr" everywhere | 10233 * TODO(scheglov) rename "Const" to "Expr" everywhere |
10082 */ | 10234 */ |
10083 void _assertUnlinkedConst(UnlinkedConst constExpr, | 10235 void _assertUnlinkedConst(UnlinkedConst constExpr, |
10084 {bool isValidConst: true, | 10236 {bool isValidConst: true, |
10085 List<UnlinkedConstOperation> operators: const <UnlinkedConstOperation>[], | 10237 List<UnlinkedConstOperation> operators: const <UnlinkedConstOperation>[], |
10086 List<UnlinkedExprAssignOperator> assignmentOperators: | 10238 List<UnlinkedExprAssignOperator> assignmentOperators: |
10087 const <UnlinkedExprAssignOperator>[], | 10239 const <UnlinkedExprAssignOperator>[], |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10119 class _PrefixExpectation { | 10271 class _PrefixExpectation { |
10120 final ReferenceKind kind; | 10272 final ReferenceKind kind; |
10121 final String name; | 10273 final String name; |
10122 final String absoluteUri; | 10274 final String absoluteUri; |
10123 final String relativeUri; | 10275 final String relativeUri; |
10124 final int numTypeParameters; | 10276 final int numTypeParameters; |
10125 | 10277 |
10126 _PrefixExpectation(this.kind, this.name, | 10278 _PrefixExpectation(this.kind, this.name, |
10127 {this.absoluteUri, this.relativeUri, this.numTypeParameters: 0}); | 10279 {this.absoluteUri, this.relativeUri, this.numTypeParameters: 0}); |
10128 } | 10280 } |
OLD | NEW |