| 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 2530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2541 "\n" | 2541 "\n" |
| 2542 " var instance_fld;\n" | 2542 " var instance_fld;\n" |
| 2543 " var _instance_fld;\n" | 2543 " var _instance_fld;\n" |
| 2544 " final final_instance_fld;\n" | 2544 " final final_instance_fld;\n" |
| 2545 " final _final_instance_fld;\n" | 2545 " final _final_instance_fld;\n" |
| 2546 " static var static_fld;\n" | 2546 " static var static_fld;\n" |
| 2547 " static var _static_fld;\n" | 2547 " static var _static_fld;\n" |
| 2548 " static const const_static_fld = 'const static';\n" | 2548 " static const const_static_fld = 'const static';\n" |
| 2549 " static const _const_static_fld = 'hidden const static';\n" | 2549 " static const _const_static_fld = 'hidden const static';\n" |
| 2550 "\n" | 2550 "\n" |
| 2551 " get instance_getset_fld() { return _gs_fld1; }\n" | 2551 " get instance_getset_fld { return _gs_fld1; }\n" |
| 2552 " void set instance_getset_fld(var value) { _gs_fld1 = value; }\n" | 2552 " void set instance_getset_fld(var value) { _gs_fld1 = value; }\n" |
| 2553 " get _instance_getset_fld() { return _gs_fld2; }\n" | 2553 " get _instance_getset_fld { return _gs_fld2; }\n" |
| 2554 " void set _instance_getset_fld(var value) { _gs_fld2 = value; }\n" | 2554 " void set _instance_getset_fld(var value) { _gs_fld2 = value; }\n" |
| 2555 " var _gs_fld1;\n" | 2555 " var _gs_fld1;\n" |
| 2556 " var _gs_fld2;\n" | 2556 " var _gs_fld2;\n" |
| 2557 "\n" | 2557 "\n" |
| 2558 " static get static_getset_fld() { return _gs_fld3; }\n" | 2558 " static get static_getset_fld { return _gs_fld3; }\n" |
| 2559 " static void set static_getset_fld(var value) { _gs_fld3 = value; }\n" | 2559 " static void set static_getset_fld(var value) { _gs_fld3 = value; }\n" |
| 2560 " static get _static_getset_fld() { return _gs_fld4; }\n" | 2560 " static get _static_getset_fld { return _gs_fld4; }\n" |
| 2561 " static void set _static_getset_fld(var value) { _gs_fld4 = value; }\n" | 2561 " static void set _static_getset_fld(var value) { _gs_fld4 = value; }\n" |
| 2562 " static var _gs_fld3;\n" | 2562 " static var _gs_fld3;\n" |
| 2563 " static var _gs_fld4;\n" | 2563 " static var _gs_fld4;\n" |
| 2564 "}\n" | 2564 "}\n" |
| 2565 "var top_fld;\n" | 2565 "var top_fld;\n" |
| 2566 "var _top_fld;\n" | 2566 "var _top_fld;\n" |
| 2567 "const const_top_fld = 'const top';\n" | 2567 "const const_top_fld = 'const top';\n" |
| 2568 "const _const_top_fld = 'hidden const top';\n" | 2568 "const _const_top_fld = 'hidden const top';\n" |
| 2569 "\n" | 2569 "\n" |
| 2570 "get top_getset_fld() { return _gs_fld5; }\n" | 2570 "get top_getset_fld { return _gs_fld5; }\n" |
| 2571 "void set top_getset_fld(var value) { _gs_fld5 = value; }\n" | 2571 "void set top_getset_fld(var value) { _gs_fld5 = value; }\n" |
| 2572 "get _top_getset_fld() { return _gs_fld6; }\n" | 2572 "get _top_getset_fld { return _gs_fld6; }\n" |
| 2573 "void set _top_getset_fld(var value) { _gs_fld6 = value; }\n" | 2573 "void set _top_getset_fld(var value) { _gs_fld6 = value; }\n" |
| 2574 "var _gs_fld5;\n" | 2574 "var _gs_fld5;\n" |
| 2575 "var _gs_fld6;\n" | 2575 "var _gs_fld6;\n" |
| 2576 "\n" | 2576 "\n" |
| 2577 "Fields test() {\n" | 2577 "Fields test() {\n" |
| 2578 " Fields.Init();\n" | 2578 " Fields.Init();\n" |
| 2579 " top_fld = 'top';\n" | 2579 " top_fld = 'top';\n" |
| 2580 " _top_fld = 'hidden top';\n" | 2580 " _top_fld = 'hidden top';\n" |
| 2581 " top_getset_fld = 'top getset';\n" | 2581 " top_getset_fld = 'top getset';\n" |
| 2582 " _top_getset_fld = 'hidden top getset';\n" | 2582 " _top_getset_fld = 'hidden top getset';\n" |
| 2583 " return new Fields();\n" | 2583 " return new Fields();\n" |
| 2584 "}\n"; | 2584 "}\n"; |
| 2585 const char* kImportedScriptChars = | 2585 const char* kImportedScriptChars = |
| 2586 "#library('library_name');\n" | 2586 "#library('library_name');\n" |
| 2587 "var imported_fld = 'imported';\n" | 2587 "var imported_fld = 'imported';\n" |
| 2588 "var _imported_fld = 'hidden imported';\n" | 2588 "var _imported_fld = 'hidden imported';\n" |
| 2589 "get imported_getset_fld() { return _gs_fld1; }\n" | 2589 "get imported_getset_fld { return _gs_fld1; }\n" |
| 2590 "void set imported_getset_fld(var value) { _gs_fld1 = value; }\n" | 2590 "void set imported_getset_fld(var value) { _gs_fld1 = value; }\n" |
| 2591 "get _imported_getset_fld() { return _gs_fld2; }\n" | 2591 "get _imported_getset_fld { return _gs_fld2; }\n" |
| 2592 "void set _imported_getset_fld(var value) { _gs_fld2 = value; }\n" | 2592 "void set _imported_getset_fld(var value) { _gs_fld2 = value; }\n" |
| 2593 "var _gs_fld1;\n" | 2593 "var _gs_fld1;\n" |
| 2594 "var _gs_fld2;\n" | 2594 "var _gs_fld2;\n" |
| 2595 "void test2() {\n" | 2595 "void test2() {\n" |
| 2596 " imported_getset_fld = 'imported getset';\n" | 2596 " imported_getset_fld = 'imported getset';\n" |
| 2597 " _imported_getset_fld = 'hidden imported getset';\n" | 2597 " _imported_getset_fld = 'hidden imported getset';\n" |
| 2598 "}\n"; | 2598 "}\n"; |
| 2599 | 2599 |
| 2600 // Shared setup. | 2600 // Shared setup. |
| 2601 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2601 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
| (...skipping 1529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4131 if (is_constructor) { | 4131 if (is_constructor) { |
| 4132 buffer->Printf(" constructor"); | 4132 buffer->Printf(" constructor"); |
| 4133 } | 4133 } |
| 4134 } | 4134 } |
| 4135 | 4135 |
| 4136 | 4136 |
| 4137 TEST_CASE(FunctionReflection) { | 4137 TEST_CASE(FunctionReflection) { |
| 4138 const char* kScriptChars = | 4138 const char* kScriptChars = |
| 4139 "a() => 'a';\n" | 4139 "a() => 'a';\n" |
| 4140 "_b() => '_b';\n" | 4140 "_b() => '_b';\n" |
| 4141 "get c() => 'bar';\n" | 4141 "get c => 'bar';\n" |
| 4142 "set d(x) {}\n" | 4142 "set d(x) {}\n" |
| 4143 "get _e() => 'bar';\n" | 4143 "get _e => 'bar';\n" |
| 4144 "set _f(x) {}\n" | 4144 "set _f(x) {}\n" |
| 4145 "class MyClass {\n" | 4145 "class MyClass {\n" |
| 4146 " MyClass() {}\n" | 4146 " MyClass() {}\n" |
| 4147 " MyClass.named() {}\n" | 4147 " MyClass.named() {}\n" |
| 4148 " a() => 'a';\n" | 4148 " a() => 'a';\n" |
| 4149 " _b() => '_b';\n" | 4149 " _b() => '_b';\n" |
| 4150 " get c() => 'bar';\n" | 4150 " get c => 'bar';\n" |
| 4151 " set d(x) {}\n" | 4151 " set d(x) {}\n" |
| 4152 " get _e() => 'bar';\n" | 4152 " get _e => 'bar';\n" |
| 4153 " set _f(x) {}\n" | 4153 " set _f(x) {}\n" |
| 4154 " static g() => 'g';\n" | 4154 " static g() => 'g';\n" |
| 4155 " static _h() => '_h';\n" | 4155 " static _h() => '_h';\n" |
| 4156 " static get i() => 'i';\n" | 4156 " static get i => 'i';\n" |
| 4157 " static set j(x) {}\n" | 4157 " static set j(x) {}\n" |
| 4158 " static get _k() => 'k';\n" | 4158 " static get _k => 'k';\n" |
| 4159 " static set _l(x) {}\n" | 4159 " static set _l(x) {}\n" |
| 4160 " abstract m();\n" | 4160 " abstract m();\n" |
| 4161 " abstract _n();\n" | 4161 " abstract _n();\n" |
| 4162 " abstract get o();\n" | 4162 " abstract get o;\n" |
| 4163 " abstract set p(x);\n" | 4163 " abstract set p(x);\n" |
| 4164 " abstract get _q();\n" | 4164 " abstract get _q;\n" |
| 4165 " abstract set _r(x);\n" | 4165 " abstract set _r(x);\n" |
| 4166 " s(x, [y, z]) {}\n" | 4166 " s(x, [y, z]) {}\n" |
| 4167 " t([x, y, z]) {}\n" | 4167 " t([x, y, z]) {}\n" |
| 4168 " operator ==(x) {}\n" | 4168 " operator ==(x) {}\n" |
| 4169 "}\n" | 4169 "}\n" |
| 4170 "class _PrivateClass {\n" | 4170 "class _PrivateClass {\n" |
| 4171 " _PrivateClass() {}\n" | 4171 " _PrivateClass() {}\n" |
| 4172 " _PrivateClass.named() {}\n" | 4172 " _PrivateClass.named() {}\n" |
| 4173 "}\n"; | 4173 "}\n"; |
| 4174 | 4174 |
| (...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5020 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); | 5020 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); |
| 5021 EXPECT_STREQ("[A, B, C, _A, _B, _C]", list_cstr); | 5021 EXPECT_STREQ("[A, B, C, _A, _B, _C]", list_cstr); |
| 5022 } | 5022 } |
| 5023 | 5023 |
| 5024 | 5024 |
| 5025 TEST_CASE(GetFunctionNames) { | 5025 TEST_CASE(GetFunctionNames) { |
| 5026 const char* kLibraryChars = | 5026 const char* kLibraryChars = |
| 5027 "#library('library_name');\n" | 5027 "#library('library_name');\n" |
| 5028 "\n" | 5028 "\n" |
| 5029 "void A() {}\n" | 5029 "void A() {}\n" |
| 5030 "get B() => 11;\n" | 5030 "get B => 11;\n" |
| 5031 "set C(x) { }\n" | 5031 "set C(x) { }\n" |
| 5032 "var D;\n" | 5032 "var D;\n" |
| 5033 "void _A() {}\n" | 5033 "void _A() {}\n" |
| 5034 "get _B() => 11;\n" | 5034 "get _B => 11;\n" |
| 5035 "set _C(x) { }\n" | 5035 "set _C(x) { }\n" |
| 5036 "var _D;\n" | 5036 "var _D;\n" |
| 5037 "\n" | 5037 "\n" |
| 5038 "class MyClass {\n" | 5038 "class MyClass {\n" |
| 5039 " void A2() {}\n" | 5039 " void A2() {}\n" |
| 5040 " get B2() => 11;\n" | 5040 " get B2 => 11;\n" |
| 5041 " set C2(x) { }\n" | 5041 " set C2(x) { }\n" |
| 5042 " var D2;\n" | 5042 " var D2;\n" |
| 5043 " void _A2() {}\n" | 5043 " void _A2() {}\n" |
| 5044 " get _B2() => 11;\n" | 5044 " get _B2 => 11;\n" |
| 5045 " set _C2(x) { }\n" | 5045 " set _C2(x) { }\n" |
| 5046 " var _D2;\n" | 5046 " var _D2;\n" |
| 5047 "}\n" | 5047 "}\n" |
| 5048 "\n" | 5048 "\n" |
| 5049 "_compare(String a, String b) => a.compareTo(b);\n" | 5049 "_compare(String a, String b) => a.compareTo(b);\n" |
| 5050 "sort(list) => list.sort(_compare);\n"; | 5050 "sort(list) => list.sort(_compare);\n"; |
| 5051 | 5051 |
| 5052 // Get the functions from a library. | 5052 // Get the functions from a library. |
| 5053 Dart_Handle url = Dart_NewString("library_url"); | 5053 Dart_Handle url = Dart_NewString("library_url"); |
| 5054 Dart_Handle source = Dart_NewString(kLibraryChars); | 5054 Dart_Handle source = Dart_NewString(kLibraryChars); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5090 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); | 5090 EXPECT_VALID(Dart_StringToCString(list_string, &list_cstr)); |
| 5091 EXPECT_STREQ("[A2, B2, C2=, MyClass, _A2, _B2, _C2=]", list_cstr); | 5091 EXPECT_STREQ("[A2, B2, C2=, MyClass, _A2, _B2, _C2=]", list_cstr); |
| 5092 } | 5092 } |
| 5093 | 5093 |
| 5094 | 5094 |
| 5095 TEST_CASE(GetVariableNames) { | 5095 TEST_CASE(GetVariableNames) { |
| 5096 const char* kLibraryChars = | 5096 const char* kLibraryChars = |
| 5097 "#library('library_name');\n" | 5097 "#library('library_name');\n" |
| 5098 "\n" | 5098 "\n" |
| 5099 "var A;\n" | 5099 "var A;\n" |
| 5100 "get B() => 12;\n" | 5100 "get B => 12;\n" |
| 5101 "set C(x) { }\n" | 5101 "set C(x) { }\n" |
| 5102 "D(x) => (x + 1);\n" | 5102 "D(x) => (x + 1);\n" |
| 5103 "var _A;\n" | 5103 "var _A;\n" |
| 5104 "get _B() => 12;\n" | 5104 "get _B => 12;\n" |
| 5105 "set _C(x) { }\n" | 5105 "set _C(x) { }\n" |
| 5106 "_D(x) => (x + 1);\n" | 5106 "_D(x) => (x + 1);\n" |
| 5107 "\n" | 5107 "\n" |
| 5108 "class MyClass {\n" | 5108 "class MyClass {\n" |
| 5109 " var A2;\n" | 5109 " var A2;\n" |
| 5110 " var _A2;\n" | 5110 " var _A2;\n" |
| 5111 "}\n" | 5111 "}\n" |
| 5112 "\n" | 5112 "\n" |
| 5113 "_compare(String a, String b) => a.compareTo(b);\n" | 5113 "_compare(String a, String b) => a.compareTo(b);\n" |
| 5114 "sort(list) => list.sort(_compare);\n"; | 5114 "sort(list) => list.sort(_compare);\n"; |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5446 | 5446 |
| 5447 | 5447 |
| 5448 TEST_CASE(ParsePatchLibrary) { | 5448 TEST_CASE(ParsePatchLibrary) { |
| 5449 const char* kLibraryChars = | 5449 const char* kLibraryChars = |
| 5450 "#library('patched_library');\n" | 5450 "#library('patched_library');\n" |
| 5451 "class A {\n" | 5451 "class A {\n" |
| 5452 " final fvalue;\n" | 5452 " final fvalue;\n" |
| 5453 " var _f;\n" | 5453 " var _f;\n" |
| 5454 " callFunc(x, y) => x(y);\n" | 5454 " callFunc(x, y) => x(y);\n" |
| 5455 " external method(var value);\n" | 5455 " external method(var value);\n" |
| 5456 " get field() => _field;\n" | 5456 " get field => _field;\n" |
| 5457 "}\n" | 5457 "}\n" |
| 5458 "external int unpatched();\n" | 5458 "external int unpatched();\n" |
| 5459 "external int topLevel(var value);\n" | 5459 "external int topLevel(var value);\n" |
| 5460 "external int get topLevelGetter();\n" | 5460 "external int get topLevelGetter;\n" |
| 5461 "external void set topLevelSetter(int value);\n"; | 5461 "external void set topLevelSetter(int value);\n"; |
| 5462 | 5462 |
| 5463 const char* kPatchChars = | 5463 const char* kPatchChars = |
| 5464 "patch class A {\n" | 5464 "patch class A {\n" |
| 5465 " var _g;\n" | 5465 " var _g;\n" |
| 5466 " A() : fvalue = 13;\n" | 5466 " A() : fvalue = 13;\n" |
| 5467 " get _field() => _g;\n" | 5467 " get _field => _g;\n" |
| 5468 " patch method(var value) {\n" | 5468 " patch method(var value) {\n" |
| 5469 " int closeYourEyes(var eggs) { return eggs * -1; }\n" | 5469 " int closeYourEyes(var eggs) { return eggs * -1; }\n" |
| 5470 " value = callFunc(closeYourEyes, value);\n" | 5470 " value = callFunc(closeYourEyes, value);\n" |
| 5471 " _g = value * 5;\n" | 5471 " _g = value * 5;\n" |
| 5472 " }\n" | 5472 " }\n" |
| 5473 "}\n" | 5473 "}\n" |
| 5474 "var _topLevelValue = -1;\n" | 5474 "var _topLevelValue = -1;\n" |
| 5475 "patch int topLevel(var value) => value * value;\n" | 5475 "patch int topLevel(var value) => value * value;\n" |
| 5476 "patch int set topLevelSetter(value) { _topLevelValue = value; }\n" | 5476 "patch int set topLevelSetter(value) { _topLevelValue = value; }\n" |
| 5477 "patch int get topLevelGetter() => 2 * _topLevelValue;\n" | 5477 "patch int get topLevelGetter => 2 * _topLevelValue;\n" |
| 5478 // Allow top level methods named patch. | 5478 // Allow top level methods named patch. |
| 5479 "patch(x) => x*3;\n"; | 5479 "patch(x) => x*3;\n"; |
| 5480 | 5480 |
| 5481 const char* kScriptChars = | 5481 const char* kScriptChars = |
| 5482 "#import('theLibrary');\n" | 5482 "#import('theLibrary');\n" |
| 5483 "e1() => unpatched();\n" | 5483 "e1() => unpatched();\n" |
| 5484 "m1() => topLevel(2);\n" | 5484 "m1() => topLevel(2);\n" |
| 5485 "m2() {\n" | 5485 "m2() {\n" |
| 5486 " topLevelSetter = 20;\n" | 5486 " topLevelSetter = 20;\n" |
| 5487 " return topLevelGetter;\n" | 5487 " return topLevelGetter;\n" |
| (...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6492 EXPECT(Dart_IsString(str)); | 6492 EXPECT(Dart_IsString(str)); |
| 6493 len = -1; | 6493 len = -1; |
| 6494 EXPECT_VALID(Dart_StringLength(str, &len)); | 6494 EXPECT_VALID(Dart_StringLength(str, &len)); |
| 6495 EXPECT_EQ(0, len); | 6495 EXPECT_EQ(0, len); |
| 6496 } | 6496 } |
| 6497 | 6497 |
| 6498 | 6498 |
| 6499 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 6499 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 6500 | 6500 |
| 6501 } // namespace dart | 6501 } // namespace dart |
| OLD | NEW |