| 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 607946a9faebfdb9ce9a1cac035564a3420ea8db..408d4e54e5dc2356fb73ada799945081a4c2c999 100644
|
| --- a/pkg/analyzer/lib/src/dart/element/element.dart
|
| +++ b/pkg/analyzer/lib/src/dart/element/element.dart
|
| @@ -6238,6 +6238,33 @@ class MethodElementImpl extends ExecutableElementImpl implements MethodElement {
|
| @override
|
| MethodDeclaration computeNode() =>
|
| getNodeMatching((node) => node is MethodDeclaration);
|
| +
|
| + @override
|
| + FunctionType getReifiedType(DartType objectType) {
|
| + // Collect the covariant parameters. Do this first so we don't allocate
|
| + // anything in the common case where there are none.
|
| + Set<String> covariantNames;
|
| + for (ParameterElement parameter in parameters) {
|
| + if (parameter.isCovariant) {
|
| + covariantNames ??= new Set();
|
| + covariantNames.add(parameter.name);
|
| + }
|
| + }
|
| +
|
| + if (covariantNames == null) return type;
|
| +
|
| + List<ParameterElement> covariantParameters = parameters.map((parameter) {
|
| + if (!covariantNames.contains(parameter.name)) {
|
| + return parameter;
|
| + }
|
| +
|
| + return new ParameterElementImpl.synthetic(
|
| + parameter.name, objectType, parameter.parameterKind);
|
| + }).toList();
|
| +
|
| + return new FunctionElementImpl.synthetic(covariantParameters, returnType)
|
| + .type;
|
| + }
|
| }
|
|
|
| /**
|
|
|