mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
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.
72 lines
3.4 KiB
Swift
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
|