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/fasta/errors.dart' show internalError; | 6 import 'package:front_end/src/fasta/errors.dart' show internalError; |
7 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'; | 7 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'; |
8 import 'package:front_end/src/fasta/names.dart' show callName; | 8 import 'package:front_end/src/fasta/names.dart' show callName; |
9 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'; | 9 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'; |
10 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart'
; | 10 import 'package:front_end/src/fasta/type_inference/type_inference_listener.dart'
; |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 return typeAsInstanceOfClass.typeArguments[0]; | 454 return typeAsInstanceOfClass.typeArguments[0]; |
455 } | 455 } |
456 } | 456 } |
457 return null; | 457 return null; |
458 } | 458 } |
459 | 459 |
460 /// Gets the initializer for the given [field], or `null` if there is no | 460 /// Gets the initializer for the given [field], or `null` if there is no |
461 /// initializer. | 461 /// initializer. |
462 Expression getFieldInitializer(KernelField field); | 462 Expression getFieldInitializer(KernelField field); |
463 | 463 |
464 DartType getNamedParameterType(FunctionType functionType, String name) { | |
465 return functionType.getNamedParameter(name) ?? const DynamicType(); | |
466 } | |
467 | |
468 DartType getPositionalParameterType(FunctionType functionType, int i) { | |
469 if (i < functionType.positionalParameters.length) { | |
470 return functionType.positionalParameters[i]; | |
471 } else { | |
472 return const DynamicType(); | |
473 } | |
474 } | |
475 | |
476 DartType getSetterType(Member interfaceMember, DartType receiverType) { | 464 DartType getSetterType(Member interfaceMember, DartType receiverType) { |
477 if (receiverType is InterfaceType) { | 465 if (receiverType is InterfaceType) { |
478 if (interfaceMember == null) return const DynamicType(); | 466 if (interfaceMember == null) return const DynamicType(); |
479 var memberClass = interfaceMember.enclosingClass; | 467 var memberClass = interfaceMember.enclosingClass; |
480 DartType setterType; | 468 DartType setterType; |
481 if (interfaceMember is Procedure) { | 469 if (interfaceMember is Procedure) { |
482 assert(interfaceMember.kind == ProcedureKind.Setter); | 470 assert(interfaceMember.kind == ProcedureKind.Setter); |
483 var setterParameters = interfaceMember.function.positionalParameters; | 471 var setterParameters = interfaceMember.function.positionalParameters; |
484 setterType = setterParameters.length > 0 | 472 setterType = setterParameters.length > 0 |
485 ? setterParameters[0].type | 473 ? setterParameters[0].type |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 void _forEachArgument( | 812 void _forEachArgument( |
825 Arguments arguments, void callback(String name, Expression expression)) { | 813 Arguments arguments, void callback(String name, Expression expression)) { |
826 for (var expression in arguments.positional) { | 814 for (var expression in arguments.positional) { |
827 callback(null, expression); | 815 callback(null, expression); |
828 } | 816 } |
829 for (var namedExpression in arguments.named) { | 817 for (var namedExpression in arguments.named) { |
830 callback(namedExpression.name, namedExpression.value); | 818 callback(namedExpression.name, namedExpression.value); |
831 } | 819 } |
832 } | 820 } |
833 } | 821 } |
OLD | NEW |