| 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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 TypeMirror get voidType { | 135 TypeMirror get voidType { |
| 136 if (_voidType == null) { | 136 if (_voidType == null) { |
| 137 _voidType = new _SpecialTypeMirror('void'); | 137 _voidType = new _SpecialTypeMirror('void'); |
| 138 } | 138 } |
| 139 return _voidType; | 139 return _voidType; |
| 140 } | 140 } |
| 141 | 141 |
| 142 String toString() => "MirrorSystem for isolate '${isolate.debugName}'"; | 142 String toString() => "MirrorSystem for isolate '${isolate.debugName}'"; |
| 143 } | 143 } |
| 144 | 144 |
| 145 class _SourceLocation implements SourceLocation { |
| 146 _SourceLocation(uriString, this.line, this.column) |
| 147 : this.sourceUri = Uri.parse(uriString); |
| 148 |
| 149 // Line and column positions are 1-origin, or 0 if unknown. |
| 150 final int line; |
| 151 final int column; |
| 152 |
| 153 final Uri sourceUri; |
| 154 |
| 155 String toString() { |
| 156 return column == 0 ? "$sourceUri:$line" : "$sourceUri:$line:$column"; |
| 157 } |
| 158 } |
| 159 |
| 145 abstract class _LocalMirror implements Mirror {} | 160 abstract class _LocalMirror implements Mirror {} |
| 146 | 161 |
| 147 class _LocalIsolateMirror extends _LocalMirror implements IsolateMirror { | 162 class _LocalIsolateMirror extends _LocalMirror implements IsolateMirror { |
| 148 final String debugName; | 163 final String debugName; |
| 149 final LibraryMirror rootLibrary; | 164 final LibraryMirror rootLibrary; |
| 150 | 165 |
| 151 _LocalIsolateMirror(this.debugName, this.rootLibrary); | 166 _LocalIsolateMirror(this.debugName, this.rootLibrary); |
| 152 | 167 |
| 153 bool get isCurrent => true; | 168 bool get isCurrent => true; |
| 154 | 169 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 | 203 |
| 189 TypeMirror get returnType => _target.type; | 204 TypeMirror get returnType => _target.type; |
| 190 List<ParameterMirror> get parameters { | 205 List<ParameterMirror> get parameters { |
| 191 if (isGetter) return emptyList; | 206 if (isGetter) return emptyList; |
| 192 return new UnmodifiableListView( | 207 return new UnmodifiableListView( |
| 193 [new _SyntheticSetterParameter(this, this._target)]); | 208 [new _SyntheticSetterParameter(this, this._target)]); |
| 194 } | 209 } |
| 195 | 210 |
| 196 List<InstanceMirror> get metadata => emptyList; | 211 List<InstanceMirror> get metadata => emptyList; |
| 197 String get source => null; | 212 String get source => null; |
| 198 SourceLocation get location => throw new UnimplementedError(); | 213 SourceLocation get location => null; |
| 199 } | 214 } |
| 200 | 215 |
| 201 class _SyntheticSetterParameter implements ParameterMirror { | 216 class _SyntheticSetterParameter implements ParameterMirror { |
| 202 final DeclarationMirror owner; | 217 final DeclarationMirror owner; |
| 203 final VariableMirror _target; | 218 final VariableMirror _target; |
| 204 | 219 |
| 205 _SyntheticSetterParameter(this.owner, this._target); | 220 _SyntheticSetterParameter(this.owner, this._target); |
| 206 | 221 |
| 207 Symbol get simpleName => _target.simpleName; | 222 Symbol get simpleName => _target.simpleName; |
| 208 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); | 223 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); |
| (...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1294 } | 1309 } |
| 1295 return _owner; | 1310 return _owner; |
| 1296 } | 1311 } |
| 1297 | 1312 |
| 1298 bool get isPrivate => _n(simpleName).startsWith('_') || | 1313 bool get isPrivate => _n(simpleName).startsWith('_') || |
| 1299 _n(constructorName).startsWith('_'); | 1314 _n(constructorName).startsWith('_'); |
| 1300 | 1315 |
| 1301 bool get isTopLevel => owner is LibraryMirror; | 1316 bool get isTopLevel => owner is LibraryMirror; |
| 1302 bool get isSynthetic => false; | 1317 bool get isSynthetic => false; |
| 1303 | 1318 |
| 1319 SourceLocation _location; |
| 1304 SourceLocation get location { | 1320 SourceLocation get location { |
| 1305 throw new UnimplementedError('MethodMirror.location is not implemented'); | 1321 if (_location == null) { |
| 1322 _location = _MethodMirror_location(_reflectee); |
| 1323 } |
| 1324 return _location; |
| 1306 } | 1325 } |
| 1307 | 1326 |
| 1308 Type get _instantiator { | 1327 Type get _instantiator { |
| 1309 var o = owner; | 1328 var o = owner; |
| 1310 while (o is MethodMirror) o = o.owner; | 1329 while (o is MethodMirror) o = o.owner; |
| 1311 return o._instantiator; | 1330 return o._instantiator; |
| 1312 } | 1331 } |
| 1313 | 1332 |
| 1314 TypeMirror _returnType = null; | 1333 TypeMirror _returnType = null; |
| 1315 TypeMirror get returnType { | 1334 TypeMirror get returnType { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1380 native "MethodMirror_owner"; | 1399 native "MethodMirror_owner"; |
| 1381 | 1400 |
| 1382 static dynamic _MethodMirror_return_type(reflectee, instantiator) | 1401 static dynamic _MethodMirror_return_type(reflectee, instantiator) |
| 1383 native "MethodMirror_return_type"; | 1402 native "MethodMirror_return_type"; |
| 1384 | 1403 |
| 1385 List<ParameterMirror> _MethodMirror_parameters(reflectee) | 1404 List<ParameterMirror> _MethodMirror_parameters(reflectee) |
| 1386 native "MethodMirror_parameters"; | 1405 native "MethodMirror_parameters"; |
| 1387 | 1406 |
| 1388 static String _MethodMirror_source(reflectee) | 1407 static String _MethodMirror_source(reflectee) |
| 1389 native "MethodMirror_source"; | 1408 native "MethodMirror_source"; |
| 1409 |
| 1410 static SourceLocation _MethodMirror_location(reflectee) |
| 1411 native "MethodMirror_location"; |
| 1390 } | 1412 } |
| 1391 | 1413 |
| 1392 class _LocalVariableMirror extends _LocalDeclarationMirror | 1414 class _LocalVariableMirror extends _LocalDeclarationMirror |
| 1393 implements VariableMirror { | 1415 implements VariableMirror { |
| 1394 final DeclarationMirror owner; | 1416 final DeclarationMirror owner; |
| 1395 final bool isStatic; | 1417 final bool isStatic; |
| 1396 final bool isFinal; | 1418 final bool isFinal; |
| 1397 final bool isConst; | 1419 final bool isConst; |
| 1398 | 1420 |
| 1399 _LocalVariableMirror(reflectee, | 1421 _LocalVariableMirror(reflectee, |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1596 if (typeMirror == null) { | 1618 if (typeMirror == null) { |
| 1597 typeMirror = makeLocalTypeMirror(key); | 1619 typeMirror = makeLocalTypeMirror(key); |
| 1598 _instanitationCache[key] = typeMirror; | 1620 _instanitationCache[key] = typeMirror; |
| 1599 if (typeMirror is ClassMirror && !typeMirror._isGeneric) { | 1621 if (typeMirror is ClassMirror && !typeMirror._isGeneric) { |
| 1600 _declarationCache[key] = typeMirror; | 1622 _declarationCache[key] = typeMirror; |
| 1601 } | 1623 } |
| 1602 } | 1624 } |
| 1603 return typeMirror; | 1625 return typeMirror; |
| 1604 } | 1626 } |
| 1605 } | 1627 } |
| OLD | NEW |