| OLD | NEW |
| 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 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 Symbol get constructorName => const Symbol(''); | 192 Symbol get constructorName => const Symbol(''); |
| 193 | 193 |
| 194 TypeMirror get returnType => _target.type; | 194 TypeMirror get returnType => _target.type; |
| 195 List<ParameterMirror> get parameters { | 195 List<ParameterMirror> get parameters { |
| 196 if (isGetter) return emptyList; | 196 if (isGetter) return emptyList; |
| 197 return new UnmodifiableListView( | 197 return new UnmodifiableListView( |
| 198 [new _SyntheticSetterParameter(this, this._target)]); | 198 [new _SyntheticSetterParameter(this, this._target)]); |
| 199 } | 199 } |
| 200 | 200 |
| 201 List<InstanceMirror> get metadata => emptyList; | 201 List<InstanceMirror> get metadata => emptyList; |
| 202 | |
| 203 String get source => null; | 202 String get source => null; |
| 203 SourceLocation get location => throw new UnimplementedError(); |
| 204 } | 204 } |
| 205 | 205 |
| 206 class _SyntheticSetterParameter implements ParameterMirror { | 206 class _SyntheticSetterParameter implements ParameterMirror { |
| 207 final DeclarationMirror owner; | 207 final DeclarationMirror owner; |
| 208 final VariableMirror _target; | 208 final VariableMirror _target; |
| 209 | 209 |
| 210 _SyntheticSetterParameter(this.owner, this._target); | 210 _SyntheticSetterParameter(this.owner, this._target); |
| 211 | 211 |
| 212 Symbol get simpleName => _target.simpleName; | 212 Symbol get simpleName => _target.simpleName; |
| 213 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); | 213 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); |
| 214 TypeMirror get type => _target.type; | 214 TypeMirror get type => _target.type; |
| 215 | 215 |
| 216 bool get isOptional => false; | 216 bool get isOptional => false; |
| 217 bool get isNamed => false; | 217 bool get isNamed => false; |
| 218 bool get isStatic => false; | 218 bool get isStatic => false; |
| 219 bool get isTopLevel => false; | 219 bool get isTopLevel => false; |
| 220 bool get isConst => false; | 220 bool get isConst => false; |
| 221 bool get isFinal => true; | 221 bool get isFinal => true; |
| 222 bool get isPrivate => false; | 222 bool get isPrivate => false; |
| 223 bool get hasDefaultValue => false; | 223 bool get hasDefaultValue => false; |
| 224 InstanceMirror get defaultValue => null; | 224 InstanceMirror get defaultValue => null; |
| 225 List<InstanceMirror> get metadata => emptyList; | 225 List<InstanceMirror> get metadata => emptyList; |
| 226 SourceLocation get location => throw new UnimplementedError(); |
| 226 } | 227 } |
| 227 | 228 |
| 228 abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror { | 229 abstract class _LocalObjectMirror extends _LocalMirror implements ObjectMirror { |
| 229 final _reflectee; // May be a MirrorReference or an ordinary object. | 230 final _reflectee; // May be a MirrorReference or an ordinary object. |
| 230 | 231 |
| 231 _LocalObjectMirror(this._reflectee); | 232 _LocalObjectMirror(this._reflectee); |
| 232 | 233 |
| 233 InstanceMirror invoke(Symbol memberName, | 234 InstanceMirror invoke(Symbol memberName, |
| 234 List positionalArguments, | 235 List positionalArguments, |
| 235 [Map<Symbol, dynamic> namedArguments]) { | 236 [Map<Symbol, dynamic> namedArguments]) { |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 } | 561 } |
| 561 } | 562 } |
| 562 return _mixin; | 563 return _mixin; |
| 563 } | 564 } |
| 564 | 565 |
| 565 var _cachedStaticMembers; | 566 var _cachedStaticMembers; |
| 566 Map<Symbol, MethodMirror> get staticMembers { | 567 Map<Symbol, MethodMirror> get staticMembers { |
| 567 if (_cachedStaticMembers == null) { | 568 if (_cachedStaticMembers == null) { |
| 568 var result = new Map<Symbol, MethodMirror>(); | 569 var result = new Map<Symbol, MethodMirror>(); |
| 569 declarations.values.forEach((decl) { | 570 declarations.values.forEach((decl) { |
| 570 if (decl is MethodMirror && decl.isStatic && | 571 if (decl is MethodMirror && decl.isStatic && !decl.isConstructor) { |
| 571 !decl.isConstructor && !decl.isAbstract) { | |
| 572 result[decl.simpleName] = decl; | 572 result[decl.simpleName] = decl; |
| 573 } | 573 } |
| 574 if (decl is VariableMirror && decl.isStatic) { | 574 if (decl is VariableMirror && decl.isStatic) { |
| 575 var getterName = decl.simpleName; | 575 var getterName = decl.simpleName; |
| 576 result[getterName] = | 576 result[getterName] = |
| 577 new _SyntheticAccessor(this, getterName, true, true, false, decl); | 577 new _SyntheticAccessor(this, getterName, true, true, false, decl); |
| 578 if (!decl.isFinal) { | 578 if (!decl.isFinal) { |
| 579 var setterName = _asSetter(decl.simpleName, this.owner); | 579 var setterName = _asSetter(decl.simpleName, this.owner); |
| 580 result[setterName] = new _SyntheticAccessor( | 580 result[setterName] = new _SyntheticAccessor( |
| 581 this, setterName, false, true, false, decl); | 581 this, setterName, false, true, false, decl); |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1079 return _declarations = | 1079 return _declarations = |
| 1080 new _UnmodifiableMapView<Symbol, DeclarationMirror>(_members); | 1080 new _UnmodifiableMapView<Symbol, DeclarationMirror>(_members); |
| 1081 } | 1081 } |
| 1082 | 1082 |
| 1083 | 1083 |
| 1084 var _cachedTopLevelMembers; | 1084 var _cachedTopLevelMembers; |
| 1085 Map<Symbol, MethodMirror> get topLevelMembers { | 1085 Map<Symbol, MethodMirror> get topLevelMembers { |
| 1086 if (_cachedTopLevelMembers == null) { | 1086 if (_cachedTopLevelMembers == null) { |
| 1087 var result = new Map<Symbol, MethodMirror>(); | 1087 var result = new Map<Symbol, MethodMirror>(); |
| 1088 declarations.values.forEach((decl) { | 1088 declarations.values.forEach((decl) { |
| 1089 if (decl is MethodMirror && !decl.isAbstract) { | 1089 if (decl is MethodMirror) { |
| 1090 result[decl.simpleName] = decl; | 1090 result[decl.simpleName] = decl; |
| 1091 } | 1091 } |
| 1092 if (decl is VariableMirror) { | 1092 if (decl is VariableMirror) { |
| 1093 var getterName = decl.simpleName; | 1093 var getterName = decl.simpleName; |
| 1094 result[getterName] = | 1094 result[getterName] = |
| 1095 new _SyntheticAccessor(this, getterName, true, true, true, decl); | 1095 new _SyntheticAccessor(this, getterName, true, true, true, decl); |
| 1096 if (!decl.isFinal) { | 1096 if (!decl.isFinal) { |
| 1097 var setterName = _asSetter(decl.simpleName, this); | 1097 var setterName = _asSetter(decl.simpleName, this); |
| 1098 result[setterName] = new _SyntheticAccessor( | 1098 result[setterName] = new _SyntheticAccessor( |
| 1099 this, setterName, false, true, true, decl); | 1099 this, setterName, false, true, true, decl); |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1490 if (typeMirror == null) { | 1490 if (typeMirror == null) { |
| 1491 typeMirror = makeLocalTypeMirror(key); | 1491 typeMirror = makeLocalTypeMirror(key); |
| 1492 _instanitationCache[key] = typeMirror; | 1492 _instanitationCache[key] = typeMirror; |
| 1493 if (typeMirror is ClassMirror && !typeMirror._isGeneric) { | 1493 if (typeMirror is ClassMirror && !typeMirror._isGeneric) { |
| 1494 _declarationCache[key] = typeMirror; | 1494 _declarationCache[key] = typeMirror; |
| 1495 } | 1495 } |
| 1496 } | 1496 } |
| 1497 return typeMirror; | 1497 return typeMirror; |
| 1498 } | 1498 } |
| 1499 } | 1499 } |
| OLD | NEW |