Elements. Use identical() to compare ElementImpl(s), other elements.
Change-Id: If2abddeaea0551fa4646027ad8aa1bb4fd255660
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/401760
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
index 9ae427c..3513b15 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
@@ -2,6 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+import 'dart:collection';
+
import 'package:analysis_server/src/services/search/search_engine.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/source/source.dart';
@@ -182,7 +184,13 @@
@override
Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) async {
- var allElements = <Element2>{};
+ var allElements = HashSet<Element2>(
+ hashCode: (e) => e.name3.hashCode,
+ equals: (a, b) {
+ return a.lookupName == b.lookupName &&
+ a.library2?.uri == b.library2?.uri;
+ },
+ );
var regExp = RegExp(pattern);
var drivers = _drivers.toList();
for (var driver in drivers) {
diff --git a/pkg/analysis_server/test/edit/refactoring_test.dart b/pkg/analysis_server/test/edit/refactoring_test.dart
index 96a10d7..a364dab 100644
--- a/pkg/analysis_server/test/edit/refactoring_test.dart
+++ b/pkg/analysis_server/test/edit/refactoring_test.dart
@@ -2799,6 +2799,7 @@
}
Future<void> test_localVariable_finalCheck_shadowError() {
+ setPriorityFiles([testFile]);
addTestFile('''
void f() {
var newName;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 0103158..4f79009 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1179,10 +1179,6 @@
typeAliases.cast<TypeAliasFragment>();
@override
- bool operator ==(Object other) =>
- other is CompilationUnitElementImpl && source == other.source;
-
- @override
T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitCompilationUnitElement(this);
@@ -3393,14 +3389,7 @@
@override
bool operator ==(Object other) {
- if (identical(this, other)) {
- return true;
- }
- return other is ElementImpl2 &&
- other.kind == kind &&
- other.location == location &&
- other.nonSynthetic2.firstFragment.nameOffset2 ==
- nonSynthetic2.firstFragment.nameOffset2;
+ return identical(this, other);
}
/// Append a textual representation of this element to the given [builder].
@@ -6593,9 +6582,6 @@
@override
List<PatternVariableFragment> get variables2 =>
variables.cast<PatternVariableFragment>();
-
- @override
- bool operator ==(Object other) => identical(other, this);
}
class JoinPatternVariableElementImpl2 extends PatternVariableElementImpl2
@@ -7297,11 +7283,6 @@
ElementKind get kind => ElementKind.EXPORT;
@override
- bool operator ==(Object other) {
- return identical(this, other);
- }
-
- @override
T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitLibraryExportElement(this);
}
@@ -7391,11 +7372,6 @@
}
@override
- bool operator ==(Object other) {
- return identical(this, other);
- }
-
- @override
T? accept<T>(ElementVisitor<T> visitor) {
return visitor.visitLibraryImportElement(this);
}
@@ -10940,20 +10916,6 @@
set variance(shared.Variance? newVariance) => _variance = newVariance;
@override
- bool operator ==(Object other) {
- if (identical(other, this)) {
- return true;
- }
- if (other is TypeParameterElement) {
- if (other.enclosingElement3 == null || enclosingElement3 == null) {
- return identical(other, this);
- }
- return other.location == location;
- }
- return false;
- }
-
- @override
T? accept<T>(ElementVisitor<T> visitor) =>
visitor.visitTypeParameterElement(this);
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index 20b3092..86c1315 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -2668,6 +2668,7 @@
}
test_searchReferences_TypeParameterElement_ofLocalFunction() async {
+ makeFilePriority(testFile);
await resolveTestCode('''
main() {
void foo<T>(T a) {
diff --git a/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart b/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart
index 6bc70b8..0dec2ea 100644
--- a/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart
@@ -17,28 +17,13 @@
@reflectiveTest
class TypeParameterElementTest extends AbstractTypeSystemTest {
- test_equal_elementElement_sameLocation() {
+ test_equal() {
var T1 = typeParameter('T');
var T2 = typeParameter('T');
- var U = typeParameter('U');
- class_(name: 'A', typeParameters: [T1, T2, U]);
expect(T1 == T1, isTrue);
expect(T2 == T2, isTrue);
- expect(U == U, isTrue);
- expect(T1 == T2, isTrue);
- expect(T2 == T1, isTrue);
-
- expect(U == T1, isFalse);
- expect(T1 == U, isFalse);
- }
-
- test_equal_elementElement_synthetic() {
- var T1 = typeParameter('T');
- var T2 = typeParameter('T');
- expect(T1 == T1, isTrue);
- expect(T2 == T2, isTrue);
expect(T1 == T2, isFalse);
expect(T2 == T1, isFalse);
}
@@ -46,59 +31,47 @@
@reflectiveTest
class TypeParameterTypeTest extends AbstractTypeSystemTest {
- test_equal_equalElements() {
+ test_equal_differentElements() {
var T1 = typeParameter('T');
var T2 = typeParameter('T');
- class_(name: 'A', typeParameters: [T1, T2]);
-
- _assertEqual(typeParameterTypeNone(T1), typeParameterTypeNone(T2), isTrue);
- _assertEqual(typeParameterTypeNone(T2), typeParameterTypeNone(T1), isTrue);
_assertEqual(
typeParameterTypeNone(T1),
- typeParameterTypeQuestion(T2),
- isFalse,
- );
- _assertEqual(
- typeParameterTypeNone(T1),
- typeParameterTypeQuestion(T2),
+ typeParameterTypeNone(T2),
isFalse,
);
}
- test_equal_equalElements_withRecursiveBounds() {
- var A = class_(name: 'A', typeParameters: [typeParameter('E')]);
-
- var T1 = typeParameter('T');
- T1.bound = interfaceTypeNone(A, typeArguments: [
- typeParameterTypeNone(T1),
- ]);
-
- var T2 = typeParameter('T');
- T2.bound = interfaceTypeNone(A, typeArguments: [
- typeParameterTypeNone(T2),
- ]);
-
- class_(name: 'B', typeParameters: [T1, T2]);
-
- _assertEqual(typeParameterTypeNone(T1), typeParameterTypeNone(T2), isTrue);
- _assertEqual(typeParameterTypeNone(T2), typeParameterTypeNone(T1), isTrue);
+ test_equal_sameElement() {
+ var T = typeParameter('T');
_assertEqual(
- typeParameterTypeNone(T1),
- typeParameterTypeQuestion(T2),
+ typeParameterTypeNone(T),
+ typeParameterTypeNone(T),
+ isTrue,
+ );
+
+ _assertEqual(
+ typeParameterTypeNone(T),
+ typeParameterTypeQuestion(T),
isFalse,
);
+
_assertEqual(
- typeParameterTypeQuestion(T1),
- typeParameterTypeNone(T2),
+ typeParameterTypeQuestion(T),
+ typeParameterTypeNone(T),
isFalse,
);
+
+ _assertEqual(
+ typeParameterTypeQuestion(T),
+ typeParameterTypeQuestion(T),
+ isTrue,
+ );
}
test_equal_sameElement_promotedBounds() {
var T = typeParameter('T');
- class_(name: 'A', typeParameters: [T]);
_assertEqual(
promotedTypeParameterTypeNone(T, intNone),
@@ -125,34 +98,6 @@
);
}
- test_equal_sameElements() {
- var T = typeParameter('T');
-
- _assertEqual(
- typeParameterTypeNone(T),
- typeParameterTypeNone(T),
- isTrue,
- );
-
- _assertEqual(
- typeParameterTypeNone(T),
- typeParameterTypeQuestion(T),
- isFalse,
- );
-
- _assertEqual(
- typeParameterTypeQuestion(T),
- typeParameterTypeNone(T),
- isFalse,
- );
-
- _assertEqual(
- typeParameterTypeQuestion(T),
- typeParameterTypeQuestion(T),
- isTrue,
- );
- }
-
void _assertEqual(DartType T1, DartType T2, matcher) {
expect(T1 == T2, matcher);
}