From 05ddb78364eb58fc6ae8f126bf528133c9356ac7 Mon Sep 17 00:00:00 2001 From: Chloe Stefantsova Date: Wed, 7 Sep 2022 09:11:11 +0000 Subject: [PATCH] [cfe] Make DartTypeEquivalence symmetrical for functions and records Change-Id: I9963ae7401d1e31e07edf90146f411b6586dbc16 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/256664 Reviewed-by: Nicholas Shahan Commit-Queue: Chloe Stefantsova Reviewed-by: Johnni Winther --- pkg/kernel/lib/src/dart_type_equivalence.dart | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/pkg/kernel/lib/src/dart_type_equivalence.dart b/pkg/kernel/lib/src/dart_type_equivalence.dart index 97a278dbfc6..543dde6f127 100644 --- a/pkg/kernel/lib/src/dart_type_equivalence.dart +++ b/pkg/kernel/lib/src/dart_type_equivalence.dart @@ -88,8 +88,13 @@ class DartTypeEquivalence implements DartTypeVisitor1 { if (!nodeNamedParameters.containsKey(otherName) || !nodeNamedParameters[otherName]!.accept1(this, otherType)) { result = false; + } else { + nodeNamedParameters.remove(otherName); } } + if (nodeNamedParameters.isNotEmpty) { + result = false; + } if (!node.returnType.accept1(this, other.returnType)) { result = false; } @@ -131,20 +136,10 @@ class DartTypeEquivalence implements DartTypeVisitor1 { while (result && nodeIndex < node.named.length) { NamedType nodeNamedType = node.named[nodeIndex]; NamedType otherNamedType = other.named[otherIndex]; - int comparisonResult = - nodeNamedType.name.compareTo(otherNamedType.name); - if (comparisonResult == 0) { - // nodeNamedType.name == otherNamedType.name - result = nodeNamedType.type.accept1(this, otherNamedType.type); - otherIndex++; - nodeIndex++; - } else if (comparisonResult < 0) { - // nodeNamedType.name < otherNamedType.name - nodeIndex++; - } else { - // nodeNamedType.name > otherNamedType.name - // 'otherNamedType.name' is not found in 'node.named'. + if (nodeNamedType.name != otherNamedType.name) { result = false; + } else { + result = nodeNamedType.type.accept1(this, otherNamedType.type); } }