@@ -10012,11 +10012,13 @@ and TcMethodArg cenv env (lambdaPropagationInfo, tpenv) (lambdaPropagationInfo
1001210012 // The loop variable callerLambdaTyOpt becomes None if something failed.
1001310013 let rec loop callerLambdaTy lambdaVarNum =
1001410014 if lambdaVarNum < numLambdaVars then
10015- let col = [ for row in prefixOfLambdaArgsForEachOverload -> row.[lambdaVarNum] ]
10016- // Check if all the rows give the same argument type
10017- if col |> ListSet.setify (typeEquiv cenv.g) |> isSingleton then
10018- let calledLambdaArgTy = col.[0]
10019- // Force the caller to be a function type.
10015+ let calledLambdaArgTy = prefixOfLambdaArgsForEachOverload.[0].[lambdaVarNum]
10016+ let allRowsGiveSameArgumentType =
10017+ prefixOfLambdaArgsForEachOverload
10018+ |> Array.forall (fun row -> typeEquiv cenv.g calledLambdaArgTy row.[lambdaVarNum])
10019+
10020+ if allRowsGiveSameArgumentType then
10021+ // Force the caller to be a function type.
1002010022 match UnifyFunctionTypeUndoIfFailed cenv env.DisplayEnv mArg callerLambdaTy with
1002110023 | Some (callerLambdaDomainTy, callerLambdaRangeTy) ->
1002210024 if AddCxTypeEqualsTypeUndoIfFailed env.DisplayEnv cenv.css mArg calledLambdaArgTy callerLambdaDomainTy then