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