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

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

Issue 2564383002: Make some VM libraries patch cleanly using the analyzer. (Closed)
Patch Set: 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) 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 var dirty = false; 7 var _dirty = false;
8 final emptyList = new UnmodifiableListView([]); 8 final _emptyList = new UnmodifiableListView([]);
9 final emptyMap = new UnmodifiableMapView({});
10 9
11 class _InternalMirrorError { 10 class _InternalMirrorError {
12 final String _msg; 11 final String _msg;
13 const _InternalMirrorError(String this._msg); 12 const _InternalMirrorError(String this._msg);
14 String toString() => _msg; 13 String toString() => _msg;
15 } 14 }
16 15
17 String _n(Symbol symbol) => internal.Symbol.getName(symbol); 16 String _n(Symbol symbol) => internal.Symbol.getName(symbol);
18 17
19 Symbol _s(String name) { 18 Symbol _s(String name) {
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 return assoc.value; 212 return assoc.value;
214 } 213 }
215 } 214 }
216 215
217 class _LocalMirrorSystem extends MirrorSystem { 216 class _LocalMirrorSystem extends MirrorSystem {
218 final TypeMirror dynamicType = new _SpecialTypeMirror('dynamic'); 217 final TypeMirror dynamicType = new _SpecialTypeMirror('dynamic');
219 final TypeMirror voidType = new _SpecialTypeMirror('void'); 218 final TypeMirror voidType = new _SpecialTypeMirror('void');
220 219
221 var _libraries; 220 var _libraries;
222 Map<Uri, LibraryMirror> get libraries { 221 Map<Uri, LibraryMirror> get libraries {
223 if ((_libraries == null) || dirty) { 222 if ((_libraries == null) || _dirty) {
224 _libraries = new Map<Uri, LibraryMirror>.fromIterable( 223 _libraries = new Map<Uri, LibraryMirror>.fromIterable(
225 _computeLibraries(), key: (e) => e.uri); 224 _computeLibraries(), key: (e) => e.uri);
226 dirty = false; 225 _dirty = false;
227 } 226 }
228 return _libraries; 227 return _libraries;
229 } 228 }
230 static _computeLibraries() native "MirrorSystem_libraries"; 229 static _computeLibraries() native "MirrorSystem_libraries";
231 230
232 var _isolate; 231 var _isolate;
233 IsolateMirror get isolate { 232 IsolateMirror get isolate {
234 if (_isolate == null) { 233 if (_isolate == null) {
235 _isolate = _computeIsolate(); 234 _isolate = _computeIsolate();
236 } 235 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 bool get isAbstract => false; 295 bool get isAbstract => false;
297 296
298 bool get isSetter => !isGetter; 297 bool get isSetter => !isGetter;
299 bool get isPrivate => _n(simpleName).startsWith('_'); 298 bool get isPrivate => _n(simpleName).startsWith('_');
300 299
301 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); 300 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName);
302 Symbol get constructorName => const Symbol(''); 301 Symbol get constructorName => const Symbol('');
303 302
304 TypeMirror get returnType => _target.type; 303 TypeMirror get returnType => _target.type;
305 List<ParameterMirror> get parameters { 304 List<ParameterMirror> get parameters {
306 if (isGetter) return emptyList; 305 if (isGetter) return _emptyList;
307 return new UnmodifiableListView( 306 return new UnmodifiableListView(
308 [new _SyntheticSetterParameter(this, this._target)]); 307 [new _SyntheticSetterParameter(this, this._target)]);
309 } 308 }
310 309
311 SourceLocation get location => null; 310 SourceLocation get location => null;
312 List<InstanceMirror> get metadata => emptyList; 311 List<InstanceMirror> get metadata => _emptyList;
313 String get source => null; 312 String get source => null;
314 } 313 }
315 314
316 class _SyntheticSetterParameter implements ParameterMirror { 315 class _SyntheticSetterParameter implements ParameterMirror {
317 final DeclarationMirror owner; 316 final DeclarationMirror owner;
318 final VariableMirror _target; 317 final VariableMirror _target;
319 318
320 _SyntheticSetterParameter(this.owner, this._target); 319 _SyntheticSetterParameter(this.owner, this._target);
321 320
322 Symbol get simpleName => _target.simpleName; 321 Symbol get simpleName => _target.simpleName;
323 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); 322 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName);
324 TypeMirror get type => _target.type; 323 TypeMirror get type => _target.type;
325 324
326 bool get isOptional => false; 325 bool get isOptional => false;
327 bool get isNamed => false; 326 bool get isNamed => false;
328 bool get isStatic => false; 327 bool get isStatic => false;
329 bool get isTopLevel => false; 328 bool get isTopLevel => false;
330 bool get isConst => false; 329 bool get isConst => false;
331 bool get isFinal => true; 330 bool get isFinal => true;
332 bool get isPrivate => false; 331 bool get isPrivate => false;
333 bool get hasDefaultValue => false; 332 bool get hasDefaultValue => false;
334 InstanceMirror get defaultValue => null; 333 InstanceMirror get defaultValue => null;
335 SourceLocation get location => null; 334 SourceLocation get location => null;
336 List<InstanceMirror> get metadata => emptyList; 335 List<InstanceMirror> get metadata => _emptyList;
337 } 336 }
338 337
339 abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror { 338 abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror {
340 final _reflectee; // May be a MirrorReference or an ordinary object. 339 final _reflectee; // May be a MirrorReference or an ordinary object.
341 340
342 _LocalObjectMirror(this._reflectee); 341 _LocalObjectMirror(this._reflectee);
343 342
344 InstanceMirror invoke(Symbol memberName, 343 InstanceMirror invoke(Symbol memberName,
345 List positionalArguments, 344 List positionalArguments,
346 [Map<Symbol, dynamic> namedArguments]) { 345 [Map<Symbol, dynamic> namedArguments]) {
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 779
781 bool get _isAnonymousMixinApplication { 780 bool get _isAnonymousMixinApplication {
782 if (_isMixinAlias) return false; // Named mixin application. 781 if (_isMixinAlias) return false; // Named mixin application.
783 if (mixin == this) return false; // Not a mixin application. 782 if (mixin == this) return false; // Not a mixin application.
784 return true; 783 return true;
785 } 784 }
786 785
787 List<TypeVariableMirror> _typeVariables = null; 786 List<TypeVariableMirror> _typeVariables = null;
788 List<TypeVariableMirror> get typeVariables { 787 List<TypeVariableMirror> get typeVariables {
789 if (_typeVariables == null) { 788 if (_typeVariables == null) {
790 if (_isAnonymousMixinApplication) return _typeVariables = emptyList; 789 if (_isAnonymousMixinApplication) return _typeVariables = _emptyList;
791 _typeVariables = new List<TypeVariableMirror>(); 790 _typeVariables = new List<TypeVariableMirror>();
792 791
793 List params = _ClassMirror_type_variables(_reflectee); 792 List params = _ClassMirror_type_variables(_reflectee);
794 ClassMirror owner = originalDeclaration; 793 ClassMirror owner = originalDeclaration;
795 var mirror; 794 var mirror;
796 for (var i = 0; i < params.length; i += 2) { 795 for (var i = 0; i < params.length; i += 2) {
797 mirror = new _LocalTypeVariableMirror( 796 mirror = new _LocalTypeVariableMirror(
798 params[i + 1], params[i], owner); 797 params[i + 1], params[i], owner);
799 _typeVariables.add(mirror); 798 _typeVariables.add(mirror);
800 } 799 }
801 _typeVariables = new UnmodifiableListView(_typeVariables); 800 _typeVariables = new UnmodifiableListView(_typeVariables);
802 } 801 }
803 return _typeVariables; 802 return _typeVariables;
804 } 803 }
805 804
806 List<TypeMirror> _typeArguments = null; 805 List<TypeMirror> _typeArguments = null;
807 List<TypeMirror> get typeArguments { 806 List<TypeMirror> get typeArguments {
808 if(_typeArguments == null) { 807 if(_typeArguments == null) {
809 if(_isGenericDeclaration || _isAnonymousMixinApplication) { 808 if(_isGenericDeclaration || _isAnonymousMixinApplication) {
810 _typeArguments = emptyList; 809 _typeArguments = _emptyList;
811 } else { 810 } else {
812 _typeArguments = 811 _typeArguments =
813 new UnmodifiableListView(_computeTypeArguments(_reflectedType)); 812 new UnmodifiableListView(_computeTypeArguments(_reflectedType));
814 } 813 }
815 } 814 }
816 return _typeArguments; 815 return _typeArguments;
817 } 816 }
818 817
819 bool get isOriginalDeclaration => !_isGeneric || _isGenericDeclaration; 818 bool get isOriginalDeclaration => !_isGeneric || _isGenericDeclaration;
820 819
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 List<ParameterMirror> get parameters { 978 List<ParameterMirror> get parameters {
980 if (_parameters == null) { 979 if (_parameters == null) {
981 _parameters = _FunctionTypeMirror_parameters(_functionReflectee); 980 _parameters = _FunctionTypeMirror_parameters(_functionReflectee);
982 _parameters = new UnmodifiableListView(_parameters); 981 _parameters = new UnmodifiableListView(_parameters);
983 } 982 }
984 return _parameters; 983 return _parameters;
985 } 984 }
986 985
987 bool get isOriginalDeclaration => true; 986 bool get isOriginalDeclaration => true;
988 get originalDeclaration => this; 987 get originalDeclaration => this;
989 get typeVariables => emptyList; 988 get typeVariables => _emptyList;
990 get typeArguments => emptyList; 989 get typeArguments => _emptyList;
991 get metadata => emptyList; 990 get metadata => _emptyList;
992 get location => null; 991 get location => null;
993 992
994 String toString() => "FunctionTypeMirror on '${_n(simpleName)}'"; 993 String toString() => "FunctionTypeMirror on '${_n(simpleName)}'";
995 994
996 MethodMirror _FunctionTypeMirror_call_method(functionReflectee) 995 MethodMirror _FunctionTypeMirror_call_method(functionReflectee)
997 native "FunctionTypeMirror_call_method"; 996 native "FunctionTypeMirror_call_method";
998 997
999 static Type _FunctionTypeMirror_return_type(functionReflectee, instantiator) 998 static Type _FunctionTypeMirror_return_type(functionReflectee, instantiator)
1000 native "FunctionTypeMirror_return_type"; 999 native "FunctionTypeMirror_return_type";
1001 1000
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 } 1064 }
1066 return _upperBound; 1065 return _upperBound;
1067 } 1066 }
1068 1067
1069 bool get hasReflectedType => false; 1068 bool get hasReflectedType => false;
1070 Type get reflectedType { 1069 Type get reflectedType {
1071 throw new UnsupportedError('Type variables have no reflected type'); 1070 throw new UnsupportedError('Type variables have no reflected type');
1072 } 1071 }
1073 Type get _reflectedType => _reflectee; 1072 Type get _reflectedType => _reflectee;
1074 1073
1075 List<TypeVariableMirror> get typeVariables => emptyList; 1074 List<TypeVariableMirror> get typeVariables => _emptyList;
1076 List<TypeMirror> get typeArguments => emptyList; 1075 List<TypeMirror> get typeArguments => _emptyList;
1077 1076
1078 bool get isOriginalDeclaration => true; 1077 bool get isOriginalDeclaration => true;
1079 TypeMirror get originalDeclaration => this; 1078 TypeMirror get originalDeclaration => this;
1080 1079
1081 String toString() => "TypeVariableMirror on '${_n(simpleName)}'"; 1080 String toString() => "TypeVariableMirror on '${_n(simpleName)}'";
1082 1081
1083 operator ==(other) { 1082 operator ==(other) {
1084 return other is TypeVariableMirror 1083 return other is TypeVariableMirror
1085 && simpleName == other.simpleName 1084 && simpleName == other.simpleName
1086 && owner == other.owner; 1085 && owner == other.owner;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 _typeVariables.add(mirror); 1173 _typeVariables.add(mirror);
1175 } 1174 }
1176 } 1175 }
1177 return _typeVariables; 1176 return _typeVariables;
1178 } 1177 }
1179 1178
1180 List<TypeMirror> _typeArguments = null; 1179 List<TypeMirror> _typeArguments = null;
1181 List<TypeMirror> get typeArguments { 1180 List<TypeMirror> get typeArguments {
1182 if(_typeArguments == null) { 1181 if(_typeArguments == null) {
1183 if(_isGenericDeclaration) { 1182 if(_isGenericDeclaration) {
1184 _typeArguments = emptyList; 1183 _typeArguments = _emptyList;
1185 } else { 1184 } else {
1186 _typeArguments = new UnmodifiableListView( 1185 _typeArguments = new UnmodifiableListView(
1187 _LocalClassMirror._computeTypeArguments(_reflectedType)); 1186 _LocalClassMirror._computeTypeArguments(_reflectedType));
1188 } 1187 }
1189 } 1188 }
1190 return _typeArguments; 1189 return _typeArguments;
1191 } 1190 }
1192 1191
1193 String toString() => "TypedefMirror on '${_n(simpleName)}'"; 1192 String toString() => "TypedefMirror on '${_n(simpleName)}'";
1194 1193
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 return _defaultValue; 1550 return _defaultValue;
1552 } 1551 }
1553 1552
1554 bool get hasDefaultValue => _defaultValueReflectee != null; 1553 bool get hasDefaultValue => _defaultValueReflectee != null;
1555 1554
1556 SourceLocation get location { 1555 SourceLocation get location {
1557 throw new UnsupportedError("ParameterMirror.location unimplemented"); 1556 throw new UnsupportedError("ParameterMirror.location unimplemented");
1558 } 1557 }
1559 1558
1560 List<InstanceMirror> get metadata { 1559 List<InstanceMirror> get metadata {
1561 if (_unmirroredMetadata == null) return emptyList; 1560 if (_unmirroredMetadata == null) return _emptyList;
1562 return new UnmodifiableListView(_unmirroredMetadata.map(reflect)); 1561 return new UnmodifiableListView(_unmirroredMetadata.map(reflect));
1563 } 1562 }
1564 1563
1565 Type get _instantiator { 1564 Type get _instantiator {
1566 return owner._instantiator; 1565 return owner._instantiator;
1567 } 1566 }
1568 1567
1569 TypeMirror _type = null; 1568 TypeMirror _type = null;
1570 TypeMirror get type { 1569 TypeMirror get type {
1571 if (_type == null) { 1570 if (_type == null) {
(...skipping 14 matching lines...) Expand all
1586 final Symbol simpleName; 1585 final Symbol simpleName;
1587 1586
1588 _SpecialTypeMirror(String name) : simpleName = _s(name); 1587 _SpecialTypeMirror(String name) : simpleName = _s(name);
1589 1588
1590 bool get isPrivate => false; 1589 bool get isPrivate => false;
1591 bool get isTopLevel => true; 1590 bool get isTopLevel => true;
1592 1591
1593 DeclarationMirror get owner => null; 1592 DeclarationMirror get owner => null;
1594 1593
1595 SourceLocation get location => null; 1594 SourceLocation get location => null;
1596 List<InstanceMirror> get metadata => emptyList; 1595 List<InstanceMirror> get metadata => _emptyList;
1597 1596
1598 bool get hasReflectedType => simpleName == #dynamic; 1597 bool get hasReflectedType => simpleName == #dynamic;
1599 Type get reflectedType { 1598 Type get reflectedType {
1600 if (simpleName == #dynamic) return dynamic; 1599 if (simpleName == #dynamic) return dynamic;
1601 throw new UnsupportedError("void has no reflected type"); 1600 throw new UnsupportedError("void has no reflected type");
1602 } 1601 }
1603 1602
1604 List<TypeVariableMirror> get typeVariables => emptyList; 1603 List<TypeVariableMirror> get typeVariables => _emptyList;
1605 List<TypeMirror> get typeArguments => emptyList; 1604 List<TypeMirror> get typeArguments => _emptyList;
1606 1605
1607 bool get isOriginalDeclaration => true; 1606 bool get isOriginalDeclaration => true;
1608 TypeMirror get originalDeclaration => this; 1607 TypeMirror get originalDeclaration => this;
1609 1608
1610 Symbol get qualifiedName => simpleName; 1609 Symbol get qualifiedName => simpleName;
1611 1610
1612 bool operator ==(other) { 1611 bool operator ==(other) {
1613 if (other is! _SpecialTypeMirror) { 1612 if (other is! _SpecialTypeMirror) {
1614 return false; 1613 return false;
1615 } 1614 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 if (typeMirror == null) { 1666 if (typeMirror == null) {
1668 typeMirror = makeLocalTypeMirror(key); 1667 typeMirror = makeLocalTypeMirror(key);
1669 _instantiationCache[key] = typeMirror; 1668 _instantiationCache[key] = typeMirror;
1670 if (typeMirror is ClassMirror && !typeMirror._isGeneric) { 1669 if (typeMirror is ClassMirror && !typeMirror._isGeneric) {
1671 _declarationCache[key] = typeMirror; 1670 _declarationCache[key] = typeMirror;
1672 } 1671 }
1673 } 1672 }
1674 return typeMirror; 1673 return typeMirror;
1675 } 1674 }
1676 } 1675 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698