Skip to content

Commit 03b0f0c

Browse files
authored
Merge pull request swiftlang#74442 from kubamracek/embedded-string-to-pointer
[embedded] Implement missing _convertConstStringToUTF8PointerArgument to support string to pointer conversion
2 parents 3e7f323 + 92a39fc commit 03b0f0c

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

stdlib/public/core/Pointer.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -514,10 +514,11 @@ func _convertConstStringToUTF8PointerArgument<
514514
}
515515
#else
516516
@_transparent
517-
@_unavailableInEmbedded
518-
public
519-
func _convertConstStringToUTF8PointerArgument<ToPointer: _Pointer>(
520-
_ str: String) -> (Builtin.NativeObject?, ToPointer) {
521-
fatalError("unreachable in embedded Swift (marked as unavailable)")
517+
public // COMPILER_INTRINSIC
518+
func _convertConstStringToUTF8PointerArgument<
519+
ToPointer: _Pointer
520+
>(_ str: String) -> (Builtin.NativeObject?, ToPointer) {
521+
let utf8 = Array(str.utf8CString)
522+
return _convertConstArrayToPointerArgument(utf8)
522523
}
523524
#endif

test/embedded/string-to-pointer.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// RUN: %target-run-simple-swift(-enable-experimental-feature Embedded -wmo) | %FileCheck %s
2+
3+
// REQUIRES: swift_in_compiler
4+
// REQUIRES: executable_test
5+
// REQUIRES: optimized_stdlib
6+
// REQUIRES: OS=macosx || OS=linux-gnu
7+
8+
@_extern(c)
9+
func puts(_ string: UnsafePointer<CChar>?) -> CInt
10+
11+
func foo(_ string: UnsafePointer<CChar>?) {
12+
puts(string)
13+
}
14+
15+
foo("hello")
16+
// CHECK: hello

0 commit comments

Comments
 (0)