| 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 file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /// This file declares a "shadow hierarchy" of concrete classes which extend | 5 /// This file declares a "shadow hierarchy" of concrete classes which extend |
| 6 /// the kernel class hierarchy, adding methods and fields needed by the | 6 /// the kernel class hierarchy, adding methods and fields needed by the |
| 7 /// BodyBuilder. | 7 /// BodyBuilder. |
| 8 /// | 8 /// |
| 9 /// Instances of these classes may be created using the factory methods in | 9 /// Instances of these classes may be created using the factory methods in |
| 10 /// `ast_factory.dart`. | 10 /// `ast_factory.dart`. |
| (...skipping 1054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1065 bool isOverloadedArithmeticOperator = false; | 1065 bool isOverloadedArithmeticOperator = false; |
| 1066 Member interfaceMember; | 1066 Member interfaceMember; |
| 1067 if (receiverType is InterfaceType) { | 1067 if (receiverType is InterfaceType) { |
| 1068 interfaceMember = inferrer.classHierarchy | 1068 interfaceMember = inferrer.classHierarchy |
| 1069 .getInterfaceMember(receiverType.classNode, name); | 1069 .getInterfaceMember(receiverType.classNode, name); |
| 1070 if (interfaceMember is Procedure) { | 1070 if (interfaceMember is Procedure) { |
| 1071 // Our non-strong golden files currently don't include interface | 1071 // Our non-strong golden files currently don't include interface |
| 1072 // targets, so we can't store the interface target without causing tests | 1072 // targets, so we can't store the interface target without causing tests |
| 1073 // to fail. TODO(paulberry): fix this. | 1073 // to fail. TODO(paulberry): fix this. |
| 1074 if (inferrer.strongMode) { | 1074 if (inferrer.strongMode) { |
| 1075 inferrer.instrumentation?.record(Uri.parse(inferrer.uri), fileOffset, |
| 1076 'target', new InstrumentationValueForProcedure(interfaceMember)); |
| 1075 interfaceTarget = interfaceMember; | 1077 interfaceTarget = interfaceMember; |
| 1076 } | 1078 } |
| 1077 isOverloadedArithmeticOperator = inferrer.typeSchemaEnvironment | 1079 isOverloadedArithmeticOperator = inferrer.typeSchemaEnvironment |
| 1078 .isOverloadedArithmeticOperator(interfaceMember); | 1080 .isOverloadedArithmeticOperator(interfaceMember); |
| 1079 } | 1081 } |
| 1080 } | 1082 } |
| 1081 var calleeType = inferrer.getCalleeFunctionType( | 1083 var calleeType = |
| 1082 interfaceMember, receiverType, name, fileOffset); | 1084 inferrer.getCalleeFunctionType(interfaceMember, receiverType, name); |
| 1083 var inferredType = inferrer.inferInvocation(typeContext, typeNeeded, | 1085 var inferredType = inferrer.inferInvocation(typeContext, typeNeeded, |
| 1084 fileOffset, calleeType, calleeType.returnType, arguments, | 1086 fileOffset, calleeType, calleeType.returnType, arguments, |
| 1085 isOverloadedArithmeticOperator: isOverloadedArithmeticOperator, | 1087 isOverloadedArithmeticOperator: isOverloadedArithmeticOperator, |
| 1086 receiverType: receiverType); | 1088 receiverType: receiverType); |
| 1087 inferrer.listener.methodInvocationExit(this, inferredType); | 1089 inferrer.listener.methodInvocationExit(this, inferredType); |
| 1088 return inferredType; | 1090 return inferredType; |
| 1089 } | 1091 } |
| 1090 } | 1092 } |
| 1091 | 1093 |
| 1092 /// Shadow object for [Not]. | 1094 /// Shadow object for [Not]. |
| (...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1874 closureContext.isAsync | 1876 closureContext.isAsync |
| 1875 ? inferrer.coreTypes.streamClass | 1877 ? inferrer.coreTypes.streamClass |
| 1876 : inferrer.coreTypes.iterableClass); | 1878 : inferrer.coreTypes.iterableClass); |
| 1877 } | 1879 } |
| 1878 var inferredType = inferrer.inferExpression( | 1880 var inferredType = inferrer.inferExpression( |
| 1879 expression, typeContext, closureContext != null); | 1881 expression, typeContext, closureContext != null); |
| 1880 closureContext.handleYield(inferrer, isYieldStar, inferredType); | 1882 closureContext.handleYield(inferrer, isYieldStar, inferredType); |
| 1881 inferrer.listener.yieldStatementExit(this); | 1883 inferrer.listener.yieldStatementExit(this); |
| 1882 } | 1884 } |
| 1883 } | 1885 } |
| OLD | NEW |