Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(453)

Side by Side Diff: pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart

Issue 2334763002: Testing support for FF and Safari (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 the operations that define and manipulate Dart 5 /// This library defines the operations that define and manipulate Dart
6 /// classes. Included in this are: 6 /// classes. Included in this are:
7 /// - Generics 7 /// - Generics
8 /// - Class metadata 8 /// - Class metadata
9 /// - Extension methods 9 /// - Extension methods
10 /// 10 ///
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 /// JavaScript class. 415 /// JavaScript class.
416 registerExtension(jsType, dartExtType) => JS( 416 registerExtension(jsType, dartExtType) => JS(
417 '', 417 '',
418 '''(() => { 418 '''(() => {
419 // TODO(vsm): Not all registered js types are real. 419 // TODO(vsm): Not all registered js types are real.
420 if (!jsType) return; 420 if (!jsType) return;
421 421
422 let extProto = $dartExtType.prototype; 422 let extProto = $dartExtType.prototype;
423 let jsProto = $jsType.prototype; 423 let jsProto = $jsType.prototype;
424 424
425 // TODO(vsm): This sometimes doesn't exist on FF. These types will be
426 // broken.
427 if (!jsProto) return;
428
425 // Mark the JS type's instances so we can easily check for extensions. 429 // Mark the JS type's instances so we can easily check for extensions.
426 jsProto[$_extensionType] = $dartExtType; 430 jsProto[$_extensionType] = $dartExtType;
427 $_installProperties(jsProto, extProto); 431 $_installProperties(jsProto, extProto);
428 let originalSigFn = $getOwnPropertyDescriptor($dartExtType, $_methodSig).get; 432 let originalSigFn = $getOwnPropertyDescriptor($dartExtType, $_methodSig).get;
429 $assert_(originalSigFn); 433 $assert_(originalSigFn);
430 $defineMemoizedGetter($jsType, $_methodSig, originalSigFn); 434 $defineMemoizedGetter($jsType, $_methodSig, originalSigFn);
431 })()'''); 435 })()''');
432 436
433 /// 437 ///
434 /// Mark a concrete type as implementing extension methods. 438 /// Mark a concrete type as implementing extension methods.
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 /// 535 ///
532 /// The constructor 536 /// The constructor
533 defineNamedConstructorCallable(clazz, name, ctor) => JS( 537 defineNamedConstructorCallable(clazz, name, ctor) => JS(
534 '', 538 '',
535 '''(() => { 539 '''(() => {
536 ctor.prototype = $clazz.prototype; 540 ctor.prototype = $clazz.prototype;
537 // Use defineProperty so we don't hit a property defined on Function, 541 // Use defineProperty so we don't hit a property defined on Function,
538 // like `caller` and `arguments`. 542 // like `caller` and `arguments`.
539 $defineProperty($clazz, $name, { value: ctor, configurable: true }); 543 $defineProperty($clazz, $name, { value: ctor, configurable: true });
540 })()'''); 544 })()''');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698