Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(578)

Side by Side Diff: runtime/vm/isolate_reload_test.cc

Issue 2607173002: - report tear offs using the x#y syntax as a compilation error (Closed)
Patch Set: run formatter. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | runtime/vm/parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 #include "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "include/dart_tools_api.h" 6 #include "include/dart_tools_api.h"
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 #include "vm/globals.h" 8 #include "vm/globals.h"
9 #include "vm/isolate.h" 9 #include "vm/isolate.h"
10 #include "vm/lockers.h" 10 #include "vm/lockers.h"
11 #include "vm/thread_barrier.h" 11 #include "vm/thread_barrier.h"
12 #include "vm/thread_pool.h" 12 #include "vm/thread_pool.h"
13 #include "vm/unit_test.h" 13 #include "vm/unit_test.h"
14 14
15 namespace dart { 15 namespace dart {
16 16
17 #ifndef PRODUCT 17 #ifndef PRODUCT
18 18
19 DECLARE_FLAG(bool, support_deprecated_tearoff_syntax);
20
19 // TODO(johnmccutchan): 21 // TODO(johnmccutchan):
20 // - Tests involving generics. 22 // - Tests involving generics.
21 23
22 int64_t SimpleInvoke(Dart_Handle lib, const char* method) { 24 int64_t SimpleInvoke(Dart_Handle lib, const char* method) {
23 Dart_Handle result = Dart_Invoke(lib, NewString(method), 0, NULL); 25 Dart_Handle result = Dart_Invoke(lib, NewString(method), 0, NULL);
24 EXPECT_VALID(result); 26 EXPECT_VALID(result);
25 EXPECT(Dart_IsInteger(result)); 27 EXPECT(Dart_IsInteger(result));
26 int64_t integer_result = 0; 28 int64_t integer_result = 0;
27 result = Dart_IntegerToInt64(result, &integer_result); 29 result = Dart_IntegerToInt64(result, &integer_result);
28 EXPECT_VALID(result); 30 EXPECT_VALID(result);
(...skipping 1398 matching lines...) Expand 10 before | Expand all | Expand 10 after
1427 const char* kScript = 1429 const char* kScript =
1428 "import 'test:isolate_reload_helper';\n" 1430 "import 'test:isolate_reload_helper';\n"
1429 "class C {\n" 1431 "class C {\n"
1430 " foo() => 'old';\n" 1432 " foo() => 'old';\n"
1431 "}\n" 1433 "}\n"
1432 "List list = new List(2);\n" 1434 "List list = new List(2);\n"
1433 "Set set = new Set();\n" 1435 "Set set = new Set();\n"
1434 "main() {\n" 1436 "main() {\n"
1435 " var c = new C();\n" 1437 " var c = new C();\n"
1436 " list[0] = c.foo;\n" 1438 " list[0] = c.foo;\n"
1437 " list[1] = c#foo;\n" 1439 " list[1] = c.foo;\n"
1438 " set.add(c.foo);\n" 1440 " set.add(c.foo);\n"
1439 " set.add(c#foo);\n" 1441 " set.add(c.foo);\n"
1440 " int countBefore = set.length;\n" 1442 " int countBefore = set.length;\n"
1441 " reloadTest();\n" 1443 " reloadTest();\n"
1442 " list[1] = c.foo;\n" 1444 " list[1] = c.foo;\n"
1443 " set.add(c.foo);\n" 1445 " set.add(c.foo);\n"
1444 " set.add(c#foo);\n" 1446 " set.add(c.foo);\n"
1445 " int countAfter = set.length;\n" 1447 " int countAfter = set.length;\n"
1446 " return '${list[0]()} ${list[1]()} ${list[0] == list[1]} '\n" 1448 " return '${list[0]()} ${list[1]()} ${list[0] == list[1]} '\n"
1447 " '${countBefore == 1} ${countAfter == 1} ${(set.first)()} '\n" 1449 " '${countBefore == 1} ${countAfter == 1} ${(set.first)()} '\n"
1448 " '${set.first == c.foo} ${set.first == c#foo} '\n" 1450 " '${set.first == c.foo} ${set.first == c.foo} '\n"
1449 " '${set.remove(c#foo)}';\n" 1451 " '${set.remove(c.foo)}';\n"
1450 "}\n"; 1452 "}\n";
1451 1453
1452 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1454 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1453 EXPECT_VALID(lib); 1455 EXPECT_VALID(lib);
1454 1456
1455 const char* kReloadScript = 1457 const char* kReloadScript =
1456 "import 'test:isolate_reload_helper';\n" 1458 "import 'test:isolate_reload_helper';\n"
1457 "class C {\n" 1459 "class C {\n"
1458 " foo() => 'new';\n" 1460 " foo() => 'new';\n"
1459 "}\n" 1461 "}\n"
1460 "List list = new List(2);\n" 1462 "List list = new List(2);\n"
1461 "Set set = new Set();\n" 1463 "Set set = new Set();\n"
1462 "main() {\n" 1464 "main() {\n"
1463 " var c = new C();\n" 1465 " var c = new C();\n"
1464 " list[0] = c.foo;\n" 1466 " list[0] = c.foo;\n"
1465 " list[1] = c#foo;\n" 1467 " list[1] = c.foo;\n"
1466 " set.add(c.foo);\n" 1468 " set.add(c.foo);\n"
1467 " set.add(c#foo);\n" 1469 " set.add(c.foo);\n"
1468 " int countBefore = set.length;\n" 1470 " int countBefore = set.length;\n"
1469 " reloadTest();\n" 1471 " reloadTest();\n"
1470 " list[1] = c.foo;\n" 1472 " list[1] = c.foo;\n"
1471 " set.add(c.foo);\n" 1473 " set.add(c.foo);\n"
1472 " set.add(c#foo);\n" 1474 " set.add(c.foo);\n"
1473 " int countAfter = set.length;\n" 1475 " int countAfter = set.length;\n"
1474 " return '${list[0]()} ${list[1]()} ${list[0] == list[1]} '\n" 1476 " return '${list[0]()} ${list[1]()} ${list[0] == list[1]} '\n"
1475 " '${countBefore == 1} ${countAfter == 1} ${(set.first)()} '\n" 1477 " '${countBefore == 1} ${countAfter == 1} ${(set.first)()} '\n"
1476 " '${set.first == c.foo} ${set.first == c#foo} '\n" 1478 " '${set.first == c.foo} ${set.first == c.foo} '\n"
1477 " '${set.remove(c#foo)}';\n" 1479 " '${set.remove(c.foo)}';\n"
1478 "}\n"; 1480 "}\n";
1479 1481
1480 TestCase::SetReloadTestScript(kReloadScript); 1482 TestCase::SetReloadTestScript(kReloadScript);
1481 1483
1482 EXPECT_STREQ("new new true true true new true true true", 1484 EXPECT_STREQ("new new true true true new true true true",
1483 SimpleInvokeStr(lib, "main")); 1485 SimpleInvokeStr(lib, "main"));
1484 1486
1485 lib = TestCase::GetReloadErrorOrRootLibrary(); 1487 lib = TestCase::GetReloadErrorOrRootLibrary();
1486 EXPECT_VALID(lib); 1488 EXPECT_VALID(lib);
1487 } 1489 }
1488 1490
1489 1491
1490 TEST_CASE(IsolateReload_DanglingGetter_Instance) { 1492 TEST_CASE(IsolateReload_DanglingGetter_Instance) {
1491 const char* kScript = 1493 const char* kScript =
1492 "import 'test:isolate_reload_helper';\n" 1494 "import 'test:isolate_reload_helper';\n"
1493 "class C {\n" 1495 "class C {\n"
1494 " var x = 3;\n" 1496 " var x = 3;\n"
1495 " var y = 4;\n" 1497 " var y = 4;\n"
1496 "}\n" 1498 "}\n"
1497 "invoke(f) {\n" 1499 "invoke(f) {\n"
1498 " try {\n" 1500 " try {\n"
1499 " return f();\n" 1501 " return f();\n"
1500 " } catch (e) {\n" 1502 " } catch (e) {\n"
1501 " return e.toString().split('\\n').first;\n" 1503 " return e.toString().split('\\n').first;\n"
1502 " }\n" 1504 " }\n"
1503 "}\n" 1505 "}\n"
1504 "main() {\n" 1506 "main() {\n"
1505 " var c = new C();\n" 1507 " var c = new C();\n"
1506 " var f = c#y;\n" 1508 " var f = c.y;\n"
1507 " var r1 = invoke(f);\n" 1509 " var r1 = invoke(f);\n"
1508 " reloadTest();\n" 1510 " reloadTest();\n"
1509 " var r2 = invoke(f);\n" 1511 " var r2 = invoke(f);\n"
1510 " return '$r1 $r2';\n" 1512 " return '$r1 $r2';\n"
1511 "}\n"; 1513 "}\n";
1512 1514
1513 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1515 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1514 EXPECT_VALID(lib); 1516 EXPECT_VALID(lib);
1515 1517
1516 const char* kReloadScript = 1518 const char* kReloadScript =
1517 "import 'test:isolate_reload_helper';\n" 1519 "import 'test:isolate_reload_helper';\n"
1518 "class C {\n" 1520 "class C {\n"
1519 " var x = 3;\n" 1521 " var x = 3;\n"
1520 "}\n" 1522 "}\n"
1521 "invoke(f) {\n" 1523 "invoke(f) {\n"
1522 " try {\n" 1524 " try {\n"
1523 " return f();\n" 1525 " return f();\n"
1524 " } catch (e) {\n" 1526 " } catch (e) {\n"
1525 " return e.toString().split('\\n').first;\n" 1527 " return e.toString().split('\\n').first;\n"
1526 " }\n" 1528 " }\n"
1527 "}\n" 1529 "}\n"
1528 "main() {\n" 1530 "main() {\n"
1529 " var c = new C();\n" 1531 " var c = new C();\n"
1530 " var f = c#y;\n" 1532 " var f = c.y;\n"
1531 " var r1 = invoke(f);\n" 1533 " var r1 = invoke(f);\n"
1532 " reloadTest();\n" 1534 " reloadTest();\n"
1533 " var r2 = invoke(f);\n" 1535 " var r2 = invoke(f);\n"
1534 " return '$r1 $r2';\n" 1536 " return '$r1 $r2';\n"
1535 "}\n"; 1537 "}\n";
1536 1538
1537 TestCase::SetReloadTestScript(kReloadScript); 1539 TestCase::SetReloadTestScript(kReloadScript);
1538 1540
1539 EXPECT_STREQ("4 NoSuchMethodError: Class 'C' has no instance getter 'y'.", 1541 EXPECT_STREQ(
1540 SimpleInvokeStr(lib, "main")); 1542 "NoSuchMethodError: Class 'int' has no instance method 'call'. "
1543 "NoSuchMethodError: Class 'int' has no instance method 'call'.",
1544 SimpleInvokeStr(lib, "main"));
1541 1545
1542 lib = TestCase::GetReloadErrorOrRootLibrary(); 1546 lib = TestCase::GetReloadErrorOrRootLibrary();
1543 EXPECT_VALID(lib); 1547 EXPECT_VALID(lib);
1544 } 1548 }
1545 1549
1546 1550
1547 TEST_CASE(IsolateReload_DanglingGetter_Class) { 1551 TEST_CASE(IsolateReload_DanglingGetter_Class) {
1548 const char* kScript = 1552 const char* kScript =
1549 "import 'test:isolate_reload_helper';\n" 1553 "import 'test:isolate_reload_helper';\n"
1550 "class C {\n" 1554 "class C {\n"
1551 " static var x;\n" 1555 " static var x;\n"
1552 " static var y;\n" 1556 " static var y;\n"
1553 "}\n" 1557 "}\n"
1554 "invoke(f) {\n" 1558 "invoke(f) {\n"
1555 " try {\n" 1559 " try {\n"
1556 " return f();\n" 1560 " return f();\n"
1557 " } catch (e) {\n" 1561 " } catch (e) {\n"
1558 " return e.toString().split('\\n').first;\n" 1562 " return e.toString().split('\\n').first;\n"
1559 " }\n" 1563 " }\n"
1560 "}\n" 1564 "}\n"
1561 "main() {\n" 1565 "main() {\n"
1562 " C.x = 3;\n" 1566 " C.x = 3;\n"
1563 " C.y = 4;\n" 1567 " C.y = 4;\n"
1564 " var f = C#y;\n" 1568 " var f = C.y;\n"
1565 " var r1 = invoke(f);\n" 1569 " var r1 = invoke(f);\n"
1566 " reloadTest();\n" 1570 " reloadTest();\n"
1567 " var r2 = invoke(f);\n" 1571 " var r2 = invoke(f);\n"
1568 " return '$r1 $r2';\n" 1572 " return '$r1 $r2';\n"
1569 "}\n"; 1573 "}\n";
1570 1574
1571 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1575 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1572 EXPECT_VALID(lib); 1576 EXPECT_VALID(lib);
1573 1577
1574 const char* kReloadScript = 1578 const char* kReloadScript =
1575 "import 'test:isolate_reload_helper';\n" 1579 "import 'test:isolate_reload_helper';\n"
1576 "class C {\n" 1580 "class C {\n"
1577 " static var x;\n" 1581 " static var x;\n"
1578 "}\n" 1582 "}\n"
1579 "invoke(f) {\n" 1583 "invoke(f) {\n"
1580 " try {\n" 1584 " try {\n"
1581 " return f();\n" 1585 " return f();\n"
1582 " } catch (e) {\n" 1586 " } catch (e) {\n"
1583 " return e.toString().split('\\n').first;\n" 1587 " return e.toString().split('\\n').first;\n"
1584 " }\n" 1588 " }\n"
1585 "}\n" 1589 "}\n"
1586 "main() {\n" 1590 "main() {\n"
1587 " C.x = 3;\n" 1591 " C.x = 3;\n"
1588 " C.y = 4;\n" 1592 " C.y = 4;\n"
1589 " var f = C#y;\n" 1593 " var f = C.y;\n"
1590 " var r1 = invoke(f);\n" 1594 " var r1 = invoke(f);\n"
1591 " reloadTest();\n" 1595 " reloadTest();\n"
1592 " var r2 = invoke(f);\n" 1596 " var r2 = invoke(f);\n"
1593 " return '$r1 $r2';\n" 1597 " return '$r1 $r2';\n"
1594 "}\n"; 1598 "}\n";
1595 1599
1596 TestCase::SetReloadTestScript(kReloadScript); 1600 TestCase::SetReloadTestScript(kReloadScript);
1597 1601
1598 EXPECT_STREQ( 1602 EXPECT_STREQ(
1599 "4 NoSuchMethodError: No static getter 'y' declared " 1603 "NoSuchMethodError: Class 'int' has no instance method 'call'. "
1600 "in class 'C'.", 1604 "NoSuchMethodError: Class 'int' has no instance method 'call'.",
1601 SimpleInvokeStr(lib, "main")); 1605 SimpleInvokeStr(lib, "main"));
1602 1606
1603 lib = TestCase::GetReloadErrorOrRootLibrary(); 1607 lib = TestCase::GetReloadErrorOrRootLibrary();
1604 EXPECT_VALID(lib); 1608 EXPECT_VALID(lib);
1605 } 1609 }
1606 1610
1607 1611
1608 static void IsolateReload_DanlingGetter_LibraryReload( 1612 static void IsolateReload_DanlingGetter_LibraryReload(
1609 Dart_NativeArguments native_args) { 1613 Dart_NativeArguments native_args) {
1610 const char* kImportScript2 = "var x;\n"; 1614 const char* kImportScript2 = "var x;\n";
(...skipping 30 matching lines...) Expand all
1641 "main() {\n" 1645 "main() {\n"
1642 " prefix.x = 3;\n" 1646 " prefix.x = 3;\n"
1643 " prefix.y = 4;\n" 1647 " prefix.y = 4;\n"
1644 " var f = prefix#y;\n" 1648 " var f = prefix#y;\n"
1645 " var r1 = invoke(f);\n" 1649 " var r1 = invoke(f);\n"
1646 " reloadTest();\n" 1650 " reloadTest();\n"
1647 " var r2 = invoke(f);\n" 1651 " var r2 = invoke(f);\n"
1648 " return '$r1 $r2';\n" 1652 " return '$r1 $r2';\n"
1649 "}\n"; 1653 "}\n";
1650 1654
1655 FLAG_support_deprecated_tearoff_syntax = true;
1651 Dart_Handle lib = TestCase::LoadTestScript( 1656 Dart_Handle lib = TestCase::LoadTestScript(
1652 kScript, IsolateReload_DanlingGetter_LibraryNativeResolver); 1657 kScript, IsolateReload_DanlingGetter_LibraryNativeResolver);
1653 EXPECT_VALID(lib); 1658 EXPECT_VALID(lib);
1654 1659
1655 TestCase::SetReloadTestScript(kScript); // Root library does not change. 1660 TestCase::SetReloadTestScript(kScript); // Root library does not change.
1656 1661
1657 EXPECT_STREQ("4 NoSuchMethodError: No top-level getter 'y' declared.", 1662 EXPECT_STREQ("4 NoSuchMethodError: No top-level getter 'y' declared.",
1658 SimpleInvokeStr(lib, "main")); 1663 SimpleInvokeStr(lib, "main"));
1659 1664
1660 lib = TestCase::GetReloadErrorOrRootLibrary(); 1665 lib = TestCase::GetReloadErrorOrRootLibrary();
1661 EXPECT_VALID(lib); 1666 EXPECT_VALID(lib);
1667 FLAG_support_deprecated_tearoff_syntax = false;
1662 } 1668 }
1663 1669
1664 1670
1665 TEST_CASE(IsolateReload_DanglingSetter_Instance) { 1671 TEST_CASE(IsolateReload_DanglingSetter_Instance) {
1666 const char* kScript = 1672 const char* kScript =
1667 "import 'test:isolate_reload_helper';\n" 1673 "import 'test:isolate_reload_helper';\n"
1668 "class C {\n" 1674 "class C {\n"
1669 " var x = 3;\n" 1675 " var x = 3;\n"
1670 " var y = 4;\n" 1676 " var y = 4;\n"
1671 "}\n" 1677 "}\n"
1672 "invoke(f, a) {\n" 1678 "invoke(f, a) {\n"
1673 " try {\n" 1679 " try {\n"
1674 " return f(a);\n" 1680 " return f(a);\n"
1675 " } catch (e) {\n" 1681 " } catch (e) {\n"
1676 " return e.toString().split('\\n').first;\n" 1682 " return e.toString().split('\\n').first;\n"
1677 " }\n" 1683 " }\n"
1678 "}\n" 1684 "}\n"
1679 "main() {\n" 1685 "main() {\n"
1680 " var c = new C();\n" 1686 " var c = new C();\n"
1681 " var f = c#y=;\n" 1687 " var f = c#y=;\n"
1682 " var r1 = invoke(f, 5);\n" 1688 " var r1 = invoke(f, 5);\n"
1683 " reloadTest();\n" 1689 " reloadTest();\n"
1684 " var r2 = invoke(f, 6);\n" 1690 " var r2 = invoke(f, 6);\n"
1685 " return '$r1 $r2';\n" 1691 " return '$r1 $r2';\n"
1686 "}\n"; 1692 "}\n";
1687 1693
1694 FLAG_support_deprecated_tearoff_syntax = true;
1688 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1695 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1689 EXPECT_VALID(lib); 1696 EXPECT_VALID(lib);
1690 1697
1691 const char* kReloadScript = 1698 const char* kReloadScript =
1692 "import 'test:isolate_reload_helper';\n" 1699 "import 'test:isolate_reload_helper';\n"
1693 "class C {\n" 1700 "class C {\n"
1694 " var x = 3;\n" 1701 " var x = 3;\n"
1695 "}\n" 1702 "}\n"
1696 "invoke(f, a) {\n" 1703 "invoke(f, a) {\n"
1697 " try {\n" 1704 " try {\n"
(...skipping 11 matching lines...) Expand all
1709 " return '$r1 $r2';\n" 1716 " return '$r1 $r2';\n"
1710 "}\n"; 1717 "}\n";
1711 1718
1712 TestCase::SetReloadTestScript(kReloadScript); 1719 TestCase::SetReloadTestScript(kReloadScript);
1713 1720
1714 EXPECT_STREQ("null NoSuchMethodError: Class 'C' has no instance setter 'y='.", 1721 EXPECT_STREQ("null NoSuchMethodError: Class 'C' has no instance setter 'y='.",
1715 SimpleInvokeStr(lib, "main")); 1722 SimpleInvokeStr(lib, "main"));
1716 1723
1717 lib = TestCase::GetReloadErrorOrRootLibrary(); 1724 lib = TestCase::GetReloadErrorOrRootLibrary();
1718 EXPECT_VALID(lib); 1725 EXPECT_VALID(lib);
1726 FLAG_support_deprecated_tearoff_syntax = false;
1719 } 1727 }
1720 1728
1721 1729
1722 TEST_CASE(IsolateReload_DanglingSetter_Class) { 1730 TEST_CASE(IsolateReload_DanglingSetter_Class) {
1723 const char* kScript = 1731 const char* kScript =
1724 "import 'test:isolate_reload_helper';\n" 1732 "import 'test:isolate_reload_helper';\n"
1725 "class C {\n" 1733 "class C {\n"
1726 " static var x;\n" 1734 " static var x;\n"
1727 " static var y;\n" 1735 " static var y;\n"
1728 "}\n" 1736 "}\n"
1729 "invoke(f, a) {\n" 1737 "invoke(f, a) {\n"
1730 " try {\n" 1738 " try {\n"
1731 " return f(a);\n" 1739 " return f(a);\n"
1732 " } catch (e) {\n" 1740 " } catch (e) {\n"
1733 " return e.toString().split('\\n').first;\n" 1741 " return e.toString().split('\\n').first;\n"
1734 " }\n" 1742 " }\n"
1735 "}\n" 1743 "}\n"
1736 "main() {\n" 1744 "main() {\n"
1737 " C.x = 3;\n" 1745 " C.x = 3;\n"
1738 " C.y = 4;\n" 1746 " C.y = 4;\n"
1739 " var f = C#y=;\n" 1747 " var f = C#y=;\n"
1740 " var r1 = invoke(f, 5);\n" 1748 " var r1 = invoke(f, 5);\n"
1741 " reloadTest();\n" 1749 " reloadTest();\n"
1742 " var r2 = invoke(f, 6);\n" 1750 " var r2 = invoke(f, 6);\n"
1743 " return '$r1 $r2';\n" 1751 " return '$r1 $r2';\n"
1744 "}\n"; 1752 "}\n";
1745 1753
1754 FLAG_support_deprecated_tearoff_syntax = true;
1746 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1755 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1747 EXPECT_VALID(lib); 1756 EXPECT_VALID(lib);
1748 1757
1749 const char* kReloadScript = 1758 const char* kReloadScript =
1750 "import 'test:isolate_reload_helper';\n" 1759 "import 'test:isolate_reload_helper';\n"
1751 "class C {\n" 1760 "class C {\n"
1752 " static var x;\n" 1761 " static var x;\n"
1753 "}\n" 1762 "}\n"
1754 "invoke(f, a) {\n" 1763 "invoke(f, a) {\n"
1755 " try {\n" 1764 " try {\n"
(...skipping 14 matching lines...) Expand all
1770 1779
1771 TestCase::SetReloadTestScript(kReloadScript); 1780 TestCase::SetReloadTestScript(kReloadScript);
1772 1781
1773 EXPECT_STREQ( 1782 EXPECT_STREQ(
1774 "5 NoSuchMethodError: No static setter 'y=' declared in " 1783 "5 NoSuchMethodError: No static setter 'y=' declared in "
1775 "class 'C'.", 1784 "class 'C'.",
1776 SimpleInvokeStr(lib, "main")); 1785 SimpleInvokeStr(lib, "main"));
1777 1786
1778 lib = TestCase::GetReloadErrorOrRootLibrary(); 1787 lib = TestCase::GetReloadErrorOrRootLibrary();
1779 EXPECT_VALID(lib); 1788 EXPECT_VALID(lib);
1789 FLAG_support_deprecated_tearoff_syntax = false;
1780 } 1790 }
1781 1791
1782 1792
1783 static void IsolateReload_DanlingSetter_LibraryReload( 1793 static void IsolateReload_DanlingSetter_LibraryReload(
1784 Dart_NativeArguments native_args) { 1794 Dart_NativeArguments native_args) {
1785 const char* kImportScript2 = "var x;\n"; 1795 const char* kImportScript2 = "var x;\n";
1786 TestCase::AddTestLib("test:other", kImportScript2); 1796 TestCase::AddTestLib("test:other", kImportScript2);
1787 1797
1788 DART_CHECK_VALID(TestCase::TriggerReload()); 1798 DART_CHECK_VALID(TestCase::TriggerReload());
1789 } 1799 }
(...skipping 26 matching lines...) Expand all
1816 "main() {\n" 1826 "main() {\n"
1817 " prefix.x = 3;\n" 1827 " prefix.x = 3;\n"
1818 " prefix.y = 4;\n" 1828 " prefix.y = 4;\n"
1819 " var f = prefix#y=;\n" 1829 " var f = prefix#y=;\n"
1820 " var r1 = invoke(f, 5);\n" 1830 " var r1 = invoke(f, 5);\n"
1821 " reloadTest();\n" 1831 " reloadTest();\n"
1822 " var r2 = invoke(f, 6);\n" 1832 " var r2 = invoke(f, 6);\n"
1823 " return '$r1 $r2';\n" 1833 " return '$r1 $r2';\n"
1824 "}\n"; 1834 "}\n";
1825 1835
1836 FLAG_support_deprecated_tearoff_syntax = true;
1826 Dart_Handle lib = TestCase::LoadTestScript( 1837 Dart_Handle lib = TestCase::LoadTestScript(
1827 kScript, IsolateReload_DanlingSetter_LibraryNativeResolver); 1838 kScript, IsolateReload_DanlingSetter_LibraryNativeResolver);
1828 EXPECT_VALID(lib); 1839 EXPECT_VALID(lib);
1829 1840
1830 TestCase::SetReloadTestScript(kScript); // Root library does not change. 1841 TestCase::SetReloadTestScript(kScript); // Root library does not change.
1831 1842
1832 EXPECT_STREQ("5 NoSuchMethodError: No top-level setter 'y=' declared.", 1843 EXPECT_STREQ("5 NoSuchMethodError: No top-level setter 'y=' declared.",
1833 SimpleInvokeStr(lib, "main")); 1844 SimpleInvokeStr(lib, "main"));
1834 1845
1835 lib = TestCase::GetReloadErrorOrRootLibrary(); 1846 lib = TestCase::GetReloadErrorOrRootLibrary();
1836 EXPECT_VALID(lib); 1847 EXPECT_VALID(lib);
1848 FLAG_support_deprecated_tearoff_syntax = false;
1837 } 1849 }
1838 1850
1839 1851
1840 TEST_CASE(IsolateReload_TearOff_AddArguments) { 1852 TEST_CASE(IsolateReload_TearOff_AddArguments) {
1841 const char* kScript = 1853 const char* kScript =
1842 "import 'test:isolate_reload_helper';\n" 1854 "import 'test:isolate_reload_helper';\n"
1843 "class C {\n" 1855 "class C {\n"
1844 " foo(x) => x;\n" 1856 " foo(x) => x;\n"
1845 "}\n" 1857 "}\n"
1846 "invoke(f, a) {\n" 1858 "invoke(f, a) {\n"
1847 " try {\n" 1859 " try {\n"
1848 " return f(a);\n" 1860 " return f(a);\n"
1849 " } catch (e) {\n" 1861 " } catch (e) {\n"
1850 " return e.toString().split('\\n').first;\n" 1862 " return e.toString().split('\\n').first;\n"
1851 " }\n" 1863 " }\n"
1852 "}\n" 1864 "}\n"
1853 "main() {\n" 1865 "main() {\n"
1854 " var c = new C();\n" 1866 " var c = new C();\n"
1855 " var f = c#foo;\n" 1867 " var f = c.foo;\n"
1856 " var r1 = invoke(f, 1);\n" 1868 " var r1 = invoke(f, 1);\n"
1857 " reloadTest();\n" 1869 " reloadTest();\n"
1858 " var r2 = invoke(f, 1);\n" 1870 " var r2 = invoke(f, 1);\n"
1859 " return '$r1 $r2';\n" 1871 " return '$r1 $r2';\n"
1860 "}\n"; 1872 "}\n";
1861 1873
1862 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1874 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1863 EXPECT_VALID(lib); 1875 EXPECT_VALID(lib);
1864 1876
1865 const char* kReloadScript = 1877 const char* kReloadScript =
1866 "import 'test:isolate_reload_helper';\n" 1878 "import 'test:isolate_reload_helper';\n"
1867 "class C {\n" 1879 "class C {\n"
1868 " foo(x, y, z) => x + y + z;\n" 1880 " foo(x, y, z) => x + y + z;\n"
1869 "}\n" 1881 "}\n"
1870 "invoke(f, a) {\n" 1882 "invoke(f, a) {\n"
1871 " try {\n" 1883 " try {\n"
1872 " return f(a);\n" 1884 " return f(a);\n"
1873 " } catch (e) {\n" 1885 " } catch (e) {\n"
1874 " return e.toString().split('\\n').first;\n" 1886 " return e.toString().split('\\n').first;\n"
1875 " }\n" 1887 " }\n"
1876 "}\n" 1888 "}\n"
1877 "main() {\n" 1889 "main() {\n"
1878 " var c = new C();\n" 1890 " var c = new C();\n"
1879 " var f = c#foo;\n" 1891 " var f = c.foo;\n"
1880 " var r1 = invoke(f, 1);\n" 1892 " var r1 = invoke(f, 1);\n"
1881 " reloadTest();\n" 1893 " reloadTest();\n"
1882 " var r2 = invoke(f, 1);\n" 1894 " var r2 = invoke(f, 1);\n"
1883 " return '$r1 $r2';\n" 1895 " return '$r1 $r2';\n"
1884 "}\n"; 1896 "}\n";
1885 1897
1886 TestCase::SetReloadTestScript(kReloadScript); 1898 TestCase::SetReloadTestScript(kReloadScript);
1887 1899
1888 EXPECT_STREQ( 1900 EXPECT_STREQ(
1889 "1 NoSuchMethodError: Class 'C' has no instance method " 1901 "1 NoSuchMethodError: Class 'C' has no instance method "
(...skipping 12 matching lines...) Expand all
1902 " static foo(x) => x;\n" 1914 " static foo(x) => x;\n"
1903 "}\n" 1915 "}\n"
1904 "invoke(f, a) {\n" 1916 "invoke(f, a) {\n"
1905 " try {\n" 1917 " try {\n"
1906 " return f(a);\n" 1918 " return f(a);\n"
1907 " } catch (e) {\n" 1919 " } catch (e) {\n"
1908 " return e.toString().split('\\n').first;\n" 1920 " return e.toString().split('\\n').first;\n"
1909 " }\n" 1921 " }\n"
1910 "}\n" 1922 "}\n"
1911 "main() {\n" 1923 "main() {\n"
1912 " var f = C#foo;\n" 1924 " var f = C.foo;\n"
1913 " var r1 = invoke(f, 1);\n" 1925 " var r1 = invoke(f, 1);\n"
1914 " reloadTest();\n" 1926 " reloadTest();\n"
1915 " var r2 = invoke(f, 1);\n" 1927 " var r2 = invoke(f, 1);\n"
1916 " return '$r1 $r2';\n" 1928 " return '$r1 $r2';\n"
1917 "}\n"; 1929 "}\n";
1918 1930
1919 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1931 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1920 EXPECT_VALID(lib); 1932 EXPECT_VALID(lib);
1921 1933
1922 const char* kReloadScript = 1934 const char* kReloadScript =
1923 "import 'test:isolate_reload_helper';\n" 1935 "import 'test:isolate_reload_helper';\n"
1924 "class C {\n" 1936 "class C {\n"
1925 " static foo(x, y, z) => x + y + z;\n" 1937 " static foo(x, y, z) => x + y + z;\n"
1926 "}\n" 1938 "}\n"
1927 "invoke(f, a) {\n" 1939 "invoke(f, a) {\n"
1928 " try {\n" 1940 " try {\n"
1929 " return f(a);\n" 1941 " return f(a);\n"
1930 " } catch (e) {\n" 1942 " } catch (e) {\n"
1931 " return e.toString().split('\\n').first;\n" 1943 " return e.toString().split('\\n').first;\n"
1932 " }\n" 1944 " }\n"
1933 "}\n" 1945 "}\n"
1934 "main() {\n" 1946 "main() {\n"
1935 " var f = C#foo;\n" 1947 " var f = C.foo;\n"
1936 " var r1 = invoke(f, 1);\n" 1948 " var r1 = invoke(f, 1);\n"
1937 " reloadTest();\n" 1949 " reloadTest();\n"
1938 " var r2 = invoke(f, 1);\n" 1950 " var r2 = invoke(f, 1);\n"
1939 " return '$r1 $r2';\n" 1951 " return '$r1 $r2';\n"
1940 "}\n"; 1952 "}\n";
1941 1953
1942 TestCase::SetReloadTestScript(kReloadScript); 1954 TestCase::SetReloadTestScript(kReloadScript);
1943 1955
1944 EXPECT_STREQ( 1956 EXPECT_STREQ(
1945 "1 NoSuchMethodError: Closure call with mismatched arguments: " 1957 "1 NoSuchMethodError: Closure call with mismatched arguments: "
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after
3411 lib = TestCase::ReloadTestScript(kReloadScript); 3423 lib = TestCase::ReloadTestScript(kReloadScript);
3412 EXPECT_VALID(lib); 3424 EXPECT_VALID(lib);
3413 // Verify that we ran field initializers on existing instances in the 3425 // Verify that we ran field initializers on existing instances in the
3414 // correct scope. 3426 // correct scope.
3415 EXPECT_STREQ("right", SimpleInvokeStr(lib, "main")); 3427 EXPECT_STREQ("right", SimpleInvokeStr(lib, "main"));
3416 } 3428 }
3417 3429
3418 #endif // !PRODUCT 3430 #endif // !PRODUCT
3419 3431
3420 } // namespace dart 3432 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698