Skip to content

Commit 4a64532

Browse files
scheglovCommit Queue
authored andcommitted
Fine. Match type parameters of InstanceItem(s).
Change-Id: I5588df2ae3e336139b2a9839674eb5097d0d9a2b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/431180 Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 5047e68 commit 4a64532

File tree

3 files changed

+447
-30
lines changed

3 files changed

+447
-30
lines changed

pkg/analyzer/lib/src/fine/manifest_item.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ class ExtensionItem<E extends ExtensionElementImpl2> extends InstanceItem<E> {
204204

205205
@override
206206
bool match(MatchContext context, E element) {
207-
context.addTypeParameters(element.typeParameters2);
208207
return super.match(context, element) &&
209208
extendedType.match(context, element.extendedType);
210209
}
@@ -469,10 +468,17 @@ sealed class InstanceItem<E extends InstanceElementImpl2>
469468
return declaredSetters[name]?.id ?? declaredConflicts[name];
470469
}
471470

471+
@override
472+
bool match(MatchContext context, E element) {
473+
context.addTypeParameters(element.typeParameters2);
474+
return super.match(context, element) &&
475+
typeParameters.match(context, element.typeParameters2);
476+
}
477+
472478
@override
473479
void write(BufferedSink sink) {
474480
super.write(sink);
475-
typeParameters.writeList(sink);
481+
typeParameters.write(sink);
476482
declaredConflicts.write(sink);
477483
declaredFields.write(sink);
478484
declaredGetters.write(sink);
@@ -843,7 +849,6 @@ sealed class InterfaceItem<E extends InterfaceElementImpl2>
843849

844850
@override
845851
bool match(MatchContext context, E element) {
846-
context.addTypeParameters(element.typeParameters2);
847852
return super.match(context, element) &&
848853
supertype.match(context, element.supertype) &&
849854
interfaces.match(context, element.interfaces) &&
@@ -1415,7 +1420,7 @@ class TypeAliasItem extends TopLevelItem<TypeAliasElementImpl2> {
14151420
@override
14161421
void write(BufferedSink sink) {
14171422
super.write(sink);
1418-
typeParameters.writeList(sink);
1423+
typeParameters.write(sink);
14191424
aliasedType.write(sink);
14201425
}
14211426
}

pkg/analyzer/lib/src/fine/manifest_type.dart

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,7 @@ final class ManifestFunctionType extends ManifestType {
219219
}
220220

221221
return context.withTypeParameters(type.typeParameters, () {
222-
if (!ManifestTypeParameter.matchList(
223-
context,
224-
typeParameters,
225-
type.typeParameters,
226-
)) {
222+
if (!typeParameters.match(context, type.typeParameters)) {
227223
return false;
228224
}
229225

@@ -625,26 +621,6 @@ class ManifestTypeParameter {
625621
bound.writeOptional(sink);
626622
}
627623

628-
static bool matchList(
629-
MatchContext context,
630-
List<ManifestTypeParameter> manifests,
631-
List<TypeParameterElement> elements,
632-
) {
633-
if (manifests.length != elements.length) {
634-
return false;
635-
}
636-
637-
for (var i = 0; i < manifests.length; i++) {
638-
var manifest = manifests[i];
639-
var element = elements[i];
640-
if (!manifest.match(context, element)) {
641-
return false;
642-
}
643-
}
644-
645-
return true;
646-
}
647-
648624
static List<ManifestTypeParameter> readList(SummaryDataReader reader) {
649625
return reader.readTypedList(() => ManifestTypeParameter.read(reader));
650626
}
@@ -793,7 +769,19 @@ extension ListOfManifestTypeExtension on List<ManifestType> {
793769
}
794770

795771
extension ListOfManifestTypeParameterExtension on List<ManifestTypeParameter> {
796-
void writeList(BufferedSink sink) {
772+
bool match(MatchContext context, List<TypeParameterElement> elements) {
773+
if (elements.length != length) {
774+
return false;
775+
}
776+
for (var i = 0; i < length; i++) {
777+
if (!this[i].match(context, elements[i])) {
778+
return false;
779+
}
780+
}
781+
return true;
782+
}
783+
784+
void write(BufferedSink sink) {
797785
sink.writeList(this, (x) => x.write(sink));
798786
}
799787
}

0 commit comments

Comments
 (0)