Files
swift-mirror/test/embedded/keypaths2.swift
T
Doug Gregor ae1e3d0865 Build a static library that implements the Embedded Swift platform layer on POSIX
The new library, swiftEmbeddedPlatformPOSIX, implements all of the
_swift_XYZ functions needed to support Embedded Swift as shims on top
of a POSIX system that provides posix_memalign, free, putchar, and so
on. This offers an easier way to bridge between the prior ad hoc
requirements of Embedded Swift and the newer platform abstraction
layer.

Part of rdar://164057124
2026-03-03 09:05:30 -08:00

45 lines
1.2 KiB
Swift

// RUN: %target-run-simple-swift( -enable-experimental-feature Embedded -wmo -runtime-compatibility-version none %target-embedded-posix-shim) | %FileCheck %s
// RUN: %target-run-simple-swift(-O -enable-experimental-feature Embedded -wmo -runtime-compatibility-version none %target-embedded-posix-shim) | %FileCheck %s
// REQUIRES: swift_in_compiler
// REQUIRES: executable_test
// REQUIRES: optimized_stdlib
// REQUIRES: swift_feature_Embedded
@dynamicMemberLookup
public struct Box<T>: ~Copyable {
init() {
self.value = UnsafeMutablePointer<T>.allocate(capacity: 1)
}
public subscript<U>(dynamicMember member: WritableKeyPath<T, U>) -> U {
@_transparent
get { return self.value.pointer(to: member)!.pointee }
@_transparent
set { self.value.pointer(to: member)!.pointee = newValue }
}
@usableFromInline
var value: UnsafeMutablePointer<T>
}
public struct Foo {
var a: Int
var b: Int
}
public func test_read(x: inout Box<Foo>) -> Int {
return x.b
}
public func test_write(x: inout Box<Foo>) {
x.b = 42
}
var box = Box<Foo>()
_ = test_read(x: &box)
test_write(x: &box)
print(box.b)
// CHECK: 42