| OLD | NEW |
| 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" |
| (...skipping 1518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1529 " var c = new C();\n" | 1529 " var c = new C();\n" |
| 1530 " var f = c#y;\n" | 1530 " var f = c#y;\n" |
| 1531 " var r1 = invoke(f);\n" | 1531 " var r1 = invoke(f);\n" |
| 1532 " reloadTest();\n" | 1532 " reloadTest();\n" |
| 1533 " var r2 = invoke(f);\n" | 1533 " var r2 = invoke(f);\n" |
| 1534 " return '$r1 $r2';\n" | 1534 " return '$r1 $r2';\n" |
| 1535 "}\n"; | 1535 "}\n"; |
| 1536 | 1536 |
| 1537 TestCase::SetReloadTestScript(kReloadScript); | 1537 TestCase::SetReloadTestScript(kReloadScript); |
| 1538 | 1538 |
| 1539 EXPECT_STREQ("4 Class 'C' has no instance getter 'y'.", | 1539 EXPECT_STREQ("4 NoSuchMethodError: Class 'C' has no instance getter 'y'.", |
| 1540 SimpleInvokeStr(lib, "main")); | 1540 SimpleInvokeStr(lib, "main")); |
| 1541 | 1541 |
| 1542 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1542 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1543 EXPECT_VALID(lib); | 1543 EXPECT_VALID(lib); |
| 1544 } | 1544 } |
| 1545 | 1545 |
| 1546 | 1546 |
| 1547 TEST_CASE(IsolateReload_DanglingGetter_Class) { | 1547 TEST_CASE(IsolateReload_DanglingGetter_Class) { |
| 1548 const char* kScript = | 1548 const char* kScript = |
| 1549 "import 'test:isolate_reload_helper';\n" | 1549 "import 'test:isolate_reload_helper';\n" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1588 " C.y = 4;\n" | 1588 " C.y = 4;\n" |
| 1589 " var f = C#y;\n" | 1589 " var f = C#y;\n" |
| 1590 " var r1 = invoke(f);\n" | 1590 " var r1 = invoke(f);\n" |
| 1591 " reloadTest();\n" | 1591 " reloadTest();\n" |
| 1592 " var r2 = invoke(f);\n" | 1592 " var r2 = invoke(f);\n" |
| 1593 " return '$r1 $r2';\n" | 1593 " return '$r1 $r2';\n" |
| 1594 "}\n"; | 1594 "}\n"; |
| 1595 | 1595 |
| 1596 TestCase::SetReloadTestScript(kReloadScript); | 1596 TestCase::SetReloadTestScript(kReloadScript); |
| 1597 | 1597 |
| 1598 EXPECT_STREQ("4 No static getter 'y' declared in class 'C'.", | 1598 EXPECT_STREQ("4 NoSuchMethodError: No static getter 'y' declared " |
| 1599 SimpleInvokeStr(lib, "main")); | 1599 "in class 'C'.", SimpleInvokeStr(lib, "main")); |
| 1600 | 1600 |
| 1601 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1601 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1602 EXPECT_VALID(lib); | 1602 EXPECT_VALID(lib); |
| 1603 } | 1603 } |
| 1604 | 1604 |
| 1605 | 1605 |
| 1606 static void IsolateReload_DanlingGetter_LibraryReload( | 1606 static void IsolateReload_DanlingGetter_LibraryReload( |
| 1607 Dart_NativeArguments native_args) { | 1607 Dart_NativeArguments native_args) { |
| 1608 const char* kImportScript2 = | 1608 const char* kImportScript2 = |
| 1609 "var x;\n"; | 1609 "var x;\n"; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1646 " var r2 = invoke(f);\n" | 1646 " var r2 = invoke(f);\n" |
| 1647 " return '$r1 $r2';\n" | 1647 " return '$r1 $r2';\n" |
| 1648 "}\n"; | 1648 "}\n"; |
| 1649 | 1649 |
| 1650 Dart_Handle lib = TestCase::LoadTestScript( | 1650 Dart_Handle lib = TestCase::LoadTestScript( |
| 1651 kScript, IsolateReload_DanlingGetter_LibraryNativeResolver); | 1651 kScript, IsolateReload_DanlingGetter_LibraryNativeResolver); |
| 1652 EXPECT_VALID(lib); | 1652 EXPECT_VALID(lib); |
| 1653 | 1653 |
| 1654 TestCase::SetReloadTestScript(kScript); // Root library does not change. | 1654 TestCase::SetReloadTestScript(kScript); // Root library does not change. |
| 1655 | 1655 |
| 1656 EXPECT_STREQ("4 No top-level getter 'y' declared.", | 1656 EXPECT_STREQ("4 NoSuchMethodError: No top-level getter 'y' declared.", |
| 1657 SimpleInvokeStr(lib, "main")); | 1657 SimpleInvokeStr(lib, "main")); |
| 1658 | 1658 |
| 1659 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1659 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1660 EXPECT_VALID(lib); | 1660 EXPECT_VALID(lib); |
| 1661 } | 1661 } |
| 1662 | 1662 |
| 1663 | 1663 |
| 1664 TEST_CASE(IsolateReload_DanglingSetter_Instance) { | 1664 TEST_CASE(IsolateReload_DanglingSetter_Instance) { |
| 1665 const char* kScript = | 1665 const char* kScript = |
| 1666 "import 'test:isolate_reload_helper';\n" | 1666 "import 'test:isolate_reload_helper';\n" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1703 " var c = new C();\n" | 1703 " var c = new C();\n" |
| 1704 " var f = c#y=;\n" | 1704 " var f = c#y=;\n" |
| 1705 " var r1 = invoke(f, 5);\n" | 1705 " var r1 = invoke(f, 5);\n" |
| 1706 " reloadTest();\n" | 1706 " reloadTest();\n" |
| 1707 " var r2 = invoke(f, 6);\n" | 1707 " var r2 = invoke(f, 6);\n" |
| 1708 " return '$r1 $r2';\n" | 1708 " return '$r1 $r2';\n" |
| 1709 "}\n"; | 1709 "}\n"; |
| 1710 | 1710 |
| 1711 TestCase::SetReloadTestScript(kReloadScript); | 1711 TestCase::SetReloadTestScript(kReloadScript); |
| 1712 | 1712 |
| 1713 EXPECT_STREQ("null Class 'C' has no instance setter 'y='.", | 1713 EXPECT_STREQ("null NoSuchMethodError: Class 'C' has no instance setter 'y='.", |
| 1714 SimpleInvokeStr(lib, "main")); | 1714 SimpleInvokeStr(lib, "main")); |
| 1715 | 1715 |
| 1716 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1716 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1717 EXPECT_VALID(lib); | 1717 EXPECT_VALID(lib); |
| 1718 } | 1718 } |
| 1719 | 1719 |
| 1720 | 1720 |
| 1721 TEST_CASE(IsolateReload_DanglingSetter_Class) { | 1721 TEST_CASE(IsolateReload_DanglingSetter_Class) { |
| 1722 const char* kScript = | 1722 const char* kScript = |
| 1723 "import 'test:isolate_reload_helper';\n" | 1723 "import 'test:isolate_reload_helper';\n" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1762 " C.y = 4;\n" | 1762 " C.y = 4;\n" |
| 1763 " var f = C#y=;\n" | 1763 " var f = C#y=;\n" |
| 1764 " var r1 = invoke(f, 5);\n" | 1764 " var r1 = invoke(f, 5);\n" |
| 1765 " reloadTest();\n" | 1765 " reloadTest();\n" |
| 1766 " var r2 = invoke(f, 6);\n" | 1766 " var r2 = invoke(f, 6);\n" |
| 1767 " return '$r1 $r2';\n" | 1767 " return '$r1 $r2';\n" |
| 1768 "}\n"; | 1768 "}\n"; |
| 1769 | 1769 |
| 1770 TestCase::SetReloadTestScript(kReloadScript); | 1770 TestCase::SetReloadTestScript(kReloadScript); |
| 1771 | 1771 |
| 1772 EXPECT_STREQ("5 No static setter 'y=' declared in class 'C'.", | 1772 EXPECT_STREQ("5 NoSuchMethodError: No static setter 'y=' declared in " |
| 1773 SimpleInvokeStr(lib, "main")); | 1773 "class 'C'.", SimpleInvokeStr(lib, "main")); |
| 1774 | 1774 |
| 1775 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1775 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1776 EXPECT_VALID(lib); | 1776 EXPECT_VALID(lib); |
| 1777 } | 1777 } |
| 1778 | 1778 |
| 1779 | 1779 |
| 1780 static void IsolateReload_DanlingSetter_LibraryReload( | 1780 static void IsolateReload_DanlingSetter_LibraryReload( |
| 1781 Dart_NativeArguments native_args) { | 1781 Dart_NativeArguments native_args) { |
| 1782 const char* kImportScript2 = | 1782 const char* kImportScript2 = |
| 1783 "var x;\n"; | 1783 "var x;\n"; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1820 " var r2 = invoke(f, 6);\n" | 1820 " var r2 = invoke(f, 6);\n" |
| 1821 " return '$r1 $r2';\n" | 1821 " return '$r1 $r2';\n" |
| 1822 "}\n"; | 1822 "}\n"; |
| 1823 | 1823 |
| 1824 Dart_Handle lib = TestCase::LoadTestScript( | 1824 Dart_Handle lib = TestCase::LoadTestScript( |
| 1825 kScript, IsolateReload_DanlingSetter_LibraryNativeResolver); | 1825 kScript, IsolateReload_DanlingSetter_LibraryNativeResolver); |
| 1826 EXPECT_VALID(lib); | 1826 EXPECT_VALID(lib); |
| 1827 | 1827 |
| 1828 TestCase::SetReloadTestScript(kScript); // Root library does not change. | 1828 TestCase::SetReloadTestScript(kScript); // Root library does not change. |
| 1829 | 1829 |
| 1830 EXPECT_STREQ("5 No top-level setter 'y=' declared.", | 1830 EXPECT_STREQ("5 NoSuchMethodError: No top-level setter 'y=' declared.", |
| 1831 SimpleInvokeStr(lib, "main")); | 1831 SimpleInvokeStr(lib, "main")); |
| 1832 | 1832 |
| 1833 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1833 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1834 EXPECT_VALID(lib); | 1834 EXPECT_VALID(lib); |
| 1835 } | 1835 } |
| 1836 | 1836 |
| 1837 | 1837 |
| 1838 TEST_CASE(IsolateReload_TearOff_AddArguments) { | 1838 TEST_CASE(IsolateReload_TearOff_AddArguments) { |
| 1839 const char* kScript = | 1839 const char* kScript = |
| 1840 "import 'test:isolate_reload_helper';\n" | 1840 "import 'test:isolate_reload_helper';\n" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1876 " var c = new C();\n" | 1876 " var c = new C();\n" |
| 1877 " var f = c#foo;\n" | 1877 " var f = c#foo;\n" |
| 1878 " var r1 = invoke(f, 1);\n" | 1878 " var r1 = invoke(f, 1);\n" |
| 1879 " reloadTest();\n" | 1879 " reloadTest();\n" |
| 1880 " var r2 = invoke(f, 1);\n" | 1880 " var r2 = invoke(f, 1);\n" |
| 1881 " return '$r1 $r2';\n" | 1881 " return '$r1 $r2';\n" |
| 1882 "}\n"; | 1882 "}\n"; |
| 1883 | 1883 |
| 1884 TestCase::SetReloadTestScript(kReloadScript); | 1884 TestCase::SetReloadTestScript(kReloadScript); |
| 1885 | 1885 |
| 1886 EXPECT_STREQ("1 Class 'C' has no instance method 'foo' with matching" | 1886 EXPECT_STREQ("1 NoSuchMethodError: Class 'C' has no instance method " |
| 1887 " arguments.", SimpleInvokeStr(lib, "main")); | 1887 "'foo' with matching arguments.", SimpleInvokeStr(lib, "main")); |
| 1888 | 1888 |
| 1889 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1889 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1890 EXPECT_VALID(lib); | 1890 EXPECT_VALID(lib); |
| 1891 } | 1891 } |
| 1892 | 1892 |
| 1893 | 1893 |
| 1894 TEST_CASE(IsolateReload_TearOff_AddArguments2) { | 1894 TEST_CASE(IsolateReload_TearOff_AddArguments2) { |
| 1895 const char* kScript = | 1895 const char* kScript = |
| 1896 "import 'test:isolate_reload_helper';\n" | 1896 "import 'test:isolate_reload_helper';\n" |
| 1897 "class C {\n" | 1897 "class C {\n" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1930 "main() {\n" | 1930 "main() {\n" |
| 1931 " var f = C#foo;\n" | 1931 " var f = C#foo;\n" |
| 1932 " var r1 = invoke(f, 1);\n" | 1932 " var r1 = invoke(f, 1);\n" |
| 1933 " reloadTest();\n" | 1933 " reloadTest();\n" |
| 1934 " var r2 = invoke(f, 1);\n" | 1934 " var r2 = invoke(f, 1);\n" |
| 1935 " return '$r1 $r2';\n" | 1935 " return '$r1 $r2';\n" |
| 1936 "}\n"; | 1936 "}\n"; |
| 1937 | 1937 |
| 1938 TestCase::SetReloadTestScript(kReloadScript); | 1938 TestCase::SetReloadTestScript(kReloadScript); |
| 1939 | 1939 |
| 1940 EXPECT_STREQ("1 Closure call with mismatched arguments: function 'C.foo'", | 1940 EXPECT_STREQ("1 NoSuchMethodError: Closure call with mismatched arguments: " |
| 1941 SimpleInvokeStr(lib, "main")); | 1941 "function 'C.foo'", SimpleInvokeStr(lib, "main")); |
| 1942 | 1942 |
| 1943 lib = TestCase::GetReloadErrorOrRootLibrary(); | 1943 lib = TestCase::GetReloadErrorOrRootLibrary(); |
| 1944 EXPECT_VALID(lib); | 1944 EXPECT_VALID(lib); |
| 1945 } | 1945 } |
| 1946 | 1946 |
| 1947 | 1947 |
| 1948 TEST_CASE(IsolateReload_EnumEquality) { | 1948 TEST_CASE(IsolateReload_EnumEquality) { |
| 1949 const char* kScript = | 1949 const char* kScript = |
| 1950 "enum Fruit {\n" | 1950 "enum Fruit {\n" |
| 1951 " Apple,\n" | 1951 " Apple,\n" |
| (...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3079 EXPECT_VALID(lib); | 3079 EXPECT_VALID(lib); |
| 3080 Dart_SetFileModifiedCallback(NULL); | 3080 Dart_SetFileModifiedCallback(NULL); |
| 3081 | 3081 |
| 3082 // Modification of an exported library propagates. | 3082 // Modification of an exported library propagates. |
| 3083 EXPECT_STREQ("bossy pants", SimpleInvokeStr(lib, "main")); | 3083 EXPECT_STREQ("bossy pants", SimpleInvokeStr(lib, "main")); |
| 3084 } | 3084 } |
| 3085 | 3085 |
| 3086 #endif // !PRODUCT | 3086 #endif // !PRODUCT |
| 3087 | 3087 |
| 3088 } // namespace dart | 3088 } // namespace dart |
| OLD | NEW |