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

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

Issue 2535273002: Better mirrors support for mixins and private fields (Closed)
Patch Set: Address comments Created 4 years 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 }); 57 });
58 58
59 // Save mixins for reflection 59 // Save mixins for reflection
60 Mixin[$_mixins] = $mixins; 60 Mixin[$_mixins] = $mixins;
61 return Mixin; 61 return Mixin;
62 })()'''); 62 })()''');
63 63
64 /// The Symbol for storing type arguments on a specialized generic type. 64 /// The Symbol for storing type arguments on a specialized generic type.
65 final _mixins = JS('', 'Symbol("mixins")'); 65 final _mixins = JS('', 'Symbol("mixins")');
66 66
67 getMixins(clazz) => JS('', '$clazz[$_mixins]'); 67 getMixins(clazz) => JS('', 'Object.hasOwnProperty.call(#, #) ? #[#] : null', cla zz, _mixins, clazz, _mixins);
68 68
69 @JSExportName('implements') 69 @JSExportName('implements')
70 final _implements = JS('', 'Symbol("implements")'); 70 final _implements = JS('', 'Symbol("implements")');
71 71
72 getImplements(clazz) => JS('', '#[#]', clazz, _implements); 72 getImplements(clazz) => JS('', 'Object.hasOwnProperty.call(#, #) ? #[#] : null', clazz, _implements, clazz, _implements);
73 73
74 /// The Symbol for storing type arguments on a specialized generic type. 74 /// The Symbol for storing type arguments on a specialized generic type.
75 final _typeArguments = JS('', 'Symbol("typeArguments")'); 75 final _typeArguments = JS('', 'Symbol("typeArguments")');
76 76
77 final _originalDeclaration = JS('', 'Symbol("originalDeclaration")'); 77 final _originalDeclaration = JS('', 'Symbol("originalDeclaration")');
78 78
79 /// Wrap a generic class builder function with future flattening. 79 /// Wrap a generic class builder function with future flattening.
80 flattenFutures(builder) => JS( 80 flattenFutures(builder) => JS(
81 '', 81 '',
82 '''(() => { 82 '''(() => {
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 '''(() => { 548 '''(() => {
549 let values = []; 549 let values = [];
550 for (var i = 0; i < $names.length; i++) { 550 for (var i = 0; i < $names.length; i++) {
551 let value = $const_(new $enumClass(i)); 551 let value = $const_(new $enumClass(i));
552 values.push(value); 552 values.push(value);
553 Object.defineProperty($enumClass, $names[i], 553 Object.defineProperty($enumClass, $names[i],
554 { value: value, configurable: true }); 554 { value: value, configurable: true });
555 } 555 }
556 $enumClass.values = $constList(values, $enumClass); 556 $enumClass.values = $constList(values, $enumClass);
557 })()'''); 557 })()''');
OLDNEW
« no previous file with comments | « pkg/dev_compiler/tool/input_sdk/patch/internal_patch.dart ('k') | pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698