@@ -96,30 +96,65 @@ class ExportItem extends TopLevelItem {
9696 }
9797}
9898
99- class InstanceGetterItem extends InstanceMemberItem {
99+ /// The item for [InstanceElementImpl2] .
100+ sealed class InstanceItem extends TopLevelItem {
101+ final List <ManifestTypeParameter > typeParameters;
102+ final Map <LookupName , InstanceItemMemberItem > members;
103+
104+ InstanceItem ({
105+ required super .libraryUri,
106+ required super .name,
107+ required super .id,
108+ required this .typeParameters,
109+ required this .members,
110+ });
111+
112+ void _write (BufferedSink sink) {
113+ sink.writeUri (libraryUri);
114+ name.write (sink);
115+ id.write (sink);
116+ typeParameters.writeList (sink);
117+ sink.writeMap (
118+ members,
119+ writeKey: (name) => name.write (sink),
120+ writeValue: (member) => member.write (sink),
121+ );
122+ }
123+
124+ static Map <LookupName , InstanceItemMemberItem > _readMembers (
125+ SummaryDataReader reader,
126+ ) {
127+ return reader.readMap (
128+ readKey: () => LookupName .read (reader),
129+ readValue: () => InstanceItemMemberItem .read (reader),
130+ );
131+ }
132+ }
133+
134+ class InstanceItemGetterItem extends InstanceItemMemberItem {
100135 final ManifestType returnType;
101136
102- InstanceGetterItem ({
137+ InstanceItemGetterItem ({
103138 required super .name,
104139 required super .id,
105140 required this .returnType,
106141 });
107142
108- factory InstanceGetterItem .fromElement ({
143+ factory InstanceItemGetterItem .fromElement ({
109144 required LookupName name,
110145 required ManifestItemId id,
111146 required EncodeContext context,
112147 required GetterElement2OrMember element,
113148 }) {
114- return InstanceGetterItem (
149+ return InstanceItemGetterItem (
115150 name: name,
116151 id: id,
117152 returnType: element.returnType.encode (context),
118153 );
119154 }
120155
121- factory InstanceGetterItem .read (SummaryDataReader reader) {
122- return InstanceGetterItem (
156+ factory InstanceItemGetterItem .read (SummaryDataReader reader) {
157+ return InstanceItemGetterItem (
123158 name: LookupName .read (reader),
124159 id: ManifestItemId .read (reader),
125160 returnType: ManifestType .read (reader),
@@ -146,87 +181,52 @@ class InstanceGetterItem extends InstanceMemberItem {
146181 }
147182}
148183
149- /// The item for [InstanceElementImpl2] .
150- sealed class InstanceItem extends TopLevelItem {
151- final List <ManifestTypeParameter > typeParameters;
152- final Map <LookupName , InstanceMemberItem > members;
153-
154- InstanceItem ({
155- required super .libraryUri,
156- required super .name,
157- required super .id,
158- required this .typeParameters,
159- required this .members,
160- });
161-
162- void _write (BufferedSink sink) {
163- sink.writeUri (libraryUri);
164- name.write (sink);
165- id.write (sink);
166- typeParameters.writeList (sink);
167- sink.writeMap (
168- members,
169- writeKey: (name) => name.write (sink),
170- writeValue: (member) => member.write (sink),
171- );
172- }
173-
174- static Map <LookupName , InstanceMemberItem > _readMembers (
175- SummaryDataReader reader,
176- ) {
177- return reader.readMap (
178- readKey: () => LookupName .read (reader),
179- readValue: () => InstanceMemberItem .read (reader),
180- );
181- }
182- }
183-
184- sealed class InstanceMemberItem extends ManifestItem {
184+ sealed class InstanceItemMemberItem extends ManifestItem {
185185 final LookupName name;
186186 final ManifestItemId id;
187187
188- InstanceMemberItem ({
188+ InstanceItemMemberItem ({
189189 required this .name,
190190 required this .id,
191191 });
192192
193- factory InstanceMemberItem .read (SummaryDataReader reader) {
193+ factory InstanceItemMemberItem .read (SummaryDataReader reader) {
194194 var kind = reader.readEnum (_ManifestItemKind2 .values);
195195 switch (kind) {
196196 case _ManifestItemKind2 .instanceGetter:
197- return InstanceGetterItem .read (reader);
197+ return InstanceItemGetterItem .read (reader);
198198 case _ManifestItemKind2 .instanceMethod:
199- return InstanceMethodItem .read (reader);
199+ return InstanceItemMethodItem .read (reader);
200200 case _ManifestItemKind2 .interfaceConstructor:
201- return InterfaceConstructorItem .read (reader);
201+ return InterfaceItemConstructorItem .read (reader);
202202 }
203203 }
204204}
205205
206- class InstanceMethodItem extends InstanceMemberItem {
206+ class InstanceItemMethodItem extends InstanceItemMemberItem {
207207 final ManifestFunctionType functionType;
208208
209- InstanceMethodItem ({
209+ InstanceItemMethodItem ({
210210 required super .name,
211211 required super .id,
212212 required this .functionType,
213213 });
214214
215- factory InstanceMethodItem .fromElement ({
215+ factory InstanceItemMethodItem .fromElement ({
216216 required LookupName name,
217217 required ManifestItemId id,
218218 required EncodeContext context,
219219 required MethodElement2OrMember element,
220220 }) {
221- return InstanceMethodItem (
221+ return InstanceItemMethodItem (
222222 name: name,
223223 id: id,
224224 functionType: element.type.encode (context),
225225 );
226226 }
227227
228- factory InstanceMethodItem .read (SummaryDataReader reader) {
229- return InstanceMethodItem (
228+ factory InstanceItemMethodItem .read (SummaryDataReader reader) {
229+ return InstanceItemMethodItem (
230230 name: LookupName .read (reader),
231231 id: ManifestItemId .read (reader),
232232 functionType: ManifestFunctionType .read (reader),
@@ -253,27 +253,64 @@ class InstanceMethodItem extends InstanceMemberItem {
253253 }
254254}
255255
256- class InterfaceConstructorItem extends InstanceMemberItem {
256+ /// The item for [InterfaceElementImpl2] .
257+ sealed class InterfaceItem extends InstanceItem {
258+ final ManifestType ? supertype;
259+ final List <ManifestType > interfaces;
260+ final List <ManifestType > mixins;
261+
262+ InterfaceItem ({
263+ required super .libraryUri,
264+ required super .name,
265+ required super .id,
266+ required super .typeParameters,
267+ required super .members,
268+ required this .supertype,
269+ required this .interfaces,
270+ required this .mixins,
271+ });
272+
273+ MatchContext ? _matchInterfaceElement (InterfaceElementImpl2 element) {
274+ var context = MatchContext (parent: null );
275+ context.addTypeParameters (element.typeParameters2);
276+ if (supertype.match (context, element.supertype) &&
277+ interfaces.match (context, element.interfaces) &&
278+ mixins.match (context, element.mixins)) {
279+ return context;
280+ }
281+ return null ;
282+ }
283+
284+ @override
285+ void _write (BufferedSink sink) {
286+ super ._write (sink);
287+ supertype.writeOptional (sink);
288+ mixins.writeList (sink);
289+ interfaces.writeList (sink);
290+ }
291+ }
292+
293+ class InterfaceItemConstructorItem extends InstanceItemMemberItem {
257294 final bool isConst;
258295 final bool isFactory;
259296 final ManifestFunctionType functionType;
260297
261- InterfaceConstructorItem ({
298+ InterfaceItemConstructorItem ({
262299 required super .name,
263300 required super .id,
264301 required this .isConst,
265302 required this .isFactory,
266303 required this .functionType,
267304 });
268305
269- factory InterfaceConstructorItem .fromElement ({
306+ factory InterfaceItemConstructorItem .fromElement ({
270307 required LookupName name,
271308 required ManifestItemId id,
272309 required EncodeContext context,
273310 required ConstructorElementImpl2 element,
274311 }) {
275312 // TODO(scheglov): initializers
276- return InterfaceConstructorItem (
313+ return InterfaceItemConstructorItem (
277314 name: name,
278315 id: id,
279316 isConst: element.isConst,
@@ -282,8 +319,8 @@ class InterfaceConstructorItem extends InstanceMemberItem {
282319 );
283320 }
284321
285- factory InterfaceConstructorItem .read (SummaryDataReader reader) {
286- return InterfaceConstructorItem (
322+ factory InterfaceItemConstructorItem .read (SummaryDataReader reader) {
323+ return InterfaceItemConstructorItem (
287324 name: LookupName .read (reader),
288325 id: ManifestItemId .read (reader),
289326 isConst: reader.readBool (),
@@ -320,43 +357,6 @@ class InterfaceConstructorItem extends InstanceMemberItem {
320357 }
321358}
322359
323- /// The item for [InterfaceElementImpl2] .
324- sealed class InterfaceItem extends InstanceItem {
325- final ManifestType ? supertype;
326- final List <ManifestType > interfaces;
327- final List <ManifestType > mixins;
328-
329- InterfaceItem ({
330- required super .libraryUri,
331- required super .name,
332- required super .id,
333- required super .typeParameters,
334- required super .members,
335- required this .supertype,
336- required this .interfaces,
337- required this .mixins,
338- });
339-
340- MatchContext ? _matchInterfaceElement (InterfaceElementImpl2 element) {
341- var context = MatchContext (parent: null );
342- context.addTypeParameters (element.typeParameters2);
343- if (supertype.match (context, element.supertype) &&
344- interfaces.match (context, element.interfaces) &&
345- mixins.match (context, element.mixins)) {
346- return context;
347- }
348- return null ;
349- }
350-
351- @override
352- void _write (BufferedSink sink) {
353- super ._write (sink);
354- supertype.writeOptional (sink);
355- mixins.writeList (sink);
356- interfaces.writeList (sink);
357- }
358- }
359-
360360class ManifestAnnotation {
361361 final ManifestNode ast;
362362
0 commit comments