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