Index: pkg/analyzer/lib/src/dart/element/element.dart |
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart |
index 37a013c80199142df93368d45ad8e1d830690144..7c586f4cd785d5dfe2c81c40503384e865a0cf34 100644 |
--- a/pkg/analyzer/lib/src/dart/element/element.dart |
+++ b/pkg/analyzer/lib/src/dart/element/element.dart |
@@ -5765,8 +5765,12 @@ class ImportElementImpl extends UriReferencedElementImpl |
} |
PrefixElement get prefix { |
- if (_unlinkedImport != null) { |
- if (_unlinkedImport.prefixReference != 0 && _prefix == null) { |
+ if (_prefix == null) { |
+ if (_kernel != null && _kernel.name != null) { |
+ LibraryElementImpl library = enclosingElement as LibraryElementImpl; |
+ _prefix = new PrefixElementImpl.forKernel(library, _kernel); |
+ } |
+ if (_unlinkedImport != null && _unlinkedImport.prefixReference != 0) { |
LibraryElementImpl library = enclosingElement as LibraryElementImpl; |
_prefix = new PrefixElementImpl.forSerialized(_unlinkedImport, library); |
} |
@@ -8319,11 +8323,17 @@ class PrefixElementImpl extends ElementImpl implements PrefixElement { |
final UnlinkedImport _unlinkedImport; |
/** |
+ * The kernel of the element. |
+ */ |
+ final kernel.LibraryDependency _kernel; |
+ |
+ /** |
* Initialize a newly created method element to have the given [name] and |
* [nameOffset]. |
*/ |
PrefixElementImpl(String name, int nameOffset) |
: _unlinkedImport = null, |
+ _kernel = null, |
super(name, nameOffset); |
/** |
@@ -8331,6 +8341,7 @@ class PrefixElementImpl extends ElementImpl implements PrefixElement { |
*/ |
PrefixElementImpl.forNode(Identifier name) |
: _unlinkedImport = null, |
+ _kernel = null, |
super.forNode(name); |
/** |
@@ -8338,7 +8349,15 @@ class PrefixElementImpl extends ElementImpl implements PrefixElement { |
*/ |
PrefixElementImpl.forSerialized( |
this._unlinkedImport, LibraryElementImpl enclosingLibrary) |
- : super.forSerialized(enclosingLibrary); |
+ : _kernel = null, |
+ super.forSerialized(enclosingLibrary); |
+ |
+ /** |
+ * Initialize using the given kernel. |
+ */ |
+ PrefixElementImpl.forKernel(LibraryElementImpl enclosingLibrary, this._kernel) |
+ : _unlinkedImport = null, |
+ super.forSerialized(enclosingLibrary); |
@override |
String get displayName => name; |
@@ -8358,6 +8377,9 @@ class PrefixElementImpl extends ElementImpl implements PrefixElement { |
@override |
String get name { |
+ if (_kernel != null) { |
+ return _kernel.name; |
+ } |
if (_unlinkedImport != null) { |
if (_name == null) { |
LibraryElementImpl library = enclosingElement as LibraryElementImpl; |