| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart Team. All rights reserved. Use of this | 1 // Copyright (c) 2015, the Dart Team. All rights reserved. Use of this |
| 2 // source code is governed by a BSD-style license that can be found in | 2 // source code is governed by a BSD-style license that can be found in |
| 3 // the LICENSE file. | 3 // the LICENSE file. |
| 4 | 4 |
| 5 library reflectable.src.mirrors_unimpl; | 5 library reflectable.src.mirrors_unimpl; |
| 6 | 6 |
| 7 import 'dart:collection' show UnmodifiableMapView, UnmodifiableListView; | 7 import 'dart:collection' show UnmodifiableMapView, UnmodifiableListView; |
| 8 | 8 |
| 9 import '../capability.dart'; | 9 import '../capability.dart'; |
| 10 import '../mirrors.dart'; | 10 import '../mirrors.dart'; |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 | 545 |
| 546 @override | 546 @override |
| 547 TypeMirror get originalDeclaration => this; | 547 TypeMirror get originalDeclaration => this; |
| 548 | 548 |
| 549 @override | 549 @override |
| 550 bool get hasReflectedType => true; | 550 bool get hasReflectedType => true; |
| 551 | 551 |
| 552 @override | 552 @override |
| 553 Type get reflectedType => _data.types[_classIndex]; | 553 Type get reflectedType => _data.types[_classIndex]; |
| 554 | 554 |
| 555 @override |
| 556 bool get hasDynamicReflectedType => true; |
| 557 |
| 558 @override |
| 559 Type get dynamicReflectedType => reflectedType; |
| 560 |
| 555 String toString() => "NonGenericClassMirrorImpl($qualifiedName)"; | 561 String toString() => "NonGenericClassMirrorImpl($qualifiedName)"; |
| 556 } | 562 } |
| 557 | 563 |
| 558 typedef bool InstanceChecker(Object instance); | 564 typedef bool InstanceChecker(Object instance); |
| 559 | 565 |
| 560 class GenericClassMirrorImpl extends ClassMirrorImpl { | 566 class GenericClassMirrorImpl extends ClassMirrorImpl { |
| 561 /// Used to enable instance checks. Let O be an instance and let C denote the | 567 /// Used to enable instance checks. Let O be an instance and let C denote the |
| 562 /// generic class modeled by this mirror. The check is then such that the | 568 /// generic class modeled by this mirror. The check is then such that the |
| 563 /// result is true iff there exists a list of type arguments X1..Xk such that | 569 /// result is true iff there exists a list of type arguments X1..Xk such that |
| 564 /// O is an instance of C<X1..Xk>. We can perform this check by checking that | 570 /// O is an instance of C<X1..Xk>. We can perform this check by checking that |
| 565 /// O is an instance of C<dynamic .. dynamic>, and O is not an instance | 571 /// O is an instance of C<dynamic .. dynamic>, and O is not an instance |
| 566 /// of any of Dj<dynamic .. dynamic> for j in {1..n}, where D1..Dn is the | 572 /// of any of Dj<dynamic .. dynamic> for j in {1..n}, where D1..Dn is the |
| 567 /// complete set of classes in the current program which are direct | 573 /// complete set of classes in the current program which are direct |
| 568 /// subinterfaces of C (i.e., classes which directly `extends` or `implements` | 574 /// subinterfaces of C (i.e., classes which directly `extends` or `implements` |
| 569 /// C). The check is implemented by this function. | 575 /// C). The check is implemented by this function. |
| 570 final InstanceChecker _isGenericRuntimeTypeOf; | 576 final InstanceChecker _isGenericRuntimeTypeOf; |
| 571 | 577 |
| 572 final List<int> _typeVariableIndices; | 578 final List<int> _typeVariableIndices; |
| 573 | 579 |
| 580 final Type _dynamicReflectedType; |
| 581 |
| 574 GenericClassMirrorImpl( | 582 GenericClassMirrorImpl( |
| 575 String simpleName, | 583 String simpleName, |
| 576 String qualifiedName, | 584 String qualifiedName, |
| 577 int descriptor, | 585 int descriptor, |
| 578 int classIndex, | 586 int classIndex, |
| 579 ReflectableImpl reflector, | 587 ReflectableImpl reflector, |
| 580 List<int> declarationIndices, | 588 List<int> declarationIndices, |
| 581 List<int> instanceMemberIndices, | 589 List<int> instanceMemberIndices, |
| 582 List<int> staticMemberIndices, | 590 List<int> staticMemberIndices, |
| 583 int superclassIndex, | 591 int superclassIndex, |
| 584 Map<String, _StaticGetter> getters, | 592 Map<String, _StaticGetter> getters, |
| 585 Map<String, _StaticSetter> setters, | 593 Map<String, _StaticSetter> setters, |
| 586 Map<String, Function> constructors, | 594 Map<String, Function> constructors, |
| 587 int ownerIndex, | 595 int ownerIndex, |
| 588 int mixinIndex, | 596 int mixinIndex, |
| 589 List<int> superinterfaceIndices, | 597 List<int> superinterfaceIndices, |
| 590 List<Object> metadata, | 598 List<Object> metadata, |
| 591 this._isGenericRuntimeTypeOf, | 599 this._isGenericRuntimeTypeOf, |
| 592 this._typeVariableIndices) | 600 this._typeVariableIndices, |
| 601 this._dynamicReflectedType) |
| 593 : super( | 602 : super( |
| 594 simpleName, | 603 simpleName, |
| 595 qualifiedName, | 604 qualifiedName, |
| 596 descriptor, | 605 descriptor, |
| 597 classIndex, | 606 classIndex, |
| 598 reflector, | 607 reflector, |
| 599 declarationIndices, | 608 declarationIndices, |
| 600 instanceMemberIndices, | 609 instanceMemberIndices, |
| 601 staticMemberIndices, | 610 staticMemberIndices, |
| 602 superclassIndex, | 611 superclassIndex, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 | 648 |
| 640 @override | 649 @override |
| 641 bool get hasReflectedType => false; | 650 bool get hasReflectedType => false; |
| 642 | 651 |
| 643 @override | 652 @override |
| 644 Type get reflectedType { | 653 Type get reflectedType { |
| 645 throw new UnsupportedError("Attempt to obtain `reflectedType` " | 654 throw new UnsupportedError("Attempt to obtain `reflectedType` " |
| 646 "from generic class '$qualifiedName'."); | 655 "from generic class '$qualifiedName'."); |
| 647 } | 656 } |
| 648 | 657 |
| 658 @override |
| 659 bool get hasDynamicReflectedType => true; |
| 660 |
| 661 @override |
| 662 Type get dynamicReflectedType => _dynamicReflectedType; |
| 663 |
| 649 String toString() => "GenericClassMirrorImpl($qualifiedName)"; | 664 String toString() => "GenericClassMirrorImpl($qualifiedName)"; |
| 650 } | 665 } |
| 651 | 666 |
| 652 class InstantiatedGenericClassMirrorImpl extends ClassMirrorImpl { | 667 class InstantiatedGenericClassMirrorImpl extends ClassMirrorImpl { |
| 653 final GenericClassMirrorImpl _originalDeclaration; | 668 final GenericClassMirrorImpl _originalDeclaration; |
| 654 final Type _reflectedType; | 669 final Type _reflectedType; |
| 655 | 670 |
| 656 InstantiatedGenericClassMirrorImpl( | 671 InstantiatedGenericClassMirrorImpl( |
| 657 String simpleName, | 672 String simpleName, |
| 658 String qualifiedName, | 673 String qualifiedName, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 685 getters, | 700 getters, |
| 686 setters, | 701 setters, |
| 687 constructors, | 702 constructors, |
| 688 ownerIndex, | 703 ownerIndex, |
| 689 mixinIndex, | 704 mixinIndex, |
| 690 superinterfaceIndices, | 705 superinterfaceIndices, |
| 691 metadata); | 706 metadata); |
| 692 | 707 |
| 693 // TODO(sigurdm) implement: Implement typeArguments. | 708 // TODO(sigurdm) implement: Implement typeArguments. |
| 694 @override | 709 @override |
| 695 List<TypeMirror> get typeArguments => throw unimplementedError("typeArguments"
); | 710 List<TypeMirror> get typeArguments => |
| 711 throw unimplementedError("typeArguments"); |
| 696 | 712 |
| 697 @override | 713 @override |
| 698 List<TypeVariableMirror> get typeVariables => | 714 List<TypeVariableMirror> get typeVariables => |
| 699 originalDeclaration.typeVariables; | 715 originalDeclaration.typeVariables; |
| 700 | 716 |
| 701 @override | 717 @override |
| 702 bool get isOriginalDeclaration => false; | 718 bool get isOriginalDeclaration => false; |
| 703 | 719 |
| 704 @override | 720 @override |
| 705 TypeMirror get originalDeclaration => _originalDeclaration; | 721 TypeMirror get originalDeclaration => _originalDeclaration; |
| 706 | 722 |
| 707 @override | 723 @override |
| 708 bool get hasReflectedType => _reflectedType != null; | 724 bool get hasReflectedType => _reflectedType != null; |
| 709 | 725 |
| 710 @override | 726 @override |
| 711 Type get reflectedType { | 727 Type get reflectedType { |
| 712 if (_reflectedType != null) return _reflectedType; | 728 if (_reflectedType != null) return _reflectedType; |
| 713 throw new UnsupportedError("Cannot provide `reflectedType` of " | 729 throw new UnsupportedError("Cannot provide `reflectedType` of " |
| 714 "instance of generic type '$simpleName'."); | 730 "instance of generic type '$simpleName'."); |
| 715 } | 731 } |
| 716 | 732 |
| 733 @override |
| 734 bool get hasDynamicReflectedType => |
| 735 _originalDeclaration.hasDynamicReflectedType; |
| 736 |
| 737 @override |
| 738 Type get dynamicReflectedType => _originalDeclaration.dynamicReflectedType; |
| 739 |
| 717 String toString() => "InstantiatedGenericClassMirrorImpl($qualifiedName)"; | 740 String toString() => "InstantiatedGenericClassMirrorImpl($qualifiedName)"; |
| 718 } | 741 } |
| 719 | 742 |
| 720 InstantiatedGenericClassMirrorImpl _createInstantiatedGenericClass( | 743 InstantiatedGenericClassMirrorImpl _createInstantiatedGenericClass( |
| 721 GenericClassMirrorImpl genericClassMirror, Type reflectedType) { | 744 GenericClassMirrorImpl genericClassMirror, Type reflectedType) { |
| 722 // TODO(eernst) implement: Pass a representation of type arguments to this | 745 // TODO(eernst) implement: Pass a representation of type arguments to this |
| 723 // method, and create an instantiated generic class which includes that | 746 // method, and create an instantiated generic class which includes that |
| 724 // information. | 747 // information. |
| 725 return new InstantiatedGenericClassMirrorImpl( | 748 return new InstantiatedGenericClassMirrorImpl( |
| 726 genericClassMirror.simpleName, | 749 genericClassMirror.simpleName, |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 983 /// The index of the [ClassMirror] of the owner of this method, respectively | 1006 /// The index of the [ClassMirror] of the owner of this method, respectively |
| 984 /// the [LibraryMirror] of the owner of this top-level function, | 1007 /// the [LibraryMirror] of the owner of this top-level function, |
| 985 final int _ownerIndex; | 1008 final int _ownerIndex; |
| 986 | 1009 |
| 987 /// The index of the mirror for the return type of this method. | 1010 /// The index of the mirror for the return type of this method. |
| 988 final int _returnTypeIndex; | 1011 final int _returnTypeIndex; |
| 989 | 1012 |
| 990 /// The return type of this method. | 1013 /// The return type of this method. |
| 991 final Type _reflectedReturnType; | 1014 final Type _reflectedReturnType; |
| 992 | 1015 |
| 1016 /// The return type of this method, erased to have `dynamic` for all |
| 1017 /// type arguments; a null value indicates that it is identical to |
| 1018 /// `reflectedReturnType` if that value is available they are equal; if |
| 1019 /// `reflectedReturnType` is unavailable then so is |
| 1020 /// `dynamicReflectedReturnType`. |
| 1021 final Type _dynamicReflectedReturnType; |
| 1022 |
| 993 /// The indices of the [ParameterMirror]s describing the formal parameters | 1023 /// The indices of the [ParameterMirror]s describing the formal parameters |
| 994 /// of this method. | 1024 /// of this method. |
| 995 final List<int> _parameterIndices; | 1025 final List<int> _parameterIndices; |
| 996 | 1026 |
| 997 /// The [Reflectable] associated with this mirror. | 1027 /// The [Reflectable] associated with this mirror. |
| 998 final ReflectableImpl _reflector; | 1028 final ReflectableImpl _reflector; |
| 999 | 1029 |
| 1000 /// A cache of the metadata of the mirrored method. The empty list means | 1030 /// A cache of the metadata of the mirrored method. The empty list means |
| 1001 /// no metadata, null means that [_reflector] does not have | 1031 /// no metadata, null means that [_reflector] does not have |
| 1002 /// [metadataCapability]. | 1032 /// [metadataCapability]. |
| 1003 final List<Object> _metadata; | 1033 final List<Object> _metadata; |
| 1004 | 1034 |
| 1005 MethodMirrorImpl( | 1035 MethodMirrorImpl( |
| 1006 this._name, | 1036 this._name, |
| 1007 this._descriptor, | 1037 this._descriptor, |
| 1008 this._ownerIndex, | 1038 this._ownerIndex, |
| 1009 this._returnTypeIndex, | 1039 this._returnTypeIndex, |
| 1010 this._reflectedReturnType, | 1040 this._reflectedReturnType, |
| 1041 this._dynamicReflectedReturnType, |
| 1011 this._parameterIndices, | 1042 this._parameterIndices, |
| 1012 this._reflector, | 1043 this._reflector, |
| 1013 this._metadata); | 1044 this._metadata); |
| 1014 | 1045 |
| 1015 int get kind => constants.kindFromEncoding(_descriptor); | 1046 int get kind => constants.kindFromEncoding(_descriptor); |
| 1016 | 1047 |
| 1017 DeclarationMirror get owner { | 1048 DeclarationMirror get owner { |
| 1018 if (_ownerIndex == NO_CAPABILITY_INDEX) { | 1049 if (_ownerIndex == NO_CAPABILITY_INDEX) { |
| 1019 throw new NoSuchCapabilityError( | 1050 throw new NoSuchCapabilityError( |
| 1020 "Trying to get owner of method '$qualifiedName' " | 1051 "Trying to get owner of method '$qualifiedName' " |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1131 Type get reflectedReturnType { | 1162 Type get reflectedReturnType { |
| 1132 if (_reflectedReturnType == null) { | 1163 if (_reflectedReturnType == null) { |
| 1133 throw new NoSuchCapabilityError( | 1164 throw new NoSuchCapabilityError( |
| 1134 "Requesting reflectedReturnType of method " | 1165 "Requesting reflectedReturnType of method " |
| 1135 "'$simpleName' without capability"); | 1166 "'$simpleName' without capability"); |
| 1136 } | 1167 } |
| 1137 return _reflectedReturnType; | 1168 return _reflectedReturnType; |
| 1138 } | 1169 } |
| 1139 | 1170 |
| 1140 @override | 1171 @override |
| 1172 bool get hasDynamicReflectedReturnType => |
| 1173 _dynamicReflectedReturnType != null || hasReflectedReturnType; |
| 1174 |
| 1175 @override |
| 1176 Type get dynamicReflectedReturnType { |
| 1177 return _dynamicReflectedReturnType != null |
| 1178 ? _dynamicReflectedReturnType |
| 1179 : reflectedReturnType; |
| 1180 } |
| 1181 |
| 1182 @override |
| 1141 String get simpleName => isConstructor | 1183 String get simpleName => isConstructor |
| 1142 ? (_name == '' ? "${owner.simpleName}" : "${owner.simpleName}.$_name") | 1184 ? (_name == '' ? "${owner.simpleName}" : "${owner.simpleName}.$_name") |
| 1143 : _name; | 1185 : _name; |
| 1144 | 1186 |
| 1145 @override | 1187 @override |
| 1146 String get source => null; | 1188 String get source => null; |
| 1147 | 1189 |
| 1148 @override | 1190 @override |
| 1149 String toString() => "MethodMirrorImpl($qualifiedName)"; | 1191 String toString() => "MethodMirrorImpl($qualifiedName)"; |
| 1150 } | 1192 } |
| 1151 | 1193 |
| 1152 abstract class ImplicitAccessorMirrorImpl extends _DataCaching | 1194 abstract class ImplicitAccessorMirrorImpl extends _DataCaching |
| 1153 implements MethodMirror { | 1195 implements MethodMirror { |
| 1154 final ReflectableImpl _reflector; | 1196 final ReflectableImpl _reflector; |
| 1155 final int _variableMirrorIndex; | 1197 final int _variableMirrorIndex; |
| 1156 final Type _reflectedType; | 1198 final Type _reflectedType; |
| 1199 final Type _dynamicReflectedType; |
| 1157 | 1200 |
| 1158 /// Index of this [ImplicitAccessorMirrorImpl] in `_data.memberMirrors`. | 1201 /// Index of this [ImplicitAccessorMirrorImpl] in `_data.memberMirrors`. |
| 1159 final int _selfIndex; | 1202 final int _selfIndex; |
| 1160 | 1203 |
| 1161 VariableMirrorImpl get _variableMirror => | 1204 VariableMirrorImpl get _variableMirror => |
| 1162 _data.memberMirrors[_variableMirrorIndex]; | 1205 _data.memberMirrors[_variableMirrorIndex]; |
| 1163 | 1206 |
| 1164 ImplicitAccessorMirrorImpl(this._reflector, this._variableMirrorIndex, | 1207 ImplicitAccessorMirrorImpl(this._reflector, this._variableMirrorIndex, |
| 1165 this._reflectedType, this._selfIndex); | 1208 this._reflectedType, this._dynamicReflectedType, this._selfIndex); |
| 1166 | 1209 |
| 1167 int get kind => constants.kindFromEncoding(_variableMirror._descriptor); | 1210 int get kind => constants.kindFromEncoding(_variableMirror._descriptor); |
| 1168 | 1211 |
| 1169 DeclarationMirror get owner => _variableMirror.owner; | 1212 DeclarationMirror get owner => _variableMirror.owner; |
| 1170 | 1213 |
| 1171 @override | 1214 @override |
| 1172 String get constructorName => ""; | 1215 String get constructorName => ""; |
| 1173 | 1216 |
| 1174 @override | 1217 @override |
| 1175 bool get isAbstract => false; | 1218 bool get isAbstract => false; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1217 @override | 1260 @override |
| 1218 TypeMirror get returnType => _variableMirror.type; | 1261 TypeMirror get returnType => _variableMirror.type; |
| 1219 | 1262 |
| 1220 @override | 1263 @override |
| 1221 bool get hasReflectedReturnType => _variableMirror.hasReflectedType; | 1264 bool get hasReflectedReturnType => _variableMirror.hasReflectedType; |
| 1222 | 1265 |
| 1223 @override | 1266 @override |
| 1224 Type get reflectedReturnType => _variableMirror.reflectedType; | 1267 Type get reflectedReturnType => _variableMirror.reflectedType; |
| 1225 | 1268 |
| 1226 @override | 1269 @override |
| 1270 bool get hasDynamicReflectedReturnType => |
| 1271 _variableMirror.hasDynamicReflectedType; |
| 1272 |
| 1273 @override |
| 1274 Type get dynamicReflectedReturnType => _variableMirror.dynamicReflectedType; |
| 1275 |
| 1276 @override |
| 1227 String get source => null; | 1277 String get source => null; |
| 1228 } | 1278 } |
| 1229 | 1279 |
| 1230 class ImplicitGetterMirrorImpl extends ImplicitAccessorMirrorImpl { | 1280 class ImplicitGetterMirrorImpl extends ImplicitAccessorMirrorImpl { |
| 1231 ImplicitGetterMirrorImpl(ReflectableImpl reflector, int variableMirrorIndex, | 1281 ImplicitGetterMirrorImpl(ReflectableImpl reflector, int variableMirrorIndex, |
| 1232 Type reflectedType, int selfIndex) | 1282 Type reflectedType, Type dynamicReflectedType, int selfIndex) |
| 1233 : super(reflector, variableMirrorIndex, reflectedType, selfIndex); | 1283 : super(reflector, variableMirrorIndex, reflectedType, |
| 1284 dynamicReflectedType, selfIndex); |
| 1234 | 1285 |
| 1235 @override | 1286 @override |
| 1236 bool get isGetter => true; | 1287 bool get isGetter => true; |
| 1237 | 1288 |
| 1238 @override | 1289 @override |
| 1239 bool get isSetter => false; | 1290 bool get isSetter => false; |
| 1240 | 1291 |
| 1241 @override | 1292 @override |
| 1242 List<ParameterMirror> get parameters => <ParameterMirror>[]; | 1293 List<ParameterMirror> get parameters => <ParameterMirror>[]; |
| 1243 | 1294 |
| 1244 @override | 1295 @override |
| 1245 String get qualifiedName => _variableMirror.qualifiedName; | 1296 String get qualifiedName => _variableMirror.qualifiedName; |
| 1246 | 1297 |
| 1247 @override | 1298 @override |
| 1248 String get simpleName => _variableMirror.simpleName; | 1299 String get simpleName => _variableMirror.simpleName; |
| 1249 | 1300 |
| 1250 @override | 1301 @override |
| 1251 String toString() => "ImplicitGetterMirrorImpl($qualifiedName)"; | 1302 String toString() => "ImplicitGetterMirrorImpl($qualifiedName)"; |
| 1252 } | 1303 } |
| 1253 | 1304 |
| 1254 class ImplicitSetterMirrorImpl extends ImplicitAccessorMirrorImpl { | 1305 class ImplicitSetterMirrorImpl extends ImplicitAccessorMirrorImpl { |
| 1255 ImplicitSetterMirrorImpl(ReflectableImpl reflector, int variableMirrorIndex, | 1306 ImplicitSetterMirrorImpl(ReflectableImpl reflector, int variableMirrorIndex, |
| 1256 Type reflectedType, int selfIndex) | 1307 Type reflectedType, Type dynamicReflectedType, int selfIndex) |
| 1257 : super(reflector, variableMirrorIndex, reflectedType, selfIndex); | 1308 : super(reflector, variableMirrorIndex, reflectedType, |
| 1309 dynamicReflectedType, selfIndex); |
| 1258 | 1310 |
| 1259 @override | 1311 @override |
| 1260 bool get isGetter => false; | 1312 bool get isGetter => false; |
| 1261 | 1313 |
| 1262 @override | 1314 @override |
| 1263 bool get isSetter => true; | 1315 bool get isSetter => true; |
| 1264 | 1316 |
| 1265 int get _parameterDescriptor { | 1317 int get _parameterDescriptor { |
| 1266 int descriptor = constants.parameter; | 1318 int descriptor = constants.parameter; |
| 1267 if (_variableMirror.isStatic) descriptor |= constants.staticAttribute; | 1319 if (_variableMirror.isStatic) descriptor |= constants.staticAttribute; |
| 1268 if (_variableMirror.isPrivate) descriptor |= constants.privateAttribute; | 1320 if (_variableMirror.isPrivate) descriptor |= constants.privateAttribute; |
| 1269 descriptor |= constants.syntheticAttribute; | 1321 descriptor |= constants.syntheticAttribute; |
| 1270 if (_variableMirror._isDynamic) descriptor |= constants.dynamicAttribute; | 1322 if (_variableMirror._isDynamic) descriptor |= constants.dynamicAttribute; |
| 1271 if (_variableMirror._isClassType) descriptor |= | 1323 if (_variableMirror._isClassType) descriptor |= |
| 1272 constants.classTypeAttribute; | 1324 constants.classTypeAttribute; |
| 1273 return descriptor; | 1325 return descriptor; |
| 1274 } | 1326 } |
| 1275 | 1327 |
| 1276 @override | 1328 @override |
| 1277 List<ParameterMirror> get parameters { | 1329 List<ParameterMirror> get parameters { |
| 1278 return <ParameterMirror>[ | 1330 return <ParameterMirror>[ |
| 1279 new ParameterMirrorImpl( | 1331 new ParameterMirrorImpl( |
| 1280 _variableMirror.simpleName, | 1332 _variableMirror.simpleName, |
| 1281 _parameterDescriptor, | 1333 _parameterDescriptor, |
| 1282 _selfIndex, | 1334 _selfIndex, |
| 1283 _variableMirror._reflector, | 1335 _variableMirror._reflector, |
| 1284 _variableMirror._classMirrorIndex, | 1336 _variableMirror._classMirrorIndex, |
| 1285 _variableMirror._reflectedType, | 1337 _variableMirror._reflectedType, |
| 1338 _variableMirror._dynamicReflectedType, |
| 1286 <Object>[], | 1339 <Object>[], |
| 1287 null) | 1340 null) |
| 1288 ]; | 1341 ]; |
| 1289 } | 1342 } |
| 1290 | 1343 |
| 1291 @override | 1344 @override |
| 1292 String get qualifiedName => "${_variableMirror.qualifiedName}="; | 1345 String get qualifiedName => "${_variableMirror.qualifiedName}="; |
| 1293 | 1346 |
| 1294 @override | 1347 @override |
| 1295 String get simpleName => "${_variableMirror.simpleName}="; | 1348 String get simpleName => "${_variableMirror.simpleName}="; |
| 1296 | 1349 |
| 1297 @override | 1350 @override |
| 1298 String toString() => "ImplicitSetterMirrorImpl($qualifiedName)"; | 1351 String toString() => "ImplicitSetterMirrorImpl($qualifiedName)"; |
| 1299 } | 1352 } |
| 1300 | 1353 |
| 1301 abstract class VariableMirrorBase extends _DataCaching | 1354 abstract class VariableMirrorBase extends _DataCaching |
| 1302 implements VariableMirror { | 1355 implements VariableMirror { |
| 1303 final String _name; | 1356 final String _name; |
| 1304 final int _descriptor; | 1357 final int _descriptor; |
| 1305 final int _ownerIndex; | 1358 final int _ownerIndex; |
| 1306 final ReflectableImpl _reflector; | 1359 final ReflectableImpl _reflector; |
| 1307 final int _classMirrorIndex; | 1360 final int _classMirrorIndex; |
| 1308 final Type _reflectedType; | 1361 final Type _reflectedType; |
| 1362 final Type _dynamicReflectedType; |
| 1309 final List<Object> _metadata; | 1363 final List<Object> _metadata; |
| 1310 | 1364 |
| 1311 VariableMirrorBase( | 1365 VariableMirrorBase( |
| 1312 this._name, | 1366 this._name, |
| 1313 this._descriptor, | 1367 this._descriptor, |
| 1314 this._ownerIndex, | 1368 this._ownerIndex, |
| 1315 this._reflector, | 1369 this._reflector, |
| 1316 this._classMirrorIndex, | 1370 this._classMirrorIndex, |
| 1317 this._reflectedType, | 1371 this._reflectedType, |
| 1372 this._dynamicReflectedType, |
| 1318 this._metadata); | 1373 this._metadata); |
| 1319 | 1374 |
| 1320 int get kind => constants.kindFromEncoding(_descriptor); | 1375 int get kind => constants.kindFromEncoding(_descriptor); |
| 1321 | 1376 |
| 1322 @override | 1377 @override |
| 1323 bool get isPrivate => (_descriptor & constants.privateAttribute != 0); | 1378 bool get isPrivate => (_descriptor & constants.privateAttribute != 0); |
| 1324 | 1379 |
| 1325 @override | 1380 @override |
| 1326 bool get isTopLevel => (_descriptor & constants.topLevelAttribute != 0); | 1381 bool get isTopLevel => (_descriptor & constants.topLevelAttribute != 0); |
| 1327 | 1382 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1375 | 1430 |
| 1376 @override | 1431 @override |
| 1377 Type get reflectedType { | 1432 Type get reflectedType { |
| 1378 if (_reflectedType == null) { | 1433 if (_reflectedType == null) { |
| 1379 throw new NoSuchCapabilityError( | 1434 throw new NoSuchCapabilityError( |
| 1380 "Attempt to get reflectedType without capability (of '$_name')"); | 1435 "Attempt to get reflectedType without capability (of '$_name')"); |
| 1381 } | 1436 } |
| 1382 return _reflectedType; | 1437 return _reflectedType; |
| 1383 } | 1438 } |
| 1384 | 1439 |
| 1440 @override |
| 1441 bool get hasDynamicReflectedType => |
| 1442 _dynamicReflectedType != null || hasReflectedType; |
| 1443 |
| 1444 @override |
| 1445 Type get dynamicReflectedType => |
| 1446 _dynamicReflectedType != null ? _dynamicReflectedType : reflectedType; |
| 1447 |
| 1385 // Note that [operator ==] is redefined slightly differently in the two | 1448 // Note that [operator ==] is redefined slightly differently in the two |
| 1386 // subtypes of this class, but they share this [hashCode] implementation. | 1449 // subtypes of this class, but they share this [hashCode] implementation. |
| 1387 @override | 1450 @override |
| 1388 int get hashCode => simpleName.hashCode ^ owner.hashCode; | 1451 int get hashCode => simpleName.hashCode ^ owner.hashCode; |
| 1389 } | 1452 } |
| 1390 | 1453 |
| 1391 class VariableMirrorImpl extends VariableMirrorBase { | 1454 class VariableMirrorImpl extends VariableMirrorBase { |
| 1392 @override | 1455 @override |
| 1393 DeclarationMirror get owner { | 1456 DeclarationMirror get owner { |
| 1394 if (_ownerIndex == NO_CAPABILITY_INDEX) { | 1457 if (_ownerIndex == NO_CAPABILITY_INDEX) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1407 @override | 1470 @override |
| 1408 bool get isConst => (_descriptor & constants.constAttribute != 0); | 1471 bool get isConst => (_descriptor & constants.constAttribute != 0); |
| 1409 | 1472 |
| 1410 VariableMirrorImpl( | 1473 VariableMirrorImpl( |
| 1411 String name, | 1474 String name, |
| 1412 int descriptor, | 1475 int descriptor, |
| 1413 int ownerIndex, | 1476 int ownerIndex, |
| 1414 ReflectableImpl reflectable, | 1477 ReflectableImpl reflectable, |
| 1415 int classMirrorIndex, | 1478 int classMirrorIndex, |
| 1416 Type reflectedType, | 1479 Type reflectedType, |
| 1480 Type dynamicReflectedType, |
| 1417 List<Object> metadata) | 1481 List<Object> metadata) |
| 1418 : super(name, descriptor, ownerIndex, reflectable, classMirrorIndex, | 1482 : super(name, descriptor, ownerIndex, reflectable, classMirrorIndex, |
| 1419 reflectedType, metadata); | 1483 reflectedType, dynamicReflectedType, metadata); |
| 1420 | 1484 |
| 1421 // Note that the corresponding implementation of [hashCode] is inherited from | 1485 // Note that the corresponding implementation of [hashCode] is inherited from |
| 1422 // [VariableMirrorBase]. | 1486 // [VariableMirrorBase]. |
| 1423 @override | 1487 @override |
| 1424 bool operator ==(other) => other is VariableMirrorImpl && | 1488 bool operator ==(other) => other is VariableMirrorImpl && |
| 1425 other.simpleName == simpleName && | 1489 other.simpleName == simpleName && |
| 1426 other.owner == owner; | 1490 other.owner == owner; |
| 1427 } | 1491 } |
| 1428 | 1492 |
| 1429 class ParameterMirrorImpl extends VariableMirrorBase | 1493 class ParameterMirrorImpl extends VariableMirrorBase |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1450 @override | 1514 @override |
| 1451 MethodMirror get owner => _data.memberMirrors[_ownerIndex]; | 1515 MethodMirror get owner => _data.memberMirrors[_ownerIndex]; |
| 1452 | 1516 |
| 1453 ParameterMirrorImpl( | 1517 ParameterMirrorImpl( |
| 1454 String name, | 1518 String name, |
| 1455 int descriptor, | 1519 int descriptor, |
| 1456 int ownerIndex, | 1520 int ownerIndex, |
| 1457 ReflectableImpl reflectable, | 1521 ReflectableImpl reflectable, |
| 1458 int classMirrorIndex, | 1522 int classMirrorIndex, |
| 1459 Type reflectedType, | 1523 Type reflectedType, |
| 1524 Type dynamicReflectedType, |
| 1460 List<Object> metadata, | 1525 List<Object> metadata, |
| 1461 this.defaultValue) | 1526 this.defaultValue) |
| 1462 : super(name, descriptor, ownerIndex, reflectable, classMirrorIndex, | 1527 : super(name, descriptor, ownerIndex, reflectable, classMirrorIndex, |
| 1463 reflectedType, metadata); | 1528 reflectedType, dynamicReflectedType, metadata); |
| 1464 | 1529 |
| 1465 // Note that the corresponding implementation of [hashCode] is inherited from | 1530 // Note that the corresponding implementation of [hashCode] is inherited from |
| 1466 // [VariableMirrorBase]. | 1531 // [VariableMirrorBase]. |
| 1467 @override | 1532 @override |
| 1468 bool operator ==(other) => other is ParameterMirrorImpl && | 1533 bool operator ==(other) => other is ParameterMirrorImpl && |
| 1469 other.simpleName == simpleName && | 1534 other.simpleName == simpleName && |
| 1470 other.owner == owner; | 1535 other.owner == owner; |
| 1471 } | 1536 } |
| 1472 | 1537 |
| 1473 class DynamicMirrorImpl implements TypeMirror { | 1538 class DynamicMirrorImpl implements TypeMirror { |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1531 | 1596 |
| 1532 // TODO(eernst) implement: test what 'dart:mirrors' does, then do the same. | 1597 // TODO(eernst) implement: test what 'dart:mirrors' does, then do the same. |
| 1533 @override | 1598 @override |
| 1534 bool get isOriginalDeclaration => true; | 1599 bool get isOriginalDeclaration => true; |
| 1535 | 1600 |
| 1536 @override | 1601 @override |
| 1537 bool get hasReflectedType => false; | 1602 bool get hasReflectedType => false; |
| 1538 | 1603 |
| 1539 @override | 1604 @override |
| 1540 Type get reflectedType => | 1605 Type get reflectedType => |
| 1541 throw new UnsupportedError("Attempt to get the reflected type of 'void'"); | 1606 throw new UnsupportedError("Attempt to get the reflected type of `void`"); |
| 1542 | 1607 |
| 1543 @override | 1608 @override |
| 1544 String get simpleName => "void"; | 1609 String get simpleName => "void"; |
| 1545 | 1610 |
| 1546 // TODO(eernst) implement: do as in 'dart:mirrors'. | 1611 // TODO(eernst) implement: do as in 'dart:mirrors'. |
| 1547 @override | 1612 @override |
| 1548 List<TypeVariableMirror> get typeVariables => <TypeVariableMirror>[]; | 1613 List<TypeVariableMirror> get typeVariables => <TypeVariableMirror>[]; |
| 1549 | 1614 |
| 1550 @override | 1615 @override |
| 1551 List<TypeMirror> get typeArguments => <TypeMirror>[]; | 1616 List<TypeMirror> get typeArguments => <TypeMirror>[]; |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1664 const FakeType(this.description); | 1729 const FakeType(this.description); |
| 1665 | 1730 |
| 1666 final String description; | 1731 final String description; |
| 1667 | 1732 |
| 1668 String toString() => "Type($description)"; | 1733 String toString() => "Type($description)"; |
| 1669 } | 1734 } |
| 1670 | 1735 |
| 1671 bool _isSetterName(String name) => name.endsWith("="); | 1736 bool _isSetterName(String name) => name.endsWith("="); |
| 1672 | 1737 |
| 1673 String _getterNameToSetterName(String name) => name + "="; | 1738 String _getterNameToSetterName(String name) => name + "="; |
| OLD | NEW |