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

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

Issue 1927963002: Support compilation of Hello World (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fixes Created 4 years, 7 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
« no previous file with comments | « pkg/compiler/lib/src/resolution/members.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 } else if (enclosingElement != null) { 57 } else if (enclosingElement != null) {
58 return enclosingElement.analyzableElement; 58 return enclosingElement.analyzableElement;
59 } 59 }
60 return null; 60 return null;
61 } 61 }
62 62
63 @override 63 @override
64 FunctionElement asFunctionElement() => null; 64 FunctionElement asFunctionElement() => null;
65 65
66 @override 66 @override
67 Scope buildScope() => _unsupported('analyzableElement'); 67 Scope buildScope() => _unsupported('buildScope');
68 68
69 @override 69 @override
70 ClassElement get enclosingClass => null; 70 ClassElement get enclosingClass => null;
71 71
72 @override 72 @override
73 Element get enclosingClassOrCompilationUnit {
74 return _unsupported('enclosingClassOrCompilationUnit');
75 }
76
77 @override
78 LibraryElement get implementationLibrary => library; 73 LibraryElement get implementationLibrary => library;
79 74
80 @override 75 @override
81 bool get isAbstract => false; 76 bool get isAbstract => false;
82 77
83 @override 78 @override
84 bool get isClassMember => false; 79 bool get isClassMember => false;
85 80
86 @override 81 @override
87 bool get isClosure => false; 82 bool get isClosure => false;
(...skipping 15 matching lines...) Expand all
103 98
104 @override 99 @override
105 bool get isMixinApplication => false; 100 bool get isMixinApplication => false;
106 101
107 @override 102 @override
108 bool get isOperator => false; 103 bool get isOperator => false;
109 104
110 @override 105 @override
111 bool get isStatic => false; 106 bool get isStatic => false;
112 107
113 // TODO(johnniwinther): Find a more precise semantics for this.
114 @override 108 @override
115 bool get isSynthesized => true; 109 bool get isSynthesized => false;
116 110
117 @override 111 @override
118 bool get isTopLevel => false; 112 bool get isTopLevel => false;
119 113
120 // TODO(johnniwinther): Support metadata. 114 // TODO(johnniwinther): Support metadata.
121 @override 115 @override
122 Iterable<MetadataAnnotation> get metadata => const <MetadataAnnotation>[]; 116 Iterable<MetadataAnnotation> get metadata => const <MetadataAnnotation>[];
123 117
124 @override 118 @override
125 Token get position => _unsupported('position'); 119 Token get position => _unsupported('position');
126 } 120 }
127 121
128 abstract class DeserializedElementZ extends ElementZ { 122 abstract class DeserializedElementZ extends ElementZ {
129 ObjectDecoder _decoder; 123 ObjectDecoder _decoder;
130 124
131 DeserializedElementZ(this._decoder); 125 DeserializedElementZ(this._decoder);
132 126
133 @override 127 @override
134 String get name => _decoder.getString(Key.NAME); 128 String get name => _decoder.getString(Key.NAME);
135 129
130 // TODO(johnniwinther): Should this be cached?
131 @override
132 int get sourceOffset => _decoder.getInt(Key.OFFSET, isOptional: true);
133
136 @override 134 @override
137 SourceSpan get sourcePosition { 135 SourceSpan get sourcePosition {
138 // TODO(johnniwinther): Should this be cached? 136 // TODO(johnniwinther): Should this be cached?
139 int offset = _decoder.getInt(Key.OFFSET, isOptional: true); 137 int offset = sourceOffset;
140 if (offset == null) return null; 138 if (offset == null) return null;
141 Uri uri = _decoder.getUri(Key.URI, isOptional: true); 139 Uri uri = _decoder.getUri(Key.URI, isOptional: true);
142 if (uri == null) { 140 if (uri == null) {
143 uri = compilationUnit.script.readableUri; 141 uri = compilationUnit.script.readableUri;
144 } 142 }
145 int length = _decoder.getInt(Key.LENGTH, isOptional: true); 143 int length = _decoder.getInt(Key.LENGTH, isOptional: true);
146 if (length == null) { 144 if (length == null) {
147 length = name.length; 145 length = name.length;
148 } 146 }
149 return new SourceSpan(uri, offset, offset + length); 147 return new SourceSpan(uri, offset, offset + length);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 319
322 @override 320 @override
323 CompilationUnitElement get compilationUnit { 321 CompilationUnitElement get compilationUnit {
324 return _canonicalElement.compilationUnit; 322 return _canonicalElement.compilationUnit;
325 } 323 }
326 324
327 @override 325 @override
328 Element get enclosingElement => _canonicalElement.enclosingElement; 326 Element get enclosingElement => _canonicalElement.enclosingElement;
329 327
330 @override 328 @override
329 int get sourceOffset => _canonicalElement.sourceOffset;
330
331 @override
331 SourceSpan get sourcePosition => _canonicalElement.sourcePosition; 332 SourceSpan get sourcePosition => _canonicalElement.sourcePosition;
332 333
333 @override 334 @override
334 ClassElement get enclosingClass => _canonicalElement.enclosingClass; 335 ClassElement get enclosingClass => _canonicalElement.enclosingClass;
335 } 336 }
336 337
337 class LibraryElementZ extends DeserializedElementZ 338 class LibraryElementZ extends DeserializedElementZ
338 with AnalyzableElementMixin, ContainerMixin, LibraryElementCommon 339 with AnalyzableElementMixin, ContainerMixin, LibraryElementCommon
339 implements LibraryElement { 340 implements LibraryElement {
340 Uri _canonicalUri; 341 Uri _canonicalUri;
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 762
762 abstract class ClassElementMixin implements ElementZ, ClassElement { 763 abstract class ClassElementMixin implements ElementZ, ClassElement {
763 InterfaceType _createType(List<DartType> typeArguments) { 764 InterfaceType _createType(List<DartType> typeArguments) {
764 return new InterfaceType(this, typeArguments); 765 return new InterfaceType(this, typeArguments);
765 } 766 }
766 767
767 @override 768 @override
768 ElementKind get kind => ElementKind.CLASS; 769 ElementKind get kind => ElementKind.CLASS;
769 770
770 @override 771 @override
771 void addBackendMember(Element element) => _unsupported('addBackendMember');
772
773 @override
774 void forEachBackendMember(void f(Element member)) {
775 _unsupported('forEachBackendMember');
776 }
777
778 @override
779 bool get hasBackendMembers => _unsupported('hasBackendMembers');
780
781 @override
782 bool get hasConstructor => _unsupported('hasConstructor'); 772 bool get hasConstructor => _unsupported('hasConstructor');
783 773
784 @override 774 @override
785 bool hasFieldShadowedBy(Element fieldMember) => _unsupported('');
786
787 @override
788 bool get hasIncompleteHierarchy => _unsupported('hasIncompleteHierarchy'); 775 bool get hasIncompleteHierarchy => _unsupported('hasIncompleteHierarchy');
789 776
790 @override 777 @override
791 bool get hasLocalScopeMembers => _unsupported('hasLocalScopeMembers'); 778 bool get hasLocalScopeMembers => _unsupported('hasLocalScopeMembers');
792 779
793 @override 780 @override
794 bool get isEnumClass => false; 781 bool get isEnumClass => false;
795 782
796 @override 783 @override
797 Element lookupBackendMember(String memberName) {
798 return _unsupported('lookupBackendMember');
799 }
800
801 @override
802 ConstructorElement lookupDefaultConstructor() { 784 ConstructorElement lookupDefaultConstructor() {
803 ConstructorElement constructor = lookupConstructor(""); 785 ConstructorElement constructor = lookupConstructor("");
804 if (constructor != null && constructor.parameters.isEmpty) { 786 if (constructor != null && constructor.parameters.isEmpty) {
805 return constructor; 787 return constructor;
806 } 788 }
807 return null; 789 return null;
808 } 790 }
809 791
810 @override 792 @override
811 void reverseBackendMembers() => _unsupported('reverseBackendMembers');
812
813 @override
814 ClassElement get superclass => supertype != null ? supertype.element : null; 793 ClassElement get superclass => supertype != null ? supertype.element : null;
815 794
816 @override 795 @override
817 void ensureResolved(Resolution resolution) { 796 void ensureResolved(Resolution resolution) {
818 resolution.registerClass(this); 797 resolution.registerClass(this);
819 } 798 }
820 } 799 }
821 800
822 class ClassElementZ extends DeserializedElementZ 801 class ClassElementZ extends DeserializedElementZ
823 with 802 with
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1028 @override 1007 @override
1029 bool get isProxy => false; 1008 bool get isProxy => false;
1030 1009
1031 @override 1010 @override
1032 LibraryElement get library => enclosingElement.library; 1011 LibraryElement get library => enclosingElement.library;
1033 1012
1034 @override 1013 @override
1035 InterfaceType get mixinType => interfaces.head; 1014 InterfaceType get mixinType => interfaces.head;
1036 1015
1037 @override 1016 @override
1017 int get sourceOffset => _subclass.sourceOffset;
1018
1019 @override
1038 SourceSpan get sourcePosition => _subclass.sourcePosition; 1020 SourceSpan get sourcePosition => _subclass.sourcePosition;
1039 } 1021 }
1040 1022
1041 class EnumClassElementZ extends ClassElementZ implements EnumClassElement { 1023 class EnumClassElementZ extends ClassElementZ implements EnumClassElement {
1042 List<FieldElement> _enumValues; 1024 List<FieldElement> _enumValues;
1043 1025
1044 EnumClassElementZ(ObjectDecoder decoder) : super(decoder); 1026 EnumClassElementZ(ObjectDecoder decoder) : super(decoder);
1045 1027
1046 @override 1028 @override
1047 bool get isEnumClass => true; 1029 bool get isEnumClass => true;
1048 1030
1049 @override 1031 @override
1050 List<FieldElement> get enumValues { 1032 List<FieldElement> get enumValues {
1051 if (_enumValues == null) { 1033 if (_enumValues == null) {
1052 _enumValues = _decoder.getElements(Key.FIELDS); 1034 _enumValues = _decoder.getElements(Key.FIELDS);
1053 } 1035 }
1054 return _enumValues; 1036 return _enumValues;
1055 } 1037 }
1056 } 1038 }
1057 1039
1058 abstract class ConstructorElementZ extends DeserializedElementZ 1040 abstract class ConstructorElementZ extends DeserializedElementZ
1059 with 1041 with
1060 AnalyzableElementMixin, 1042 AnalyzableElementMixin,
1061 AstElementMixin, 1043 AstElementMixin,
1062 ClassMemberMixin, 1044 ClassMemberMixin,
1063 FunctionTypedElementMixin, 1045 FunctionTypedElementMixin,
1064 ParametersMixin, 1046 ParametersMixin,
1065 TypedElementMixin, 1047 TypedElementMixin,
1066 MemberElementMixin 1048 MemberElementMixin
1067 implements ConstructorElement { 1049 implements
1050 ConstructorElement,
1051 // TODO(johnniwinther): Sort out whether a constructor is a method.
1052 MethodElement {
1068 ConstantConstructor _constantConstructor; 1053 ConstantConstructor _constantConstructor;
1069 ConstructorElement _effectiveTarget; 1054 ConstructorElement _effectiveTarget;
1070 1055
1071 ConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1056 ConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1072 1057
1073 accept(ElementVisitor visitor, arg) { 1058 accept(ElementVisitor visitor, arg) {
1074 return visitor.visitConstructorElement(this, arg); 1059 return visitor.visitConstructorElement(this, arg);
1075 } 1060 }
1076 1061
1077 @override 1062 @override
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1122 if (_effectiveTarget == null) { 1107 if (_effectiveTarget == null) {
1123 _effectiveTarget = this; 1108 _effectiveTarget = this;
1124 } 1109 }
1125 } 1110 }
1126 return _effectiveTarget; 1111 return _effectiveTarget;
1127 } 1112 }
1128 1113
1129 @override 1114 @override
1130 ConstructorElement get immediateRedirectionTarget => null; 1115 ConstructorElement get immediateRedirectionTarget => null;
1131 1116
1117 // TODO(johnniwinther): Should serialization support erroneous element
1118 // relations?
1132 @override 1119 @override
1133 bool get isEffectiveTargetMalformed { 1120 bool get isEffectiveTargetMalformed => false;
1134 return _unsupported('isEffectiveTargetMalformed');
1135 }
1136 1121
1137 @override 1122 @override
1138 bool get isCyclicRedirection => _unsupported('isCyclicRedirection'); 1123 bool get isCyclicRedirection => false;
1139 1124
1140 @override 1125 @override
1141 bool get isRedirectingFactory => false; 1126 bool get isRedirectingFactory => false;
1142 1127
1143 @override 1128 @override
1144 bool get isRedirectingGenerative => false; 1129 bool get isRedirectingGenerative => false;
1145 1130
1146 @override 1131 @override
1147 PrefixElement get redirectionDeferredPrefix => null; 1132 PrefixElement get redirectionDeferredPrefix => null;
1148 1133
1149 @override 1134 @override
1150 InterfaceType computeEffectiveTargetType(InterfaceType newType) => newType; 1135 InterfaceType computeEffectiveTargetType(InterfaceType newType) => newType;
1151 } 1136 }
1152 1137
1153 class GenerativeConstructorElementZ extends ConstructorElementZ { 1138 class GenerativeConstructorElementZ extends ConstructorElementZ {
1154 GenerativeConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1139 GenerativeConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1155 1140
1156 @override 1141 @override
1157 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR; 1142 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR;
1158 1143
1159 @override 1144 @override
1160 bool get isRedirectingGenerative => _decoder.getBool(Key.IS_REDIRECTING); 1145 bool get isRedirectingGenerative => _decoder.getBool(Key.IS_REDIRECTING);
1146
1147 @override
1148 bool get isSynthesized => definingConstructor != null;
1161 } 1149 }
1162 1150
1163 class FactoryConstructorElementZ extends ConstructorElementZ { 1151 class FactoryConstructorElementZ extends ConstructorElementZ {
1164 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1152 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1165 1153
1166 @override 1154 @override
1167 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR; 1155 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR;
1168 } 1156 }
1169 1157
1170 class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { 1158 class RedirectingFactoryConstructorElementZ extends ConstructorElementZ {
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 @override 1279 @override
1292 bool get isFromEnvironmentConstructor => false; 1280 bool get isFromEnvironmentConstructor => false;
1293 1281
1294 @override 1282 @override
1295 bool get isRedirectingFactory => false; 1283 bool get isRedirectingFactory => false;
1296 1284
1297 @override 1285 @override
1298 bool get isRedirectingGenerative => false; 1286 bool get isRedirectingGenerative => false;
1299 1287
1300 @override 1288 @override
1289 bool get isSynthesized => true;
1290
1291 @override
1301 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR; 1292 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR;
1302 1293
1303 @override 1294 @override
1304 LibraryElement get library => enclosingClass.library; 1295 LibraryElement get library => enclosingClass.library;
1305 1296
1306 @override 1297 @override
1307 MemberElement get memberContext => this; 1298 MemberElement get memberContext => this;
1308 1299
1309 @override 1300 @override
1310 Name get memberName => definingConstructor.memberName; 1301 Name get memberName => definingConstructor.memberName;
1311 1302
1312 @override 1303 @override
1313 String get name => definingConstructor.name; 1304 String get name => definingConstructor.name;
1314 1305
1315 @override 1306 @override
1316 List<FunctionElement> get nestedClosures => const <FunctionElement>[]; 1307 List<FunctionElement> get nestedClosures => const <FunctionElement>[];
1317 1308
1318 @override 1309 @override
1319 List<ParameterElement> get parameters { 1310 List<ParameterElement> get parameters {
1320 // TODO(johnniwinther): We need to create synthetic parameters that 1311 // TODO(johnniwinther): We need to create synthetic parameters that
1321 // substitute type variables. 1312 // substitute type variables.
1322 return definingConstructor.parameters; 1313 return definingConstructor.parameters;
1323 } 1314 }
1324 1315
1325 // TODO: implement redirectionDeferredPrefix 1316 // TODO: implement redirectionDeferredPrefix
1326 @override 1317 @override
1327 PrefixElement get redirectionDeferredPrefix => null; 1318 PrefixElement get redirectionDeferredPrefix => null;
1328 1319
1329 @override 1320 @override
1321 int get sourceOffset => enclosingClass.sourceOffset;
1322
1323 @override
1330 SourceSpan get sourcePosition => enclosingClass.sourcePosition; 1324 SourceSpan get sourcePosition => enclosingClass.sourcePosition;
1331 1325
1332 @override 1326 @override
1333 FunctionType get type { 1327 FunctionType get type {
1334 // TODO(johnniwinther): Ensure that the function type substitutes type 1328 // TODO(johnniwinther): Ensure that the function type substitutes type
1335 // variables correctly. 1329 // variables correctly.
1336 return definingConstructor.type; 1330 return definingConstructor.type;
1337 } 1331 }
1338 } 1332 }
1339 1333
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
1799 DartType get bound { 1793 DartType get bound {
1800 assert(invariant(this, _bound != null, 1794 assert(invariant(this, _bound != null,
1801 message: "Type variable bound has not been set on $this.")); 1795 message: "Type variable bound has not been set on $this."));
1802 return _bound; 1796 return _bound;
1803 } 1797 }
1804 1798
1805 @override 1799 @override
1806 LibraryElement get library => typeDeclaration.library; 1800 LibraryElement get library => typeDeclaration.library;
1807 1801
1808 @override 1802 @override
1803 int get sourceOffset => typeDeclaration.sourceOffset;
1804
1805 @override
1809 SourceSpan get sourcePosition => typeDeclaration.sourcePosition; 1806 SourceSpan get sourcePosition => typeDeclaration.sourcePosition;
1810 } 1807 }
1811 1808
1812 abstract class ParameterElementZ extends DeserializedElementZ 1809 abstract class ParameterElementZ extends DeserializedElementZ
1813 with AnalyzableElementMixin, AstElementMixin, TypedElementMixin 1810 with AnalyzableElementMixin, AstElementMixin, TypedElementMixin
1814 implements ParameterElement { 1811 implements ParameterElement {
1815 FunctionElement _functionDeclaration; 1812 FunctionElement _functionDeclaration;
1816 ConstantExpression _constant; 1813 ConstantExpression _constant;
1817 DartType _type; 1814 DartType _type;
1818 1815
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2083 } 2080 }
2084 2081
2085 @override 2082 @override
2086 ElementKind get kind => ElementKind.PREFIX; 2083 ElementKind get kind => ElementKind.PREFIX;
2087 2084
2088 @override 2085 @override
2089 Element lookupLocalMember(String memberName) { 2086 Element lookupLocalMember(String memberName) {
2090 return _unsupported('lookupLocalMember'); 2087 return _unsupported('lookupLocalMember');
2091 } 2088 }
2092 } 2089 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/members.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698