Merge pull request #74442 from kubamracek/embedded-string-to-pointer

[embedded] Implement missing _convertConstStringToUTF8PointerArgument to support string to pointer conversion
This commit is contained in:
Kuba (Brecka) Mracek
2024-06-17 10:45:39 -07:00
committed by GitHub
2 changed files with 22 additions and 5 deletions

View File

@@ -514,10 +514,11 @@ func _convertConstStringToUTF8PointerArgument<
}
#else
@_transparent
@_unavailableInEmbedded
public
func _convertConstStringToUTF8PointerArgument<ToPointer: _Pointer>(
_ str: String) -> (Builtin.NativeObject?, ToPointer) {
fatalError("unreachable in embedded Swift (marked as unavailable)")
public // COMPILER_INTRINSIC
func _convertConstStringToUTF8PointerArgument<
ToPointer: _Pointer
>(_ str: String) -> (Builtin.NativeObject?, ToPointer) {
let utf8 = Array(str.utf8CString)
return _convertConstArrayToPointerArgument(utf8)
}
#endif

View File

@@ -0,0 +1,16 @@
// RUN: %target-run-simple-swift(-enable-experimental-feature Embedded -wmo) | %FileCheck %s
// REQUIRES: swift_in_compiler
// REQUIRES: executable_test
// REQUIRES: optimized_stdlib
// REQUIRES: OS=macosx || OS=linux-gnu
@_extern(c)
func puts(_ string: UnsafePointer<CChar>?) -> CInt
func foo(_ string: UnsafePointer<CChar>?) {
puts(string)
}
foo("hello")
// CHECK: hello