Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Side by Side Diff: pkg/analyzer/lib/src/dart/element/element.dart

Issue 2991723002: Resynthesize FunctionType(s) from Kernel. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/kernel/resynthesize.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/kernel/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698