Commits

Doug Gregor committed ea600faf2b5
Teach the constraint solver to make guesses about type variable bindings based on lower/upper bounds for that type variable. This is woefully inadequate, but it's enough to allow us to resolve func f(_ : Float) -> Float {} func f(_ : Int) -> Int {} f(1.0) to the first overload. Note that f(1) remains ambiguous (because both Int and Float can be built from integer literals). Annoyingly, func f(x : Float) -> Float {} func f(y : Int) -> Int {} f(1.0) is ill-formed because we choose (x : Float) for the type of the integer literal expression, which then fails the integer-literal check. Solution TBD. Swift SVN r2704