Skip to content

Commit 3616dab

Browse files
committed
[Tests] NFC: Move Double/CGFloat test because it tests local type method which is printed at the end
1 parent db0a9de commit 3616dab

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

test/Constraints/implicit_double_cgfloat_conversion.swift

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -337,19 +337,6 @@ func test_implicit_conversion_clash_with_partial_application_check() {
337337
}
338338
}
339339

340-
// rdar://99352676
341-
// CHECK-LABEL: sil hidden [ossa] @$s34implicit_double_cgfloat_conversion20test_init_validationyyF : $@convention(thin) () -> () {
342-
func test_init_validation() {
343-
class Foo {
344-
static let bar = 100.0
345-
346-
func getBar() -> CGFloat? {
347-
return Self.bar
348-
// CHECK: function_ref @$s12CoreGraphics7CGFloatVyACSdcfC : $@convention(method) (Double, @thin CGFloat.Type) -> CGFloat
349-
}
350-
}
351-
}
352-
353340
func test_ternary_and_nil_coalescing() {
354341
func test(_: Double?) {}
355342

@@ -389,3 +376,31 @@ func test_cgfloat_operator_is_attempted_with_literal_arguments(v: CGFloat?) {
389376
let ratio = v ?? (2.0 / 16.0)
390377
let _: CGFloat = ratio // Ok
391378
}
379+
380+
// Make sure that optimizer doesn't favor CGFloat -> Double conversion
381+
// in presence of CGFloat initializer, otherwise it could lead to ambiguities.
382+
func test_explicit_cgfloat_use_avoids_ambiguity(v: Int) {
383+
func test(_: CGFloat) -> CGFloat { 0 }
384+
func test(_: Double) -> Double { 0 }
385+
386+
func hasCGFloatElement<C: Collection>(_: C) where C.Element == CGFloat {}
387+
388+
let arr = [test(CGFloat(v))]
389+
hasCGFloatElement(arr) // Ok
390+
391+
var total = 0.0 // This is Double by default
392+
total += test(CGFloat(v)) + CGFloat(v) // Ok
393+
}
394+
395+
// rdar://99352676
396+
// CHECK-LABEL: sil private [ossa] @$s34implicit_double_cgfloat_conversion20test_init_validationyyF3FooL_C6getBar12CoreGraphics7CGFloatVSgyF : $@convention(method) (@guaranteed Foo) -> Optional<CGFloat>
397+
func test_init_validation() {
398+
class Foo {
399+
static let bar = 100.0
400+
401+
func getBar() -> CGFloat? {
402+
return Self.bar
403+
// CHECK: function_ref @$s12CoreGraphics7CGFloatVyACSdcfC : $@convention(method) (Double, @thin CGFloat.Type) -> CGFloat
404+
}
405+
}
406+
}

0 commit comments

Comments
 (0)