Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: pkg/analyzer/lib/src/dart/element/element.dart

Issue 2983423003: Resynthesize import prefixes from Kernel. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « no previous file | pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698