Files
swift-mirror/test/TBD/distributed_library_evolution.swift
Konrad 'ktoso' Malawski 1f87f60d6c Revert revert & fix distributed protocol and TBD handling
This reverts a revert that was done internally here https://stashweb.sd.apple.com/projects/DEVTOOLS/repos/swift/pull-requests/8697/overview
and corrects some issues with the reverted code while at it.

This fix is crucial to land for correctness and necessary to fix the
rdar://144568615 which had a fix submitted however that assumed that
THIS change also was present, so the fix submitted for 144568615 is
incomplete without this change as well.

This enables, and adds more TBD testing and was explicitly checked
against the GameKit reproducer project from rdar://144568615.

I will also upstream the necessary parts missing from OSS repo there so
we have alignment between all branches.
2025-06-30 11:13:05 +09:00

72 lines
3.4 KiB
Swift

// REQUIRES: VENDOR=apple
// REQUIRES: concurrency
// REQUIRES: distributed
// RUN: %empty-directory(%t)
// RUN: split-file %s %t
// RUN: %target-swift-frontend %t/library.swift \
// RUN: -enable-library-evolution \
// RUN: -disable-availability-checking \
// RUN: -emit-ir -o %t/test.ll -emit-tbd \
// RUN: -validate-tbd-against-ir=all \
// RUN: -emit-tbd-path %t/library.tbd -I %t -tbd-install_name protocol
// RUN: %target-swift-frontend %t/library.swift \
// RUN: -enable-library-evolution \
// RUN: -disable-availability-checking \
// RUN: -emit-module \
// RUN: -package-name Package \
// RUN: -module-name Library \
// RUN: -emit-module-path %t/Library.swiftmodule \
// RUN: -validate-tbd-against-ir=all \
// RUN: -emit-module-interface-path %t/Library.swiftinterface
// RUN: %target-swift-frontend %t/actor.swift -enable-library-evolution \
// RUN: -enable-library-evolution \
// RUN: -disable-availability-checking -emit-ir -o %t/test.ll -emit-tbd \
// RUN: -emit-tbd-path %t/actor.tbd -I %t -tbd-install_name actor
// RUN: %target-swift-frontend %t/actor.swift \
// RUN: -I %t \
// RUN: -disable-availability-checking \
// RUN: -emit-module \
// RUN: -package-name Package \
// RUN: -enable-library-evolution \
// RUN: -module-name Client \
// RUN: -emit-module-path %t/Client.swiftmodule \
// RUN: -validate-tbd-against-ir=all \
// RUN: -emit-module-interface-path %t/Client.swiftinterface
// RUN %llvm-nm -g %t/library.tbd | %FileCheck %s --dump-input=always
// RUN %llvm-nm -g %t/actor.tbd | %FileCheck %s --dump-input=always
//--- library.swift
import Distributed
// CHECK: @"$s4test1AC13_remote_helloyyYaKFTE" = hidden global %swift.async_func_pointer
// CHECK: @"$s4test1AC13_remote_helloyyYaKFTETu" = hidden global %swift.async_func_pointer
public protocol GreeterProtocol: DistributedActor where ActorSystem == LocalTestingDistributedActorSystem {
distributed func hello(name: String) -> String
}
//--- actor.swift
import Distributed
import Library
public distributed actor SomeDistributedActor: GreeterProtocol {
public distributed func hello(name: String) -> String {
"Hello, \(name)!"
}
}
// function:
// IR unmangledName = $s4test20SomeDistributedActorC5hello4nameS2S_tF
// function method descriptor
// IR unmangledName = $s4test20SomeDistributedActorC5hello4nameS2S_tFTq
// thunk, method reference
// IR unmangledName = $s4test20SomeDistributedActorC5hello4nameS2S_tFTE
// thunk, method reference + async function pointer
// IR unmangledName = $s4test20SomeDistributedActorC5hello4nameS2S_tFTETu