| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 /// Implementation of the element model used for deserialiation. | 5 /// Implementation of the element model used for deserialiation. |
| 6 /// | 6 /// |
| 7 /// These classes are created by [ElementDeserializer] triggered by the | 7 /// These classes are created by [ElementDeserializer] triggered by the |
| 8 /// [Deserializer]. | 8 /// [Deserializer]. |
| 9 | 9 |
| 10 library dart2js.serialization.modelz; | 10 library dart2js.serialization.modelz; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 return _unsupported('enclosingClassOrCompilationUnit'); | 73 return _unsupported('enclosingClassOrCompilationUnit'); |
| 74 } | 74 } |
| 75 | 75 |
| 76 @override | 76 @override |
| 77 LibraryElement get implementationLibrary => library; | 77 LibraryElement get implementationLibrary => library; |
| 78 | 78 |
| 79 @override | 79 @override |
| 80 bool get isAbstract => false; | 80 bool get isAbstract => false; |
| 81 | 81 |
| 82 @override | 82 @override |
| 83 bool get isAssignable => _unsupported('isAssignable'); | |
| 84 | |
| 85 @override | |
| 86 bool get isClassMember => false; | 83 bool get isClassMember => false; |
| 87 | 84 |
| 88 @override | 85 @override |
| 89 bool get isClosure => _unsupported('isClosure'); | 86 bool get isClosure => _unsupported('isClosure'); |
| 90 | 87 |
| 91 @override | 88 @override |
| 92 bool get isConst => _unsupported('isConst'); | 89 bool get isConst => _unsupported('isConst'); |
| 93 | 90 |
| 94 @override | 91 @override |
| 95 bool get isDeferredLoaderGetter => false; | 92 bool get isDeferredLoaderGetter => false; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 117 bool get isSynthesized => true; | 114 bool get isSynthesized => true; |
| 118 | 115 |
| 119 @override | 116 @override |
| 120 bool get isTopLevel => false; | 117 bool get isTopLevel => false; |
| 121 | 118 |
| 122 // TODO(johnniwinther): Support metadata. | 119 // TODO(johnniwinther): Support metadata. |
| 123 @override | 120 @override |
| 124 Iterable<MetadataAnnotation> get metadata => const <MetadataAnnotation>[]; | 121 Iterable<MetadataAnnotation> get metadata => const <MetadataAnnotation>[]; |
| 125 | 122 |
| 126 @override | 123 @override |
| 127 Element get outermostEnclosingMemberOrTopLevel { | |
| 128 return _unsupported('outermostEnclosingMemberOrTopLevel'); | |
| 129 } | |
| 130 | |
| 131 @override | |
| 132 Token get position => _unsupported('position'); | 124 Token get position => _unsupported('position'); |
| 133 } | 125 } |
| 134 | 126 |
| 135 abstract class DeserializedElementZ extends ElementZ { | 127 abstract class DeserializedElementZ extends ElementZ { |
| 136 ObjectDecoder _decoder; | 128 ObjectDecoder _decoder; |
| 137 | 129 |
| 138 DeserializedElementZ(this._decoder); | 130 DeserializedElementZ(this._decoder); |
| 139 | 131 |
| 140 @override | 132 @override |
| 141 String get name => _decoder.getString(Key.NAME); | 133 String get name => _decoder.getString(Key.NAME); |
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 FunctionSignature get functionSignature { | 655 FunctionSignature get functionSignature { |
| 664 if (_functionSignature == null) { | 656 if (_functionSignature == null) { |
| 665 List<Element> requiredParameters = []; | 657 List<Element> requiredParameters = []; |
| 666 List<Element> optionalParameters = []; | 658 List<Element> optionalParameters = []; |
| 667 List orderedOptionalParameters = []; | 659 List orderedOptionalParameters = []; |
| 668 int requiredParameterCount = 0; | 660 int requiredParameterCount = 0; |
| 669 int optionalParameterCount = 0; | 661 int optionalParameterCount = 0; |
| 670 bool optionalParametersAreNamed = false; | 662 bool optionalParametersAreNamed = false; |
| 671 List<DartType> parameterTypes = <DartType>[]; | 663 List<DartType> parameterTypes = <DartType>[]; |
| 672 List<DartType> optionalParameterTypes = <DartType>[]; | 664 List<DartType> optionalParameterTypes = <DartType>[]; |
| 673 List<String> namedParameters = <String>[]; | |
| 674 List<DartType> namedParameterTypes = <DartType>[]; | |
| 675 for (ParameterElement parameter in parameters) { | 665 for (ParameterElement parameter in parameters) { |
| 676 if (parameter.isOptional) { | 666 if (parameter.isOptional) { |
| 677 optionalParameterCount++; | 667 optionalParameterCount++; |
| 678 requiredParameters.add(parameter); | 668 optionalParameters.add(parameter); |
| 679 orderedOptionalParameters.add(parameter); | 669 orderedOptionalParameters.add(parameter); |
| 680 if (parameter.isNamed) { | 670 if (parameter.isNamed) { |
| 681 optionalParametersAreNamed = true; | 671 optionalParametersAreNamed = true; |
| 682 namedParameters.add(parameter.name); | |
| 683 namedParameterTypes.add(parameter.type); | |
| 684 } else { | 672 } else { |
| 685 optionalParameterTypes.add(parameter.type); | 673 optionalParameterTypes.add(parameter.type); |
| 686 } | 674 } |
| 687 } else { | 675 } else { |
| 688 requiredParameterCount++; | 676 requiredParameterCount++; |
| 689 optionalParameters.add(parameter); | 677 requiredParameters.add(parameter); |
| 690 parameterTypes.add(parameter.type); | 678 parameterTypes.add(parameter.type); |
| 691 } | 679 } |
| 692 } | 680 } |
| 681 List<String> namedParameters = const <String>[]; |
| 682 List<DartType> namedParameterTypes = const <DartType>[]; |
| 693 if (optionalParametersAreNamed) { | 683 if (optionalParametersAreNamed) { |
| 684 namedParameters = <String>[]; |
| 685 namedParameterTypes = <DartType>[]; |
| 694 orderedOptionalParameters.sort((Element a, Element b) { | 686 orderedOptionalParameters.sort((Element a, Element b) { |
| 695 return a.name.compareTo(b.name); | 687 return a.name.compareTo(b.name); |
| 696 }); | 688 }); |
| 689 for (ParameterElement parameter in orderedOptionalParameters) { |
| 690 namedParameters.add(parameter.name); |
| 691 namedParameterTypes.add(parameter.type); |
| 692 } |
| 697 } | 693 } |
| 698 | 694 |
| 699 FunctionType type = new FunctionType( | 695 FunctionType type = new FunctionType( |
| 700 this, | 696 this, |
| 701 _decoder.getType(Key.RETURN_TYPE), | 697 _decoder.getType(Key.RETURN_TYPE), |
| 702 parameterTypes, | 698 parameterTypes, |
| 703 optionalParameterTypes, | 699 optionalParameterTypes, |
| 704 namedParameters, | 700 namedParameters, |
| 705 namedParameterTypes); | 701 namedParameterTypes); |
| 706 _functionSignature = new FunctionSignatureX( | 702 _functionSignature = new FunctionSignatureX( |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1073 if (data == null) { | 1069 if (data == null) { |
| 1074 assert(isFromEnvironmentConstructor || isExternal); | 1070 assert(isFromEnvironmentConstructor || isExternal); |
| 1075 return null; | 1071 return null; |
| 1076 } | 1072 } |
| 1077 _constantConstructor = ConstantConstructorDeserializer.deserialize(data); | 1073 _constantConstructor = ConstantConstructorDeserializer.deserialize(data); |
| 1078 } | 1074 } |
| 1079 return _constantConstructor; | 1075 return _constantConstructor; |
| 1080 } | 1076 } |
| 1081 | 1077 |
| 1082 @override | 1078 @override |
| 1083 AsyncMarker get asyncMarker => _unsupported('asyncMarker'); | 1079 AsyncMarker get asyncMarker => AsyncMarker.SYNC; |
| 1084 | 1080 |
| 1085 @override | 1081 @override |
| 1086 InterfaceType computeEffectiveTargetType(InterfaceType newType) { | 1082 InterfaceType computeEffectiveTargetType(InterfaceType newType) { |
| 1087 return _unsupported('computeEffectiveTargetType'); | 1083 return _unsupported('computeEffectiveTargetType'); |
| 1088 } | 1084 } |
| 1089 | 1085 |
| 1090 @override | 1086 @override |
| 1091 ConstructorElement get definingConstructor { | 1087 ConstructorElement get definingConstructor { |
| 1092 return _unsupported('definingConstructor'); | 1088 return _unsupported('definingConstructor'); |
| 1093 } | 1089 } |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1337 | 1333 |
| 1338 @override | 1334 @override |
| 1339 ElementKind get kind => ElementKind.FUNCTION; | 1335 ElementKind get kind => ElementKind.FUNCTION; |
| 1340 | 1336 |
| 1341 @override | 1337 @override |
| 1342 accept(ElementVisitor visitor, arg) { | 1338 accept(ElementVisitor visitor, arg) { |
| 1343 return visitor.visitMethodElement(this, arg); | 1339 return visitor.visitMethodElement(this, arg); |
| 1344 } | 1340 } |
| 1345 | 1341 |
| 1346 @override | 1342 @override |
| 1343 AsyncMarker get asyncMarker { |
| 1344 return _decoder.getEnum(Key.ASYNC_MARKER, AsyncMarker.values); |
| 1345 } |
| 1346 |
| 1347 @override |
| 1347 bool get isOperator => _decoder.getBool(Key.IS_OPERATOR); | 1348 bool get isOperator => _decoder.getBool(Key.IS_OPERATOR); |
| 1348 } | 1349 } |
| 1349 | 1350 |
| 1350 class TopLevelFunctionElementZ extends FunctionElementZ | 1351 class TopLevelFunctionElementZ extends FunctionElementZ |
| 1351 with LibraryMemberMixin { | 1352 with LibraryMemberMixin { |
| 1352 TopLevelFunctionElementZ(ObjectDecoder decoder) : super(decoder); | 1353 TopLevelFunctionElementZ(ObjectDecoder decoder) : super(decoder); |
| 1353 } | 1354 } |
| 1354 | 1355 |
| 1355 class StaticFunctionElementZ extends FunctionElementZ | 1356 class StaticFunctionElementZ extends FunctionElementZ |
| 1356 with ClassMemberMixin, StaticMemberMixin { | 1357 with ClassMemberMixin, StaticMemberMixin { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 | 1432 |
| 1432 GetterElementZ(ObjectDecoder decoder) : super(decoder); | 1433 GetterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1433 | 1434 |
| 1434 @override | 1435 @override |
| 1435 ElementKind get kind => ElementKind.GETTER; | 1436 ElementKind get kind => ElementKind.GETTER; |
| 1436 | 1437 |
| 1437 @override | 1438 @override |
| 1438 accept(ElementVisitor visitor, arg) { | 1439 accept(ElementVisitor visitor, arg) { |
| 1439 return visitor.visitGetterElement(this, arg); | 1440 return visitor.visitGetterElement(this, arg); |
| 1440 } | 1441 } |
| 1442 |
| 1443 @override |
| 1444 AsyncMarker get asyncMarker => AsyncMarker.SYNC; |
| 1441 } | 1445 } |
| 1442 | 1446 |
| 1443 class TopLevelGetterElementZ extends GetterElementZ with LibraryMemberMixin { | 1447 class TopLevelGetterElementZ extends GetterElementZ with LibraryMemberMixin { |
| 1444 TopLevelGetterElementZ(ObjectDecoder decoder) : super(decoder); | 1448 TopLevelGetterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1445 } | 1449 } |
| 1446 | 1450 |
| 1447 class StaticGetterElementZ extends GetterElementZ | 1451 class StaticGetterElementZ extends GetterElementZ |
| 1448 with ClassMemberMixin, StaticMemberMixin { | 1452 with ClassMemberMixin, StaticMemberMixin { |
| 1449 StaticGetterElementZ(ObjectDecoder decoder) : super(decoder); | 1453 StaticGetterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1450 } | 1454 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1468 | 1472 |
| 1469 SetterElementZ(ObjectDecoder decoder) : super(decoder); | 1473 SetterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1470 | 1474 |
| 1471 @override | 1475 @override |
| 1472 ElementKind get kind => ElementKind.SETTER; | 1476 ElementKind get kind => ElementKind.SETTER; |
| 1473 | 1477 |
| 1474 @override | 1478 @override |
| 1475 accept(ElementVisitor visitor, arg) { | 1479 accept(ElementVisitor visitor, arg) { |
| 1476 return visitor.visitSetterElement(this, arg); | 1480 return visitor.visitSetterElement(this, arg); |
| 1477 } | 1481 } |
| 1482 |
| 1483 @override |
| 1484 AsyncMarker get asyncMarker => AsyncMarker.SYNC; |
| 1478 } | 1485 } |
| 1479 | 1486 |
| 1480 class TopLevelSetterElementZ extends SetterElementZ with LibraryMemberMixin { | 1487 class TopLevelSetterElementZ extends SetterElementZ with LibraryMemberMixin { |
| 1481 TopLevelSetterElementZ(ObjectDecoder decoder) : super(decoder); | 1488 TopLevelSetterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1482 } | 1489 } |
| 1483 | 1490 |
| 1484 class StaticSetterElementZ extends SetterElementZ | 1491 class StaticSetterElementZ extends SetterElementZ |
| 1485 with ClassMemberMixin, StaticMemberMixin { | 1492 with ClassMemberMixin, StaticMemberMixin { |
| 1486 StaticSetterElementZ(ObjectDecoder decoder) : super(decoder); | 1493 StaticSetterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1487 } | 1494 } |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1699 return _bound; | 1706 return _bound; |
| 1700 } | 1707 } |
| 1701 | 1708 |
| 1702 @override | 1709 @override |
| 1703 LibraryElement get library => typeDeclaration.library; | 1710 LibraryElement get library => typeDeclaration.library; |
| 1704 | 1711 |
| 1705 @override | 1712 @override |
| 1706 SourceSpan get sourcePosition => typeDeclaration.sourcePosition; | 1713 SourceSpan get sourcePosition => typeDeclaration.sourcePosition; |
| 1707 } | 1714 } |
| 1708 | 1715 |
| 1709 class ParameterElementZ extends DeserializedElementZ | 1716 abstract class ParameterElementZ extends DeserializedElementZ |
| 1710 with AnalyzableElementMixin, AstElementMixin, TypedElementMixin | 1717 with AnalyzableElementMixin, AstElementMixin, TypedElementMixin |
| 1711 implements ParameterElement { | 1718 implements ParameterElement { |
| 1712 FunctionElement _functionDeclaration; | 1719 FunctionElement _functionDeclaration; |
| 1713 ConstantExpression _constant; | 1720 ConstantExpression _constant; |
| 1714 DartType _type; | 1721 DartType _type; |
| 1715 | 1722 |
| 1716 ParameterElementZ(ObjectDecoder decoder) : super(decoder); | 1723 ParameterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1717 | 1724 |
| 1718 @override | 1725 @override |
| 1719 accept(ElementVisitor visitor, arg) { | 1726 bool get isFinal => _decoder.getBool(Key.IS_FINAL); |
| 1720 return visitor.visitParameterElement(this, arg); | 1727 |
| 1721 } | 1728 @override |
| 1729 bool get isConst => false; |
| 1722 | 1730 |
| 1723 @override | 1731 @override |
| 1724 ConstantExpression get constant { | 1732 ConstantExpression get constant { |
| 1725 if (isOptional) { | 1733 if (isOptional) { |
| 1726 if (_constant == null) { | 1734 if (_constant == null) { |
| 1727 _constant = _decoder.getConstant(Key.CONSTANT); | 1735 _constant = _decoder.getConstant(Key.CONSTANT); |
| 1728 } | 1736 } |
| 1729 return _constant; | 1737 return _constant; |
| 1730 } | 1738 } |
| 1731 return null; | 1739 return null; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1756 @override | 1764 @override |
| 1757 Expression get initializer => _unsupported('initializer'); | 1765 Expression get initializer => _unsupported('initializer'); |
| 1758 | 1766 |
| 1759 @override | 1767 @override |
| 1760 bool get isNamed => _decoder.getBool(Key.IS_NAMED); | 1768 bool get isNamed => _decoder.getBool(Key.IS_NAMED); |
| 1761 | 1769 |
| 1762 @override | 1770 @override |
| 1763 bool get isOptional => _decoder.getBool(Key.IS_OPTIONAL); | 1771 bool get isOptional => _decoder.getBool(Key.IS_OPTIONAL); |
| 1764 | 1772 |
| 1765 @override | 1773 @override |
| 1766 ElementKind get kind => ElementKind.PARAMETER; | |
| 1767 | |
| 1768 @override | |
| 1769 LibraryElement get library => executableContext.library; | 1774 LibraryElement get library => executableContext.library; |
| 1770 | 1775 |
| 1771 @override | 1776 @override |
| 1772 MemberElement get memberContext => executableContext.memberContext; | 1777 MemberElement get memberContext => executableContext.memberContext; |
| 1773 } | 1778 } |
| 1774 | 1779 |
| 1780 class LocalParameterElementZ extends ParameterElementZ |
| 1781 implements LocalParameterElement { |
| 1782 LocalParameterElementZ(ObjectDecoder decoder) : super(decoder); |
| 1783 |
| 1784 @override |
| 1785 accept(ElementVisitor visitor, arg) { |
| 1786 return visitor.visitParameterElement(this, arg); |
| 1787 } |
| 1788 |
| 1789 @override |
| 1790 ElementKind get kind => ElementKind.PARAMETER; |
| 1791 } |
| 1792 |
| 1775 class InitializingFormalElementZ extends ParameterElementZ | 1793 class InitializingFormalElementZ extends ParameterElementZ |
| 1776 implements InitializingFormalElement { | 1794 implements InitializingFormalElement { |
| 1777 FieldElement _fieldElement; | 1795 FieldElement _fieldElement; |
| 1778 | 1796 |
| 1779 InitializingFormalElementZ(ObjectDecoder decoder) : super(decoder); | 1797 InitializingFormalElementZ(ObjectDecoder decoder) : super(decoder); |
| 1780 | 1798 |
| 1781 @override | 1799 @override |
| 1782 FieldElement get fieldElement { | 1800 FieldElement get fieldElement { |
| 1783 if (_fieldElement == null) { | 1801 if (_fieldElement == null) { |
| 1784 _fieldElement = _decoder.getElement(Key.FIELD); | 1802 _fieldElement = _decoder.getElement(Key.FIELD); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1809 | 1827 |
| 1810 @override | 1828 @override |
| 1811 accept(ElementVisitor visitor, arg) { | 1829 accept(ElementVisitor visitor, arg) { |
| 1812 return visitor.visitLocalVariableElement(this, arg); | 1830 return visitor.visitLocalVariableElement(this, arg); |
| 1813 } | 1831 } |
| 1814 | 1832 |
| 1815 @override | 1833 @override |
| 1816 ElementKind get kind => ElementKind.VARIABLE; | 1834 ElementKind get kind => ElementKind.VARIABLE; |
| 1817 | 1835 |
| 1818 @override | 1836 @override |
| 1837 bool get isFinal => _decoder.getBool(Key.IS_FINAL); |
| 1838 |
| 1839 @override |
| 1819 bool get isConst { | 1840 bool get isConst { |
| 1820 if (_isConst == null) { | 1841 if (_isConst == null) { |
| 1821 _constant = _decoder.getConstant(Key.CONSTANT); | 1842 _constant = _decoder.getConstant(Key.CONSTANT, isOptional: true); |
| 1822 _isConst = _constant != null; | 1843 _isConst = _constant != null; |
| 1823 } | 1844 } |
| 1824 return _isConst; | 1845 return _isConst; |
| 1825 } | 1846 } |
| 1826 | 1847 |
| 1827 @override | 1848 @override |
| 1828 ConstantExpression get constant { | 1849 ConstantExpression get constant { |
| 1829 if (isConst) { | 1850 if (isConst) { |
| 1830 return _constant; | 1851 return _constant; |
| 1831 } | 1852 } |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1966 } | 1987 } |
| 1967 | 1988 |
| 1968 @override | 1989 @override |
| 1969 ElementKind get kind => ElementKind.PREFIX; | 1990 ElementKind get kind => ElementKind.PREFIX; |
| 1970 | 1991 |
| 1971 @override | 1992 @override |
| 1972 Element lookupLocalMember(String memberName) { | 1993 Element lookupLocalMember(String memberName) { |
| 1973 return _unsupported('lookupLocalMember'); | 1994 return _unsupported('lookupLocalMember'); |
| 1974 } | 1995 } |
| 1975 } | 1996 } |
| OLD | NEW |