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

Side by Side Diff: pkg/front_end/lib/src/fasta/type_inference/type_inferrer.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/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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698