@@ -14,7 +14,7 @@ import 'package:analyzer/src/summary2/data_writer.dart';
1414import 'package:analyzer/src/utilities/extensions/collection.dart' ;
1515import 'package:meta/meta.dart' ;
1616
17- class ClassItem extends InterfaceItem {
17+ class ClassItem extends InterfaceItem < ClassElementImpl2 > {
1818 ClassItem ({
1919 required super .id,
2020 required super .metadata,
@@ -69,7 +69,8 @@ class ClassItem extends InterfaceItem {
6969}
7070
7171/// The item for [InstanceElementImpl2] .
72- sealed class InstanceItem extends TopLevelItem {
72+ sealed class InstanceItem <E extends InstanceElementImpl2 >
73+ extends TopLevelItem <E > {
7374 final List <ManifestTypeParameter > typeParameters;
7475 final Map <LookupName , InstanceItemMemberItem > declaredMembers;
7576
@@ -105,7 +106,7 @@ sealed class InstanceItem extends TopLevelItem {
105106 }
106107}
107108
108- class InstanceItemGetterItem extends InstanceItemMemberItem {
109+ class InstanceItemGetterItem extends InstanceItemMemberItem < GetterElementImpl > {
109110 final ManifestType returnType;
110111 final ManifestNode ? constInitializer;
111112
@@ -145,10 +146,7 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
145146 }
146147
147148 @override
148- bool match (
149- MatchContext context,
150- covariant GetterElementImpl element,
151- ) {
149+ bool match (MatchContext context, GetterElementImpl element) {
152150 return super .match (context, element) &&
153151 returnType.match (context, element.returnType) &&
154152 constInitializer.match (context, element.constInitializer);
@@ -163,7 +161,8 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
163161 }
164162}
165163
166- sealed class InstanceItemMemberItem extends ManifestItem {
164+ sealed class InstanceItemMemberItem <E extends ExecutableElementImpl2 >
165+ extends ManifestItem <E > {
167166 final bool isStatic;
168167
169168 InstanceItemMemberItem ({
@@ -172,7 +171,19 @@ sealed class InstanceItemMemberItem extends ManifestItem {
172171 required this .isStatic,
173172 });
174173
175- factory InstanceItemMemberItem .read (SummaryDataReader reader) {
174+ @override
175+ bool match (MatchContext context, E element) {
176+ return super .match (context, element) && element.isStatic == isStatic;
177+ }
178+
179+ @override
180+ void write (BufferedSink sink) {
181+ super .write (sink);
182+ sink.writeBool (isStatic);
183+ }
184+
185+ static InstanceItemMemberItem <ExecutableElementImpl2 > read (
186+ SummaryDataReader reader) {
176187 var kind = reader.readEnum (_ManifestItemKind2 .values);
177188 switch (kind) {
178189 case _ManifestItemKind2 .instanceGetter:
@@ -185,23 +196,10 @@ sealed class InstanceItemMemberItem extends ManifestItem {
185196 return InterfaceItemConstructorItem .read (reader);
186197 }
187198 }
188-
189- @override
190- bool match (
191- MatchContext context,
192- covariant ExecutableElementImpl2 element,
193- ) {
194- return super .match (context, element) && element.isStatic == isStatic;
195- }
196-
197- @override
198- void write (BufferedSink sink) {
199- super .write (sink);
200- sink.writeBool (isStatic);
201- }
202199}
203200
204- class InstanceItemMethodItem extends InstanceItemMemberItem {
201+ class InstanceItemMethodItem
202+ extends InstanceItemMemberItem <MethodElementImpl2 > {
205203 final ManifestFunctionType functionType;
206204
207205 InstanceItemMethodItem ({
@@ -234,10 +232,7 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
234232 }
235233
236234 @override
237- bool match (
238- MatchContext context,
239- covariant MethodElementImpl2 element,
240- ) {
235+ bool match (MatchContext context, MethodElementImpl2 element) {
241236 return super .match (context, element) &&
242237 functionType.match (context, element.type);
243238 }
@@ -250,7 +245,7 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
250245 }
251246}
252247
253- class InstanceItemSetterItem extends InstanceItemMemberItem {
248+ class InstanceItemSetterItem extends InstanceItemMemberItem < SetterElementImpl > {
254249 final ManifestType valueType;
255250
256251 InstanceItemSetterItem ({
@@ -286,10 +281,7 @@ class InstanceItemSetterItem extends InstanceItemMemberItem {
286281 }
287282
288283 @override
289- bool match (
290- MatchContext context,
291- covariant SetterElementImpl element,
292- ) {
284+ bool match (MatchContext context, SetterElementImpl element) {
293285 return super .match (context, element) &&
294286 valueType.match (context, element.formalParameters[0 ].type);
295287 }
@@ -303,7 +295,8 @@ class InstanceItemSetterItem extends InstanceItemMemberItem {
303295}
304296
305297/// The item for [InterfaceElementImpl2] .
306- sealed class InterfaceItem extends InstanceItem {
298+ sealed class InterfaceItem <E extends InterfaceElementImpl2 >
299+ extends InstanceItem <E > {
307300 final ManifestType ? supertype;
308301 final List <ManifestType > interfaces;
309302 final List <ManifestType > mixins;
@@ -334,7 +327,7 @@ sealed class InterfaceItem extends InstanceItem {
334327 }
335328
336329 @override
337- bool match (MatchContext context, covariant InterfaceElementImpl2 element) {
330+ bool match (MatchContext context, E element) {
338331 context.addTypeParameters (element.typeParameters2);
339332 return super .match (context, element) &&
340333 supertype.match (context, element.supertype) &&
@@ -365,7 +358,8 @@ sealed class InterfaceItem extends InstanceItem {
365358 }
366359}
367360
368- class InterfaceItemConstructorItem extends InstanceItemMemberItem {
361+ class InterfaceItemConstructorItem
362+ extends InstanceItemMemberItem <ConstructorElementImpl2 > {
369363 final bool isConst;
370364 final bool isFactory;
371365 final ManifestFunctionType functionType;
@@ -407,10 +401,7 @@ class InterfaceItemConstructorItem extends InstanceItemMemberItem {
407401 }
408402
409403 @override
410- bool match (
411- MatchContext context,
412- covariant ConstructorElementImpl2 element,
413- ) {
404+ bool match (MatchContext context, ConstructorElementImpl2 element) {
414405 return super .match (context, element) &&
415406 isConst == element.isConst &&
416407 isFactory == element.isFactory &&
@@ -458,7 +449,7 @@ class ManifestAnnotation {
458449 }
459450}
460451
461- sealed class ManifestItem {
452+ sealed class ManifestItem < E extends AnnotatableElementImpl > {
462453 /// The unique identifier of this item.
463454 final ManifestItemId id;
464455 final ManifestMetadata metadata;
@@ -469,7 +460,7 @@ sealed class ManifestItem {
469460 });
470461
471462 @mustCallSuper
472- bool match (MatchContext context, AnnotatableElementImpl element) {
463+ bool match (MatchContext context, E element) {
473464 return metadata.match (context, element.effectiveMetadata);
474465 }
475466
@@ -526,7 +517,7 @@ class ManifestMetadata {
526517 }
527518}
528519
529- class MixinItem extends InterfaceItem {
520+ class MixinItem extends InterfaceItem < MixinElementImpl2 > {
530521 final List <ManifestType > superclassConstraints;
531522
532523 MixinItem ({
@@ -581,7 +572,7 @@ class MixinItem extends InterfaceItem {
581572 }
582573
583574 @override
584- bool match (MatchContext context, covariant MixinElementImpl2 element) {
575+ bool match (MatchContext context, MixinElementImpl2 element) {
585576 return super .match (context, element) &&
586577 superclassConstraints.match (context, element.superclassConstraints);
587578 }
@@ -594,7 +585,7 @@ class MixinItem extends InterfaceItem {
594585 }
595586}
596587
597- class TopLevelFunctionItem extends TopLevelItem {
588+ class TopLevelFunctionItem extends TopLevelItem < TopLevelFunctionElementImpl > {
598589 final ManifestFunctionType functionType;
599590
600591 TopLevelFunctionItem ({
@@ -624,10 +615,7 @@ class TopLevelFunctionItem extends TopLevelItem {
624615 }
625616
626617 @override
627- bool match (
628- MatchContext context,
629- covariant TopLevelFunctionElementImpl element,
630- ) {
618+ bool match (MatchContext context, TopLevelFunctionElementImpl element) {
631619 return super .match (context, element) &&
632620 functionType.match (context, element.type);
633621 }
@@ -640,7 +628,7 @@ class TopLevelFunctionItem extends TopLevelItem {
640628 }
641629}
642630
643- class TopLevelGetterItem extends TopLevelItem {
631+ class TopLevelGetterItem extends TopLevelItem < GetterElementImpl > {
644632 final ManifestType returnType;
645633 final ManifestNode ? constInitializer;
646634
@@ -677,10 +665,7 @@ class TopLevelGetterItem extends TopLevelItem {
677665 }
678666
679667 @override
680- bool match (
681- MatchContext context,
682- covariant GetterElementImpl element,
683- ) {
668+ bool match (MatchContext context, GetterElementImpl element) {
684669 return super .match (context, element) &&
685670 returnType.match (context, element.returnType) &&
686671 constInitializer.match (context, element.constInitializer);
@@ -695,13 +680,14 @@ class TopLevelGetterItem extends TopLevelItem {
695680 }
696681}
697682
698- sealed class TopLevelItem extends ManifestItem {
683+ sealed class TopLevelItem <E extends AnnotatableElementImpl >
684+ extends ManifestItem <E > {
699685 TopLevelItem ({
700686 required super .id,
701687 required super .metadata,
702688 });
703689
704- factory TopLevelItem . read (SummaryDataReader reader) {
690+ static TopLevelItem < AnnotatableElementImpl > read (SummaryDataReader reader) {
705691 var kind = reader.readEnum (_ManifestItemKind .values);
706692 switch (kind) {
707693 case _ManifestItemKind .class_:
@@ -718,7 +704,7 @@ sealed class TopLevelItem extends ManifestItem {
718704 }
719705}
720706
721- class TopLevelSetterItem extends TopLevelItem {
707+ class TopLevelSetterItem extends TopLevelItem < SetterElementImpl > {
722708 final ManifestType valueType;
723709
724710 TopLevelSetterItem ({
@@ -751,10 +737,7 @@ class TopLevelSetterItem extends TopLevelItem {
751737 }
752738
753739 @override
754- bool match (
755- MatchContext context,
756- covariant SetterElementImpl element,
757- ) {
740+ bool match (MatchContext context, SetterElementImpl element) {
758741 return super .match (context, element) &&
759742 valueType.match (context, element.formalParameters[0 ].type);
760743 }
0 commit comments