The following playground reproduces an issue I'm having, in that the code won't 
compile depending on the content of the closure. In fact, an empty closure is 
fine, but when I try to call certain things, it's not.

I figure it has something to do with the type inference for inPointer, but I 
can't figure out what it needs to work.

---------------------------
import Foundation

//      OKAY:

var msg = Data(capacity: 123456)
msg.withUnsafeMutableBytes
{ (inPointer) -> Void in
        foo(inPointer)
}

//error: cannot convert value of type '(_) -> Void' to expected argument type 
'(UnsafeMutablePointer<_>) -> _'
//{ (inPointer) -> Void in
//^~~~~~~~~~~~~~~~~~~~~~~~

msg.withUnsafeMutableBytes
{ (inPointer) -> Void in
}

//error: cannot convert value of type '(_) -> Void' to expected argument type 
'(UnsafeMutablePointer<_>) -> _'
//{ (inPointer) -> Void in
//^~~~~~~~~~~~~~~~~~~~~~~~

msg.withUnsafeMutableBytes
{ (inPointer) -> Void in
        var s: Int
        lgs_error(inPointer, 123456, &s)
}

func
foo(_ data: UnsafeMutableRawPointer!)
{
}

func
lgs_error(_ message: UnsafeMutablePointer<Int8>!,
            _ message_capacity: Int,
            _ message_size: UnsafeMutablePointer<Int>!) -> Int
{
}
---------------------------


-- 
Rick Mann
rm...@latencyzero.com


_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to