| Index: sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart (revision 19670)
|
| +++ sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart (working copy)
|
| @@ -129,23 +129,7 @@
|
| int receiverIndex = instruction.isInterceptorCall ? 1 : 0;
|
| HType receiverType = instruction.inputs[receiverIndex].instructionType;
|
| Selector refined = receiverType.refine(instruction.selector, compiler);
|
| - // TODO(kasperl): Ask the type inferrer about the type of the
|
| - // selector not the individual elements. This is basically code
|
| - // lifted out of the inferrer. Not good.
|
| - HType type = HType.CONFLICTING;
|
| - DartType functionType = compiler.functionClass.computeType(compiler);
|
| - for (Element each in compiler.world.allFunctions.filter(refined)) {
|
| - HType inferred;
|
| - if (refined.isGetter() && each.isFunction()) {
|
| - inferred = new HType.nonNullExact(functionType, compiler);
|
| - } else if (refined.isGetter() && each.isField()) {
|
| - inferred = new HType.inferredTypeForElement(each, compiler);
|
| - } else {
|
| - inferred = new HType.inferredReturnTypeForElement(each, compiler);
|
| - }
|
| - type = type.union(inferred, compiler);
|
| - if (type.isUnknown()) break;
|
| - }
|
| + HType type = new HType.inferredTypeForSelector(refined, compiler);
|
| if (type.isUseful()) return type;
|
| return instruction.specializer.computeTypeFromInputTypes(
|
| instruction, compiler);
|
|
|