Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(712)

Side by Side Diff: pkg/compiler/lib/src/serialization/modelz.dart

Issue 1888393002: Fix some issues in element serialization. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix comment. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/serialization/keys.dart ('k') | tests/compiler/dart2js/serialization_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698