| Index: pkg/analyzer/lib/src/generated/type_system.dart | 
| diff --git a/pkg/analyzer/lib/src/generated/type_system.dart b/pkg/analyzer/lib/src/generated/type_system.dart | 
| index 74e3fd23275d842333244ad6c042ba5fc28fef57..f7efd79d28437fe9cd9e04c80189e4b3e4929b6b 100644 | 
| --- a/pkg/analyzer/lib/src/generated/type_system.dart | 
| +++ b/pkg/analyzer/lib/src/generated/type_system.dart | 
| @@ -167,8 +167,7 @@ class StrongTypeSystemImpl extends TypeSystem { | 
| } | 
|  | 
| // Try to infer and instantiate the resulting type. | 
| -    var resultType = | 
| -        inferringTypeSystem._infer(fnType, allowPartialSolution: false); | 
| +    var resultType = inferringTypeSystem._infer(fnType); | 
|  | 
| // If the instantiation failed (because some type variable constraints | 
| // could not be solved, in other words, we could not find a valid subtype), | 
| @@ -240,14 +239,7 @@ class StrongTypeSystemImpl extends TypeSystem { | 
| argumentTypes[i], correspondingParameterTypes[i]); | 
| } | 
|  | 
| -    // We are okay inferring some type variables and not others. | 
| -    // | 
| -    // This lets our return type be as precise as possible, which will help | 
| -    // make any type information resulting from it more precise. | 
| -    // | 
| -    // This is simply a heuristic: the code is incorrect, and we'll issue an | 
| -    // error on this call, to indicate that types don't match. | 
| -    return inferringTypeSystem._infer(fnType, allowPartialSolution: true); | 
| +    return inferringTypeSystem._infer(fnType); | 
| } | 
|  | 
| /** | 
| @@ -1282,7 +1274,7 @@ class _StrongInferenceTypeSystem extends StrongTypeSystemImpl { | 
|  | 
| /// Given the constraints that were given by calling [isSubtypeOf], find the | 
| /// instantiation of the generic function that satisfies these constraints. | 
| -  FunctionType _infer(FunctionType fnType, {bool allowPartialSolution: false}) { | 
| +  FunctionType _infer(FunctionType fnType) { | 
| List<TypeParameterType> fnTypeParams = | 
| TypeParameterTypeImpl.getTypes(fnType.typeFormals); | 
|  | 
| @@ -1335,16 +1327,8 @@ class _StrongInferenceTypeSystem extends StrongTypeSystemImpl { | 
| bound.upper.substitute2(inferredTypes, fnTypeParams)) || | 
| !isSubtypeOf(bound.lower.substitute2(inferredTypes, fnTypeParams), | 
| inferredTypes[i])) { | 
| -        // Unless a partial solution was requested, bail. | 
| -        if (!allowPartialSolution) { | 
| -          return null; | 
| -        } | 
| - | 
| -        inferredTypes[i] = DynamicTypeImpl.instance; | 
| -        if (typeParam.element.bound != null) { | 
| -          inferredTypes[i] = | 
| -              typeParam.element.bound.substitute2(inferredTypes, fnTypeParams); | 
| -        } | 
| +        // Inference failed. Bail. | 
| +        return null; | 
| } | 
| } | 
|  | 
|  |