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 |