Version 2.18.0-117.0.dev
Merge commit 'a251cd9b1e79fa927f1280014be73a317cbad951' into 'dev'
diff --git a/pkg/analysis_server/lib/src/protocol_server.dart b/pkg/analysis_server/lib/src/protocol_server.dart
index 7f8d2e5..23790f4 100644
--- a/pkg/analysis_server/lib/src/protocol_server.dart
+++ b/pkg/analysis_server/lib/src/protocol_server.dart
@@ -262,7 +262,7 @@
var path = <Element>[];
if (element is engine.PrefixElement) {
- element = element.enclosingElement.definingCompilationUnit;
+ element = element.enclosingElement2.definingCompilationUnit;
}
var withNullability = element.library?.isNonNullableByDefault ?? false;
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 4462b02..4396c0f 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -3,6 +3,7 @@
* Deprecated `ResourceProviderMixin.newFile2`, use `newFile` instead.
* Deprecated `ResourceProviderMixin.newAnalysisOptionsYamlFile2`, use `newAnalysisOptionsYamlFile` instead.
* Deprecated `DartType.resolveToBound`, use `TypeSystem.resolveToBound` instead.
+* Deprecated `LibraryElement.getImportsWithPrefix`, use `PrefixElement.imports` instead.
## 4.0.0
* Removed deprecated `UriKind` and `Source.uriKind`.
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 1ac9cdd..6ed4c00 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -1397,6 +1397,7 @@
/// Return a list containing all of the imports that share the given [prefix],
/// or an empty array if there are no such imports.
+ @Deprecated('Use PrefixElement.imports instead')
List<ImportElement> getImportsWithPrefix(PrefixElement prefix);
/// Return the class defined in this library that has the given [name], or
@@ -1658,6 +1659,9 @@
@experimental
LibraryOrAugmentationElement get enclosingElement2;
+ /// Return the imports that share this prefix.
+ List<ImportElement> get imports;
+
@override
String get name;
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index b7fddeb..4fc7f27 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -47,7 +47,7 @@
class ExternalLibrary {
final Uri uri;
- ExternalLibrary(this.uri);
+ ExternalLibrary._(this.uri);
}
/// [FileContentOverlay] is used to temporary override content of files.
@@ -232,20 +232,9 @@
LibraryCycle? get internal_libraryCycle => _libraryCycle;
- /// Return `true` if the file is a stub created for a library in the provided
- /// external summary store.
- bool get isExternalLibrary {
- return _fsState.externalSummaries != null &&
- _fsState.externalSummaries!.hasLinkedLibrary(uriStr);
- }
-
/// Return `true` if the file does not have a `library` directive, and has a
/// `part of` directive, so is probably a part.
bool get isPart {
- if (_fsState.externalSummaries != null &&
- _fsState.externalSummaries!.hasUnlinkedUnit(uriStr)) {
- return _fsState.externalSummaries!.isPartUnit(uriStr);
- }
return !_unlinked2!.hasLibraryDirective && _unlinked2!.hasPartOfDirective;
}
@@ -872,10 +861,11 @@
Either2<FileState?, ExternalLibrary> getFileForUri(Uri uri) {
// If the external store has this URI, create a stub file for it.
// We are given all required unlinked and linked summaries for it.
+ final externalSummaries = this.externalSummaries;
if (externalSummaries != null) {
String uriStr = uri.toString();
- if (externalSummaries!.hasLinkedLibrary(uriStr)) {
- return Either2.t2(ExternalLibrary(uri));
+ if (externalSummaries.hasLinkedLibrary(uriStr)) {
+ return Either2.t2(ExternalLibrary._(uri));
}
}
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 524586d..cc15afe 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -8891,8 +8891,7 @@
bool get isDeferred {
Element? element = _prefix.staticElement;
if (element is PrefixElement) {
- List<ImportElement> imports =
- element.enclosingElement.getImportsWithPrefix(element);
+ List<ImportElement> imports = element.imports;
if (imports.length != 1) {
return false;
}
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 94e99c7..370ca14 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -4021,9 +4021,10 @@
return null;
}
+ @Deprecated('Use PrefixElement.imports instead')
@override
- List<ImportElement> getImportsWithPrefix(PrefixElement prefixElement) {
- return getImportsWithPrefixFromImports(prefixElement, imports);
+ List<ImportElement> getImportsWithPrefix(PrefixElement prefix) {
+ return prefix.imports;
}
@override
@@ -4119,18 +4120,6 @@
return prefixes.toList(growable: false);
}
- static List<ImportElement> getImportsWithPrefixFromImports(
- PrefixElement prefixElement, List<ImportElement> imports) {
- int count = imports.length;
- List<ImportElement> importList = <ImportElement>[];
- for (int i = 0; i < count; i++) {
- if (identical(imports[i].prefix, prefixElement)) {
- importList.add(imports[i]);
- }
- }
- return importList;
- }
-
static ClassElement? getTypeFromParts(
String className,
CompilationUnitElement definingCompilationUnit,
@@ -5104,13 +5093,21 @@
@override
String get displayName => name;
+ @Deprecated('Use enclosingElement2 instead')
@override
LibraryElement get enclosingElement =>
super.enclosingElement as LibraryElement;
@override
- LibraryOrAugmentationElementImpl get enclosingElement2 =>
- super.enclosingElement as LibraryOrAugmentationElementImpl;
+ LibraryOrAugmentationElement get enclosingElement2 =>
+ super.enclosingElement as LibraryOrAugmentationElement;
+
+ @override
+ List<ImportElement> get imports {
+ return enclosingElement2.imports
+ .where((import) => identical(import.prefix, this))
+ .toList();
+ }
@override
ElementKind get kind => ElementKind.PREFIX;
@@ -5121,7 +5118,7 @@
}
@override
- Scope get scope => _scope ??= PrefixScope(enclosingElement, this);
+ Scope get scope => _scope ??= PrefixScope(enclosingElement2, this);
@override
T? accept<T>(ElementVisitor<T> visitor) => visitor.visitPrefixElement(this);
diff --git a/pkg/analyzer/lib/src/dart/element/scope.dart b/pkg/analyzer/lib/src/dart/element/scope.dart
index bf0f7e8..e8c8698 100644
--- a/pkg/analyzer/lib/src/dart/element/scope.dart
+++ b/pkg/analyzer/lib/src/dart/element/scope.dart
@@ -133,7 +133,7 @@
}
class PrefixScope implements Scope {
- final LibraryElement _library;
+ final LibraryOrAugmentationElement _library;
final Map<String, Element> _getters = {};
final Map<String, Element> _setters = {};
final Set<ExtensionElement> _extensions = {};
diff --git a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
index 8fdaa1a..44f0869 100644
--- a/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart
@@ -654,7 +654,7 @@
// Note: prefix?.bar is reported as an error in ElementResolver.
if (name == FunctionElement.LOAD_LIBRARY_NAME) {
- var imports = _definingLibrary.getImportsWithPrefix(prefix);
+ var imports = prefix.imports;
if (imports.length == 1 && imports[0].isDeferred) {
var importedLibrary = imports[0].importedLibrary;
var element = importedLibrary?.loadLibraryFunction;
diff --git a/tools/VERSION b/tools/VERSION
index 5b795aa..21165ce 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 116
+PRERELEASE 117
PRERELEASE_PATCH 0
\ No newline at end of file