Files
swift-mirror/test/TBD/distributed_library_evolution.swift
Konrad `ktoso` Malawski 97be02d5b2 [Distributed] Dont emit TBD also for distributed thunks (#80526)
* [Distributed] Accessor must be available cross module in resilient mode

This is an important fix for libraries using @Resolvable in resilient
libraries. Without the fix we're missing an accessor and this will fail
some remote calls which make use of remote calls on resolvable
protocols. This would manifest as missing accessor error thrown by the
executeDistributedTarget function.

resolves rdar://148224780

* Disable test on windows since %env not supported

* [Distributed] Dont emit TBD also for distributed thunks

This resolves pedantic "all" TBD validation issues, i.e. we dont emit
unexpected records anymore - we would before as we only checked for
is_distributed but we also want to skip those for is_distributed_thunk

resolves rdar://128284016
2025-04-07 06:55:19 -07:00

72 lines
3.3 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 \
// 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