OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library analyzer.src.dart.element.element; | 5 library analyzer.src.dart.element.element; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 import 'dart:math' show min; | 8 import 'dart:math' show min; |
9 | 9 |
10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
(...skipping 4053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4064 return hasModifier(Modifier.GENERATOR); | 4064 return hasModifier(Modifier.GENERATOR); |
4065 } | 4065 } |
4066 | 4066 |
4067 @override | 4067 @override |
4068 bool get isOperator => false; | 4068 bool get isOperator => false; |
4069 | 4069 |
4070 @override | 4070 @override |
4071 bool get isSynchronous => !isAsynchronous; | 4071 bool get isSynchronous => !isAsynchronous; |
4072 | 4072 |
4073 @override | 4073 @override |
4074 List<kernel.TypeParameter> get kernelTypeParams => null; | 4074 List<kernel.TypeParameter> get kernelTypeParams { |
| 4075 return _kernel?.function?.typeParameters; |
| 4076 } |
4075 | 4077 |
4076 @override | 4078 @override |
4077 List<ElementAnnotation> get metadata { | 4079 List<ElementAnnotation> get metadata { |
4078 if (serializedExecutable != null) { | 4080 if (serializedExecutable != null) { |
4079 return _metadata ??= | 4081 return _metadata ??= |
4080 _buildAnnotations(enclosingUnit, serializedExecutable.annotations); | 4082 _buildAnnotations(enclosingUnit, serializedExecutable.annotations); |
4081 } | 4083 } |
4082 return super.metadata; | 4084 return super.metadata; |
4083 } | 4085 } |
4084 | 4086 |
(...skipping 4075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8160 .resolveTypeRef(this, _unlinkedParam.type, declaredType: true); | 8162 .resolveTypeRef(this, _unlinkedParam.type, declaredType: true); |
8161 } | 8163 } |
8162 } | 8164 } |
8163 } | 8165 } |
8164 | 8166 |
8165 /** | 8167 /** |
8166 * Create and return [ParameterElement]s for the given [function]. | 8168 * Create and return [ParameterElement]s for the given [function]. |
8167 */ | 8169 */ |
8168 static List<ParameterElement> forKernelFunction( | 8170 static List<ParameterElement> forKernelFunction( |
8169 ElementImpl enclosingElement, kernel.FunctionNode function) { | 8171 ElementImpl enclosingElement, kernel.FunctionNode function) { |
8170 if (function.positionalParameters.isNotEmpty || | 8172 return forKernelParameters( |
8171 function.namedParameters.isNotEmpty) { | 8173 enclosingElement, |
| 8174 function.requiredParameterCount, |
| 8175 function.positionalParameters, |
| 8176 function.namedParameters); |
| 8177 } |
| 8178 |
| 8179 /** |
| 8180 * Create and return [ParameterElement]s for the given Kernel parameters. |
| 8181 */ |
| 8182 static List<ParameterElement> forKernelParameters( |
| 8183 ElementImpl enclosingElement, |
| 8184 int requiredParameterCount, |
| 8185 List<kernel.VariableDeclaration> positionalParameters, |
| 8186 List<kernel.VariableDeclaration> namedParameters) { |
| 8187 if (positionalParameters.isNotEmpty || namedParameters.isNotEmpty) { |
8172 var parameters = <ParameterElement>[]; | 8188 var parameters = <ParameterElement>[]; |
8173 | 8189 |
8174 // Add positional required and optional parameters. | 8190 // Add positional required and optional parameters. |
8175 for (int i = 0; i < function.positionalParameters.length; i++) { | 8191 for (int i = 0; i < positionalParameters.length; i++) { |
8176 kernel.VariableDeclaration parameter = function.positionalParameters[i]; | 8192 kernel.VariableDeclaration parameter = positionalParameters[i]; |
8177 if (i < function.requiredParameterCount) { | 8193 if (i < requiredParameterCount) { |
8178 if (parameter.isFieldFormal) { | 8194 if (parameter.isFieldFormal) { |
8179 parameters.add(new FieldFormalParameterElementImpl.forKernel( | 8195 parameters.add(new FieldFormalParameterElementImpl.forKernel( |
8180 enclosingElement, parameter, ParameterKind.REQUIRED)); | 8196 enclosingElement, parameter, ParameterKind.REQUIRED)); |
8181 } else { | 8197 } else { |
8182 parameters.add(new ParameterElementImpl.forKernel( | 8198 parameters.add(new ParameterElementImpl.forKernel( |
8183 enclosingElement, parameter, ParameterKind.REQUIRED)); | 8199 enclosingElement, parameter, ParameterKind.REQUIRED)); |
8184 } | 8200 } |
8185 } else { | 8201 } else { |
8186 if (parameter.isFieldFormal) { | 8202 if (parameter.isFieldFormal) { |
8187 parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel( | 8203 parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel( |
8188 enclosingElement, parameter, ParameterKind.POSITIONAL)); | 8204 enclosingElement, parameter, ParameterKind.POSITIONAL)); |
8189 } else { | 8205 } else { |
8190 parameters.add(new DefaultParameterElementImpl.forKernel( | 8206 parameters.add(new DefaultParameterElementImpl.forKernel( |
8191 enclosingElement, parameter, ParameterKind.POSITIONAL)); | 8207 enclosingElement, parameter, ParameterKind.POSITIONAL)); |
8192 } | 8208 } |
8193 } | 8209 } |
8194 } | 8210 } |
8195 | 8211 |
8196 // Add named parameters. | 8212 // Add named parameters. |
8197 for (var k in function.namedParameters) { | 8213 for (var k in namedParameters) { |
8198 if (k.isFieldFormal) { | 8214 if (k.isFieldFormal) { |
8199 parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel( | 8215 parameters.add(new DefaultFieldFormalParameterElementImpl.forKernel( |
8200 enclosingElement, k, ParameterKind.NAMED)); | 8216 enclosingElement, k, ParameterKind.NAMED)); |
8201 } else { | 8217 } else { |
8202 parameters.add(new DefaultParameterElementImpl.forKernel( | 8218 parameters.add(new DefaultParameterElementImpl.forKernel( |
8203 enclosingElement, k, ParameterKind.NAMED)); | 8219 enclosingElement, k, ParameterKind.NAMED)); |
8204 } | 8220 } |
8205 } | 8221 } |
8206 | 8222 |
8207 return parameters; | 8223 return parameters; |
(...skipping 1378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9586 | 9602 |
9587 @override | 9603 @override |
9588 DartObject computeConstantValue() => null; | 9604 DartObject computeConstantValue() => null; |
9589 | 9605 |
9590 @override | 9606 @override |
9591 void visitChildren(ElementVisitor visitor) { | 9607 void visitChildren(ElementVisitor visitor) { |
9592 super.visitChildren(visitor); | 9608 super.visitChildren(visitor); |
9593 _initializer?.accept(visitor); | 9609 _initializer?.accept(visitor); |
9594 } | 9610 } |
9595 } | 9611 } |
OLD | NEW |