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

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

Issue 2980963002: Resynthesize constructor properties. (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 7c635fe8be939d5243ef53c69f0a8b88ca8ecf06..cf4d49346a521c67f48c3003cc3d1039a87b7412 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -476,6 +476,14 @@ class ClassElementImpl extends AbstractClassElementImpl
super(name, offset);
/**
+ * Initialize using the given kernel.
+ */
+ ClassElementImpl.forKernel(
+ CompilationUnitElementImpl enclosingUnit, this._kernel)
+ : _unlinkedClass = null,
+ super.forSerialized(enclosingUnit);
+
+ /**
* Initialize a newly created class element to have the given [name].
*/
ClassElementImpl.forNode(Identifier name)
@@ -492,14 +500,6 @@ class ClassElementImpl extends AbstractClassElementImpl
super.forSerialized(enclosingUnit);
/**
- * Initialize using the given kernel.
- */
- ClassElementImpl.forKernel(
- CompilationUnitElementImpl enclosingUnit, this._kernel)
- : _unlinkedClass = null,
- super.forSerialized(enclosingUnit);
-
- /**
* Set whether this class is abstract.
*/
void set abstract(bool isAbstract) {
@@ -1397,15 +1397,13 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
super(name, -1);
/**
- * Initialize using the given serialized information.
+ * Initialize using the given kernel information.
*/
- CompilationUnitElementImpl.forSerialized(
- LibraryElementImpl enclosingLibrary,
- this.resynthesizerContext,
- this._unlinkedUnit,
- this._unlinkedPart,
- String name)
- : _kernelContext = null,
+ CompilationUnitElementImpl.forKernel(
+ LibraryElementImpl enclosingLibrary, this._kernelContext, String name)
+ : resynthesizerContext = null,
+ _unlinkedUnit = null,
+ _unlinkedPart = null,
super.forSerialized(null) {
_enclosingElement = enclosingLibrary;
_name = name;
@@ -1413,13 +1411,15 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
}
/**
- * Initialize using the given kernel information.
+ * Initialize using the given serialized information.
*/
- CompilationUnitElementImpl.forKernel(
- LibraryElementImpl enclosingLibrary, this._kernelContext, String name)
- : resynthesizerContext = null,
- _unlinkedUnit = null,
- _unlinkedPart = null,
+ CompilationUnitElementImpl.forSerialized(
+ LibraryElementImpl enclosingLibrary,
+ this.resynthesizerContext,
+ this._unlinkedUnit,
+ this._unlinkedPart,
+ String name)
+ : _kernelContext = null,
super.forSerialized(null) {
_enclosingElement = enclosingLibrary;
_name = name;
@@ -2018,6 +2018,15 @@ class ConstructorElementImpl extends ExecutableElementImpl
super(name, offset);
/**
+ * Initialize using the given serialized information.
+ */
+ ConstructorElementImpl.forKernel(
+ ClassElementImpl enclosingClass, this._kernel)
+ : super.forKernel(enclosingClass, _kernel) {
+ isSynthetic = _kernel.isSyntheticDefault;
+ }
+
+ /**
* Initialize a newly created constructor element to have the given [name].
*/
ConstructorElementImpl.forNode(Identifier name)
@@ -2033,15 +2042,6 @@ class ConstructorElementImpl extends ExecutableElementImpl
super.forSerialized(serializedExecutable, enclosingClass);
/**
- * Initialize using the given serialized information.
- */
- ConstructorElementImpl.forKernel(
- ClassElementImpl enclosingClass, this._kernel)
- : super.forSerialized(null, enclosingClass) {
- isSynthetic = _kernel.isSyntheticDefault;
- }
-
- /**
* Return the constant initializers for this element, which will be empty if
* there are no initializers, or `null` if there was an error in the source.
*/
@@ -2078,6 +2078,9 @@ class ConstructorElementImpl extends ExecutableElementImpl
@override
bool get isConst {
+ if (_kernel != null) {
+ return _kernel.isConst;
+ }
if (serializedExecutable != null) {
return serializedExecutable.isConst;
}
@@ -3662,6 +3665,13 @@ abstract class ExecutableElementImpl extends ElementImpl
super(name, offset);
/**
+ * Initialize using the given kernel.
+ */
+ ExecutableElementImpl.forKernel(ElementImpl enclosingElement, this._kernel)
+ : serializedExecutable = null,
+ super.forSerialized(enclosingElement);
+
+ /**
* Initialize a newly created executable element to have the given [name].
*/
ExecutableElementImpl.forNode(Identifier name)
@@ -3678,13 +3688,6 @@ abstract class ExecutableElementImpl extends ElementImpl
super.forSerialized(enclosingElement);
/**
- * Initialize using the given kernel.
- */
- ExecutableElementImpl.forKernel(ElementImpl enclosingElement, this._kernel)
- : serializedExecutable = null,
- super.forSerialized(enclosingElement);
-
- /**
* Set whether this executable element's body is asynchronous.
*/
void set asynchronous(bool isAsynchronous) {
@@ -3715,6 +3718,9 @@ abstract class ExecutableElementImpl extends ElementImpl
@override
String get displayName {
+ if (_kernel != null) {
+ return _kernel.name.name;
+ }
if (serializedExecutable != null) {
return serializedExecutable.name;
}
@@ -3801,6 +3807,9 @@ abstract class ExecutableElementImpl extends ElementImpl
@override
bool get isExternal {
+ if (_kernel != null) {
+ return _kernel.isExternal;
+ }
if (serializedExecutable != null) {
return serializedExecutable.isExternal;
}
@@ -5550,6 +5559,13 @@ class ImportElementImpl extends UriReferencedElementImpl
}
/**
+ * The kernel context in which a library is resynthesized.
+ */
+abstract class KernelLibraryResynthesizerContext {
+ kernel.Library get library;
+}
+
+/**
* A concrete implementation of a [LabelElement].
*/
class LabelElementImpl extends ElementImpl implements LabelElement {
@@ -5710,6 +5726,27 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
super(name, offset);
/**
+ * Initialize using the given kernel information.
+ */
+ LibraryElementImpl.forKernel(this.context, this._kernelContext)
+ : resynthesizerContext = null,
+ _unlinkedDefiningUnit = null,
+ nameLength = _kernelContext.library.name?.length ?? 0,
+ super.forSerialized(null) {
+ _name = _kernelContext.library.name ?? '';
+ _nameOffset = _kernelContext.library.fileOffset;
+ setResolutionCapability(
+ LibraryResolutionCapability.resolvedTypeNames, true);
+ setResolutionCapability(
+ LibraryResolutionCapability.constantExpressions, true);
+
+ definingCompilationUnit = new CompilationUnitElementImpl.forKernel(
+ this, _kernelContext, '<no-name>');
+
+ // TODO(scheglov) how to support parts?
+ }
+
+ /**
* Initialize a newly created library element in the given [context] to have
* the given [name].
*/
@@ -5735,27 +5772,6 @@ class LibraryElementImpl extends ElementImpl implements LibraryElement {
LibraryResolutionCapability.constantExpressions, true);
}
- /**
- * Initialize using the given kernel information.
- */
- LibraryElementImpl.forKernel(this.context, this._kernelContext)
- : resynthesizerContext = null,
- _unlinkedDefiningUnit = null,
- nameLength = _kernelContext.library.name?.length ?? 0,
- super.forSerialized(null) {
- _name = _kernelContext.library.name ?? '';
- _nameOffset = _kernelContext.library.fileOffset;
- setResolutionCapability(
- LibraryResolutionCapability.resolvedTypeNames, true);
- setResolutionCapability(
- LibraryResolutionCapability.constantExpressions, true);
-
- definingCompilationUnit = new CompilationUnitElementImpl.forKernel(
- this, _kernelContext, '<no-name>');
-
- // TODO(scheglov) how to support parts?
- }
-
@override
int get codeLength {
CompilationUnitElement unit = _definingCompilationUnit;
@@ -8991,10 +9007,3 @@ abstract class VariableElementImpl extends ElementImpl
_initializer?.accept(visitor);
}
}
-
-/**
- * The kernel context in which a library is resynthesized.
- */
-abstract class KernelLibraryResynthesizerContext {
- kernel.Library get library;
-}
« 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