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

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

Issue 2978353002: Resynthesize field formal parameters from Kernel. (Closed)
Patch Set: Use VariableDeclaration.isFieldFormal 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/context/mock_sdk.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 9563b27f54ee02b4b848e4d9d07c6670b114ce1d..97a6c7006a36aec1c9aa83c397105930c4b7202c 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1909,6 +1909,13 @@ class ConstFieldElementImpl extends FieldElementImpl with ConstVariableElement {
ConstFieldElementImpl(String name, int offset) : super(name, offset);
/**
+ * Initialize using the given kernel.
+ */
+ ConstFieldElementImpl.forKernel(
+ ElementImpl enclosingElement, kernel.Field kernel)
+ : super.forKernel(enclosingElement, kernel);
+
+ /**
* Initialize a newly created field element to have the given [name].
*/
ConstFieldElementImpl.forNode(Identifier name) : super.forNode(name);
@@ -1919,13 +1926,6 @@ class ConstFieldElementImpl extends FieldElementImpl with ConstVariableElement {
ConstFieldElementImpl.forSerialized(
UnlinkedVariable unlinkedVariable, ElementImpl enclosingElement)
: super.forSerialized(unlinkedVariable, enclosingElement);
-
- /**
- * Initialize using the given kernel.
- */
- ConstFieldElementImpl.forKernel(
- ElementImpl enclosingElement, kernel.Field kernel)
- : super.forKernel(enclosingElement, kernel);
}
/**
@@ -2551,6 +2551,13 @@ class DefaultFieldFormalParameterElementImpl
: super(name, nameOffset);
/**
+ * Initialize using the given kernel.
+ */
+ DefaultFieldFormalParameterElementImpl.forKernel(ElementImpl enclosingElement,
+ kernel.VariableDeclaration kernel, ParameterKind parameterKind)
+ : super.forKernel(enclosingElement, kernel, parameterKind);
+
+ /**
* Initialize a newly created parameter element to have the given [name].
*/
DefaultFieldFormalParameterElementImpl.forNode(Identifier name)
@@ -2577,6 +2584,13 @@ class DefaultParameterElementImpl extends ParameterElementImpl
: super(name, nameOffset);
/**
+ * Initialize using the given kernel.
+ */
+ DefaultParameterElementImpl.forKernel(ElementImpl enclosingElement,
+ kernel.VariableDeclaration kernel, ParameterKind parameterKind)
+ : super.forKernel(enclosingElement, kernel, parameterKind);
+
+ /**
* Initialize a newly created parameter element to have the given [name].
*/
DefaultParameterElementImpl.forNode(Identifier name) : super.forNode(name);
@@ -4441,6 +4455,13 @@ class FieldFormalParameterElementImpl extends ParameterElementImpl
: super(name, nameOffset);
/**
+ * Initialize using the given kernel.
+ */
+ FieldFormalParameterElementImpl.forKernel(ElementImpl enclosingElement,
+ kernel.VariableDeclaration kernel, ParameterKind parameterKind)
+ : super.forKernel(enclosingElement, kernel, parameterKind);
+
+ /**
* Initialize a newly created parameter element to have the given [name].
*/
FieldFormalParameterElementImpl.forNode(Identifier name)
@@ -7938,18 +7959,40 @@ class ParameterElementImpl extends VariableElementImpl
if (function.positionalParameters.isNotEmpty ||
function.namedParameters.isNotEmpty) {
var parameters = <ParameterElement>[];
+
+ // Add positional required and optional parameters.
for (int i = 0; i < function.positionalParameters.length; i++) {
- parameters.add(new ParameterElementImpl.forKernel(
- enclosingElement,
- function.positionalParameters[i],
- i < function.requiredParameterCount
- ? ParameterKind.REQUIRED
- : ParameterKind.POSITIONAL));
+ kernel.VariableDeclaration parameter = function.positionalParameters[i];
+ if (i < function.requiredParameterCount) {
+ if (parameter.isFieldFormal) {
+ parameters.add(new FieldFormalParameterElementImpl.forKernel(
+ enclosingElement, parameter, ParameterKind.REQUIRED));
+ } else {
+ parameters.add(new ParameterElementImpl.forKernel(
+ enclosingElement, parameter, ParameterKind.REQUIRED));
+ }
+ } else {
+ if (parameter.isFieldFormal) {
+ parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel(
+ enclosingElement, parameter, ParameterKind.POSITIONAL));
+ } else {
+ parameters.add(new DefaultParameterElementImpl.forKernel(
+ enclosingElement, parameter, ParameterKind.POSITIONAL));
+ }
+ }
}
+
+ // Add named parameters.
for (var k in function.namedParameters) {
- parameters.add(new ParameterElementImpl.forKernel(
- enclosingElement, k, ParameterKind.NAMED));
+ if (k.isFieldFormal) {
+ parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel(
+ enclosingElement, k, ParameterKind.NAMED));
+ } else {
+ parameters.add(new DefaultParameterElementImpl.forKernel(
+ enclosingElement, k, ParameterKind.NAMED));
+ }
}
+
return parameters;
} else {
return const <ParameterElement>[];
« no previous file with comments | « no previous file | pkg/analyzer/test/src/context/mock_sdk.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698