Skip to content

Commit f259e6b

Browse files
committed
Elements. Migrate ImportsVerifier.
Change-Id: I5dcab58f5b21436a43fdd169568334639626b6d3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/407120 Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 2946ea7 commit f259e6b

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

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

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,16 @@ class ImportsTracking {
134134
return trackerOf(import).importToUsedElements[import] ?? {};
135135
}
136136

137+
/// The elements that are used from [import].
138+
Set<Element2> elementsOf2(LibraryImportElementImpl import) {
139+
return trackerOf(import)
140+
.importToUsedElements[import]
141+
?.map((e) => e.asElement2)
142+
.nonNulls
143+
.toSet() ??
144+
{};
145+
}
146+
137147
void notifyExtensionUsed(ExtensionElement element) {
138148
for (var tracking in map.values) {
139149
tracking.notifyExtensionUsed(element);
@@ -177,17 +187,22 @@ class ImportsTrackingOfPrefix {
177187
_buildElementToImportsMap();
178188
}
179189

190+
Map<LibraryImportElementImpl, Set<Element2>> get importToUsedElements2 {
191+
return importToUsedElements.mapValue(
192+
(elements) => elements.map((e) => e.asElement2).nonNulls.toSet());
193+
}
194+
180195
/// The elements that are used from [import].
181196
Set<Element> elementsOf(LibraryImportElementImpl import) {
182197
return importToUsedElements[import] ?? {};
183198
}
184199

185200
/// The subset of [elementsOf], excludes elements that are from deprecated
186201
/// exports inside the imported library.
187-
Set<Element> elementsOf2(LibraryImportElementImpl import) {
202+
Set<Element2> elementsOf2(LibraryImportElementImpl import) {
188203
var result = importToAccessedElements2[import];
189204
if (result != null) {
190-
return result;
205+
return result.map((e) => e.asElement2).nonNulls.toSet();
191206
}
192207

193208
var accessedElements = elementsOf(import);
@@ -216,7 +231,8 @@ class ImportsTrackingOfPrefix {
216231
}
217232

218233
result ??= accessedElements;
219-
return importToAccessedElements2[import] = result;
234+
importToAccessedElements2[import] = result;
235+
return result.map((e) => e.asElement2).nonNulls.toSet();
220236
}
221237

222238
void lookupResult(Element? element) {

pkg/analyzer/lib/src/error/imports_verifier.dart

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
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-
// ignore_for_file: analyzer_use_new_elements
6-
7-
import 'package:analyzer/dart/element/element.dart';
5+
import 'package:analyzer/dart/element/element2.dart';
86
import 'package:analyzer/error/listener.dart';
97
import 'package:analyzer/src/dart/analysis/file_analysis.dart';
108
import 'package:analyzer/src/dart/ast/ast.dart';
@@ -80,7 +78,7 @@ class ImportsVerifier {
8078
),
8179
);
8280
} else if (directive is ExportDirective) {
83-
var libraryElement = directive.element?.exportedLibrary;
81+
var libraryElement = directive.libraryExport?.exportedLibrary2;
8482
if (libraryElement == null) {
8583
continue;
8684
}
@@ -262,7 +260,8 @@ class ImportsVerifier {
262260
continue;
263261
}
264262

265-
var isUsed = tracking.importToUsedElements.containsKey(importElement);
263+
var isUsed =
264+
tracking.importToUsedElements2.containsKey(importElement);
266265
if (!isUsed) {
267266
_unusedImports.add(importDirective);
268267
errorReporter.atNode(
@@ -309,14 +308,14 @@ class ImportsVerifier {
309308
for (var combinator in importDirective.combinators) {
310309
if (combinator is ShowCombinatorImpl) {
311310
for (var identifier in combinator.shownNames) {
312-
var element = identifier.staticElement;
311+
var element = identifier.element;
313312
if (element != null) {
314-
var importElements = importsTracking.elementsOf(importElement);
313+
var importElements = importsTracking.elementsOf2(importElement);
315314

316315
var isUsed = importElements.contains(element);
317-
if (element is PropertyInducingElement) {
318-
isUsed = importElements.contains(element.getter) ||
319-
importElements.contains(element.setter);
316+
if (element is PropertyInducingElement2) {
317+
isUsed = importElements.contains(element.getter2) ||
318+
importElements.contains(element.setter2);
320319
}
321320

322321
if (!isUsed) {
@@ -338,10 +337,10 @@ class ImportsVerifier {
338337
void _addDuplicateShownHiddenNames(NamespaceDirective directive) {
339338
for (var combinator in directive.combinators) {
340339
// Use a Set to find duplicates in faster than O(n^2) time.
341-
var identifiers = <Element>{};
340+
var identifiers = <Element2>{};
342341
if (combinator is HideCombinator) {
343342
for (var name in combinator.hiddenNames) {
344-
var element = name.staticElement;
343+
var element = name.element;
345344
if (element != null) {
346345
if (!identifiers.add(element)) {
347346
// [name] is a duplicate.
@@ -353,7 +352,7 @@ class ImportsVerifier {
353352
}
354353
} else if (combinator is ShowCombinator) {
355354
for (var name in combinator.shownNames) {
356-
var element = name.staticElement;
355+
var element = name.element;
357356
if (element != null) {
358357
if (!identifiers.add(element)) {
359358
// [name] is a duplicate.
@@ -400,16 +399,16 @@ class ImportsVerifier {
400399
}
401400
}
402401

403-
/// [NamespaceDirective] with non-null imported or exported [LibraryElement].
402+
/// [NamespaceDirective] with non-null imported or exported [LibraryElement2].
404403
class _NamespaceDirective {
405404
final NamespaceDirective node;
406-
final LibraryElement library;
405+
final LibraryElement2 library;
407406

408407
_NamespaceDirective({
409408
required this.node,
410409
required this.library,
411410
});
412411

413412
/// Returns the absolute URI of the library.
414-
String get libraryUriStr => '${library.source.uri}';
413+
String get libraryUriStr => '${library.uri}';
415414
}

0 commit comments

Comments
 (0)