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

Side by Side Diff: pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart

Issue 2950193002: Clean up duplicate type inference code for fetching parameter types. (Closed)
Patch Set: Created 3 years, 6 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
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 import 'package:front_end/src/base/instrumentation.dart'; 5 import 'package:front_end/src/base/instrumentation.dart';
6 import 'package:front_end/src/dependency_walker.dart' as dependencyWalker; 6 import 'package:front_end/src/dependency_walker.dart' as dependencyWalker;
7 import 'package:front_end/src/fasta/errors.dart'; 7 import 'package:front_end/src/fasta/errors.dart';
8 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'; 8 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart';
9 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart' ; 9 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart' ;
10 import 'package:front_end/src/fasta/type_inference/type_inferrer.dart'; 10 import 'package:front_end/src/fasta/type_inference/type_inferrer.dart';
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 259 }
260 for (var formal in initializingFormals) { 260 for (var formal in initializingFormals) {
261 formal.type = _inferInitializingFormalType(formal); 261 formal.type = _inferInitializingFormalType(formal);
262 } 262 }
263 } 263 }
264 264
265 /// Retrieve the [TypeInferrer] for the given [member], which was created by 265 /// Retrieve the [TypeInferrer] for the given [member], which was created by
266 /// a previous call to [createTopLevelTypeInferrer]. 266 /// a previous call to [createTopLevelTypeInferrer].
267 TypeInferrerImpl getMemberTypeInferrer(KernelMember member); 267 TypeInferrerImpl getMemberTypeInferrer(KernelMember member);
268 268
269 DartType getNamedParameterType(FunctionType functionType, String name) {
270 return functionType.getNamedParameter(name) ?? const DynamicType();
271 }
272
273 DartType getPositionalParameterType(FunctionType functionType, int i) {
274 if (i < functionType.positionalParameters.length) {
275 return functionType.positionalParameters[i];
276 } else {
277 return const DynamicType();
278 }
279 }
280
281 /// Performs type inference on the given [accessorNode]. 269 /// Performs type inference on the given [accessorNode].
282 void inferAccessor(AccessorNode accessorNode) { 270 void inferAccessor(AccessorNode accessorNode) {
283 assert(accessorNode.state == InferenceState.NotInferredYet); 271 assert(accessorNode.state == InferenceState.NotInferredYet);
284 accessorNode.state = InferenceState.Inferring; 272 accessorNode.state = InferenceState.Inferring;
285 var member = accessorNode.member; 273 var member = accessorNode.member;
286 if (strongMode) { 274 if (strongMode) {
287 var inferredType = tryInferAccessorByInheritance(accessorNode); 275 var inferredType = tryInferAccessorByInheritance(accessorNode);
288 var typeInferrer = getMemberTypeInferrer(member); 276 var typeInferrer = getMemberTypeInferrer(member);
289 if (inferredType == null) { 277 if (inferredType == null) {
290 if (member is KernelField) { 278 if (member is KernelField) {
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 } 589 }
602 590
603 @override 591 @override
604 void evaluateScc(List<AccessorNode> scc) { 592 void evaluateScc(List<AccessorNode> scc) {
605 // Mark every accessor as part of a circularity. 593 // Mark every accessor as part of a circularity.
606 for (var f in scc) { 594 for (var f in scc) {
607 f._typeInferenceEngine.inferAccessorCircular(f); 595 f._typeInferenceEngine.inferAccessorCircular(f);
608 } 596 }
609 } 597 }
610 } 598 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698