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

Side by Side Diff: runtime/lib/mirrors_impl.dart

Issue 63393003: Drop "Impl" suffix from local mirror class names. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « runtime/lib/mirrors.cc ('k') | runtime/vm/symbols.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // VM-specific implementation of the dart:mirrors library. 5 // VM-specific implementation of the dart:mirrors library.
6 6
7 import "dart:collection"; 7 import "dart:collection";
8 8
9 final emptyList = new UnmodifiableListView([]); 9 final emptyList = new UnmodifiableListView([]);
10 final emptyMap = new _UnmodifiableMapView({}); 10 final emptyMap = new _UnmodifiableMapView({});
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 buf.write(']'); 115 buf.write(']');
116 } 116 }
117 buf.write(') -> '); 117 buf.write(') -> ');
118 buf.write(_n(returnType.qualifiedName)); 118 buf.write(_n(returnType.qualifiedName));
119 return buf.toString(); 119 return buf.toString();
120 } 120 }
121 121
122 List _metadata(reflectee) 122 List _metadata(reflectee)
123 native 'DeclarationMirror_metadata'; 123 native 'DeclarationMirror_metadata';
124 124
125 class _LocalMirrorSystemImpl extends MirrorSystem { 125 class _LocalMirrorSystem extends MirrorSystem {
126 // Change parameter back to "this.libraries" when native code is changed. 126 // Change parameter back to "this.libraries" when native code is changed.
127 _LocalMirrorSystemImpl(List<LibraryMirror> libraries, this.isolate) 127 _LocalMirrorSystem(List<LibraryMirror> libraries, this.isolate)
128 : this.libraries = new Map<Uri, LibraryMirror>.fromIterable( 128 : this.libraries = new Map<Uri, LibraryMirror>.fromIterable(
129 libraries, key: (e) => e.uri); 129 libraries, key: (e) => e.uri);
130 130
131 final Map<Uri, LibraryMirror> libraries; 131 final Map<Uri, LibraryMirror> libraries;
132 final IsolateMirror isolate; 132 final IsolateMirror isolate;
133 133
134 TypeMirror _dynamicType = null; 134 TypeMirror _dynamicType = null;
135 TypeMirror get dynamicType { 135 TypeMirror get dynamicType {
136 if (_dynamicType == null) { 136 if (_dynamicType == null) {
137 _dynamicType = new _SpecialTypeMirrorImpl('dynamic'); 137 _dynamicType = new _SpecialTypeMirror('dynamic');
138 } 138 }
139 return _dynamicType; 139 return _dynamicType;
140 } 140 }
141 141
142 TypeMirror _voidType = null; 142 TypeMirror _voidType = null;
143 TypeMirror get voidType { 143 TypeMirror get voidType {
144 if (_voidType == null) { 144 if (_voidType == null) {
145 _voidType = new _SpecialTypeMirrorImpl('void'); 145 _voidType = new _SpecialTypeMirror('void');
146 } 146 }
147 return _voidType; 147 return _voidType;
148 } 148 }
149 149
150 String toString() => "MirrorSystem for isolate '${isolate.debugName}'"; 150 String toString() => "MirrorSystem for isolate '${isolate.debugName}'";
151 } 151 }
152 152
153 abstract class _LocalMirrorImpl implements Mirror {} 153 abstract class _LocalMirror implements Mirror {}
154 154
155 class _LocalIsolateMirrorImpl extends _LocalMirrorImpl 155 class _LocalIsolateMirror extends _LocalMirror implements IsolateMirror {
156 implements IsolateMirror { 156 _LocalIsolateMirror (this.debugName, this.rootLibrary);
157 _LocalIsolateMirrorImpl(this.debugName, this.rootLibrary);
158 157
159 final String debugName; 158 final String debugName;
160 final bool isCurrent = true; 159 final bool isCurrent = true;
161 final LibraryMirror rootLibrary; 160 final LibraryMirror rootLibrary;
162 161
163 String toString() => "IsolateMirror on '$debugName'"; 162 String toString() => "IsolateMirror on '$debugName'";
164 } 163 }
165 164
166 class _InvocationTrampoline implements Function { 165 class _InvocationTrampoline implements Function {
167 ObjectMirror _receiver; 166 ObjectMirror _receiver;
168 Symbol _selector; 167 Symbol _selector;
169 _InvocationTrampoline(this._receiver, this._selector); 168 _InvocationTrampoline(this._receiver, this._selector);
170 noSuchMethod(Invocation msg) { 169 noSuchMethod(Invocation msg) {
171 if (msg.memberName != #call) return super.noSuchMethod(msg); 170 if (msg.memberName != #call) return super.noSuchMethod(msg);
172 return _receiver.invoke(_selector, 171 return _receiver.invoke(_selector,
173 msg.positionalArguments, 172 msg.positionalArguments,
174 msg.namedArguments); 173 msg.namedArguments);
175 } 174 }
176 } 175 }
177 176
178 abstract class _LocalObjectMirrorImpl extends _LocalMirrorImpl 177 abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror {
179 implements ObjectMirror { 178 _LocalObjectMirror(this._reflectee);
180 _LocalObjectMirrorImpl(this._reflectee);
181 179
182 final _reflectee; // May be a MirrorReference or an ordinary object. 180 final _reflectee; // May be a MirrorReference or an ordinary object.
183 181
184 InstanceMirror invoke(Symbol memberName, 182 InstanceMirror invoke(Symbol memberName,
185 List positionalArguments, 183 List positionalArguments,
186 [Map<Symbol, dynamic> namedArguments]) { 184 [Map<Symbol, dynamic> namedArguments]) {
187 185
188 int numPositionalArguments = positionalArguments.length; 186 int numPositionalArguments = positionalArguments.length;
189 int numNamedArguments = namedArguments != null ? namedArguments.length : 0; 187 int numNamedArguments = namedArguments != null ? namedArguments.length : 0;
190 int numArguments = numPositionalArguments + numNamedArguments; 188 int numArguments = numPositionalArguments + numNamedArguments;
(...skipping 21 matching lines...) Expand all
212 } 210 }
213 211
214 InstanceMirror setField(Symbol memberName, Object value) { 212 InstanceMirror setField(Symbol memberName, Object value) {
215 this._invokeSetter(_reflectee, 213 this._invokeSetter(_reflectee,
216 _n(memberName), 214 _n(memberName),
217 value); 215 value);
218 return reflect(value); 216 return reflect(value);
219 } 217 }
220 } 218 }
221 219
222 class _LocalInstanceMirrorImpl extends _LocalObjectMirrorImpl 220 class _LocalInstanceMirror extends _LocalObjectMirror
223 implements InstanceMirror { 221 implements InstanceMirror {
224 // TODO(ahe): This is a hack, see delegate below. 222 // TODO(ahe): This is a hack, see delegate below.
225 static Function _invokeOnClosure; 223 static Function _invokeOnClosure;
226 224
227 _LocalInstanceMirrorImpl(reflectee) : super(reflectee); 225 _LocalInstanceMirror(reflectee) : super(reflectee);
228 226
229 ClassMirror _type; 227 ClassMirror _type;
230 ClassMirror get type { 228 ClassMirror get type {
231 if (_type == null) { 229 if (_type == null) {
232 // Note it not safe to use reflectee.runtimeType because runtimeType may 230 // Note it not safe to use reflectee.runtimeType because runtimeType may
233 // be overridden. 231 // be overridden.
234 _type = reflectType(_computeType(reflectee)); 232 _type = reflectType(_computeType(reflectee));
235 } 233 }
236 return _type; 234 return _type;
237 } 235 }
238 236
239 // LocalInstanceMirrors always reflect local instances 237 // LocalInstanceMirrors always reflect local instances
240 bool hasReflectee = true; 238 bool hasReflectee = true;
241 239
242 get reflectee => _reflectee; 240 get reflectee => _reflectee;
243 241
244 delegate(Invocation invocation) { 242 delegate(Invocation invocation) {
245 if (_invokeOnClosure == null) { 243 if (_invokeOnClosure == null) {
246 // TODO(ahe): This is a total hack. We're using the mirror 244 // TODO(ahe): This is a total hack. We're using the mirror
247 // system to access a private field in a different library. For 245 // system to access a private field in a different library. For
248 // some reason, that works. On the other hand, calling a 246 // some reason, that works. On the other hand, calling a
249 // private method does not work. 247 // private method does not work.
250 248 ClassMirror invocationImplClass = reflect(invocation).type;
251 _LocalInstanceMirrorImpl mirror = 249 Symbol fieldName = MirrorSystem.getSymbol('_invokeOnClosure',
252 reflect(invocation); 250 invocationImplClass.owner);
253 _invokeOnClosure = reflectClass(invocation.runtimeType) 251 _invokeOnClosure = invocationImplClass.getField(fieldName).reflectee;
254 .getField(MirrorSystem.getSymbol('_invokeOnClosure', mirror.type.owner )).reflectee;
255 } 252 }
256 return _invokeOnClosure(reflectee, invocation); 253 return _invokeOnClosure(reflectee, invocation);
257 } 254 }
258 255
259 String toString() => 'InstanceMirror on ${Error.safeToString(_reflectee)}'; 256 String toString() => 'InstanceMirror on ${Error.safeToString(_reflectee)}';
260 257
261 bool operator ==(other) { 258 bool operator ==(other) {
262 return other is _LocalInstanceMirrorImpl && 259 return other is _LocalInstanceMirror &&
263 identical(_reflectee, other._reflectee); 260 identical(_reflectee, other._reflectee);
264 } 261 }
265 262
266 int get hashCode { 263 int get hashCode {
267 // Avoid hash collisions with the reflectee. This constant is in Smi range 264 // Avoid hash collisions with the reflectee. This constant is in Smi range
268 // and happens to be the inner padding from RFC 2104. 265 // and happens to be the inner padding from RFC 2104.
269 return identityHashCode(_reflectee) ^ 0x36363636; 266 return identityHashCode(_reflectee) ^ 0x36363636;
270 } 267 }
271 268
272 Function operator [](Symbol selector) { 269 Function operator [](Symbol selector) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 _invokeGetter(reflectee, getterName) 315 _invokeGetter(reflectee, getterName)
319 native 'InstanceMirror_invokeGetter'; 316 native 'InstanceMirror_invokeGetter';
320 317
321 _invokeSetter(reflectee, setterName, value) 318 _invokeSetter(reflectee, setterName, value)
322 native 'InstanceMirror_invokeSetter'; 319 native 'InstanceMirror_invokeSetter';
323 320
324 static _computeType(reflectee) 321 static _computeType(reflectee)
325 native 'InstanceMirror_computeType'; 322 native 'InstanceMirror_computeType';
326 } 323 }
327 324
328 class _LocalClosureMirrorImpl extends _LocalInstanceMirrorImpl 325 class _LocalClosureMirror extends _LocalInstanceMirror
329 implements ClosureMirror { 326 implements ClosureMirror {
330 _LocalClosureMirrorImpl(reflectee) : super(reflectee); 327 _LocalClosureMirror(reflectee) : super(reflectee);
331 328
332 MethodMirror _function; 329 MethodMirror _function;
333 MethodMirror get function { 330 MethodMirror get function {
334 if (_function == null) { 331 if (_function == null) {
335 _function = _computeFunction(reflectee); 332 _function = _computeFunction(reflectee);
336 } 333 }
337 return _function; 334 return _function;
338 } 335 }
339 336
340 InstanceMirror apply(List<Object> positionalArguments, 337 InstanceMirror apply(List<Object> positionalArguments,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 static _apply(arguments, argumentNames) 390 static _apply(arguments, argumentNames)
394 native 'ClosureMirror_apply'; 391 native 'ClosureMirror_apply';
395 392
396 static _computeFunction(reflectee) 393 static _computeFunction(reflectee)
397 native 'ClosureMirror_function'; 394 native 'ClosureMirror_function';
398 395
399 static _computeFindInContext(reflectee, name) 396 static _computeFindInContext(reflectee, name)
400 native 'ClosureMirror_find_in_context'; 397 native 'ClosureMirror_find_in_context';
401 } 398 }
402 399
403 class _LocalClassMirrorImpl extends _LocalObjectMirrorImpl 400 class _LocalClassMirror extends _LocalObjectMirror
404 implements ClassMirror { 401 implements ClassMirror {
405 _LocalClassMirrorImpl(reflectee, 402 _LocalClassMirror(reflectee,
406 reflectedType, 403 reflectedType,
407 String simpleName, 404 String simpleName,
408 this._owner, 405 this._owner,
409 this._isGeneric, 406 this._isGeneric,
410 this._isMixinAlias, 407 this._isMixinAlias,
411 this._isGenericDeclaration) 408 this._isGenericDeclaration)
412 : this._simpleName = _s(simpleName), 409 : this._simpleName = _s(simpleName),
413 this._reflectedType = reflectedType, 410 this._reflectedType = reflectedType,
414 this._instantiator = reflectedType, 411 this._instantiator = reflectedType,
415 super(reflectee); 412 super(reflectee);
416 413
417 final Type _reflectedType; 414 final Type _reflectedType;
418 final bool _isGeneric; 415 final bool _isGeneric;
419 final bool _isMixinAlias; 416 final bool _isMixinAlias;
420 final bool _isGenericDeclaration; 417 final bool _isGenericDeclaration;
421 Type _instantiator; 418 Type _instantiator;
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 List<TypeVariableMirror> _typeVariables = null; 603 List<TypeVariableMirror> _typeVariables = null;
607 List<TypeVariableMirror> get typeVariables { 604 List<TypeVariableMirror> get typeVariables {
608 if (_typeVariables == null) { 605 if (_typeVariables == null) {
609 if (_isAnonymousMixinApplication) return _typeVariables = emptyList; 606 if (_isAnonymousMixinApplication) return _typeVariables = emptyList;
610 _typeVariables = new List<TypeVariableMirror>(); 607 _typeVariables = new List<TypeVariableMirror>();
611 608
612 List params = _ClassMirror_type_variables(_reflectee); 609 List params = _ClassMirror_type_variables(_reflectee);
613 ClassMirror owner = originalDeclaration; 610 ClassMirror owner = originalDeclaration;
614 var mirror; 611 var mirror;
615 for (var i = 0; i < params.length; i += 2) { 612 for (var i = 0; i < params.length; i += 2) {
616 mirror = new _LocalTypeVariableMirrorImpl( 613 mirror = new _LocalTypeVariableMirror(
617 params[i + 1], params[i], owner); 614 params[i + 1], params[i], owner);
618 _typeVariables.add(mirror); 615 _typeVariables.add(mirror);
619 } 616 }
620 _typeVariables = new UnmodifiableListView(_typeVariables); 617 _typeVariables = new UnmodifiableListView(_typeVariables);
621 } 618 }
622 return _typeVariables; 619 return _typeVariables;
623 } 620 }
624 621
625 List<TypeMirror> _typeArguments = null; 622 List<TypeMirror> _typeArguments = null;
626 List<TypeMirror> get typeArguments { 623 List<TypeMirror> get typeArguments {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 static _invokeConstructor(reflectee, type, constructorName, arguments, argumen tNames) 745 static _invokeConstructor(reflectee, type, constructorName, arguments, argumen tNames)
749 native 'ClassMirror_invokeConstructor'; 746 native 'ClassMirror_invokeConstructor';
750 747
751 static _ClassMirror_type_variables(reflectee) 748 static _ClassMirror_type_variables(reflectee)
752 native "ClassMirror_type_variables"; 749 native "ClassMirror_type_variables";
753 750
754 static _computeTypeArguments(reflectee) 751 static _computeTypeArguments(reflectee)
755 native "ClassMirror_type_arguments"; 752 native "ClassMirror_type_arguments";
756 } 753 }
757 754
758 class _LocalFunctionTypeMirrorImpl extends _LocalClassMirrorImpl 755 class _LocalFunctionTypeMirror extends _LocalClassMirror
759 implements FunctionTypeMirror { 756 implements FunctionTypeMirror {
760 _LocalFunctionTypeMirrorImpl(reflectee, reflectedType) 757 _LocalFunctionTypeMirror(reflectee, reflectedType)
761 : super(reflectee, reflectedType, null, null, false, false, false); 758 : super(reflectee, reflectedType, null, null, false, false, false);
762 759
763 bool get _isAnonymousMixinApplication => false; 760 bool get _isAnonymousMixinApplication => false;
764 761
765 // FunctionTypeMirrors have a simpleName generated from their signature. 762 // FunctionTypeMirrors have a simpleName generated from their signature.
766 Symbol _simpleName = null; 763 Symbol _simpleName = null;
767 Symbol get simpleName { 764 Symbol get simpleName {
768 if (_simpleName == null) { 765 if (_simpleName == null) {
769 _simpleName = _s(_makeSignatureString(returnType, parameters)); 766 _simpleName = _s(_makeSignatureString(returnType, parameters));
770 } 767 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 MethodMirror _FunctionTypeMirror_call_method(reflectee) 807 MethodMirror _FunctionTypeMirror_call_method(reflectee)
811 native "FunctionTypeMirror_call_method"; 808 native "FunctionTypeMirror_call_method";
812 809
813 static Type _FunctionTypeMirror_return_type(reflectee, instantiator) 810 static Type _FunctionTypeMirror_return_type(reflectee, instantiator)
814 native "FunctionTypeMirror_return_type"; 811 native "FunctionTypeMirror_return_type";
815 812
816 List<ParameterMirror> _FunctionTypeMirror_parameters(reflectee) 813 List<ParameterMirror> _FunctionTypeMirror_parameters(reflectee)
817 native "FunctionTypeMirror_parameters"; 814 native "FunctionTypeMirror_parameters";
818 } 815 }
819 816
820 abstract class _LocalDeclarationMirrorImpl extends _LocalMirrorImpl 817 abstract class _LocalDeclarationMirror extends _LocalMirror
821 implements DeclarationMirror { 818 implements DeclarationMirror {
822 _LocalDeclarationMirrorImpl(this._reflectee, this._simpleName); 819 _LocalDeclarationMirror(this._reflectee, this._simpleName);
823 820
824 final _reflectee; 821 final _reflectee;
825 822
826 Symbol _simpleName; 823 Symbol _simpleName;
827 Symbol get simpleName => _simpleName; 824 Symbol get simpleName => _simpleName;
828 825
829 Symbol _qualifiedName = null; 826 Symbol _qualifiedName = null;
830 Symbol get qualifiedName { 827 Symbol get qualifiedName {
831 if (_qualifiedName == null) { 828 if (_qualifiedName == null) {
832 _qualifiedName = _computeQualifiedName(owner, simpleName); 829 _qualifiedName = _computeQualifiedName(owner, simpleName);
833 } 830 }
834 return _qualifiedName; 831 return _qualifiedName;
835 } 832 }
836 833
837 List<InstanceMirror> get metadata { 834 List<InstanceMirror> get metadata {
838 // Get the metadata objects, convert them into InstanceMirrors using 835 // Get the metadata objects, convert them into InstanceMirrors using
839 // reflect() and then make them into a Dart list. 836 // reflect() and then make them into a Dart list.
840 return new UnmodifiableListView(_metadata(_reflectee).map(reflect)); 837 return new UnmodifiableListView(_metadata(_reflectee).map(reflect));
841 } 838 }
842 839
843 bool operator ==(other) { 840 bool operator ==(other) {
844 return this.runtimeType == other.runtimeType && 841 return this.runtimeType == other.runtimeType &&
845 this._reflectee == other._reflectee; 842 this._reflectee == other._reflectee;
846 } 843 }
847 844
848 int get hashCode => simpleName.hashCode; 845 int get hashCode => simpleName.hashCode;
849 } 846 }
850 847
851 class _LocalTypeVariableMirrorImpl extends _LocalDeclarationMirrorImpl 848 class _LocalTypeVariableMirror extends _LocalDeclarationMirror
852 implements TypeVariableMirror { 849 implements TypeVariableMirror {
853 _LocalTypeVariableMirrorImpl(reflectee, 850 _LocalTypeVariableMirror(reflectee,
854 String simpleName, 851 String simpleName,
855 this._owner) 852 this._owner)
856 : super(reflectee, _s(simpleName)); 853 : super(reflectee, _s(simpleName));
857 854
858 DeclarationMirror _owner; 855 DeclarationMirror _owner;
859 DeclarationMirror get owner { 856 DeclarationMirror get owner {
860 if (_owner == null) { 857 if (_owner == null) {
861 _owner = _TypeVariableMirror_owner(_reflectee).originalDeclaration; 858 _owner = _TypeVariableMirror_owner(_reflectee).originalDeclaration;
862 } 859 }
863 return _owner; 860 return _owner;
864 } 861 }
865 862
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 int get hashCode => simpleName.hashCode; 897 int get hashCode => simpleName.hashCode;
901 898
902 static DeclarationMirror _TypeVariableMirror_owner(reflectee) 899 static DeclarationMirror _TypeVariableMirror_owner(reflectee)
903 native "TypeVariableMirror_owner"; 900 native "TypeVariableMirror_owner";
904 901
905 static Type _TypeVariableMirror_upper_bound(reflectee) 902 static Type _TypeVariableMirror_upper_bound(reflectee)
906 native "TypeVariableMirror_upper_bound"; 903 native "TypeVariableMirror_upper_bound";
907 } 904 }
908 905
909 906
910 class _LocalTypedefMirrorImpl extends _LocalDeclarationMirrorImpl 907 class _LocalTypedefMirror extends _LocalDeclarationMirror
911 implements TypedefMirror { 908 implements TypedefMirror {
912 _LocalTypedefMirrorImpl(reflectee, 909 _LocalTypedefMirror(reflectee,
913 this._reflectedType, 910 this._reflectedType,
914 String simpleName, 911 String simpleName,
915 this._isGeneric, 912 this._isGeneric,
916 this._isGenericDeclaration, 913 this._isGenericDeclaration,
917 this._owner) 914 this._owner)
918 : super(reflectee, _s(simpleName)); 915 : super(reflectee, _s(simpleName));
919 916
920 final Type _reflectedType; 917 final Type _reflectedType;
921 final bool _isGeneric; 918 final bool _isGeneric;
922 final bool _isGenericDeclaration; 919 final bool _isGenericDeclaration;
923 920
924 bool get isTopLevel => true; 921 bool get isTopLevel => true;
925 bool get isPrivate => false; 922 bool get isPrivate => false;
926 923
927 DeclarationMirror _owner; 924 DeclarationMirror _owner;
928 DeclarationMirror get owner { 925 DeclarationMirror get owner {
929 if (_owner == null) { 926 if (_owner == null) {
930 _owner = _LocalClassMirrorImpl._library(_reflectee); 927 _owner = _LocalClassMirror._library(_reflectee);
931 } 928 }
932 return _owner; 929 return _owner;
933 } 930 }
934 931
935 SourceLocation get location { 932 SourceLocation get location {
936 throw new UnimplementedError('TypedefMirror.location is not implemented'); 933 throw new UnimplementedError('TypedefMirror.location is not implemented');
937 } 934 }
938 935
939 TypeMirror _referent = null; 936 TypeMirror _referent = null;
940 TypeMirror get referent { 937 TypeMirror get referent {
(...skipping 11 matching lines...) Expand all
952 return this; 949 return this;
953 } else { 950 } else {
954 return _nativeDeclaration(_reflectedType); 951 return _nativeDeclaration(_reflectedType);
955 } 952 }
956 } 953 }
957 954
958 List<TypeVariableMirror> _typeVariables = null; 955 List<TypeVariableMirror> _typeVariables = null;
959 List<TypeVariableMirror> get typeVariables { 956 List<TypeVariableMirror> get typeVariables {
960 if (_typeVariables == null) { 957 if (_typeVariables == null) {
961 _typeVariables = new List<TypeVariableMirror>(); 958 _typeVariables = new List<TypeVariableMirror>();
962 List params = _LocalClassMirrorImpl._ClassMirror_type_variables(_reflectee ); 959 List params = _LocalClassMirror._ClassMirror_type_variables(_reflectee);
963 TypedefMirror owner = originalDeclaration; 960 TypedefMirror owner = originalDeclaration;
964 var mirror; 961 var mirror;
965 for (var i = 0; i < params.length; i += 2) { 962 for (var i = 0; i < params.length; i += 2) {
966 mirror = new _LocalTypeVariableMirrorImpl( 963 mirror = new _LocalTypeVariableMirror(
967 params[i + 1], params[i], owner); 964 params[i + 1], params[i], owner);
968 _typeVariables.add(mirror); 965 _typeVariables.add(mirror);
969 } 966 }
970 } 967 }
971 return _typeVariables; 968 return _typeVariables;
972 } 969 }
973 970
974 List<TypeMirror> _typeArguments = null; 971 List<TypeMirror> _typeArguments = null;
975 List<TypeMirror> get typeArguments { 972 List<TypeMirror> get typeArguments {
976 if(_typeArguments == null) { 973 if(_typeArguments == null) {
977 if(_isGenericDeclaration) { 974 if(_isGenericDeclaration) {
978 _typeArguments = emptyList; 975 _typeArguments = emptyList;
979 } else { 976 } else {
980 _typeArguments = new UnmodifiableListView( 977 _typeArguments = new UnmodifiableListView(
981 _LocalClassMirrorImpl._computeTypeArguments(_reflectedType)); 978 _LocalClassMirror._computeTypeArguments(_reflectedType));
982 } 979 }
983 } 980 }
984 return _typeArguments; 981 return _typeArguments;
985 } 982 }
986 983
987 String toString() => "TypedefMirror on '${_n(simpleName)}'"; 984 String toString() => "TypedefMirror on '${_n(simpleName)}'";
988 985
989 static _nativeReferent(reflectedType) 986 static _nativeReferent(reflectedType)
990 native "TypedefMirror_referent"; 987 native "TypedefMirror_referent";
991 988
992 static _nativeDeclaration(reflectedType) 989 static _nativeDeclaration(reflectedType)
993 native "TypedefMirror_declaration"; 990 native "TypedefMirror_declaration";
994 } 991 }
995 992
996 class _LocalLibraryMirrorImpl extends _LocalObjectMirrorImpl 993 class _LocalLibraryMirror extends _LocalObjectMirror
997 implements LibraryMirror { 994 implements LibraryMirror {
998 _LocalLibraryMirrorImpl(reflectee, 995 _LocalLibraryMirror(reflectee,
999 String simpleName, 996 String simpleName,
1000 String url) 997 String url)
1001 : this.simpleName = _s(simpleName), 998 : this.simpleName = _s(simpleName),
1002 this.uri = Uri.parse(url), 999 this.uri = Uri.parse(url),
1003 super(reflectee); 1000 super(reflectee);
1004 1001
1005 final Symbol simpleName; 1002 final Symbol simpleName;
1006 1003
1007 // The simple name and the qualified name are the same for a library. 1004 // The simple name and the qualified name are the same for a library.
1008 Symbol get qualifiedName => simpleName; 1005 Symbol get qualifiedName => simpleName;
1009 1006
1010 // Always null for libraries. 1007 // Always null for libraries.
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 _invokeGetter(reflectee, getterName) 1116 _invokeGetter(reflectee, getterName)
1120 native 'LibraryMirror_invokeGetter'; 1117 native 'LibraryMirror_invokeGetter';
1121 1118
1122 _invokeSetter(reflectee, setterName, value) 1119 _invokeSetter(reflectee, setterName, value)
1123 native 'LibraryMirror_invokeSetter'; 1120 native 'LibraryMirror_invokeSetter';
1124 1121
1125 _computeMembers(reflectee) 1122 _computeMembers(reflectee)
1126 native "LibraryMirror_members"; 1123 native "LibraryMirror_members";
1127 } 1124 }
1128 1125
1129 class _LocalMethodMirrorImpl extends _LocalDeclarationMirrorImpl 1126 class _LocalMethodMirror extends _LocalDeclarationMirror
1130 implements MethodMirror { 1127 implements MethodMirror {
1131 _LocalMethodMirrorImpl(reflectee, 1128 _LocalMethodMirror(reflectee,
1132 String simpleName, 1129 String simpleName,
1133 this._owner, 1130 this._owner,
1134 this.isStatic, 1131 this.isStatic,
1135 this.isAbstract, 1132 this.isAbstract,
1136 this.isGetter, 1133 this.isGetter,
1137 this.isSetter, 1134 this.isSetter,
1138 this.isConstructor, 1135 this.isConstructor,
1139 this.isConstConstructor, 1136 this.isConstConstructor,
1140 this.isGenerativeConstructor, 1137 this.isGenerativeConstructor,
1141 this.isRedirectingConstructor, 1138 this.isRedirectingConstructor,
1142 this.isFactoryConstructor) 1139 this.isFactoryConstructor)
1143 : this.isOperator = _operators.contains(simpleName), 1140 : this.isOperator = _operators.contains(simpleName),
1144 super(reflectee, _s(simpleName)); 1141 super(reflectee, _s(simpleName));
1145 1142
1146 static const _operators = const ["%", "&", "*", "+", "-", "/", "<", "<<", 1143 static const _operators = const ["%", "&", "*", "+", "-", "/", "<", "<<",
1147 "<=", "==", ">", ">=", ">>", "[]", "[]=", "^", "|", "~", "unary-", "~/"]; 1144 "<=", "==", ">", ">=", ">>", "[]", "[]=", "^", "|", "~", "unary-", "~/"];
1148 1145
1149 final bool isStatic; 1146 final bool isStatic;
1150 final bool isAbstract; 1147 final bool isAbstract;
1151 final bool isGetter; 1148 final bool isGetter;
1152 final bool isSetter; 1149 final bool isSetter;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 static dynamic _MethodMirror_return_type(reflectee, instantiator) 1251 static dynamic _MethodMirror_return_type(reflectee, instantiator)
1255 native "MethodMirror_return_type"; 1252 native "MethodMirror_return_type";
1256 1253
1257 List<ParameterMirror> _MethodMirror_parameters(reflectee) 1254 List<ParameterMirror> _MethodMirror_parameters(reflectee)
1258 native "MethodMirror_parameters"; 1255 native "MethodMirror_parameters";
1259 1256
1260 static String _MethodMirror_source(reflectee) 1257 static String _MethodMirror_source(reflectee)
1261 native "MethodMirror_source"; 1258 native "MethodMirror_source";
1262 } 1259 }
1263 1260
1264 class _LocalVariableMirrorImpl extends _LocalDeclarationMirrorImpl 1261 class _LocalVariableMirror extends _LocalDeclarationMirror
1265 implements VariableMirror { 1262 implements VariableMirror {
1266 _LocalVariableMirrorImpl(reflectee, 1263 _LocalVariableMirror(reflectee,
1267 String simpleName, 1264 String simpleName,
1268 this.owner, 1265 this.owner,
1269 this._type, 1266 this._type,
1270 this.isStatic, 1267 this.isStatic,
1271 this.isFinal, 1268 this.isFinal,
1272 this.isConst) 1269 this.isConst)
1273 : super(reflectee, _s(simpleName)); 1270 : super(reflectee, _s(simpleName));
1274 1271
1275 final DeclarationMirror owner; 1272 final DeclarationMirror owner;
1276 final bool isStatic; 1273 final bool isStatic;
1277 final bool isFinal; 1274 final bool isFinal;
1278 final bool isConst; 1275 final bool isConst;
1279 1276
1280 bool get isPrivate => _n(simpleName).startsWith('_'); 1277 bool get isPrivate => _n(simpleName).startsWith('_');
1281 1278
1282 bool get isTopLevel => owner is LibraryMirror; 1279 bool get isTopLevel => owner is LibraryMirror;
(...skipping 13 matching lines...) Expand all
1296 } 1293 }
1297 return _type; 1294 return _type;
1298 } 1295 }
1299 1296
1300 String toString() => "VariableMirror on '${MirrorSystem.getName(simpleName)}'" ; 1297 String toString() => "VariableMirror on '${MirrorSystem.getName(simpleName)}'" ;
1301 1298
1302 static _VariableMirror_type(reflectee, instantiator) 1299 static _VariableMirror_type(reflectee, instantiator)
1303 native "VariableMirror_type"; 1300 native "VariableMirror_type";
1304 } 1301 }
1305 1302
1306 class _LocalParameterMirrorImpl extends _LocalVariableMirrorImpl 1303 class _LocalParameterMirror extends _LocalVariableMirror
1307 implements ParameterMirror { 1304 implements ParameterMirror {
1308 _LocalParameterMirrorImpl(reflectee, 1305 _LocalParameterMirror(reflectee,
1309 String simpleName, 1306 String simpleName,
1310 DeclarationMirror owner, 1307 DeclarationMirror owner,
1311 this._position, 1308 this._position,
1312 this.isOptional, 1309 this.isOptional,
1313 this.isNamed, 1310 this.isNamed,
1314 bool isFinal, 1311 bool isFinal,
1315 this._defaultValueReflectee, 1312 this._defaultValueReflectee,
1316 this._unmirroredMetadata) 1313 this._unmirroredMetadata)
1317 : super(reflectee, 1314 : super(reflectee,
1318 simpleName, 1315 simpleName,
1319 owner, 1316 owner,
1320 null, // We override the type. 1317 null, // We override the type.
1321 false, // isStatic does not apply. 1318 false, // isStatic does not apply.
1322 isFinal, 1319 isFinal,
1323 false // Not const. 1320 false // Not const.
1324 ); 1321 );
1325 1322
1326 final int _position; 1323 final int _position;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 } 1358 }
1362 return _type; 1359 return _type;
1363 } 1360 }
1364 1361
1365 String toString() => "ParameterMirror on '${_n(simpleName)}'"; 1362 String toString() => "ParameterMirror on '${_n(simpleName)}'";
1366 1363
1367 static Type _ParameterMirror_type(_reflectee, _position, instantiator) 1364 static Type _ParameterMirror_type(_reflectee, _position, instantiator)
1368 native "ParameterMirror_type"; 1365 native "ParameterMirror_type";
1369 } 1366 }
1370 1367
1371 class _SpecialTypeMirrorImpl extends _LocalMirrorImpl 1368 class _SpecialTypeMirror extends _LocalMirror
1372 implements TypeMirror, DeclarationMirror { 1369 implements TypeMirror, DeclarationMirror {
1373 _SpecialTypeMirrorImpl(String name) : simpleName = _s(name); 1370 _SpecialTypeMirror(String name) : simpleName = _s(name);
1374 1371
1375 final bool isPrivate = false; 1372 final bool isPrivate = false;
1376 final DeclarationMirror owner = null; 1373 final DeclarationMirror owner = null;
1377 final Symbol simpleName; 1374 final Symbol simpleName;
1378 final bool isTopLevel = true; 1375 final bool isTopLevel = true;
1379 final List<InstanceMirror> metadata = emptyList; 1376 final List<InstanceMirror> metadata = emptyList;
1380 1377
1381 List<TypeVariableMirror> get typeVariables => emptyList; 1378 List<TypeVariableMirror> get typeVariables => emptyList;
1382 List<TypeMirror> get typeArguments => emptyList; 1379 List<TypeMirror> get typeArguments => emptyList;
1383 1380
1384 bool get isOriginalDeclaration => true; 1381 bool get isOriginalDeclaration => true;
1385 TypeMirror get originalDeclaration => this; 1382 TypeMirror get originalDeclaration => this;
1386 1383
1387 SourceLocation get location { 1384 SourceLocation get location {
1388 throw new UnimplementedError('TypeMirror.location is not implemented'); 1385 throw new UnimplementedError('TypeMirror.location is not implemented');
1389 } 1386 }
1390 1387
1391 Symbol get qualifiedName => simpleName; 1388 Symbol get qualifiedName => simpleName;
1392 1389
1393 // TODO(11955): Remove once dynamicType and voidType are canonical objects in 1390 // TODO(11955): Remove once dynamicType and voidType are canonical objects in
1394 // the object store. 1391 // the object store.
1395 bool operator ==(other) { 1392 bool operator ==(other) {
1396 if (other is! _SpecialTypeMirrorImpl) { 1393 if (other is! _SpecialTypeMirror) {
1397 return false; 1394 return false;
1398 } 1395 }
1399 return this.simpleName == other.simpleName; 1396 return this.simpleName == other.simpleName;
1400 } 1397 }
1401 1398
1402 int get hashCode => simpleName.hashCode; 1399 int get hashCode => simpleName.hashCode;
1403 1400
1404 String toString() => "TypeMirror on '${_n(simpleName)}'"; 1401 String toString() => "TypeMirror on '${_n(simpleName)}'";
1405 } 1402 }
1406 1403
(...skipping 11 matching lines...) Expand all
1418 static MirrorSystem currentMirrorSystem() { 1415 static MirrorSystem currentMirrorSystem() {
1419 if (_currentMirrorSystem == null) { 1416 if (_currentMirrorSystem == null) {
1420 _currentMirrorSystem = makeLocalMirrorSystem(); 1417 _currentMirrorSystem = makeLocalMirrorSystem();
1421 } 1418 }
1422 return _currentMirrorSystem; 1419 return _currentMirrorSystem;
1423 } 1420 }
1424 1421
1425 // Creates a new local mirror for some Object. 1422 // Creates a new local mirror for some Object.
1426 static InstanceMirror reflect(Object reflectee) { 1423 static InstanceMirror reflect(Object reflectee) {
1427 return reflectee is Function 1424 return reflectee is Function
1428 ? new _LocalClosureMirrorImpl(reflectee) 1425 ? new _LocalClosureMirror(reflectee)
1429 : new _LocalInstanceMirrorImpl(reflectee); 1426 : new _LocalInstanceMirror(reflectee);
1430 } 1427 }
1431 1428
1432 static ClassMirror makeLocalClassMirror(Type key) 1429 static ClassMirror makeLocalClassMirror(Type key)
1433 native "Mirrors_makeLocalClassMirror"; 1430 native "Mirrors_makeLocalClassMirror";
1434 static TypeMirror makeLocalTypeMirror(Type key) 1431 static TypeMirror makeLocalTypeMirror(Type key)
1435 native "Mirrors_makeLocalTypeMirror"; 1432 native "Mirrors_makeLocalTypeMirror";
1436 1433
1437 static Expando<ClassMirror> _declarationCache = new Expando("ClassMirror"); 1434 static Expando<ClassMirror> _declarationCache = new Expando("ClassMirror");
1438 static Expando<TypeMirror> _instanitationCache = new Expando("TypeMirror"); 1435 static Expando<TypeMirror> _instanitationCache = new Expando("TypeMirror");
1439 1436
(...skipping 14 matching lines...) Expand all
1454 if (typeMirror == null) { 1451 if (typeMirror == null) {
1455 typeMirror = makeLocalTypeMirror(key); 1452 typeMirror = makeLocalTypeMirror(key);
1456 _instanitationCache[key] = typeMirror; 1453 _instanitationCache[key] = typeMirror;
1457 if (typeMirror is ClassMirror && !typeMirror._isGeneric) { 1454 if (typeMirror is ClassMirror && !typeMirror._isGeneric) {
1458 _declarationCache[key] = typeMirror; 1455 _declarationCache[key] = typeMirror;
1459 } 1456 }
1460 } 1457 }
1461 return typeMirror; 1458 return typeMirror;
1462 } 1459 }
1463 } 1460 }
OLDNEW
« no previous file with comments | « runtime/lib/mirrors.cc ('k') | runtime/vm/symbols.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698