Skip to content

Commit 2270ac0

Browse files
committed
Add a few tests for UnsafeMutablePointer => UnsafePointer conversions
1 parent c3239b9 commit 2270ac0

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

test/stdlib/UnsafePointerDiagnostics.swift

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ func unsafePointerConversionAvailability(
8585
_ = UnsafePointer<Int>(mrp) // expected-error {{cannot convert value of type 'UnsafeMutableRawPointer' to expected argument type 'RawPointer'}}
8686
_ = UnsafePointer<Int>(orp) // expected-error {{cannot convert value of type 'UnsafeRawPointer?' to expected argument type 'RawPointer'}}
8787
_ = UnsafePointer<Int>(omrp) // expected-error {{cannot convert value of type 'UnsafeMutableRawPointer?' to expected argument type 'RawPointer'}}
88+
89+
_ = UnsafePointer<Int>(ups) // expected-error {{cannot convert value of type 'UnsafePointer<String>' to expected argument type 'RawPointer'}}
90+
_ = UnsafeMutablePointer<Int>(umps) // expected-error {{cannot convert value of type 'UnsafeMutablePointer<String>' to expected argument type 'UnsafeMutablePointer<_>'}}
91+
_ = UnsafePointer<String>(upi) // expected-error {{cannot convert value of type 'UnsafePointer<Int>' to expected argument type 'RawPointer'}}
92+
_ = UnsafeMutablePointer<String>(umpi) // expected-error {{cannot convert value of type 'UnsafeMutablePointer<Int>' to expected argument type 'UnsafeMutablePointer<_>'}}
8893
}
8994

9095
func unsafeRawBufferPointerConversions(
@@ -114,4 +119,14 @@ func unsafeRawBufferPointerConversions(
114119
_ = UnsafeRawBufferPointer(start: omrp, count: 1)
115120
_ = UnsafeMutableRawBufferPointer(start: orp, count: 1) // expected-error {{cannot convert value of type 'UnsafeRawPointer?' to expected argument type 'UnsafeMutableRawPointer?'}}
116121
_ = UnsafeRawBufferPointer(start: orp, count: 1)
117-
}
122+
}
123+
124+
125+
struct SR9800 {
126+
func foo(_: UnsafePointer<CChar>) {}
127+
func foo(_: UnsafePointer<UInt8>) {}
128+
129+
func ambiguityTest(buf: UnsafeMutablePointer<CChar>) {
130+
_ = foo(UnsafePointer(buf)) // this call should be unambiguoius
131+
}
132+
}

0 commit comments

Comments
 (0)