| 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 5463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5474 EXPECT_STREQ("bar", result_cstr); | 5474 EXPECT_STREQ("bar", result_cstr); |
| 5475 } | 5475 } |
| 5476 | 5476 |
| 5477 | 5477 |
| 5478 TEST_CASE(ParsePatchLibrary) { | 5478 TEST_CASE(ParsePatchLibrary) { |
| 5479 const char* kLibraryChars = | 5479 const char* kLibraryChars = |
| 5480 "#library('patched_library');\n" | 5480 "#library('patched_library');\n" |
| 5481 "class A {\n" | 5481 "class A {\n" |
| 5482 " var _f;\n" | 5482 " var _f;\n" |
| 5483 " external method(var value);\n" | 5483 " external method(var value);\n" |
| 5484 " get field() => _field;\n" |
| 5484 "}\n" | 5485 "}\n" |
| 5485 "external int unpatched();\n" | 5486 "external int unpatched();\n" |
| 5486 "external int topLevel(var value);\n" | 5487 "external int topLevel(var value);\n" |
| 5487 "external int get topLevelGetter();\n" | 5488 "external int get topLevelGetter();\n" |
| 5488 "external void set topLevelSetter(int value);\n"; | 5489 "external void set topLevelSetter(int value);\n"; |
| 5489 | 5490 |
| 5490 const char* kPatchChars = | 5491 const char* kPatchChars = |
| 5491 "var _topLevelValue = -1;" | 5492 "patch class A {\n" |
| 5493 " var _g;\n" |
| 5494 " get _field() => _g;\n" |
| 5495 " patch method(var value) {\n" |
| 5496 " _g = value * 5;\n" |
| 5497 " }\n" |
| 5498 "}\n" |
| 5499 "var _topLevelValue = -1;\n" |
| 5492 "patch int topLevel(var value) => value * value;\n" | 5500 "patch int topLevel(var value) => value * value;\n" |
| 5493 "patch int set topLevelSetter(value) { _topLevelValue = value; }\n" | 5501 "patch int set topLevelSetter(value) { _topLevelValue = value; }\n" |
| 5494 "patch int get topLevelGetter() => 2 * _topLevelValue;\n" | 5502 "patch int get topLevelGetter() => 2 * _topLevelValue;\n" |
| 5495 // Allow top level methods named patch. | 5503 // Allow top level methods named patch. |
| 5496 "patch(x) => x*3;\n"; | 5504 "patch(x) => x*3;\n"; |
| 5497 | 5505 |
| 5498 const char* kScriptChars = | 5506 const char* kScriptChars = |
| 5499 "#import('theLibrary');\n" | 5507 "#import('theLibrary');\n" |
| 5500 "e1() => unpatched();\n" | 5508 "e1() => unpatched();\n" |
| 5501 "m1() => topLevel(2);\n" | 5509 "m1() => topLevel(2);\n" |
| 5502 "m2() {\n" | 5510 "m2() {\n" |
| 5503 " topLevelSetter = 20;\n" | 5511 " topLevelSetter = 20;\n" |
| 5504 " return topLevelGetter;\n" | 5512 " return topLevelGetter;\n" |
| 5505 "}\n" | 5513 "}\n" |
| 5506 "m3() => patch(7);\n"; | 5514 "m3() => patch(7);\n" |
| 5515 "m4() {\n" |
| 5516 " var a = new A();\n" |
| 5517 " a.method(5);\n" |
| 5518 " return a.field;\n" |
| 5519 "}\n"; |
| 5507 | 5520 |
| 5508 Dart_Handle result = Dart_SetLibraryTagHandler(library_handler); | 5521 Dart_Handle result = Dart_SetLibraryTagHandler(library_handler); |
| 5509 EXPECT_VALID(result); | 5522 EXPECT_VALID(result); |
| 5510 | 5523 |
| 5511 Dart_Handle url = Dart_NewString("theLibrary"); | 5524 Dart_Handle url = Dart_NewString("theLibrary"); |
| 5512 Dart_Handle source = Dart_NewString(kLibraryChars); | 5525 Dart_Handle source = Dart_NewString(kLibraryChars); |
| 5513 result = Dart_LoadLibrary(url, source); | 5526 result = Dart_LoadLibrary(url, source); |
| 5514 EXPECT_VALID(result); | 5527 EXPECT_VALID(result); |
| 5515 | 5528 |
| 5516 const String& patch_url = String::Handle(String::New("theLibrary patch")); | 5529 const String& patch_url = String::Handle(String::New("theLibrary patch")); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 5547 EXPECT(Dart_IsInteger(result)); | 5560 EXPECT(Dart_IsInteger(result)); |
| 5548 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); | 5561 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); |
| 5549 EXPECT_EQ(40, value); | 5562 EXPECT_EQ(40, value); |
| 5550 | 5563 |
| 5551 value = 0; | 5564 value = 0; |
| 5552 result = Dart_Invoke(test_script, Dart_NewString("m3"), 0, NULL); | 5565 result = Dart_Invoke(test_script, Dart_NewString("m3"), 0, NULL); |
| 5553 EXPECT_VALID(result); | 5566 EXPECT_VALID(result); |
| 5554 EXPECT(Dart_IsInteger(result)); | 5567 EXPECT(Dart_IsInteger(result)); |
| 5555 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); | 5568 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); |
| 5556 EXPECT_EQ(21, value); | 5569 EXPECT_EQ(21, value); |
| 5570 |
| 5571 value = 0; |
| 5572 result = Dart_Invoke(test_script, Dart_NewString("m4"), 0, NULL); |
| 5573 EXPECT_VALID(result); |
| 5574 EXPECT(Dart_IsInteger(result)); |
| 5575 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); |
| 5576 EXPECT_EQ(25, value); |
| 5557 } | 5577 } |
| 5558 | 5578 |
| 5559 | 5579 |
| 5560 static void MyNativeFunction1(Dart_NativeArguments args) { | 5580 static void MyNativeFunction1(Dart_NativeArguments args) { |
| 5561 Dart_EnterScope(); | 5581 Dart_EnterScope(); |
| 5562 Dart_SetReturnValue(args, Dart_NewInteger(654321)); | 5582 Dart_SetReturnValue(args, Dart_NewInteger(654321)); |
| 5563 Dart_ExitScope(); | 5583 Dart_ExitScope(); |
| 5564 } | 5584 } |
| 5565 | 5585 |
| 5566 | 5586 |
| (...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6563 EXPECT(Dart_IsString(str)); | 6583 EXPECT(Dart_IsString(str)); |
| 6564 len = -1; | 6584 len = -1; |
| 6565 EXPECT_VALID(Dart_StringLength(str, &len)); | 6585 EXPECT_VALID(Dart_StringLength(str, &len)); |
| 6566 EXPECT_EQ(0, len); | 6586 EXPECT_EQ(0, len); |
| 6567 } | 6587 } |
| 6568 | 6588 |
| 6569 | 6589 |
| 6570 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 6590 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 6571 | 6591 |
| 6572 } // namespace dart | 6592 } // namespace dart |
| OLD | NEW |