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>[]; |