| 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 #library('mirrors.dart2js'); | 5 #library('mirrors.dart2js'); |
| 6 | 6 |
| 7 #import('../../../lib/compiler/compiler.dart', prefix: 'diagnostics'); | 7 #import('../../../lib/compiler/compiler.dart', prefix: 'diagnostics'); |
| 8 #import('../../../lib/compiler/implementation/elements/elements.dart'); | 8 #import('../../../lib/compiler/implementation/elements/elements.dart'); |
| 9 #import('../../../lib/compiler/implementation/apiimpl.dart', prefix: 'api'); | 9 #import('../../../lib/compiler/implementation/apiimpl.dart', prefix: 'api'); |
| 10 #import('../../../lib/compiler/implementation/scanner/scannerlib.dart'); | 10 #import('../../../lib/compiler/implementation/scanner/scannerlib.dart'); |
| (...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 : super(system, element); | 587 : super(system, element); |
| 588 | 588 |
| 589 VariableElement get _variableElement() => _element; | 589 VariableElement get _variableElement() => _element; |
| 590 | 590 |
| 591 String get canonicalName() => simpleName; | 591 String get canonicalName() => simpleName; |
| 592 | 592 |
| 593 String get qualifiedName() => '${_method.qualifiedName}#${simpleName}'; | 593 String get qualifiedName() => '${_method.qualifiedName}#${simpleName}'; |
| 594 | 594 |
| 595 TypeMirror get type() => _convertTypeToTypeMirror(system, | 595 TypeMirror get type() => _convertTypeToTypeMirror(system, |
| 596 _variableElement.computeType(system.compiler), | 596 _variableElement.computeType(system.compiler), |
| 597 system.compiler.dynamicClass.computeType(system.compiler), | 597 system.compiler.types.dynamicType, |
| 598 _variableElement.variables.functionSignature); | 598 _variableElement.variables.functionSignature); |
| 599 | 599 |
| 600 String get defaultValue() { | 600 String get defaultValue() { |
| 601 if (hasDefaultValue) { | 601 if (hasDefaultValue) { |
| 602 SendSet expression = _variableElement.cachedNode.asSendSet(); | 602 SendSet expression = _variableElement.cachedNode.asSendSet(); |
| 603 return expression.arguments.head.unparse(); | 603 return expression.arguments.head.unparse(); |
| 604 } | 604 } |
| 605 return null; | 605 return null; |
| 606 } | 606 } |
| 607 bool get hasDefaultValue() { | 607 bool get hasDefaultValue() { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 623 : super._normal(system, method, element, isOptional); | 623 : super._normal(system, method, element, isOptional); |
| 624 | 624 |
| 625 FieldParameterElement get _fieldParameterElement() => _element; | 625 FieldParameterElement get _fieldParameterElement() => _element; |
| 626 | 626 |
| 627 TypeMirror get type() { | 627 TypeMirror get type() { |
| 628 if (_fieldParameterElement.variables.cachedNode.type !== null) { | 628 if (_fieldParameterElement.variables.cachedNode.type !== null) { |
| 629 return super.type; | 629 return super.type; |
| 630 } | 630 } |
| 631 return _convertTypeToTypeMirror(system, | 631 return _convertTypeToTypeMirror(system, |
| 632 _fieldParameterElement.fieldElement.computeType(system.compiler), | 632 _fieldParameterElement.fieldElement.computeType(system.compiler), |
| 633 system.compiler.dynamicClass.computeType(system.compiler), | 633 system.compiler.types.dynamicType, |
| 634 _variableElement.variables.functionSignature); | 634 _variableElement.variables.functionSignature); |
| 635 } | 635 } |
| 636 | 636 |
| 637 bool get isInitializingFormal() => true; | 637 bool get isInitializingFormal() => true; |
| 638 | 638 |
| 639 FieldMirror get initializedField() => new Dart2JsFieldMirror( | 639 FieldMirror get initializedField() => new Dart2JsFieldMirror( |
| 640 _method.surroundingDeclaration, _fieldParameterElement.fieldElement); | 640 _method.surroundingDeclaration, _fieldParameterElement.fieldElement); |
| 641 } | 641 } |
| 642 | 642 |
| 643 //------------------------------------------------------------------------------ | 643 //------------------------------------------------------------------------------ |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 return new Dart2JsInterfaceTypeMirror(system, _class.supertype); | 712 return new Dart2JsInterfaceTypeMirror(system, _class.supertype); |
| 713 } | 713 } |
| 714 return null; | 714 return null; |
| 715 } | 715 } |
| 716 | 716 |
| 717 Map<Object, InterfaceMirror> get interfaces() { | 717 Map<Object, InterfaceMirror> get interfaces() { |
| 718 var map = new Map<String, InterfaceMirror>(); | 718 var map = new Map<String, InterfaceMirror>(); |
| 719 Link<Type> link = _class.interfaces; | 719 Link<Type> link = _class.interfaces; |
| 720 while (!link.isEmpty()) { | 720 while (!link.isEmpty()) { |
| 721 var type = _convertTypeToTypeMirror(system, link.head, | 721 var type = _convertTypeToTypeMirror(system, link.head, |
| 722 system.compiler.dynamicClass.computeType(system.compiler)); | 722 system.compiler.types.dynamicType); |
| 723 map[type.canonicalName] = type; | 723 map[type.canonicalName] = type; |
| 724 link = link.tail; | 724 link = link.tail; |
| 725 } | 725 } |
| 726 return new ImmutableMapWrapper<Object, InterfaceMirror>(map); | 726 return new ImmutableMapWrapper<Object, InterfaceMirror>(map); |
| 727 } | 727 } |
| 728 | 728 |
| 729 bool get isClass() => !_class.isInterface(); | 729 bool get isClass() => !_class.isInterface(); |
| 730 | 730 |
| 731 bool get isInterface() => _class.isInterface(); | 731 bool get isInterface() => _class.isInterface(); |
| 732 | 732 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 bool get isFunction() => false; | 830 bool get isFunction() => false; |
| 831 | 831 |
| 832 List<TypeMirror> get typeArguments() { | 832 List<TypeMirror> get typeArguments() { |
| 833 throw new UnsupportedOperationException( | 833 throw new UnsupportedOperationException( |
| 834 'Declarations do not have type arguments'); | 834 'Declarations do not have type arguments'); |
| 835 } | 835 } |
| 836 | 836 |
| 837 List<TypeVariableMirror> get typeVariables() { | 837 List<TypeVariableMirror> get typeVariables() { |
| 838 if (_typeVariables == null) { | 838 if (_typeVariables == null) { |
| 839 _typeVariables = <TypeVariableMirror>[]; | 839 _typeVariables = <TypeVariableMirror>[]; |
| 840 // TODO(johnniwinther): Equip [Typedef] with a [typeParameters] map, just | 840 for (TypeVariableType typeVariable in _typedef.typeArguments) { |
| 841 // like [ClassElement]. | 841 _typeVariables.add( |
| 842 new Dart2JsTypeVariableMirror(system, typeVariable)); |
| 843 } |
| 842 } | 844 } |
| 843 return _typeVariables; | 845 return _typeVariables; |
| 844 } | 846 } |
| 845 | 847 |
| 846 TypeMirror get definition() { | 848 TypeMirror get definition() { |
| 847 if (_definition === null) { | 849 if (_definition === null) { |
| 848 // TODO(johnniwinther): Provide access to the functionSignature of the | 850 // TODO(johnniwinther): Should be [ensureResolved]. |
| 849 // aliased function definition. | 851 system.compiler.resolveTypedef(_typedef.element); |
| 852 _definition = _convertTypeToTypeMirror( |
| 853 system, |
| 854 _typedef.element.alias, |
| 855 system.compiler.types.dynamicType, |
| 856 _typedef.element.functionSignature); |
| 850 } | 857 } |
| 851 return _definition; | 858 return _definition; |
| 852 } | 859 } |
| 853 | 860 |
| 854 Map<Object, MemberMirror> get declaredMembers() => | 861 Map<Object, MemberMirror> get declaredMembers() => |
| 855 const <String, MemberMirror>{}; | 862 const <String, MemberMirror>{}; |
| 856 | 863 |
| 857 InterfaceMirror get declaration() => this; | 864 InterfaceMirror get declaration() => this; |
| 858 | 865 |
| 859 // TODO(johnniwinther): How should a typedef respond to these? | 866 // TODO(johnniwinther): How should a typedef respond to these? |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 bool get isPrivate() => declaration.isPrivate; | 1017 bool get isPrivate() => declaration.isPrivate; |
| 1011 | 1018 |
| 1012 bool get isDeclaration() => false; | 1019 bool get isDeclaration() => false; |
| 1013 | 1020 |
| 1014 List<TypeMirror> get typeArguments() { | 1021 List<TypeMirror> get typeArguments() { |
| 1015 if (_typeArguments == null) { | 1022 if (_typeArguments == null) { |
| 1016 _typeArguments = <TypeMirror>[]; | 1023 _typeArguments = <TypeMirror>[]; |
| 1017 Link<Type> type = _interfaceType.arguments; | 1024 Link<Type> type = _interfaceType.arguments; |
| 1018 while (type != null && type.head != null) { | 1025 while (type != null && type.head != null) { |
| 1019 _typeArguments.add(_convertTypeToTypeMirror(system, type.head, | 1026 _typeArguments.add(_convertTypeToTypeMirror(system, type.head, |
| 1020 system.compiler.dynamicClass.computeType(system.compiler))); | 1027 system.compiler.types.dynamicType)); |
| 1021 type = type.tail; | 1028 type = type.tail; |
| 1022 } | 1029 } |
| 1023 } | 1030 } |
| 1024 return _typeArguments; | 1031 return _typeArguments; |
| 1025 } | 1032 } |
| 1026 | 1033 |
| 1027 List<TypeVariableMirror> get typeVariables() => declaration.typeVariables; | 1034 List<TypeVariableMirror> get typeVariables() => declaration.typeVariables; |
| 1028 | 1035 |
| 1029 // TODO(johnniwinther): Substitute type arguments for type variables. | 1036 // TODO(johnniwinther): Substitute type arguments for type variables. |
| 1030 Map<Object, MethodMirror> get constructors() => declaration.constructors; | 1037 Map<Object, MethodMirror> get constructors() => declaration.constructors; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 | 1131 |
| 1125 List<TypeVariableMirror> get typeVariables() => declaration.typeVariables; | 1132 List<TypeVariableMirror> get typeVariables() => declaration.typeVariables; |
| 1126 | 1133 |
| 1127 Map<Object, MethodMirror> get constructors() => | 1134 Map<Object, MethodMirror> get constructors() => |
| 1128 <String, MethodMirror>{}; | 1135 <String, MethodMirror>{}; |
| 1129 | 1136 |
| 1130 InterfaceMirror get defaultType() => null; | 1137 InterfaceMirror get defaultType() => null; |
| 1131 | 1138 |
| 1132 TypeMirror get returnType() { | 1139 TypeMirror get returnType() { |
| 1133 return _convertTypeToTypeMirror(system, _functionType.returnType, | 1140 return _convertTypeToTypeMirror(system, _functionType.returnType, |
| 1134 system.compiler.dynamicClass.computeType(system.compiler)); | 1141 system.compiler.types.dynamicType); |
| 1135 } | 1142 } |
| 1136 | 1143 |
| 1137 List<ParameterMirror> get parameters() { | 1144 List<ParameterMirror> get parameters() { |
| 1138 if (_parameters === null) { | 1145 if (_parameters === null) { |
| 1139 _parameters = _parametersFromFunctionSignature(system, callMethod, | 1146 _parameters = _parametersFromFunctionSignature(system, callMethod, |
| 1140 _functionSignature); | 1147 _functionSignature); |
| 1141 } | 1148 } |
| 1142 return _parameters; | 1149 return _parameters; |
| 1143 } | 1150 } |
| 1144 } | 1151 } |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 bool get isStatic() => | 1286 bool get isStatic() => |
| 1280 _function.modifiers !== null && _function.modifiers.isStatic(); | 1287 _function.modifiers !== null && _function.modifiers.isStatic(); |
| 1281 | 1288 |
| 1282 List<ParameterMirror> get parameters() { | 1289 List<ParameterMirror> get parameters() { |
| 1283 return _parametersFromFunctionSignature(system, this, | 1290 return _parametersFromFunctionSignature(system, this, |
| 1284 _function.computeSignature(system.compiler)); | 1291 _function.computeSignature(system.compiler)); |
| 1285 } | 1292 } |
| 1286 | 1293 |
| 1287 TypeMirror get returnType() => _convertTypeToTypeMirror( | 1294 TypeMirror get returnType() => _convertTypeToTypeMirror( |
| 1288 system, _function.computeSignature(system.compiler).returnType, | 1295 system, _function.computeSignature(system.compiler).returnType, |
| 1289 system.compiler.dynamicClass.computeType(system.compiler)); | 1296 system.compiler.types.dynamicType); |
| 1290 | 1297 |
| 1291 bool get isConst() => _kind == Dart2JsMethodKind.CONST; | 1298 bool get isConst() => _kind == Dart2JsMethodKind.CONST; |
| 1292 | 1299 |
| 1293 bool get isFactory() => _kind == Dart2JsMethodKind.FACTORY; | 1300 bool get isFactory() => _kind == Dart2JsMethodKind.FACTORY; |
| 1294 | 1301 |
| 1295 String get constructorName() => _constructorName; | 1302 String get constructorName() => _constructorName; |
| 1296 | 1303 |
| 1297 bool get isGetter() => _kind == Dart2JsMethodKind.GETTER; | 1304 bool get isGetter() => _kind == Dart2JsMethodKind.GETTER; |
| 1298 | 1305 |
| 1299 bool get isSetter() => _kind == Dart2JsMethodKind.SETTER; | 1306 bool get isSetter() => _kind == Dart2JsMethodKind.SETTER; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1346 bool get isMethod() => false; | 1353 bool get isMethod() => false; |
| 1347 | 1354 |
| 1348 bool get isPrivate() => _isPrivate(simpleName); | 1355 bool get isPrivate() => _isPrivate(simpleName); |
| 1349 | 1356 |
| 1350 bool get isStatic() => _variable.modifiers.isStatic(); | 1357 bool get isStatic() => _variable.modifiers.isStatic(); |
| 1351 | 1358 |
| 1352 bool get isFinal() => _variable.modifiers.isFinal(); | 1359 bool get isFinal() => _variable.modifiers.isFinal(); |
| 1353 | 1360 |
| 1354 TypeMirror get type() => _convertTypeToTypeMirror(system, | 1361 TypeMirror get type() => _convertTypeToTypeMirror(system, |
| 1355 _variable.computeType(system.compiler), | 1362 _variable.computeType(system.compiler), |
| 1356 system.compiler.dynamicClass.computeType(system.compiler)); | 1363 system.compiler.types.dynamicType); |
| 1357 | 1364 |
| 1358 Location get location() { | 1365 Location get location() { |
| 1359 var script = _variable.getCompilationUnit().script; | 1366 var script = _variable.getCompilationUnit().script; |
| 1360 var node = _variable.variables.parseNode(_diagnosticListener); | 1367 var node = _variable.variables.parseNode(_diagnosticListener); |
| 1361 if (node !== null) { | 1368 if (node !== null) { |
| 1362 var span = system.compiler.spanFromNode(node, script.uri); | 1369 var span = system.compiler.spanFromNode(node, script.uri); |
| 1363 return new Dart2JsLocation(script, span); | 1370 return new Dart2JsLocation(script, span); |
| 1364 } else { | 1371 } else { |
| 1365 var span = system.compiler.spanFromElement(_variable); | 1372 var span = system.compiler.spanFromElement(_variable); |
| 1366 return new Dart2JsLocation(script, span); | 1373 return new Dart2JsLocation(script, span); |
| 1367 } | 1374 } |
| 1368 } | 1375 } |
| 1369 } | 1376 } |
| 1370 | 1377 |
| OLD | NEW |