Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 /// This library defines runtime operations on objects used by the code | 5 /// This library defines runtime operations on objects used by the code |
| 6 /// generator. | 6 /// generator. |
| 7 part of dart._runtime; | 7 part of dart._runtime; |
| 8 | 8 |
| 9 _canonicalFieldName(obj, name, args, displayName) => JS('', '''(() => { | 9 _canonicalFieldName(obj, name, args, displayName) => JS('', '''(() => { |
| 10 $name = $canonicalMember($obj, $name); | 10 $name = $canonicalMember($obj, $name); |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 459 } | 459 } |
| 460 | 460 |
| 461 @JSExportName('toString') | 461 @JSExportName('toString') |
| 462 _toString(obj) { | 462 _toString(obj) { |
| 463 if (obj == null) return "null"; | 463 if (obj == null) return "null"; |
| 464 | 464 |
| 465 var extension = getExtensionType(obj); | 465 var extension = getExtensionType(obj); |
| 466 if (extension != null) { | 466 if (extension != null) { |
| 467 return JS('', '#[dartx.toString]()', obj); | 467 return JS('', '#[dartx.toString]()', obj); |
| 468 } | 468 } |
| 469 return JS('', '#.toString()', obj); | 469 return JS('', '#.toString()', obj); |
|
sra1
2016/05/17 23:47:58
It is faster to do:
JS('', '"" + #', obj);
JS en
Jennifer Messerly
2016/05/18 00:23:42
Done.
| |
| 470 } | 470 } |
| 471 | 471 |
| 472 // TODO(jmesserly): is the argument type verified statically? | 472 // TODO(jmesserly): is the argument type verified statically? |
| 473 noSuchMethod(obj, Invocation invocation) { | 473 noSuchMethod(obj, Invocation invocation) { |
| 474 if (obj == null) { | 474 if (obj == null) { |
| 475 throw new NoSuchMethodError( | 475 throw new NoSuchMethodError( |
| 476 null, | 476 null, |
| 477 invocation.memberName, | 477 invocation.memberName, |
| 478 invocation.positionalArguments, | 478 invocation.positionalArguments, |
| 479 invocation.namedArguments); | 479 invocation.namedArguments); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 492 if (result != null) return wrapType(result); | 492 if (result != null) return wrapType(result); |
| 493 | 493 |
| 494 // Delegate to the (possibly user-defined) method on the object. | 494 // Delegate to the (possibly user-defined) method on the object. |
| 495 var extension = getExtensionType(obj); | 495 var extension = getExtensionType(obj); |
| 496 if (extension != null) { | 496 if (extension != null) { |
| 497 return JS('', '#[dartx.runtimeType]', obj); | 497 return JS('', '#[dartx.runtimeType]', obj); |
| 498 } | 498 } |
| 499 return JS('', '#.runtimeType', obj); | 499 return JS('', '#.runtimeType', obj); |
| 500 } | 500 } |
| 501 | 501 |
| 502 /// Implements Dart's interpolated strings as ES2015 tagged template literals. | |
| 503 /// | |
| 504 /// For example: dart.str`hello ${name}` | |
| 505 String str(strings, @rest values) => JS('', '''(() => { | |
| 506 let s = $strings[0]; | |
| 507 for (let i = 0, len = $values.length; i < len; ) { | |
| 508 s += $_toString($values[i]) + $strings[++i]; | |
| 509 } | |
| 510 return s; | |
| 511 })()'''); | |
| 512 | |
| 513 | |
| 502 final JsIterator = JS('', ''' | 514 final JsIterator = JS('', ''' |
| 503 class JsIterator { | 515 class JsIterator { |
| 504 constructor(dartIterator) { | 516 constructor(dartIterator) { |
| 505 this.dartIterator = dartIterator; | 517 this.dartIterator = dartIterator; |
| 506 } | 518 } |
| 507 next() { | 519 next() { |
| 508 let i = this.dartIterator; | 520 let i = this.dartIterator; |
| 509 let done = !i.moveNext(); | 521 let done = !i.moveNext(); |
| 510 return { done: done, value: done ? void 0 : i.current }; | 522 return { done: done, value: done ? void 0 : i.current }; |
| 511 } | 523 } |
| 512 } | 524 } |
| 513 '''); | 525 '''); |
| OLD | NEW |