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 37a013c80199142df93368d45ad8e1d830690144..fbbd429142bd7943ad2e5e7aef00c67e7d53792d 100644 |
--- a/pkg/analyzer/lib/src/dart/element/element.dart |
+++ b/pkg/analyzer/lib/src/dart/element/element.dart |
@@ -4071,7 +4071,9 @@ abstract class ExecutableElementImpl extends ElementImpl |
bool get isSynchronous => !isAsynchronous; |
@override |
- List<kernel.TypeParameter> get kernelTypeParams => null; |
+ List<kernel.TypeParameter> get kernelTypeParams { |
+ return _kernel?.function?.typeParameters; |
+ } |
@override |
List<ElementAnnotation> get metadata { |
@@ -8167,14 +8169,28 @@ class ParameterElementImpl extends VariableElementImpl |
*/ |
static List<ParameterElement> forKernelFunction( |
ElementImpl enclosingElement, kernel.FunctionNode function) { |
- if (function.positionalParameters.isNotEmpty || |
- function.namedParameters.isNotEmpty) { |
+ return forKernelParameters( |
+ enclosingElement, |
+ function.requiredParameterCount, |
+ function.positionalParameters, |
+ function.namedParameters); |
+ } |
+ |
+ /** |
+ * Create and return [ParameterElement]s for the given Kernel parameters. |
+ */ |
+ static List<ParameterElement> forKernelParameters( |
+ ElementImpl enclosingElement, |
+ int requiredParameterCount, |
+ List<kernel.VariableDeclaration> positionalParameters, |
+ List<kernel.VariableDeclaration> namedParameters) { |
+ if (positionalParameters.isNotEmpty || namedParameters.isNotEmpty) { |
var parameters = <ParameterElement>[]; |
// Add positional required and optional parameters. |
- for (int i = 0; i < function.positionalParameters.length; i++) { |
- kernel.VariableDeclaration parameter = function.positionalParameters[i]; |
- if (i < function.requiredParameterCount) { |
+ for (int i = 0; i < positionalParameters.length; i++) { |
+ kernel.VariableDeclaration parameter = positionalParameters[i]; |
+ if (i < requiredParameterCount) { |
if (parameter.isFieldFormal) { |
parameters.add(new FieldFormalParameterElementImpl.forKernel( |
enclosingElement, parameter, ParameterKind.REQUIRED)); |
@@ -8194,7 +8210,7 @@ class ParameterElementImpl extends VariableElementImpl |
} |
// Add named parameters. |
- for (var k in function.namedParameters) { |
+ for (var k in namedParameters) { |
if (k.isFieldFormal) { |
parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel( |
enclosingElement, k, ParameterKind.NAMED)); |