Commit Graph

7 Commits

Author SHA1 Message Date
Pavel Yaskevich
c10f04d241 [TypeChecker] Allow Double<->CGFloat conversion with optional promotions
There are APIs that expect a `Double?` or `CGFloat?` argument
and it should be possible to pass `CGFloat` and `Double` respectively.
2021-04-09 12:04:34 -07:00
Doug Gregor
fcd5d43457 Revert "stdlib: Add reasync variants of '&&', '||' and '??'" 2021-04-05 16:45:44 -07:00
Slava Pestov
c473869141 stdlib: Add reasync variants of '&&', '||' and '??'
Fixes rdar://problem/72770687.
2021-03-31 19:21:08 -04:00
Pavel Yaskevich
dbf401effb [CSGen] Tweak favoring hacks to avoid favoring overloads that require narrowing conversions (Double -> CGFloat) 2021-03-17 00:18:20 -07:00
Pavel Yaskevich
6fe4ffc0ff [ConstraintSystem] Adjust ranking rules associated with Double/CGFloat conversions
Change the conversion rule to favor any number of widenings (CGFloat -> Double)
over even a single narrowing conversion and if there is no way to avoid narrowing
(due to contextual requirements) attempt it as late as possible (the deeper in
the AST that conversion is located the higher its score).

This is a generally better rule when it comes to rounding and information
loss that would result from narrowing conversions.
2021-03-17 00:18:20 -07:00
Pavel Yaskevich
000625f36b [CSApply] Use correct locator while converting expression to contextual type
This wasn't a problem before since locator wasn't really used by
`ExprRewritter:coerceToType` but with Double<->CGFloat conversion
it needs the locator to be anchored at a rewritten expression instead
of the original one to form a correct implicit initializer call.
2021-03-17 00:18:20 -07:00
Pavel Yaskevich
826c14580b [TypeChecker] NFC: Add more tests for implicit Double<->CGFloat conversion 2021-03-17 00:18:19 -07:00