Ask LinkedElementFactory from the enclosing library / augmentation.
Change-Id: I0d3e89d9384ac87126c3e8bcb89505b239959f2c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249400
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 765ffc5..a2bca9a 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -3649,7 +3649,7 @@
class LibraryAugmentationElementImpl extends LibraryOrAugmentationElementImpl
implements LibraryAugmentationElement {
@override
- final LibraryOrAugmentationElement augmented;
+ final LibraryOrAugmentationElementImpl augmented;
LibraryAugmentationElementImpl({
required this.augmented,
@@ -3677,7 +3677,7 @@
Scope get scope => throw UnimplementedError();
@override
- AnalysisSession get session => augmented.session;
+ AnalysisSessionImpl get session => augmented.session;
@override
TypeProvider get typeProvider => augmented.typeProvider;
@@ -4231,6 +4231,9 @@
_prefixes ??= buildPrefixesFromImports(imports);
@override
+ AnalysisSessionImpl get session;
+
+ @override
Source get source {
return _definingCompilationUnit.source;
}
@@ -5098,8 +5101,8 @@
super.enclosingElement as LibraryElement;
@override
- LibraryOrAugmentationElement get enclosingElement2 =>
- super.enclosingElement as LibraryOrAugmentationElement;
+ LibraryOrAugmentationElementImpl get enclosingElement2 =>
+ super.enclosingElement as LibraryOrAugmentationElementImpl;
@override
List<ImportElement> get imports {
diff --git a/pkg/analyzer/lib/src/dart/element/scope.dart b/pkg/analyzer/lib/src/dart/element/scope.dart
index 259ad2c..f57b6e0 100644
--- a/pkg/analyzer/lib/src/dart/element/scope.dart
+++ b/pkg/analyzer/lib/src/dart/element/scope.dart
@@ -108,10 +108,10 @@
}
class LibraryScope extends EnclosedScope {
- final LibraryElement _element;
+ final LibraryElementImpl _element;
final List<ExtensionElement> extensions = [];
- LibraryScope(LibraryElement element)
+ LibraryScope(LibraryElementImpl element)
: _element = element,
super(_LibraryImportScope(element)) {
extensions.addAll((_parent as _LibraryImportScope).extensions);
@@ -147,19 +147,18 @@
}
class PrefixScope implements Scope {
- final LibraryOrAugmentationElement _library;
+ final LibraryOrAugmentationElementImpl _library;
final Map<String, ImportedElement> _getters = {};
final Map<String, ImportedElement> _setters = {};
final Set<ExtensionElement> _extensions = {};
LibraryElement? _deferredLibrary;
PrefixScope(this._library, PrefixElement? prefix) {
- for (var import in _library.imports) {
+ final elementFactory = _library.session.elementFactory;
+ for (final import in _library.imports) {
if (import.prefix == prefix) {
final importedLibrary = import.importedLibrary;
if (importedLibrary is LibraryElementImpl) {
- // TODO(scheglov) Ask it from `_library`.
- final elementFactory = importedLibrary.session.elementFactory;
final combinators = import.combinators.build();
for (final exportedReference in importedLibrary.exportedReferences) {
final reference = exportedReference.reference;
@@ -330,11 +329,11 @@
}
class _LibraryImportScope implements Scope {
- final LibraryElement _library;
+ final LibraryElementImpl _library;
final PrefixScope _nullPrefixScope;
List<ExtensionElement>? _extensions;
- _LibraryImportScope(LibraryElement library)
+ _LibraryImportScope(LibraryElementImpl library)
: _library = library,
_nullPrefixScope = PrefixScope(library, null);