OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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_debugger_api.h" | 5 #include "include/dart_debugger_api.h" |
6 #include "include/dart_mirrors_api.h" | 6 #include "include/dart_mirrors_api.h" |
7 #include "platform/assert.h" | 7 #include "platform/assert.h" |
8 #include "vm/dart_api_impl.h" | 8 #include "vm/dart_api_impl.h" |
9 #include "vm/thread.h" | 9 #include "vm/thread.h" |
10 #include "vm/unit_test.h" | 10 #include "vm/unit_test.h" |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 buffer_size -= pos; | 382 buffer_size -= pos; |
383 } | 383 } |
384 pos = OS::SNPrint(buffer, buffer_size, "}\n"); | 384 pos = OS::SNPrint(buffer, buffer_size, "}\n"); |
385 buffer += pos; | 385 buffer += pos; |
386 buffer_size -= pos; | 386 buffer_size -= pos; |
387 } | 387 } |
388 } | 388 } |
389 | 389 |
390 | 390 |
391 static void InspectOptimizedStack_Breakpoint(Dart_IsolateId isolate_id, | 391 static void InspectOptimizedStack_Breakpoint(Dart_IsolateId isolate_id, |
| 392 intptr_t bp_id, |
392 const Dart_CodeLocation& loc) { | 393 const Dart_CodeLocation& loc) { |
393 Dart_StackTrace trace; | 394 Dart_StackTrace trace; |
394 Dart_GetStackTrace(&trace); | 395 Dart_GetStackTrace(&trace); |
395 SaveStackTrace(trace); | 396 SaveStackTrace(trace); |
396 } | 397 } |
397 | 398 |
398 | 399 |
399 static void InspectStackTest(bool optimize) { | 400 static void InspectStackTest(bool optimize) { |
400 const char* kScriptChars = | 401 const char* kScriptChars = |
401 "void breakpointNow() {\n" | 402 "void breakpointNow() {\n" |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
576 InspectStackWithClosureTest(false); | 577 InspectStackWithClosureTest(false); |
577 } | 578 } |
578 | 579 |
579 | 580 |
580 TEST_CASE(Debug_InspectStackWithClosure_Optimized) { | 581 TEST_CASE(Debug_InspectStackWithClosure_Optimized) { |
581 InspectStackWithClosureTest(true); | 582 InspectStackWithClosureTest(true); |
582 } | 583 } |
583 | 584 |
584 | 585 |
585 void TestStepOutHandler(Dart_IsolateId isolate_id, | 586 void TestStepOutHandler(Dart_IsolateId isolate_id, |
| 587 intptr_t bp_id, |
586 const Dart_CodeLocation& location) { | 588 const Dart_CodeLocation& location) { |
587 Dart_StackTrace trace; | 589 Dart_StackTrace trace; |
588 Dart_GetStackTrace(&trace); | 590 Dart_GetStackTrace(&trace); |
589 const char* expected_bpts[] = {"f1", "foo", "main"}; | 591 const char* expected_bpts[] = {"f1", "foo", "main"}; |
590 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); | 592 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); |
591 intptr_t trace_len; | 593 intptr_t trace_len; |
592 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); | 594 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); |
593 EXPECT_VALID(res); | 595 EXPECT_VALID(res); |
594 EXPECT(breakpoint_hit_counter < expected_bpts_length); | 596 EXPECT(breakpoint_hit_counter < expected_bpts_length); |
595 Dart_ActivationFrame frame; | 597 Dart_ActivationFrame frame; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 Dart_Handle retval = Invoke("main"); | 642 Dart_Handle retval = Invoke("main"); |
641 EXPECT_VALID(retval); | 643 EXPECT_VALID(retval); |
642 EXPECT(Dart_IsInteger(retval)); | 644 EXPECT(Dart_IsInteger(retval)); |
643 int64_t int_value = ToInt64(retval); | 645 int64_t int_value = ToInt64(retval); |
644 EXPECT_EQ(2, int_value); | 646 EXPECT_EQ(2, int_value); |
645 EXPECT(breakpoint_hit == true); | 647 EXPECT(breakpoint_hit == true); |
646 } | 648 } |
647 | 649 |
648 | 650 |
649 void TestStepIntoHandler(Dart_IsolateId isolate_id, | 651 void TestStepIntoHandler(Dart_IsolateId isolate_id, |
| 652 intptr_t bp_id, |
650 const Dart_CodeLocation& location) { | 653 const Dart_CodeLocation& location) { |
651 Dart_StackTrace trace; | 654 Dart_StackTrace trace; |
652 Dart_GetStackTrace(&trace); | 655 Dart_GetStackTrace(&trace); |
653 const char* expected_bpts[] = { | 656 const char* expected_bpts[] = { |
654 "main", | 657 "main", |
655 "foo", | 658 "foo", |
656 "f1", | 659 "f1", |
657 "foo", | 660 "foo", |
658 "X.X.", | 661 "X.X.", |
659 "X.X.", | 662 "X.X.", |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 Dart_Handle retval = Invoke("main"); | 724 Dart_Handle retval = Invoke("main"); |
722 EXPECT_VALID(retval); | 725 EXPECT_VALID(retval); |
723 EXPECT(Dart_IsInteger(retval)); | 726 EXPECT(Dart_IsInteger(retval)); |
724 int64_t int_value = ToInt64(retval); | 727 int64_t int_value = ToInt64(retval); |
725 EXPECT_EQ(7, int_value); | 728 EXPECT_EQ(7, int_value); |
726 EXPECT(breakpoint_hit == true); | 729 EXPECT(breakpoint_hit == true); |
727 } | 730 } |
728 | 731 |
729 | 732 |
730 static void StepIntoHandler(Dart_IsolateId isolate_id, | 733 static void StepIntoHandler(Dart_IsolateId isolate_id, |
| 734 intptr_t bp_id, |
731 const Dart_CodeLocation& location) { | 735 const Dart_CodeLocation& location) { |
732 Dart_StackTrace trace; | 736 Dart_StackTrace trace; |
733 Dart_GetStackTrace(&trace); | 737 Dart_GetStackTrace(&trace); |
734 if (verbose) { | 738 if (verbose) { |
735 OS::Print(">>> Breakpoint nr. %d in %s <<<\n", | 739 OS::Print(">>> Breakpoint nr. %d in %s <<<\n", |
736 breakpoint_hit_counter, BreakpointInfo(trace)); | 740 breakpoint_hit_counter, BreakpointInfo(trace)); |
737 PrintStackTrace(trace); | 741 PrintStackTrace(trace); |
738 } | 742 } |
739 breakpoint_hit = true; | 743 breakpoint_hit = true; |
740 breakpoint_hit_counter++; | 744 breakpoint_hit_counter++; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
803 Dart_Handle retval = Invoke("main"); | 807 Dart_Handle retval = Invoke("main"); |
804 EXPECT_VALID(retval); | 808 EXPECT_VALID(retval); |
805 EXPECT(Dart_IsInteger(retval)); | 809 EXPECT(Dart_IsInteger(retval)); |
806 int64_t int_value = ToInt64(retval); | 810 int64_t int_value = ToInt64(retval); |
807 EXPECT_EQ(2 * 99, int_value); | 811 EXPECT_EQ(2 * 99, int_value); |
808 EXPECT(breakpoint_hit == true); | 812 EXPECT(breakpoint_hit == true); |
809 } | 813 } |
810 | 814 |
811 | 815 |
812 void TestSingleStepHandler(Dart_IsolateId isolate_id, | 816 void TestSingleStepHandler(Dart_IsolateId isolate_id, |
| 817 intptr_t bp_id, |
813 const Dart_CodeLocation& location) { | 818 const Dart_CodeLocation& location) { |
814 Dart_StackTrace trace; | 819 Dart_StackTrace trace; |
815 Dart_GetStackTrace(&trace); | 820 Dart_GetStackTrace(&trace); |
816 const char* expected_bpts[] = { | 821 const char* expected_bpts[] = { |
817 "moo", "foo", "moo", "foo", "moo", "foo", "main"}; | 822 "moo", "foo", "moo", "foo", "moo", "foo", "main"}; |
818 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); | 823 const intptr_t expected_bpts_length = ARRAY_SIZE(expected_bpts); |
819 intptr_t trace_len; | 824 intptr_t trace_len; |
820 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); | 825 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); |
821 EXPECT_VALID(res); | 826 EXPECT_VALID(res); |
822 EXPECT(breakpoint_hit_counter < expected_bpts_length); | 827 EXPECT(breakpoint_hit_counter < expected_bpts_length); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 | 867 |
863 breakpoint_hit = false; | 868 breakpoint_hit = false; |
864 breakpoint_hit_counter = 0; | 869 breakpoint_hit_counter = 0; |
865 Dart_Handle retval = Invoke("main"); | 870 Dart_Handle retval = Invoke("main"); |
866 EXPECT_VALID(retval); | 871 EXPECT_VALID(retval); |
867 EXPECT(breakpoint_hit == true); | 872 EXPECT(breakpoint_hit == true); |
868 } | 873 } |
869 | 874 |
870 | 875 |
871 static void ClosureBreakpointHandler(Dart_IsolateId isolate_id, | 876 static void ClosureBreakpointHandler(Dart_IsolateId isolate_id, |
| 877 intptr_t bp_id, |
872 const Dart_CodeLocation& location) { | 878 const Dart_CodeLocation& location) { |
873 Dart_StackTrace trace; | 879 Dart_StackTrace trace; |
874 Dart_GetStackTrace(&trace); | 880 Dart_GetStackTrace(&trace); |
875 const char* expected_trace[] = {"callback", "main"}; | 881 const char* expected_trace[] = {"callback", "main"}; |
876 const intptr_t expected_trace_length = 2; | 882 const intptr_t expected_trace_length = 2; |
877 breakpoint_hit_counter++; | 883 breakpoint_hit_counter++; |
878 intptr_t trace_len; | 884 intptr_t trace_len; |
879 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); | 885 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); |
880 EXPECT_VALID(res); | 886 EXPECT_VALID(res); |
881 EXPECT_EQ(expected_trace_length, trace_len); | 887 EXPECT_EQ(expected_trace_length, trace_len); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 breakpoint_hit_counter = 0; | 922 breakpoint_hit_counter = 0; |
917 Dart_Handle retval = Invoke("main"); | 923 Dart_Handle retval = Invoke("main"); |
918 EXPECT_VALID(retval); | 924 EXPECT_VALID(retval); |
919 int64_t int_value = ToInt64(retval); | 925 int64_t int_value = ToInt64(retval); |
920 EXPECT_EQ(442, int_value); | 926 EXPECT_EQ(442, int_value); |
921 EXPECT_EQ(2, breakpoint_hit_counter); | 927 EXPECT_EQ(2, breakpoint_hit_counter); |
922 } | 928 } |
923 | 929 |
924 | 930 |
925 static void ExprClosureBreakpointHandler(Dart_IsolateId isolate_id, | 931 static void ExprClosureBreakpointHandler(Dart_IsolateId isolate_id, |
| 932 intptr_t bp_id, |
926 const Dart_CodeLocation& location) { | 933 const Dart_CodeLocation& location) { |
927 Dart_StackTrace trace; | 934 Dart_StackTrace trace; |
928 Dart_GetStackTrace(&trace); | 935 Dart_GetStackTrace(&trace); |
929 static const char* expected_trace[] = {"<anonymous closure>", "main"}; | 936 static const char* expected_trace[] = {"<anonymous closure>", "main"}; |
930 Dart_Handle add_locals = Dart_NewList(4); | 937 Dart_Handle add_locals = Dart_NewList(4); |
931 Dart_ListSetAt(add_locals, 0, NewString("a")); | 938 Dart_ListSetAt(add_locals, 0, NewString("a")); |
932 Dart_ListSetAt(add_locals, 1, Dart_NewInteger(10)); | 939 Dart_ListSetAt(add_locals, 1, Dart_NewInteger(10)); |
933 Dart_ListSetAt(add_locals, 2, NewString("b")); | 940 Dart_ListSetAt(add_locals, 2, NewString("b")); |
934 Dart_ListSetAt(add_locals, 3, Dart_NewInteger(20)); | 941 Dart_ListSetAt(add_locals, 3, Dart_NewInteger(20)); |
935 Dart_Handle expected_locals[] = {add_locals, Dart_Null()}; | 942 Dart_Handle expected_locals[] = {add_locals, Dart_Null()}; |
(...skipping 28 matching lines...) Expand all Loading... |
964 EXPECT_VALID(retval); | 971 EXPECT_VALID(retval); |
965 int64_t int_value = ToInt64(retval); | 972 int64_t int_value = ToInt64(retval); |
966 EXPECT_EQ(30, int_value); | 973 EXPECT_EQ(30, int_value); |
967 EXPECT_EQ(1, breakpoint_hit_counter); | 974 EXPECT_EQ(1, breakpoint_hit_counter); |
968 } | 975 } |
969 | 976 |
970 | 977 |
971 static intptr_t bp_id_to_be_deleted; | 978 static intptr_t bp_id_to_be_deleted; |
972 | 979 |
973 static void DeleteBreakpointHandler(Dart_IsolateId isolate_id, | 980 static void DeleteBreakpointHandler(Dart_IsolateId isolate_id, |
| 981 intptr_t bp_id, |
974 const Dart_CodeLocation& location) { | 982 const Dart_CodeLocation& location) { |
975 Dart_StackTrace trace; | 983 Dart_StackTrace trace; |
976 Dart_GetStackTrace(&trace); | 984 Dart_GetStackTrace(&trace); |
977 const char* expected_trace[] = {"foo", "main"}; | 985 const char* expected_trace[] = {"foo", "main"}; |
978 const intptr_t expected_trace_length = 2; | 986 const intptr_t expected_trace_length = 2; |
979 breakpoint_hit_counter++; | 987 breakpoint_hit_counter++; |
980 intptr_t trace_len; | 988 intptr_t trace_len; |
981 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); | 989 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); |
982 EXPECT_VALID(res); | 990 EXPECT_VALID(res); |
983 EXPECT_EQ(expected_trace_length, trace_len); | 991 EXPECT_EQ(expected_trace_length, trace_len); |
984 for (int i = 0; i < trace_len; i++) { | 992 for (int i = 0; i < trace_len; i++) { |
985 Dart_ActivationFrame frame; | 993 Dart_ActivationFrame frame; |
986 res = Dart_GetActivationFrame(trace, i, &frame); | 994 res = Dart_GetActivationFrame(trace, i, &frame); |
987 EXPECT_VALID(res); | 995 EXPECT_VALID(res); |
988 Dart_Handle func_name; | 996 Dart_Handle func_name; |
989 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); | 997 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); |
990 EXPECT_VALID(res); | 998 EXPECT_VALID(res); |
991 EXPECT(Dart_IsString(func_name)); | 999 EXPECT(Dart_IsString(func_name)); |
992 const char* name_chars; | 1000 const char* name_chars; |
993 Dart_StringToCString(func_name, &name_chars); | 1001 Dart_StringToCString(func_name, &name_chars); |
994 EXPECT_STREQ(expected_trace[i], name_chars); | 1002 EXPECT_STREQ(expected_trace[i], name_chars); |
995 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); | 1003 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); |
996 } | 1004 } |
997 // Remove the breakpoint after we've hit it twice | 1005 // Remove the breakpoint after we've hit it twice |
998 if (breakpoint_hit_counter == 2) { | 1006 if (breakpoint_hit_counter == 2) { |
999 if (verbose) OS::Print("uninstalling breakpoint\n"); | 1007 if (verbose) OS::Print("uninstalling breakpoint\n"); |
1000 Dart_Handle res = Dart_RemoveBreakpoint(bp_id_to_be_deleted); | 1008 EXPECT_EQ(bp_id_to_be_deleted, bp_id); |
| 1009 Dart_Handle res = Dart_RemoveBreakpoint(bp_id); |
1001 EXPECT_VALID(res); | 1010 EXPECT_VALID(res); |
1002 } | 1011 } |
1003 } | 1012 } |
1004 | 1013 |
1005 | 1014 |
1006 TEST_CASE(Debug_DeleteBreakpoint) { | 1015 TEST_CASE(Debug_DeleteBreakpoint) { |
1007 const char* kScriptChars = | 1016 const char* kScriptChars = |
1008 "moo(s) { } \n" | 1017 "moo(s) { } \n" |
1009 " \n" | 1018 " \n" |
1010 "foo() { \n" | 1019 "foo() { \n" |
(...skipping 23 matching lines...) Expand all Loading... |
1034 // to fire twice only. | 1043 // to fire twice only. |
1035 bp_id_to_be_deleted = bp_id; | 1044 bp_id_to_be_deleted = bp_id; |
1036 breakpoint_hit_counter = 0; | 1045 breakpoint_hit_counter = 0; |
1037 Dart_Handle retval = Invoke("main"); | 1046 Dart_Handle retval = Invoke("main"); |
1038 EXPECT_VALID(retval); | 1047 EXPECT_VALID(retval); |
1039 EXPECT_EQ(2, breakpoint_hit_counter); | 1048 EXPECT_EQ(2, breakpoint_hit_counter); |
1040 } | 1049 } |
1041 | 1050 |
1042 | 1051 |
1043 static void InspectStaticFieldHandler(Dart_IsolateId isolate_id, | 1052 static void InspectStaticFieldHandler(Dart_IsolateId isolate_id, |
| 1053 intptr_t bp_id, |
1044 const Dart_CodeLocation& location) { | 1054 const Dart_CodeLocation& location) { |
1045 Dart_StackTrace trace; | 1055 Dart_StackTrace trace; |
1046 Dart_GetStackTrace(&trace); | 1056 Dart_GetStackTrace(&trace); |
1047 ASSERT(script_lib != NULL); | 1057 ASSERT(script_lib != NULL); |
1048 ASSERT(!Dart_IsError(script_lib)); | 1058 ASSERT(!Dart_IsError(script_lib)); |
1049 ASSERT(Dart_IsLibrary(script_lib)); | 1059 ASSERT(Dart_IsLibrary(script_lib)); |
1050 Dart_Handle class_A = Dart_GetClass(script_lib, NewString("A")); | 1060 Dart_Handle class_A = Dart_GetClass(script_lib, NewString("A")); |
1051 EXPECT_VALID(class_A); | 1061 EXPECT_VALID(class_A); |
1052 | 1062 |
1053 const int expected_num_fields = 2; | 1063 const int expected_num_fields = 2; |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1412 while (interrupt_isolate_id != ILLEGAL_ISOLATE_ID) { | 1422 while (interrupt_isolate_id != ILLEGAL_ISOLATE_ID) { |
1413 ml.Wait(); | 1423 ml.Wait(); |
1414 } | 1424 } |
1415 } | 1425 } |
1416 EXPECT(interrupt_isolate_id == ILLEGAL_ISOLATE_ID); | 1426 EXPECT(interrupt_isolate_id == ILLEGAL_ISOLATE_ID); |
1417 } | 1427 } |
1418 | 1428 |
1419 | 1429 |
1420 static void StackTraceDump1BreakpointHandler( | 1430 static void StackTraceDump1BreakpointHandler( |
1421 Dart_IsolateId isolate_id, | 1431 Dart_IsolateId isolate_id, |
| 1432 intptr_t bp_id, |
1422 const Dart_CodeLocation& location) { | 1433 const Dart_CodeLocation& location) { |
1423 Dart_StackTrace trace; | 1434 Dart_StackTrace trace; |
1424 Dart_GetStackTrace(&trace); | 1435 Dart_GetStackTrace(&trace); |
1425 const int kStackTraceLen = 4; | 1436 const int kStackTraceLen = 4; |
1426 static const char* expected_trace[kStackTraceLen] = { | 1437 static const char* expected_trace[kStackTraceLen] = { |
1427 "local_to_main", | 1438 "local_to_main", |
1428 "Test.local1_to_func1", | 1439 "Test.local1_to_func1", |
1429 "Test.func1", | 1440 "Test.func1", |
1430 "main" | 1441 "main" |
1431 }; | 1442 }; |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1729 Dart_SetExceptionPauseInfo(kPauseOnAllExceptions); | 1740 Dart_SetExceptionPauseInfo(kPauseOnAllExceptions); |
1730 | 1741 |
1731 Dart_Handle retval = Invoke("main"); | 1742 Dart_Handle retval = Invoke("main"); |
1732 EXPECT(Dart_IsError(retval)); | 1743 EXPECT(Dart_IsError(retval)); |
1733 EXPECT(Dart_IsUnhandledExceptionError(retval)); | 1744 EXPECT(Dart_IsUnhandledExceptionError(retval)); |
1734 EXPECT_EQ(1, breakpoint_hit_counter); | 1745 EXPECT_EQ(1, breakpoint_hit_counter); |
1735 } | 1746 } |
1736 | 1747 |
1737 | 1748 |
1738 void TestEvaluateHandler(Dart_IsolateId isolate_id, | 1749 void TestEvaluateHandler(Dart_IsolateId isolate_id, |
| 1750 intptr_t bp_id, |
1739 const Dart_CodeLocation& location) { | 1751 const Dart_CodeLocation& location) { |
1740 Dart_StackTrace trace; | 1752 Dart_StackTrace trace; |
1741 Dart_GetStackTrace(&trace); | 1753 Dart_GetStackTrace(&trace); |
1742 intptr_t trace_len; | 1754 intptr_t trace_len; |
1743 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); | 1755 Dart_Handle res = Dart_StackTraceLength(trace, &trace_len); |
1744 EXPECT_VALID(res); | 1756 EXPECT_VALID(res); |
1745 EXPECT_EQ(1, trace_len); | 1757 EXPECT_EQ(1, trace_len); |
1746 Dart_ActivationFrame frame; | 1758 Dart_ActivationFrame frame; |
1747 res = Dart_GetActivationFrame(trace, 0, &frame); | 1759 res = Dart_GetActivationFrame(trace, 0, &frame); |
1748 EXPECT_VALID(res); | 1760 EXPECT_VALID(res); |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2046 | 2058 |
2047 Dart_Handle list_type = Dart_InstanceGetType(list_access_test_obj); | 2059 Dart_Handle list_type = Dart_InstanceGetType(list_access_test_obj); |
2048 Dart_Handle super_type = Dart_GetSupertype(list_type); | 2060 Dart_Handle super_type = Dart_GetSupertype(list_type); |
2049 EXPECT(!Dart_IsError(super_type)); | 2061 EXPECT(!Dart_IsError(super_type)); |
2050 super_type = Dart_GetSupertype(super_type); | 2062 super_type = Dart_GetSupertype(super_type); |
2051 EXPECT(!Dart_IsError(super_type)); | 2063 EXPECT(!Dart_IsError(super_type)); |
2052 EXPECT(super_type == Dart_Null()); | 2064 EXPECT(super_type == Dart_Null()); |
2053 } | 2065 } |
2054 | 2066 |
2055 } // namespace dart | 2067 } // namespace dart |
OLD | NEW |