| 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_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "platform/assert.h" | 6 #include "platform/assert.h" |
| 7 #include "platform/json.h" | 7 #include "platform/json.h" |
| 8 #include "platform/utils.h" | 8 #include "platform/utils.h" |
| 9 #include "vm/class_finalizer.h" | 9 #include "vm/class_finalizer.h" |
| 10 #include "vm/dart_api_impl.h" | 10 #include "vm/dart_api_impl.h" |
| (...skipping 2629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2640 "\n" | 2640 "\n" |
| 2641 "Fields test() {\n" | 2641 "Fields test() {\n" |
| 2642 " Fields.Init();\n" | 2642 " Fields.Init();\n" |
| 2643 " top_fld = 'top';\n" | 2643 " top_fld = 'top';\n" |
| 2644 " _top_fld = 'hidden top';\n" | 2644 " _top_fld = 'hidden top';\n" |
| 2645 " top_getset_fld = 'top getset';\n" | 2645 " top_getset_fld = 'top getset';\n" |
| 2646 " _top_getset_fld = 'hidden top getset';\n" | 2646 " _top_getset_fld = 'hidden top getset';\n" |
| 2647 " return new Fields();\n" | 2647 " return new Fields();\n" |
| 2648 "}\n"; | 2648 "}\n"; |
| 2649 const char* kImportedScriptChars = | 2649 const char* kImportedScriptChars = |
| 2650 "#library('library_name');\n" | 2650 "library library_name;\n" |
| 2651 "var imported_fld = 'imported';\n" | 2651 "var imported_fld = 'imported';\n" |
| 2652 "var _imported_fld = 'hidden imported';\n" | 2652 "var _imported_fld = 'hidden imported';\n" |
| 2653 "get imported_getset_fld { return _gs_fld1; }\n" | 2653 "get imported_getset_fld { return _gs_fld1; }\n" |
| 2654 "void set imported_getset_fld(var value) { _gs_fld1 = value; }\n" | 2654 "void set imported_getset_fld(var value) { _gs_fld1 = value; }\n" |
| 2655 "get _imported_getset_fld { return _gs_fld2; }\n" | 2655 "get _imported_getset_fld { return _gs_fld2; }\n" |
| 2656 "void set _imported_getset_fld(var value) { _gs_fld2 = value; }\n" | 2656 "void set _imported_getset_fld(var value) { _gs_fld2 = value; }\n" |
| 2657 "var _gs_fld1;\n" | 2657 "var _gs_fld1;\n" |
| 2658 "var _gs_fld2;\n" | 2658 "var _gs_fld2;\n" |
| 2659 "void test2() {\n" | 2659 "void test2() {\n" |
| 2660 " imported_getset_fld = 'imported getset';\n" | 2660 " imported_getset_fld = 'imported getset';\n" |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2944 | 2944 |
| 2945 // We expect this to fail as class "NativeFields" extends | 2945 // We expect this to fail as class "NativeFields" extends |
| 2946 // "NativeFieldsWrapper" and there is no definition of it either | 2946 // "NativeFieldsWrapper" and there is no definition of it either |
| 2947 // in the dart code or through the native field injection mechanism. | 2947 // in the dart code or through the native field injection mechanism. |
| 2948 EXPECT(Dart_IsError(result)); | 2948 EXPECT(Dart_IsError(result)); |
| 2949 } | 2949 } |
| 2950 | 2950 |
| 2951 | 2951 |
| 2952 TEST_CASE(InjectNativeFields3) { | 2952 TEST_CASE(InjectNativeFields3) { |
| 2953 const char* kScriptChars = | 2953 const char* kScriptChars = |
| 2954 "#import('dart:nativewrappers');" | 2954 "import 'dart:nativewrappers';" |
| 2955 "class NativeFields extends NativeFieldWrapperClass2 {\n" | 2955 "class NativeFields extends NativeFieldWrapperClass2 {\n" |
| 2956 " NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n" | 2956 " NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n" |
| 2957 " int fld1;\n" | 2957 " int fld1;\n" |
| 2958 " final int fld2;\n" | 2958 " final int fld2;\n" |
| 2959 " static int fld3;\n" | 2959 " static int fld3;\n" |
| 2960 " static const int fld4 = 10;\n" | 2960 " static const int fld4 = 10;\n" |
| 2961 "}\n" | 2961 "}\n" |
| 2962 "NativeFields testMain() {\n" | 2962 "NativeFields testMain() {\n" |
| 2963 " NativeFields obj = new NativeFields(10, 20);\n" | 2963 " NativeFields obj = new NativeFields(10, 20);\n" |
| 2964 " return obj;\n" | 2964 " return obj;\n" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2986 intptr_t header_size = sizeof(RawObject); | 2986 intptr_t header_size = sizeof(RawObject); |
| 2987 EXPECT_EQ(Utils::RoundUp(((1 + 2) * kWordSize) + header_size, | 2987 EXPECT_EQ(Utils::RoundUp(((1 + 2) * kWordSize) + header_size, |
| 2988 kObjectAlignment), | 2988 kObjectAlignment), |
| 2989 cls.instance_size()); | 2989 cls.instance_size()); |
| 2990 EXPECT_EQ(kNumNativeFields, cls.num_native_fields()); | 2990 EXPECT_EQ(kNumNativeFields, cls.num_native_fields()); |
| 2991 } | 2991 } |
| 2992 | 2992 |
| 2993 | 2993 |
| 2994 TEST_CASE(InjectNativeFields4) { | 2994 TEST_CASE(InjectNativeFields4) { |
| 2995 const char* kScriptChars = | 2995 const char* kScriptChars = |
| 2996 "#import('dart:nativewrappers');" | 2996 "import 'dart:nativewrappers';" |
| 2997 "class NativeFields extends NativeFieldWrapperClass2 {\n" | 2997 "class NativeFields extends NativeFieldWrapperClass2 {\n" |
| 2998 " NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n" | 2998 " NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n" |
| 2999 " int fld1;\n" | 2999 " int fld1;\n" |
| 3000 " final int fld2;\n" | 3000 " final int fld2;\n" |
| 3001 " static int fld3;\n" | 3001 " static int fld3;\n" |
| 3002 " static const int fld4 = 10;\n" | 3002 " static const int fld4 = 10;\n" |
| 3003 "}\n" | 3003 "}\n" |
| 3004 "NativeFields testMain() {\n" | 3004 "NativeFields testMain() {\n" |
| 3005 " NativeFields obj = new NativeFields(10, 20);\n" | 3005 " NativeFields obj = new NativeFields(10, 20);\n" |
| 3006 " return obj;\n" | 3006 " return obj;\n" |
| 3007 "}\n"; | 3007 "}\n"; |
| 3008 Dart_Handle result; | 3008 Dart_Handle result; |
| 3009 // Load up a test script in the test library. | 3009 // Load up a test script in the test library. |
| 3010 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 3010 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 3011 | 3011 |
| 3012 // Invoke a function which returns an object of type NativeFields. | 3012 // Invoke a function which returns an object of type NativeFields. |
| 3013 result = Dart_Invoke(lib, NewString("testMain"), 0, NULL); | 3013 result = Dart_Invoke(lib, NewString("testMain"), 0, NULL); |
| 3014 | 3014 |
| 3015 // We expect the test script to fail finalization with the error below: | 3015 // We expect the test script to fail finalization with the error below: |
| 3016 EXPECT(Dart_IsError(result)); | 3016 EXPECT(Dart_IsError(result)); |
| 3017 Dart_Handle expected_error = Dart_Error( | 3017 Dart_Handle expected_error = Dart_Error( |
| 3018 "'dart:test-lib': Error: line 1 pos 38: " | 3018 "'dart:test-lib': Error: line 1 pos 36: " |
| 3019 "class 'NativeFields' is trying to extend a native fields class, " | 3019 "class 'NativeFields' is trying to extend a native fields class, " |
| 3020 "but library '%s' has no native resolvers", | 3020 "but library '%s' has no native resolvers", |
| 3021 TestCase::url()); | 3021 TestCase::url()); |
| 3022 EXPECT_SUBSTRING(Dart_GetError(expected_error), Dart_GetError(result)); | 3022 EXPECT_SUBSTRING(Dart_GetError(expected_error), Dart_GetError(result)); |
| 3023 } | 3023 } |
| 3024 | 3024 |
| 3025 | 3025 |
| 3026 TEST_CASE(InjectNativeFieldsSuperClass) { | 3026 TEST_CASE(InjectNativeFieldsSuperClass) { |
| 3027 const char* kScriptChars = | 3027 const char* kScriptChars = |
| 3028 "#import('dart:nativewrappers');" | 3028 "import 'dart:nativewrappers';" |
| 3029 "class NativeFieldsSuper extends NativeFieldWrapperClass1 {\n" | 3029 "class NativeFieldsSuper extends NativeFieldWrapperClass1 {\n" |
| 3030 " NativeFieldsSuper() : fld1 = 42 {}\n" | 3030 " NativeFieldsSuper() : fld1 = 42 {}\n" |
| 3031 " int fld1;\n" | 3031 " int fld1;\n" |
| 3032 "}\n" | 3032 "}\n" |
| 3033 "class NativeFields extends NativeFieldsSuper {\n" | 3033 "class NativeFields extends NativeFieldsSuper {\n" |
| 3034 " fld() => fld1;\n" | 3034 " fld() => fld1;\n" |
| 3035 "}\n" | 3035 "}\n" |
| 3036 "int testMain() {\n" | 3036 "int testMain() {\n" |
| 3037 " NativeFields obj = new NativeFields();\n" | 3037 " NativeFields obj = new NativeFields();\n" |
| 3038 " return obj.fld();\n" | 3038 " return obj.fld();\n" |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3178 EXPECT_STREQ("myerror", Dart_GetError(result)); | 3178 EXPECT_STREQ("myerror", Dart_GetError(result)); |
| 3179 | 3179 |
| 3180 result = Dart_SetNativeInstanceField(error, 0, 1); | 3180 result = Dart_SetNativeInstanceField(error, 0, 1); |
| 3181 EXPECT(Dart_IsError(result)); | 3181 EXPECT(Dart_IsError(result)); |
| 3182 EXPECT_STREQ("myerror", Dart_GetError(result)); | 3182 EXPECT_STREQ("myerror", Dart_GetError(result)); |
| 3183 } | 3183 } |
| 3184 | 3184 |
| 3185 | 3185 |
| 3186 TEST_CASE(ImplicitNativeFieldAccess) { | 3186 TEST_CASE(ImplicitNativeFieldAccess) { |
| 3187 const char* kScriptChars = | 3187 const char* kScriptChars = |
| 3188 "#import('dart:nativewrappers');" | 3188 "import 'dart:nativewrappers';" |
| 3189 "class NativeFields extends NativeFieldWrapperClass4 {\n" | 3189 "class NativeFields extends NativeFieldWrapperClass4 {\n" |
| 3190 " NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n" | 3190 " NativeFields(int i, int j) : fld1 = i, fld2 = j {}\n" |
| 3191 " int fld0;\n" | 3191 " int fld0;\n" |
| 3192 " int fld1;\n" | 3192 " int fld1;\n" |
| 3193 " final int fld2;\n" | 3193 " final int fld2;\n" |
| 3194 " static int fld3;\n" | 3194 " static int fld3;\n" |
| 3195 " static const int fld4 = 10;\n" | 3195 " static const int fld4 = 10;\n" |
| 3196 "}\n" | 3196 "}\n" |
| 3197 "NativeFields testMain() {\n" | 3197 "NativeFields testMain() {\n" |
| 3198 " NativeFields obj = new NativeFields(10, 20);\n" | 3198 " NativeFields obj = new NativeFields(10, 20);\n" |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3804 function_name2, | 3804 function_name2, |
| 3805 number_of_arguments, | 3805 number_of_arguments, |
| 3806 dart_arguments); | 3806 dart_arguments); |
| 3807 EXPECT(Dart_IsError(result)); | 3807 EXPECT(Dart_IsError(result)); |
| 3808 EXPECT(Dart_ErrorHasException(result)); */ | 3808 EXPECT(Dart_ErrorHasException(result)); */ |
| 3809 } | 3809 } |
| 3810 | 3810 |
| 3811 | 3811 |
| 3812 TEST_CASE(Invoke_CrossLibrary) { | 3812 TEST_CASE(Invoke_CrossLibrary) { |
| 3813 const char* kLibrary1Chars = | 3813 const char* kLibrary1Chars = |
| 3814 "#library('library1_name');\n" | 3814 "library library1_name;\n" |
| 3815 "void local() {}\n" | 3815 "void local() {}\n" |
| 3816 "void _local() {}\n"; | 3816 "void _local() {}\n"; |
| 3817 const char* kLibrary2Chars = | 3817 const char* kLibrary2Chars = |
| 3818 "#library('library2_name');\n" | 3818 "library library2_name;\n" |
| 3819 "void imported() {}\n" | 3819 "void imported() {}\n" |
| 3820 "void _imported() {}\n"; | 3820 "void _imported() {}\n"; |
| 3821 | 3821 |
| 3822 // Load lib1 | 3822 // Load lib1 |
| 3823 Dart_Handle url = NewString("library1_url"); | 3823 Dart_Handle url = NewString("library1_url"); |
| 3824 Dart_Handle source = NewString(kLibrary1Chars); | 3824 Dart_Handle source = NewString(kLibrary1Chars); |
| 3825 Dart_Handle lib1 = Dart_LoadLibrary(url, source); | 3825 Dart_Handle lib1 = Dart_LoadLibrary(url, source); |
| 3826 EXPECT_VALID(lib1); | 3826 EXPECT_VALID(lib1); |
| 3827 | 3827 |
| 3828 // Load lib2 | 3828 // Load lib2 |
| (...skipping 1279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5108 Dart_Handle result = Dart_SetLibraryTagHandler(import_library_handler); | 5108 Dart_Handle result = Dart_SetLibraryTagHandler(import_library_handler); |
| 5109 EXPECT_VALID(result); | 5109 EXPECT_VALID(result); |
| 5110 result = Dart_LoadScript(url, source); | 5110 result = Dart_LoadScript(url, source); |
| 5111 EXPECT(Dart_IsError(result)); | 5111 EXPECT(Dart_IsError(result)); |
| 5112 EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); | 5112 EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); |
| 5113 } | 5113 } |
| 5114 | 5114 |
| 5115 | 5115 |
| 5116 TEST_CASE(LookupLibrary) { | 5116 TEST_CASE(LookupLibrary) { |
| 5117 const char* kScriptChars = | 5117 const char* kScriptChars = |
| 5118 "#import('library1.dart');" | 5118 "import 'library1_dart';" |
| 5119 "main() {}"; | 5119 "main() {}"; |
| 5120 const char* kLibrary1Chars = | 5120 const char* kLibrary1Chars = |
| 5121 "#library('library1.dart');" | 5121 "library library1_dart;" |
| 5122 "#import('library2.dart');"; | 5122 "import 'library2_dart';"; |
| 5123 | 5123 |
| 5124 // Create a test library and Load up a test script in it. | 5124 // Create a test library and Load up a test script in it. |
| 5125 Dart_Handle url = NewString(TestCase::url()); | 5125 Dart_Handle url = NewString(TestCase::url()); |
| 5126 Dart_Handle source = NewString(kScriptChars); | 5126 Dart_Handle source = NewString(kScriptChars); |
| 5127 Dart_Handle result = Dart_SetLibraryTagHandler(library_handler); | 5127 Dart_Handle result = Dart_SetLibraryTagHandler(library_handler); |
| 5128 EXPECT_VALID(result); | 5128 EXPECT_VALID(result); |
| 5129 result = Dart_LoadScript(url, source); | 5129 result = Dart_LoadScript(url, source); |
| 5130 EXPECT_VALID(result); | 5130 EXPECT_VALID(result); |
| 5131 | 5131 |
| 5132 url = NewString("library1.dart"); | 5132 url = NewString("library1_dart"); |
| 5133 source = NewString(kLibrary1Chars); | 5133 source = NewString(kLibrary1Chars); |
| 5134 result = Dart_LoadLibrary(url, source); | 5134 result = Dart_LoadLibrary(url, source); |
| 5135 EXPECT_VALID(result); | 5135 EXPECT_VALID(result); |
| 5136 | 5136 |
| 5137 result = Dart_LookupLibrary(url); | 5137 result = Dart_LookupLibrary(url); |
| 5138 EXPECT_VALID(result); | 5138 EXPECT_VALID(result); |
| 5139 | 5139 |
| 5140 result = Dart_LookupLibrary(Dart_Null()); | 5140 result = Dart_LookupLibrary(Dart_Null()); |
| 5141 EXPECT(Dart_IsError(result)); | 5141 EXPECT(Dart_IsError(result)); |
| 5142 EXPECT_STREQ("Dart_LookupLibrary expects argument 'url' to be non-null.", | 5142 EXPECT_STREQ("Dart_LookupLibrary expects argument 'url' to be non-null.", |
| (...skipping 12 matching lines...) Expand all Loading... |
| 5155 url = NewString("noodles.dart"); | 5155 url = NewString("noodles.dart"); |
| 5156 result = Dart_LookupLibrary(url); | 5156 result = Dart_LookupLibrary(url); |
| 5157 EXPECT(Dart_IsError(result)); | 5157 EXPECT(Dart_IsError(result)); |
| 5158 EXPECT_STREQ("Dart_LookupLibrary: library 'noodles.dart' not found.", | 5158 EXPECT_STREQ("Dart_LookupLibrary: library 'noodles.dart' not found.", |
| 5159 Dart_GetError(result)); | 5159 Dart_GetError(result)); |
| 5160 } | 5160 } |
| 5161 | 5161 |
| 5162 | 5162 |
| 5163 TEST_CASE(LibraryName) { | 5163 TEST_CASE(LibraryName) { |
| 5164 const char* kLibrary1Chars = | 5164 const char* kLibrary1Chars = |
| 5165 "#library('library1_name');"; | 5165 "library library1_name;"; |
| 5166 Dart_Handle url = NewString("library1_url"); | 5166 Dart_Handle url = NewString("library1_url"); |
| 5167 Dart_Handle source = NewString(kLibrary1Chars); | 5167 Dart_Handle source = NewString(kLibrary1Chars); |
| 5168 Dart_Handle lib = Dart_LoadLibrary(url, source); | 5168 Dart_Handle lib = Dart_LoadLibrary(url, source); |
| 5169 Dart_Handle error = Dart_Error("incoming error"); | 5169 Dart_Handle error = Dart_Error("incoming error"); |
| 5170 EXPECT_VALID(lib); | 5170 EXPECT_VALID(lib); |
| 5171 | 5171 |
| 5172 Dart_Handle result = Dart_LibraryName(Dart_Null()); | 5172 Dart_Handle result = Dart_LibraryName(Dart_Null()); |
| 5173 EXPECT(Dart_IsError(result)); | 5173 EXPECT(Dart_IsError(result)); |
| 5174 EXPECT_STREQ("Dart_LibraryName expects argument 'library' to be non-null.", | 5174 EXPECT_STREQ("Dart_LibraryName expects argument 'library' to be non-null.", |
| 5175 Dart_GetError(result)); | 5175 Dart_GetError(result)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 5188 EXPECT_VALID(result); | 5188 EXPECT_VALID(result); |
| 5189 EXPECT(Dart_IsString(result)); | 5189 EXPECT(Dart_IsString(result)); |
| 5190 const char* cstr = NULL; | 5190 const char* cstr = NULL; |
| 5191 EXPECT_VALID(Dart_StringToCString(result, &cstr)); | 5191 EXPECT_VALID(Dart_StringToCString(result, &cstr)); |
| 5192 EXPECT_STREQ("library1_name", cstr); | 5192 EXPECT_STREQ("library1_name", cstr); |
| 5193 } | 5193 } |
| 5194 | 5194 |
| 5195 | 5195 |
| 5196 TEST_CASE(LibraryUrl) { | 5196 TEST_CASE(LibraryUrl) { |
| 5197 const char* kLibrary1Chars = | 5197 const char* kLibrary1Chars = |
| 5198 "#library('library1_name');"; | 5198 "library library1_name;"; |
| 5199 Dart_Handle url = NewString("library1_url"); | 5199 Dart_Handle url = NewString("library1_url"); |
| 5200 Dart_Handle source = NewString(kLibrary1Chars); | 5200 Dart_Handle source = NewString(kLibrary1Chars); |
| 5201 Dart_Handle lib = Dart_LoadLibrary(url, source); | 5201 Dart_Handle lib = Dart_LoadLibrary(url, source); |
| 5202 Dart_Handle error = Dart_Error("incoming error"); | 5202 Dart_Handle error = Dart_Error("incoming error"); |
| 5203 EXPECT_VALID(lib); | 5203 EXPECT_VALID(lib); |
| 5204 | 5204 |
| 5205 Dart_Handle result = Dart_LibraryUrl(Dart_Null()); | 5205 Dart_Handle result = Dart_LibraryUrl(Dart_Null()); |
| 5206 EXPECT(Dart_IsError(result)); | 5206 EXPECT(Dart_IsError(result)); |
| 5207 EXPECT_STREQ("Dart_LibraryUrl expects argument 'library' to be non-null.", | 5207 EXPECT_STREQ("Dart_LibraryUrl expects argument 'library' to be non-null.", |
| 5208 Dart_GetError(result)); | 5208 Dart_GetError(result)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 5221 EXPECT_VALID(result); | 5221 EXPECT_VALID(result); |
| 5222 EXPECT(Dart_IsString(result)); | 5222 EXPECT(Dart_IsString(result)); |
| 5223 const char* cstr = NULL; | 5223 const char* cstr = NULL; |
| 5224 EXPECT_VALID(Dart_StringToCString(result, &cstr)); | 5224 EXPECT_VALID(Dart_StringToCString(result, &cstr)); |
| 5225 EXPECT_STREQ("library1_url", cstr); | 5225 EXPECT_STREQ("library1_url", cstr); |
| 5226 } | 5226 } |
| 5227 | 5227 |
| 5228 | 5228 |
| 5229 TEST_CASE(LibraryGetClassNames) { | 5229 TEST_CASE(LibraryGetClassNames) { |
| 5230 const char* kLibraryChars = | 5230 const char* kLibraryChars = |
| 5231 "#library('library_name');\n" | 5231 "library library_name;\n" |
| 5232 "\n" | 5232 "\n" |
| 5233 "class A {}\n" | 5233 "class A {}\n" |
| 5234 "class B {}\n" | 5234 "class B {}\n" |
| 5235 "interface C {}\n" | 5235 "interface C {}\n" |
| 5236 "class _A {}\n" | 5236 "class _A {}\n" |
| 5237 "class _B {}\n" | 5237 "class _B {}\n" |
| 5238 "interface _C {}\n" | 5238 "interface _C {}\n" |
| 5239 "\n" | 5239 "\n" |
| 5240 "_compare(String a, String b) => a.compareTo(b);\n" | 5240 "_compare(String a, String b) => a.compareTo(b);\n" |
| 5241 "sort(list) => list.sort(_compare);\n"; | 5241 "sort(list) => list.sort(_compare);\n"; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 5258 Dart_Handle list_string = Dart_ToString(list); | 5258 Dart_Handle list_string = Dart_ToString(list); |
| 5259 EXPECT_VALID(list_string); | 5259 EXPECT_VALID(list_string); |
| 5260 const char* list_cstr = ""; | 5260 const char* list_cstr = ""; |
| 5261 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); | 5261 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); |
| 5262 EXPECT_STREQ("[A, B, C, _A, _B, _C]", list_cstr); | 5262 EXPECT_STREQ("[A, B, C, _A, _B, _C]", list_cstr); |
| 5263 } | 5263 } |
| 5264 | 5264 |
| 5265 | 5265 |
| 5266 TEST_CASE(GetFunctionNames) { | 5266 TEST_CASE(GetFunctionNames) { |
| 5267 const char* kLibraryChars = | 5267 const char* kLibraryChars = |
| 5268 "#library('library_name');\n" | 5268 "library library_name;\n" |
| 5269 "\n" | 5269 "\n" |
| 5270 "void A() {}\n" | 5270 "void A() {}\n" |
| 5271 "get B => 11;\n" | 5271 "get B => 11;\n" |
| 5272 "set C(x) { }\n" | 5272 "set C(x) { }\n" |
| 5273 "var D;\n" | 5273 "var D;\n" |
| 5274 "void _A() {}\n" | 5274 "void _A() {}\n" |
| 5275 "get _B => 11;\n" | 5275 "get _B => 11;\n" |
| 5276 "set _C(x) { }\n" | 5276 "set _C(x) { }\n" |
| 5277 "var _D;\n" | 5277 "var _D;\n" |
| 5278 "\n" | 5278 "\n" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5328 list_string = Dart_ToString(list); | 5328 list_string = Dart_ToString(list); |
| 5329 EXPECT_VALID(list_string); | 5329 EXPECT_VALID(list_string); |
| 5330 list_cstr = ""; | 5330 list_cstr = ""; |
| 5331 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); | 5331 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); |
| 5332 EXPECT_STREQ("[A2, B2, C2=, MyClass, _A2, _B2, _C2=]", list_cstr); | 5332 EXPECT_STREQ("[A2, B2, C2=, MyClass, _A2, _B2, _C2=]", list_cstr); |
| 5333 } | 5333 } |
| 5334 | 5334 |
| 5335 | 5335 |
| 5336 TEST_CASE(GetVariableNames) { | 5336 TEST_CASE(GetVariableNames) { |
| 5337 const char* kLibraryChars = | 5337 const char* kLibraryChars = |
| 5338 "#library('library_name');\n" | 5338 "library library_name;\n" |
| 5339 "\n" | 5339 "\n" |
| 5340 "var A;\n" | 5340 "var A;\n" |
| 5341 "get B => 12;\n" | 5341 "get B => 12;\n" |
| 5342 "set C(x) { }\n" | 5342 "set C(x) { }\n" |
| 5343 "D(x) => (x + 1);\n" | 5343 "D(x) => (x + 1);\n" |
| 5344 "var _A;\n" | 5344 "var _A;\n" |
| 5345 "get _B => 12;\n" | 5345 "get _B => 12;\n" |
| 5346 "set _C(x) { }\n" | 5346 "set _C(x) { }\n" |
| 5347 "_D(x) => (x + 1);\n" | 5347 "_D(x) => (x + 1);\n" |
| 5348 "\n" | 5348 "\n" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5393 list_string = Dart_ToString(list); | 5393 list_string = Dart_ToString(list); |
| 5394 EXPECT_VALID(list_string); | 5394 EXPECT_VALID(list_string); |
| 5395 list_cstr = ""; | 5395 list_cstr = ""; |
| 5396 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); | 5396 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); |
| 5397 EXPECT_STREQ("[A2, _A2]", list_cstr); | 5397 EXPECT_STREQ("[A2, _A2]", list_cstr); |
| 5398 } | 5398 } |
| 5399 | 5399 |
| 5400 | 5400 |
| 5401 TEST_CASE(LibraryImportLibrary) { | 5401 TEST_CASE(LibraryImportLibrary) { |
| 5402 const char* kLibrary1Chars = | 5402 const char* kLibrary1Chars = |
| 5403 "#library('library1_name');"; | 5403 "library library1_name;"; |
| 5404 const char* kLibrary2Chars = | 5404 const char* kLibrary2Chars = |
| 5405 "#library('library2_name');"; | 5405 "library library2_name;"; |
| 5406 Dart_Handle error = Dart_Error("incoming error"); | 5406 Dart_Handle error = Dart_Error("incoming error"); |
| 5407 Dart_Handle result; | 5407 Dart_Handle result; |
| 5408 | 5408 |
| 5409 Dart_Handle url = NewString("library1_url"); | 5409 Dart_Handle url = NewString("library1_url"); |
| 5410 Dart_Handle source = NewString(kLibrary1Chars); | 5410 Dart_Handle source = NewString(kLibrary1Chars); |
| 5411 Dart_Handle lib1 = Dart_LoadLibrary(url, source); | 5411 Dart_Handle lib1 = Dart_LoadLibrary(url, source); |
| 5412 EXPECT_VALID(lib1); | 5412 EXPECT_VALID(lib1); |
| 5413 | 5413 |
| 5414 url = NewString("library2_url"); | 5414 url = NewString("library2_url"); |
| 5415 source = NewString(kLibrary2Chars); | 5415 source = NewString(kLibrary2Chars); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5448 EXPECT(Dart_IsError(result)); | 5448 EXPECT(Dart_IsError(result)); |
| 5449 EXPECT_STREQ("incoming error", Dart_GetError(result)); | 5449 EXPECT_STREQ("incoming error", Dart_GetError(result)); |
| 5450 | 5450 |
| 5451 result = Dart_LibraryImportLibrary(lib1, lib2, Dart_Null()); | 5451 result = Dart_LibraryImportLibrary(lib1, lib2, Dart_Null()); |
| 5452 EXPECT_VALID(result); | 5452 EXPECT_VALID(result); |
| 5453 } | 5453 } |
| 5454 | 5454 |
| 5455 | 5455 |
| 5456 TEST_CASE(ImportLibraryWithPrefix) { | 5456 TEST_CASE(ImportLibraryWithPrefix) { |
| 5457 const char* kLibrary1Chars = | 5457 const char* kLibrary1Chars = |
| 5458 "#library('library1_name');" | 5458 "library library1_name;" |
| 5459 "int bar() => 42;"; | 5459 "int bar() => 42;"; |
| 5460 Dart_Handle url1 = NewString("library1_url"); | 5460 Dart_Handle url1 = NewString("library1_url"); |
| 5461 Dart_Handle source1 = NewString(kLibrary1Chars); | 5461 Dart_Handle source1 = NewString(kLibrary1Chars); |
| 5462 Dart_Handle lib1 = Dart_LoadLibrary(url1, source1); | 5462 Dart_Handle lib1 = Dart_LoadLibrary(url1, source1); |
| 5463 EXPECT_VALID(lib1); | 5463 EXPECT_VALID(lib1); |
| 5464 EXPECT(Dart_IsLibrary(lib1)); | 5464 EXPECT(Dart_IsLibrary(lib1)); |
| 5465 | 5465 |
| 5466 const char* kLibrary2Chars = | 5466 const char* kLibrary2Chars = |
| 5467 "#library('library2_name');" | 5467 "library library2_name;" |
| 5468 "int foobar() => foo.bar();"; | 5468 "int foobar() => foo.bar();"; |
| 5469 Dart_Handle url2 = NewString("library2_url"); | 5469 Dart_Handle url2 = NewString("library2_url"); |
| 5470 Dart_Handle source2 = NewString(kLibrary2Chars); | 5470 Dart_Handle source2 = NewString(kLibrary2Chars); |
| 5471 Dart_Handle lib2 = Dart_LoadLibrary(url2, source2); | 5471 Dart_Handle lib2 = Dart_LoadLibrary(url2, source2); |
| 5472 EXPECT_VALID(lib2); | 5472 EXPECT_VALID(lib2); |
| 5473 EXPECT(Dart_IsLibrary(lib2)); | 5473 EXPECT(Dart_IsLibrary(lib2)); |
| 5474 | 5474 |
| 5475 Dart_Handle prefix = NewString("foo"); | 5475 Dart_Handle prefix = NewString("foo"); |
| 5476 Dart_Handle result = Dart_LibraryImportLibrary(lib2, lib1, prefix); | 5476 Dart_Handle result = Dart_LibraryImportLibrary(lib2, lib1, prefix); |
| 5477 EXPECT_VALID(result); | 5477 EXPECT_VALID(result); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 5489 EXPECT(Dart_IsInteger(result)); | 5489 EXPECT(Dart_IsInteger(result)); |
| 5490 int64_t value = 0; | 5490 int64_t value = 0; |
| 5491 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); | 5491 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); |
| 5492 EXPECT_EQ(42, value); | 5492 EXPECT_EQ(42, value); |
| 5493 } | 5493 } |
| 5494 | 5494 |
| 5495 | 5495 |
| 5496 | 5496 |
| 5497 TEST_CASE(LoadLibrary) { | 5497 TEST_CASE(LoadLibrary) { |
| 5498 const char* kLibrary1Chars = | 5498 const char* kLibrary1Chars = |
| 5499 "#library('library1_name');"; | 5499 "library library1_name;"; |
| 5500 Dart_Handle error = Dart_Error("incoming error"); | 5500 Dart_Handle error = Dart_Error("incoming error"); |
| 5501 Dart_Handle result; | 5501 Dart_Handle result; |
| 5502 | 5502 |
| 5503 Dart_Handle url = NewString("library1_url"); | 5503 Dart_Handle url = NewString("library1_url"); |
| 5504 Dart_Handle source = NewString(kLibrary1Chars); | 5504 Dart_Handle source = NewString(kLibrary1Chars); |
| 5505 | 5505 |
| 5506 result = Dart_LoadLibrary(Dart_Null(), source); | 5506 result = Dart_LoadLibrary(Dart_Null(), source); |
| 5507 EXPECT(Dart_IsError(result)); | 5507 EXPECT(Dart_IsError(result)); |
| 5508 EXPECT_STREQ("Dart_LoadLibrary expects argument 'url' to be non-null.", | 5508 EXPECT_STREQ("Dart_LoadLibrary expects argument 'url' to be non-null.", |
| 5509 Dart_GetError(result)); | 5509 Dart_GetError(result)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5541 result = Dart_LoadLibrary(url, source); | 5541 result = Dart_LoadLibrary(url, source); |
| 5542 EXPECT(Dart_IsError(result)); | 5542 EXPECT(Dart_IsError(result)); |
| 5543 EXPECT_STREQ( | 5543 EXPECT_STREQ( |
| 5544 "Dart_LoadLibrary: library 'library1_url' has already been loaded.", | 5544 "Dart_LoadLibrary: library 'library1_url' has already been loaded.", |
| 5545 Dart_GetError(result)); | 5545 Dart_GetError(result)); |
| 5546 } | 5546 } |
| 5547 | 5547 |
| 5548 | 5548 |
| 5549 TEST_CASE(LoadLibrary_CompileError) { | 5549 TEST_CASE(LoadLibrary_CompileError) { |
| 5550 const char* kLibrary1Chars = | 5550 const char* kLibrary1Chars = |
| 5551 "#library('library1_name');" | 5551 "library library1_name;" |
| 5552 ")"; | 5552 ")"; |
| 5553 Dart_Handle url = NewString("library1_url"); | 5553 Dart_Handle url = NewString("library1_url"); |
| 5554 Dart_Handle source = NewString(kLibrary1Chars); | 5554 Dart_Handle source = NewString(kLibrary1Chars); |
| 5555 Dart_Handle result = Dart_LoadLibrary(url, source); | 5555 Dart_Handle result = Dart_LoadLibrary(url, source); |
| 5556 EXPECT(Dart_IsError(result)); | 5556 EXPECT(Dart_IsError(result)); |
| 5557 EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); | 5557 EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); |
| 5558 } | 5558 } |
| 5559 | 5559 |
| 5560 | 5560 |
| 5561 TEST_CASE(LoadSource) { | 5561 TEST_CASE(LoadSource) { |
| 5562 const char* kLibrary1Chars = | 5562 const char* kLibrary1Chars = |
| 5563 "#library('library1_name');"; | 5563 "library library1_name;"; |
| 5564 const char* kSourceChars = | 5564 const char* kSourceChars = |
| 5565 "// Something innocuous"; | 5565 "// Something innocuous"; |
| 5566 const char* kBadSourceChars = | 5566 const char* kBadSourceChars = |
| 5567 ")"; | 5567 ")"; |
| 5568 Dart_Handle error = Dart_Error("incoming error"); | 5568 Dart_Handle error = Dart_Error("incoming error"); |
| 5569 Dart_Handle result; | 5569 Dart_Handle result; |
| 5570 | 5570 |
| 5571 // Load up a library. | 5571 // Load up a library. |
| 5572 Dart_Handle url = NewString("library1_url"); | 5572 Dart_Handle url = NewString("library1_url"); |
| 5573 Dart_Handle source = NewString(kLibrary1Chars); | 5573 Dart_Handle source = NewString(kLibrary1Chars); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5636 | 5636 |
| 5637 // Language errors are detected. | 5637 // Language errors are detected. |
| 5638 source = NewString(kBadSourceChars); | 5638 source = NewString(kBadSourceChars); |
| 5639 result = Dart_LoadSource(lib, url, source); | 5639 result = Dart_LoadSource(lib, url, source); |
| 5640 EXPECT(Dart_IsError(result)); | 5640 EXPECT(Dart_IsError(result)); |
| 5641 } | 5641 } |
| 5642 | 5642 |
| 5643 | 5643 |
| 5644 TEST_CASE(LoadSource_LateLoad) { | 5644 TEST_CASE(LoadSource_LateLoad) { |
| 5645 const char* kLibrary1Chars = | 5645 const char* kLibrary1Chars = |
| 5646 "#library('library1_name');\n" | 5646 "library library1_name;\n" |
| 5647 "class OldClass {\n" | 5647 "class OldClass {\n" |
| 5648 " foo() => 'foo';\n" | 5648 " foo() => 'foo';\n" |
| 5649 "}\n"; | 5649 "}\n"; |
| 5650 const char* kSourceChars = | 5650 const char* kSourceChars = |
| 5651 "class NewClass extends OldClass{\n" | 5651 "class NewClass extends OldClass{\n" |
| 5652 " bar() => 'bar';\n" | 5652 " bar() => 'bar';\n" |
| 5653 "}\n"; | 5653 "}\n"; |
| 5654 Dart_Handle url = NewString("library1_url"); | 5654 Dart_Handle url = NewString("library1_url"); |
| 5655 Dart_Handle source = NewString(kLibrary1Chars); | 5655 Dart_Handle source = NewString(kLibrary1Chars); |
| 5656 Dart_Handle lib = Dart_LoadLibrary(url, source); | 5656 Dart_Handle lib = Dart_LoadLibrary(url, source); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5681 EXPECT_VALID(result); | 5681 EXPECT_VALID(result); |
| 5682 EXPECT(Dart_IsString(result)); | 5682 EXPECT(Dart_IsString(result)); |
| 5683 result_cstr = ""; | 5683 result_cstr = ""; |
| 5684 EXPECT_VALID(Dart_StringToCString(result, &result_cstr)); | 5684 EXPECT_VALID(Dart_StringToCString(result, &result_cstr)); |
| 5685 EXPECT_STREQ("bar", result_cstr); | 5685 EXPECT_STREQ("bar", result_cstr); |
| 5686 } | 5686 } |
| 5687 | 5687 |
| 5688 | 5688 |
| 5689 TEST_CASE(LoadPatch) { | 5689 TEST_CASE(LoadPatch) { |
| 5690 const char* kLibrary1Chars = | 5690 const char* kLibrary1Chars = |
| 5691 "#library('library1_name');"; | 5691 "library library1_name;"; |
| 5692 const char* kSourceChars = | 5692 const char* kSourceChars = |
| 5693 "external int foo();"; | 5693 "external int foo();"; |
| 5694 const char* kPatchChars = | 5694 const char* kPatchChars = |
| 5695 "patch int foo() => 42;"; | 5695 "patch int foo() => 42;"; |
| 5696 | 5696 |
| 5697 // Load up a library. | 5697 // Load up a library. |
| 5698 Dart_Handle url = NewString("library1_url"); | 5698 Dart_Handle url = NewString("library1_url"); |
| 5699 Dart_Handle source = NewString(kLibrary1Chars); | 5699 Dart_Handle source = NewString(kLibrary1Chars); |
| 5700 Dart_Handle lib = Dart_LoadLibrary(url, source); | 5700 Dart_Handle lib = Dart_LoadLibrary(url, source); |
| 5701 EXPECT_VALID(lib); | 5701 EXPECT_VALID(lib); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 5730 | 5730 |
| 5731 | 5731 |
| 5732 static Dart_NativeFunction PatchNativeResolver(Dart_Handle name, | 5732 static Dart_NativeFunction PatchNativeResolver(Dart_Handle name, |
| 5733 int arg_count) { | 5733 int arg_count) { |
| 5734 return &PatchNativeFunction; | 5734 return &PatchNativeFunction; |
| 5735 } | 5735 } |
| 5736 | 5736 |
| 5737 | 5737 |
| 5738 TEST_CASE(ParsePatchLibrary) { | 5738 TEST_CASE(ParsePatchLibrary) { |
| 5739 const char* kLibraryChars = | 5739 const char* kLibraryChars = |
| 5740 "#library('patched_library');\n" | 5740 "library patched_library;\n" |
| 5741 "class A {\n" | 5741 "class A {\n" |
| 5742 " final fvalue;\n" | 5742 " final fvalue;\n" |
| 5743 " var _f;\n" | 5743 " var _f;\n" |
| 5744 " callFunc(x, y) => x(y);\n" | 5744 " callFunc(x, y) => x(y);\n" |
| 5745 " external method(var value);\n" | 5745 " external method(var value);\n" |
| 5746 " get field => _field;\n" | 5746 " get field => _field;\n" |
| 5747 "}\n" | 5747 "}\n" |
| 5748 "class B {\n" | 5748 "class B {\n" |
| 5749 " var val;\n" | 5749 " var val;\n" |
| 5750 " external B.named(x);\n" | 5750 " external B.named(x);\n" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 5772 " /*patch*/ factory B(v) native \"const_B_factory\";\n" | 5772 " /*patch*/ factory B(v) native \"const_B_factory\";\n" |
| 5773 "}\n" | 5773 "}\n" |
| 5774 "var _topLevelValue = -1;\n" | 5774 "var _topLevelValue = -1;\n" |
| 5775 "patch int topLevel(var value) => value * value;\n" | 5775 "patch int topLevel(var value) => value * value;\n" |
| 5776 "patch int set topLevelSetter(value) { _topLevelValue = value; }\n" | 5776 "patch int set topLevelSetter(value) { _topLevelValue = value; }\n" |
| 5777 "patch int get topLevelGetter => 2 * _topLevelValue;\n" | 5777 "patch int get topLevelGetter => 2 * _topLevelValue;\n" |
| 5778 // Allow top level methods named patch. | 5778 // Allow top level methods named patch. |
| 5779 "patch(x) => x*3;\n"; | 5779 "patch(x) => x*3;\n"; |
| 5780 | 5780 |
| 5781 const char* kScriptChars = | 5781 const char* kScriptChars = |
| 5782 "#import('theLibrary');\n" | 5782 "import 'theLibrary';\n" |
| 5783 "e1() => unpatched();\n" | 5783 "e1() => unpatched();\n" |
| 5784 "m1() => topLevel(2);\n" | 5784 "m1() => topLevel(2);\n" |
| 5785 "m2() {\n" | 5785 "m2() {\n" |
| 5786 " topLevelSetter = 20;\n" | 5786 " topLevelSetter = 20;\n" |
| 5787 " return topLevelGetter;\n" | 5787 " return topLevelGetter;\n" |
| 5788 "}\n" | 5788 "}\n" |
| 5789 "m3() => patch(7);\n" | 5789 "m3() => patch(7);\n" |
| 5790 "m4() {\n" | 5790 "m4() {\n" |
| 5791 " var a = new A();\n" | 5791 " var a = new A();\n" |
| 5792 " a.method(5);\n" | 5792 " a.method(5);\n" |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5975 | 5975 |
| 5976 EXPECT_ERROR(Dart_Invoke(cls, NewString("baz"), 0, NULL), | 5976 EXPECT_ERROR(Dart_Invoke(cls, NewString("baz"), 0, NULL), |
| 5977 "native function 'SomeNativeFunction3' cannot be found"); | 5977 "native function 'SomeNativeFunction3' cannot be found"); |
| 5978 } | 5978 } |
| 5979 | 5979 |
| 5980 | 5980 |
| 5981 // Test that an imported name does not clash with the same name defined | 5981 // Test that an imported name does not clash with the same name defined |
| 5982 // in the importing library. | 5982 // in the importing library. |
| 5983 TEST_CASE(ImportLibrary2) { | 5983 TEST_CASE(ImportLibrary2) { |
| 5984 const char* kScriptChars = | 5984 const char* kScriptChars = |
| 5985 "#import('library1.dart');\n" | 5985 "import 'library1_dart';\n" |
| 5986 "var foo;\n" | 5986 "var foo;\n" |
| 5987 "main() { foo = 0; }\n"; | 5987 "main() { foo = 0; }\n"; |
| 5988 const char* kLibrary1Chars = | 5988 const char* kLibrary1Chars = |
| 5989 "#library('library1.dart');\n" | 5989 "library library1_dart;\n" |
| 5990 "#import('library2.dart');\n" | 5990 "import 'library2_dart';\n" |
| 5991 "var foo;\n"; | 5991 "var foo;\n"; |
| 5992 const char* kLibrary2Chars = | 5992 const char* kLibrary2Chars = |
| 5993 "#library('library2.dart');\n" | 5993 "library library2_dart;\n" |
| 5994 "#import('library1.dart');\n" | 5994 "import 'library1_dart';\n" |
| 5995 "var foo;\n"; | 5995 "var foo;\n"; |
| 5996 Dart_Handle result; | 5996 Dart_Handle result; |
| 5997 // Create a test library and Load up a test script in it. | 5997 // Create a test library and Load up a test script in it. |
| 5998 Dart_Handle url = NewString(TestCase::url()); | 5998 Dart_Handle url = NewString(TestCase::url()); |
| 5999 Dart_Handle source = NewString(kScriptChars); | 5999 Dart_Handle source = NewString(kScriptChars); |
| 6000 result = Dart_SetLibraryTagHandler(library_handler); | 6000 result = Dart_SetLibraryTagHandler(library_handler); |
| 6001 EXPECT_VALID(result); | 6001 EXPECT_VALID(result); |
| 6002 result = Dart_LoadScript(url, source); | 6002 result = Dart_LoadScript(url, source); |
| 6003 | 6003 |
| 6004 url = NewString("library1.dart"); | 6004 url = NewString("library1_dart"); |
| 6005 source = NewString(kLibrary1Chars); | 6005 source = NewString(kLibrary1Chars); |
| 6006 Dart_LoadLibrary(url, source); | 6006 Dart_LoadLibrary(url, source); |
| 6007 | 6007 |
| 6008 url = NewString("library2.dart"); | 6008 url = NewString("library2_dart"); |
| 6009 source = NewString(kLibrary2Chars); | 6009 source = NewString(kLibrary2Chars); |
| 6010 Dart_LoadLibrary(url, source); | 6010 Dart_LoadLibrary(url, source); |
| 6011 | 6011 |
| 6012 result = Dart_Invoke(result, NewString("main"), 0, NULL); | 6012 result = Dart_Invoke(result, NewString("main"), 0, NULL); |
| 6013 EXPECT_VALID(result); | 6013 EXPECT_VALID(result); |
| 6014 } | 6014 } |
| 6015 | 6015 |
| 6016 | 6016 |
| 6017 // Test that if the same name is imported from two libraries, it is | 6017 // Test that if the same name is imported from two libraries, it is |
| 6018 // an error if that name is referenced. | 6018 // an error if that name is referenced. |
| 6019 TEST_CASE(ImportLibrary3) { | 6019 TEST_CASE(ImportLibrary3) { |
| 6020 const char* kScriptChars = | 6020 const char* kScriptChars = |
| 6021 "#import('library2.dart');\n" | 6021 "import 'library2_dart';\n" |
| 6022 "#import('library1.dart');\n" | 6022 "import 'library1_dart';\n" |
| 6023 "var foo_top = 10; // foo has dup def. So should be an error.\n" | 6023 "var foo_top = 10; // foo has dup def. So should be an error.\n" |
| 6024 "main() { foo = 0; }\n"; | 6024 "main() { foo = 0; }\n"; |
| 6025 const char* kLibrary1Chars = | 6025 const char* kLibrary1Chars = |
| 6026 "#library('library1.dart');\n" | 6026 "library library1_dart;\n" |
| 6027 "var foo;"; | 6027 "var foo;"; |
| 6028 const char* kLibrary2Chars = | 6028 const char* kLibrary2Chars = |
| 6029 "#library('library2.dart');\n" | 6029 "library library2_dart;\n" |
| 6030 "var foo;"; | 6030 "var foo;"; |
| 6031 Dart_Handle result; | 6031 Dart_Handle result; |
| 6032 | 6032 |
| 6033 // Create a test library and Load up a test script in it. | 6033 // Create a test library and Load up a test script in it. |
| 6034 Dart_Handle url = NewString(TestCase::url()); | 6034 Dart_Handle url = NewString(TestCase::url()); |
| 6035 Dart_Handle source = NewString(kScriptChars); | 6035 Dart_Handle source = NewString(kScriptChars); |
| 6036 result = Dart_SetLibraryTagHandler(library_handler); | 6036 result = Dart_SetLibraryTagHandler(library_handler); |
| 6037 EXPECT_VALID(result); | 6037 EXPECT_VALID(result); |
| 6038 result = Dart_LoadScript(url, source); | 6038 result = Dart_LoadScript(url, source); |
| 6039 EXPECT_VALID(result); | 6039 EXPECT_VALID(result); |
| 6040 | 6040 |
| 6041 url = NewString("library2.dart"); | 6041 url = NewString("library2_dart"); |
| 6042 source = NewString(kLibrary2Chars); | 6042 source = NewString(kLibrary2Chars); |
| 6043 Dart_LoadLibrary(url, source); | 6043 Dart_LoadLibrary(url, source); |
| 6044 | 6044 |
| 6045 url = NewString("library1.dart"); | 6045 url = NewString("library1_dart"); |
| 6046 source = NewString(kLibrary1Chars); | 6046 source = NewString(kLibrary1Chars); |
| 6047 Dart_LoadLibrary(url, source); | 6047 Dart_LoadLibrary(url, source); |
| 6048 | 6048 |
| 6049 result = Dart_Invoke(result, NewString("main"), 0, NULL); | 6049 result = Dart_Invoke(result, NewString("main"), 0, NULL); |
| 6050 EXPECT(Dart_IsError(result)); | 6050 EXPECT(Dart_IsError(result)); |
| 6051 EXPECT_SUBSTRING("ambiguous reference: 'foo'", Dart_GetError(result)); | 6051 EXPECT_SUBSTRING("ambiguous reference: 'foo'", Dart_GetError(result)); |
| 6052 } | 6052 } |
| 6053 | 6053 |
| 6054 | 6054 |
| 6055 // Test that if the same name is imported from two libraries, it is | 6055 // Test that if the same name is imported from two libraries, it is |
| 6056 // not an error if that name is not used. | 6056 // not an error if that name is not used. |
| 6057 TEST_CASE(ImportLibrary4) { | 6057 TEST_CASE(ImportLibrary4) { |
| 6058 const char* kScriptChars = | 6058 const char* kScriptChars = |
| 6059 "#import('library2.dart');\n" | 6059 "import 'library2_dart';\n" |
| 6060 "#import('library1.dart');\n" | 6060 "import 'library1_dart';\n" |
| 6061 "main() { }\n"; | 6061 "main() { }\n"; |
| 6062 const char* kLibrary1Chars = | 6062 const char* kLibrary1Chars = |
| 6063 "#library('library1.dart');\n" | 6063 "library library1_dart;\n" |
| 6064 "var foo;"; | 6064 "var foo;"; |
| 6065 const char* kLibrary2Chars = | 6065 const char* kLibrary2Chars = |
| 6066 "#library('library2.dart');\n" | 6066 "library library2_dart;\n" |
| 6067 "var foo;"; | 6067 "var foo;"; |
| 6068 Dart_Handle result; | 6068 Dart_Handle result; |
| 6069 | 6069 |
| 6070 // Create a test library and Load up a test script in it. | 6070 // Create a test library and Load up a test script in it. |
| 6071 Dart_Handle url = NewString(TestCase::url()); | 6071 Dart_Handle url = NewString(TestCase::url()); |
| 6072 Dart_Handle source = NewString(kScriptChars); | 6072 Dart_Handle source = NewString(kScriptChars); |
| 6073 result = Dart_SetLibraryTagHandler(library_handler); | 6073 result = Dart_SetLibraryTagHandler(library_handler); |
| 6074 EXPECT_VALID(result); | 6074 EXPECT_VALID(result); |
| 6075 result = Dart_LoadScript(url, source); | 6075 result = Dart_LoadScript(url, source); |
| 6076 EXPECT_VALID(result); | 6076 EXPECT_VALID(result); |
| 6077 | 6077 |
| 6078 url = NewString("library2.dart"); | 6078 url = NewString("library2_dart"); |
| 6079 source = NewString(kLibrary2Chars); | 6079 source = NewString(kLibrary2Chars); |
| 6080 Dart_LoadLibrary(url, source); | 6080 Dart_LoadLibrary(url, source); |
| 6081 | 6081 |
| 6082 url = NewString("library1.dart"); | 6082 url = NewString("library1_dart"); |
| 6083 source = NewString(kLibrary1Chars); | 6083 source = NewString(kLibrary1Chars); |
| 6084 Dart_LoadLibrary(url, source); | 6084 Dart_LoadLibrary(url, source); |
| 6085 | 6085 |
| 6086 result = Dart_Invoke(result, NewString("main"), 0, NULL); | 6086 result = Dart_Invoke(result, NewString("main"), 0, NULL); |
| 6087 EXPECT_VALID(result); | 6087 EXPECT_VALID(result); |
| 6088 } | 6088 } |
| 6089 | 6089 |
| 6090 | 6090 |
| 6091 TEST_CASE(ImportLibrary5) { | 6091 TEST_CASE(ImportLibrary5) { |
| 6092 const char* kScriptChars = | 6092 const char* kScriptChars = |
| 6093 "#import('lib.dart');\n" | 6093 "import 'lib.dart';\n" |
| 6094 "interface Y {\n" | 6094 "interface Y {\n" |
| 6095 " void set handler(void callback(List<int> x));\n" | 6095 " void set handler(void callback(List<int> x));\n" |
| 6096 "}\n" | 6096 "}\n" |
| 6097 "void main() {}\n"; | 6097 "void main() {}\n"; |
| 6098 const char* kLibraryChars = | 6098 const char* kLibraryChars = |
| 6099 "#library('lib.dart');\n" | 6099 "library lib.dart;\n" |
| 6100 "interface X {\n" | 6100 "interface X {\n" |
| 6101 " void set handler(void callback(List<int> x));\n" | 6101 " void set handler(void callback(List<int> x));\n" |
| 6102 "}\n"; | 6102 "}\n"; |
| 6103 Dart_Handle result; | 6103 Dart_Handle result; |
| 6104 | 6104 |
| 6105 // Create a test library and Load up a test script in it. | 6105 // Create a test library and Load up a test script in it. |
| 6106 Dart_Handle url = NewString(TestCase::url()); | 6106 Dart_Handle url = NewString(TestCase::url()); |
| 6107 Dart_Handle source = NewString(kScriptChars); | 6107 Dart_Handle source = NewString(kScriptChars); |
| 6108 result = Dart_SetLibraryTagHandler(library_handler); | 6108 result = Dart_SetLibraryTagHandler(library_handler); |
| 6109 EXPECT_VALID(result); | 6109 EXPECT_VALID(result); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6154 // Create a port with a bogus handler. | 6154 // Create a port with a bogus handler. |
| 6155 Dart_Port error_port = Dart_NewNativePort("Foo", NULL, true); | 6155 Dart_Port error_port = Dart_NewNativePort("Foo", NULL, true); |
| 6156 EXPECT_EQ(ILLEGAL_PORT, error_port); | 6156 EXPECT_EQ(ILLEGAL_PORT, error_port); |
| 6157 | 6157 |
| 6158 // Create the port w/o a current isolate, just to make sure that works. | 6158 // Create the port w/o a current isolate, just to make sure that works. |
| 6159 Dart_Port port_id1 = | 6159 Dart_Port port_id1 = |
| 6160 Dart_NewNativePort("Port123", NewNativePort_send123, true); | 6160 Dart_NewNativePort("Port123", NewNativePort_send123, true); |
| 6161 | 6161 |
| 6162 TestIsolateScope __test_isolate__; | 6162 TestIsolateScope __test_isolate__; |
| 6163 const char* kScriptChars = | 6163 const char* kScriptChars = |
| 6164 "#import('dart:isolate');\n" | 6164 "import 'dart:isolate';\n" |
| 6165 "void callPort(SendPort port) {\n" | 6165 "void callPort(SendPort port) {\n" |
| 6166 " port.call(null).then((message) {\n" | 6166 " port.call(null).then((message) {\n" |
| 6167 " throw new Exception(message);\n" | 6167 " throw new Exception(message);\n" |
| 6168 " });\n" | 6168 " });\n" |
| 6169 "}\n"; | 6169 "}\n"; |
| 6170 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 6170 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| 6171 Dart_EnterScope(); | 6171 Dart_EnterScope(); |
| 6172 | 6172 |
| 6173 // Create a port w/ a current isolate, to make sure that works too. | 6173 // Create a port w/ a current isolate, to make sure that works too. |
| 6174 Dart_Port port_id2 = | 6174 Dart_Port port_id2 = |
| (...skipping 30 matching lines...) Expand all Loading... |
| 6205 EXPECT(Dart_CloseNativePort(port_id1)); | 6205 EXPECT(Dart_CloseNativePort(port_id1)); |
| 6206 EXPECT(Dart_CloseNativePort(port_id2)); | 6206 EXPECT(Dart_CloseNativePort(port_id2)); |
| 6207 } | 6207 } |
| 6208 | 6208 |
| 6209 | 6209 |
| 6210 static bool RunLoopTestCallback(const char* script_name, | 6210 static bool RunLoopTestCallback(const char* script_name, |
| 6211 const char* main, | 6211 const char* main, |
| 6212 void* data, | 6212 void* data, |
| 6213 char** error) { | 6213 char** error) { |
| 6214 const char* kScriptChars = | 6214 const char* kScriptChars = |
| 6215 "#import('builtin');\n" | 6215 "import 'builtin';\n" |
| 6216 "#import('dart:isolate');\n" | 6216 "import 'dart:isolate';\n" |
| 6217 "void entry() {\n" | 6217 "void entry() {\n" |
| 6218 " port.receive((message, replyTo) {\n" | 6218 " port.receive((message, replyTo) {\n" |
| 6219 " if (message) {\n" | 6219 " if (message) {\n" |
| 6220 " throw new Exception('MakeChildExit');\n" | 6220 " throw new Exception('MakeChildExit');\n" |
| 6221 " } else {\n" | 6221 " } else {\n" |
| 6222 " replyTo.call('hello');\n" | 6222 " replyTo.call('hello');\n" |
| 6223 " port.close();\n" | 6223 " port.close();\n" |
| 6224 " }\n" | 6224 " }\n" |
| 6225 " });\n" | 6225 " });\n" |
| 6226 "}\n" | 6226 "}\n" |
| (...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7195 EXPECT(o2 == reinterpret_cast<void*>(&p2)); | 7195 EXPECT(o2 == reinterpret_cast<void*>(&p2)); |
| 7196 } | 7196 } |
| 7197 Dart_ExitScope(); | 7197 Dart_ExitScope(); |
| 7198 isolate->heap()->CollectGarbage(Heap::kOld); | 7198 isolate->heap()->CollectGarbage(Heap::kOld); |
| 7199 EXPECT_EQ(0, isolate->heap()->PeerCount()); | 7199 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7200 } | 7200 } |
| 7201 | 7201 |
| 7202 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 7202 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 7203 | 7203 |
| 7204 } // namespace dart | 7204 } // namespace dart |
| OLD | NEW |