| Index: pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/type_propagation.dart b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| index c200cc185b34add440c692936863bc1ba9c8ad16..8519565cd1f709b838f504c31de0ef11c6692225 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| @@ -2078,14 +2078,18 @@ class TransformingVisitor extends DeepRecursiveVisitor {
|
| node.replaceUsesWith(argument);
|
| return new CpsFragment();
|
| } else if (typeSystem.isDefinitelySelfInterceptor(value.type)) {
|
| - CpsFragment cps = new CpsFragment(node.sourceInformation);
|
| - Primitive invoke = cps.invokeMethod(argument,
|
| - Selectors.toString_,
|
| - value.type,
|
| - [cps.makeZero()],
|
| - CallingConvention.DummyIntercepted);
|
| - node.replaceUsesWith(invoke);
|
| - return cps;
|
| + TypeMask toStringReturn = typeSystem.getInvokeReturnType(
|
| + Selectors.toString_, value.type);
|
| + if (typeSystem.isDefinitelyString(toStringReturn)) {
|
| + CpsFragment cps = new CpsFragment(node.sourceInformation);
|
| + Primitive invoke = cps.invokeMethod(argument,
|
| + Selectors.toString_,
|
| + value.type,
|
| + [cps.makeZero()],
|
| + CallingConvention.DummyIntercepted);
|
| + node.replaceUsesWith(invoke);
|
| + return cps;
|
| + }
|
| }
|
| } else if (node.target == compiler.identicalFunction) {
|
| if (node.arguments.length == 2) {
|
|
|