| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |