Skip to content

Commit 143bbe0

Browse files
scheglovCommit Queue
authored andcommitted
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 <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 6456180 commit 143bbe0

File tree

5 files changed

+32
-115
lines changed

5 files changed

+32
-115
lines changed

pkg/analysis_server/lib/src/services/search/search_engine_internal.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
import 'dart:collection';
6+
57
import 'package:analysis_server/src/services/search/search_engine.dart';
68
import 'package:analyzer/dart/element/element2.dart';
79
import 'package:analyzer/source/source.dart';
@@ -182,7 +184,13 @@ class SearchEngineImpl implements SearchEngine {
182184

183185
@override
184186
Future<List<SearchMatch>> searchTopLevelDeclarations(String pattern) async {
185-
var allElements = <Element2>{};
187+
var allElements = HashSet<Element2>(
188+
hashCode: (e) => e.name3.hashCode,
189+
equals: (a, b) {
190+
return a.lookupName == b.lookupName &&
191+
a.library2?.uri == b.library2?.uri;
192+
},
193+
);
186194
var regExp = RegExp(pattern);
187195
var drivers = _drivers.toList();
188196
for (var driver in drivers) {

pkg/analysis_server/test/edit/refactoring_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2799,6 +2799,7 @@ void f() {
27992799
}
28002800

28012801
Future<void> test_localVariable_finalCheck_shadowError() {
2802+
setPriorityFiles([testFile]);
28022803
addTestFile('''
28032804
void f() {
28042805
var newName;

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,10 +1178,6 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
11781178
List<TypeAliasFragment> get typeAliases2 =>
11791179
typeAliases.cast<TypeAliasFragment>();
11801180

1181-
@override
1182-
bool operator ==(Object other) =>
1183-
other is CompilationUnitElementImpl && source == other.source;
1184-
11851181
@override
11861182
T? accept<T>(ElementVisitor<T> visitor) =>
11871183
visitor.visitCompilationUnitElement(this);
@@ -3393,14 +3389,7 @@ abstract class ElementImpl2 implements Element2 {
33933389

33943390
@override
33953391
bool operator ==(Object other) {
3396-
if (identical(this, other)) {
3397-
return true;
3398-
}
3399-
return other is ElementImpl2 &&
3400-
other.kind == kind &&
3401-
other.location == location &&
3402-
other.nonSynthetic2.firstFragment.nameOffset2 ==
3403-
nonSynthetic2.firstFragment.nameOffset2;
3392+
return identical(this, other);
34043393
}
34053394

34063395
/// Append a textual representation of this element to the given [builder].
@@ -6593,9 +6582,6 @@ class JoinPatternVariableElementImpl extends PatternVariableElementImpl
65936582
@override
65946583
List<PatternVariableFragment> get variables2 =>
65956584
variables.cast<PatternVariableFragment>();
6596-
6597-
@override
6598-
bool operator ==(Object other) => identical(other, this);
65996585
}
66006586

66016587
class JoinPatternVariableElementImpl2 extends PatternVariableElementImpl2
@@ -7296,11 +7282,6 @@ class LibraryExportElementImpl extends _ExistingElementImpl
72967282
@override
72977283
ElementKind get kind => ElementKind.EXPORT;
72987284

7299-
@override
7300-
bool operator ==(Object other) {
7301-
return identical(this, other);
7302-
}
7303-
73047285
@override
73057286
T? accept<T>(ElementVisitor<T> visitor) {
73067287
return visitor.visitLibraryExportElement(this);
@@ -7390,11 +7371,6 @@ class LibraryImportElementImpl extends _ExistingElementImpl
73907371
return Namespace.EMPTY;
73917372
}
73927373

7393-
@override
7394-
bool operator ==(Object other) {
7395-
return identical(this, other);
7396-
}
7397-
73987374
@override
73997375
T? accept<T>(ElementVisitor<T> visitor) {
74007376
return visitor.visitLibraryImportElement(this);
@@ -10939,20 +10915,6 @@ class TypeParameterElementImpl extends ElementImpl
1093910915

1094010916
set variance(shared.Variance? newVariance) => _variance = newVariance;
1094110917

10942-
@override
10943-
bool operator ==(Object other) {
10944-
if (identical(other, this)) {
10945-
return true;
10946-
}
10947-
if (other is TypeParameterElement) {
10948-
if (other.enclosingElement3 == null || enclosingElement3 == null) {
10949-
return identical(other, this);
10950-
}
10951-
return other.location == location;
10952-
}
10953-
return false;
10954-
}
10955-
1095610918
@override
1095710919
T? accept<T>(ElementVisitor<T> visitor) =>
1095810920
visitor.visitTypeParameterElement(this);

pkg/analyzer/test/src/dart/analysis/search_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,6 +2668,7 @@ enum E<T> {
26682668
}
26692669

26702670
test_searchReferences_TypeParameterElement_ofLocalFunction() async {
2671+
makeFilePriority(testFile);
26712672
await resolveTestCode('''
26722673
main() {
26732674
void foo<T>(T a) {

pkg/analyzer/test/src/dart/element/type_parameter_element_test.dart

Lines changed: 20 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -17,139 +17,84 @@ main() {
1717

1818
@reflectiveTest
1919
class TypeParameterElementTest extends AbstractTypeSystemTest {
20-
test_equal_elementElement_sameLocation() {
20+
test_equal() {
2121
var T1 = typeParameter('T');
2222
var T2 = typeParameter('T');
23-
var U = typeParameter('U');
24-
class_(name: 'A', typeParameters: [T1, T2, U]);
2523

2624
expect(T1 == T1, isTrue);
2725
expect(T2 == T2, isTrue);
28-
expect(U == U, isTrue);
2926

30-
expect(T1 == T2, isTrue);
31-
expect(T2 == T1, isTrue);
32-
33-
expect(U == T1, isFalse);
34-
expect(T1 == U, isFalse);
35-
}
36-
37-
test_equal_elementElement_synthetic() {
38-
var T1 = typeParameter('T');
39-
var T2 = typeParameter('T');
40-
expect(T1 == T1, isTrue);
41-
expect(T2 == T2, isTrue);
4227
expect(T1 == T2, isFalse);
4328
expect(T2 == T1, isFalse);
4429
}
4530
}
4631

4732
@reflectiveTest
4833
class TypeParameterTypeTest extends AbstractTypeSystemTest {
49-
test_equal_equalElements() {
50-
var T1 = typeParameter('T');
51-
var T2 = typeParameter('T');
52-
class_(name: 'A', typeParameters: [T1, T2]);
53-
54-
_assertEqual(typeParameterTypeNone(T1), typeParameterTypeNone(T2), isTrue);
55-
_assertEqual(typeParameterTypeNone(T2), typeParameterTypeNone(T1), isTrue);
56-
57-
_assertEqual(
58-
typeParameterTypeNone(T1),
59-
typeParameterTypeQuestion(T2),
60-
isFalse,
61-
);
62-
_assertEqual(
63-
typeParameterTypeNone(T1),
64-
typeParameterTypeQuestion(T2),
65-
isFalse,
66-
);
67-
}
68-
69-
test_equal_equalElements_withRecursiveBounds() {
70-
var A = class_(name: 'A', typeParameters: [typeParameter('E')]);
71-
34+
test_equal_differentElements() {
7235
var T1 = typeParameter('T');
73-
T1.bound = interfaceTypeNone(A, typeArguments: [
74-
typeParameterTypeNone(T1),
75-
]);
76-
7736
var T2 = typeParameter('T');
78-
T2.bound = interfaceTypeNone(A, typeArguments: [
79-
typeParameterTypeNone(T2),
80-
]);
81-
82-
class_(name: 'B', typeParameters: [T1, T2]);
83-
84-
_assertEqual(typeParameterTypeNone(T1), typeParameterTypeNone(T2), isTrue);
85-
_assertEqual(typeParameterTypeNone(T2), typeParameterTypeNone(T1), isTrue);
8637

8738
_assertEqual(
8839
typeParameterTypeNone(T1),
89-
typeParameterTypeQuestion(T2),
90-
isFalse,
91-
);
92-
_assertEqual(
93-
typeParameterTypeQuestion(T1),
9440
typeParameterTypeNone(T2),
9541
isFalse,
9642
);
9743
}
9844

99-
test_equal_sameElement_promotedBounds() {
45+
test_equal_sameElement() {
10046
var T = typeParameter('T');
101-
class_(name: 'A', typeParameters: [T]);
10247

10348
_assertEqual(
104-
promotedTypeParameterTypeNone(T, intNone),
105-
promotedTypeParameterTypeNone(T, intNone),
49+
typeParameterTypeNone(T),
50+
typeParameterTypeNone(T),
10651
isTrue,
10752
);
10853

10954
_assertEqual(
110-
promotedTypeParameterTypeNone(T, intNone),
111-
promotedTypeParameterTypeNone(T, doubleNone),
55+
typeParameterTypeNone(T),
56+
typeParameterTypeQuestion(T),
11257
isFalse,
11358
);
11459

11560
_assertEqual(
116-
promotedTypeParameterTypeNone(T, intNone),
61+
typeParameterTypeQuestion(T),
11762
typeParameterTypeNone(T),
11863
isFalse,
11964
);
12065

12166
_assertEqual(
122-
typeParameterTypeNone(T),
123-
promotedTypeParameterTypeNone(T, intNone),
124-
isFalse,
67+
typeParameterTypeQuestion(T),
68+
typeParameterTypeQuestion(T),
69+
isTrue,
12570
);
12671
}
12772

128-
test_equal_sameElements() {
73+
test_equal_sameElement_promotedBounds() {
12974
var T = typeParameter('T');
13075

13176
_assertEqual(
132-
typeParameterTypeNone(T),
133-
typeParameterTypeNone(T),
77+
promotedTypeParameterTypeNone(T, intNone),
78+
promotedTypeParameterTypeNone(T, intNone),
13479
isTrue,
13580
);
13681

13782
_assertEqual(
138-
typeParameterTypeNone(T),
139-
typeParameterTypeQuestion(T),
83+
promotedTypeParameterTypeNone(T, intNone),
84+
promotedTypeParameterTypeNone(T, doubleNone),
14085
isFalse,
14186
);
14287

14388
_assertEqual(
144-
typeParameterTypeQuestion(T),
89+
promotedTypeParameterTypeNone(T, intNone),
14590
typeParameterTypeNone(T),
14691
isFalse,
14792
);
14893

14994
_assertEqual(
150-
typeParameterTypeQuestion(T),
151-
typeParameterTypeQuestion(T),
152-
isTrue,
95+
typeParameterTypeNone(T),
96+
promotedTypeParameterTypeNone(T, intNone),
97+
isFalse,
15398
);
15499
}
155100

0 commit comments

Comments
 (0)