> On Jun 30, 2017, at 7:40 AM, Martin R via swift-users <swift-users@swift.org> > wrote: > > I have a C function > > void myfunc(const void *ptr); > > which is imported to Swift as > > func myfunc(_ ptr: UnsafeRawPointer!) > > This compiles and runs without problems: > > let data = Data(bytes: [1, 2, 3, 4]) > data.withUnsafeBytes { (ptr) in myfunc(ptr) } // (A) > > and the type of `ptr` is inferred as `UnsafePointer<Void>`. But adding an > explicit type > annotation produces a compiler warning: > > data.withUnsafeBytes { (ptr: UnsafePointer<Void>) in myfunc(ptr) } // (B) > // warning: UnsafePointer<Void> has been replaced by UnsafeRawPointer > > which is understandable in the view of "SE-0107 UnsafeRawPointer API". > > The "Fix-it" replaces `UnsafePointer<Void>` by `UnsafeRawPointer`, and that > does not > compile anymore: > > data.withUnsafeBytes { (ptr: UnsafeRawPointer) in myfunc(ptr) } // (C) > // error: cannot convert value of type 'Void' to closure result type '_' > > because there is no `withUnsafeBytes()` method taking a > `(UnsafeRawPointer)->ResultType` > closure.
This is a bug. The Data API ought to be using UnsafeRawPointer here. -Joe _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users