Skip to content

[SE-327] Remove need for convenience for delegating initializers of an actor. #41083

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jun 30, 2022

Conversation

kavon
Copy link
Member

@kavon kavon commented Jan 29, 2022

For more details: https://github.com/apple/swift-evolution/blob/main/proposals/0327-actor-initializers.md#syntactic-form

Resolves rdar://87568153

TODOs:

  • complete implementation
  • update tests
  • finish editing SILInitializerConventions.rst
  • Make sure the delegation status of an actor's init doesn't introduce an ABI break.

@kavon kavon force-pushed the inconvenienced-actors branch 2 times, most recently from 358b4d2 to 5445923 Compare April 2, 2022 03:55
@kavon kavon force-pushed the inconvenienced-actors branch from cf1feb1 to 0c92169 Compare April 21, 2022 22:02
@kavon kavon force-pushed the inconvenienced-actors branch from 0c92169 to 5b14344 Compare May 4, 2022 00:51
@kavon kavon force-pushed the inconvenienced-actors branch from d259422 to 02f1d51 Compare May 25, 2022 21:34
@kavon
Copy link
Member Author

kavon commented Jun 24, 2022

@swift-ci please smoke test

@kavon kavon force-pushed the inconvenienced-actors branch from 02f1d51 to 47cf9d1 Compare June 24, 2022 23:59
@kavon
Copy link
Member Author

kavon commented Jun 24, 2022

@swift-ci please smoke test

@kavon kavon force-pushed the inconvenienced-actors branch from 47cf9d1 to 6b5f074 Compare June 27, 2022 22:47
kavon added 2 commits June 27, 2022 16:01
This is possible because actors do not support inheritance. There
is one specific exception to that rule, which is that an actor
can inherit from `NSObject` just to support ObjC interop.

This means an actor is effectively a final class.

resolves rdar://87568153
When synthesizing the default initializer for an actor, we'd sometimes hit
a cycle when that initializer needs to chain to NSObject.init. The cycle
only happens because we ask if the initializer we're trying to synthesize
is a convenience init in a scenario which only applies to non-final classes.

Since all actors are effectively "final" classes, it's valid to workaround the
cycle by only asking that initializer question for non-final classes, thus
breaking the cycle.
@kavon kavon force-pushed the inconvenienced-actors branch from 6b5f074 to cf637c2 Compare June 27, 2022 23:02
@kavon kavon marked this pull request as ready for review June 27, 2022 23:03
it should not matter whether an initializer is delegating or not when
importing a library. this test helps make sure that stays true.
@kavon
Copy link
Member Author

kavon commented Jun 28, 2022

@swift-ci please test and merge

@kavon
Copy link
Member Author

kavon commented Jun 28, 2022

The Linux issue is legitimate:

******************** TEST 'Swift(linux-x86_64) :: Concurrency/Runtime/actor_init_abi.swift' FAILED ********************
Script:
--
: 'RUN: at line 1';   rm -rf "/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp" && mkdir -p "/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp"
: 'RUN: at line 11';   /home/build-user/build/buildbot_linux/swift-linux-x86_64/bin/swiftc -target x86_64-unknown-linux-gnu -toolchain-stdlib-rpath  -module-cache-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4  -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 9999:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.0:macOS 10.14.4, iOS 12.2, watchOS 5.2, tvOS 12.2' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.1:macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.2:macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.3:macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.4:macOS 11.3, iOS 14.5, watchOS 7.4, tvOS 14.5' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.5:macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.6:macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.7:macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.8:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -O -parse-as-library -emit-library -o '/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so' -D DELEGATES -Xfrontend -disable-availability-checking -enable-library-evolution /home/build-user/swift/test/Concurrency/Runtime/Inputs/MysteryInit.swift -emit-module -emit-module-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/MysteryInit.swiftmodule -module-name MysteryInit
: 'RUN: at line 12';   echo /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so
: 'RUN: at line 16';   /home/build-user/build/buildbot_linux/swift-linux-x86_64/bin/swiftc -target x86_64-unknown-linux-gnu -toolchain-stdlib-rpath  -module-cache-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4  -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 9999:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.0:macOS 10.14.4, iOS 12.2, watchOS 5.2, tvOS 12.2' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.1:macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.2:macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.3:macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.4:macOS 11.3, iOS 14.5, watchOS 7.4, tvOS 14.5' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.5:macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.6:macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.7:macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.8:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -O -parse-as-library  -Xfrontend -disable-availability-checking /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift -lMysteryInit -I /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp -L /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp -o /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main -Xlinker -rpath -Xlinker /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp
: 'RUN: at line 17';   echo /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main
: 'RUN: at line 18';   /usr/bin/env LD_LIBRARY_PATH='/home/build-user/build/buildbot_linux/swift-linux-x86_64/lib/swift/linux'  /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so | /usr/bin/python3.8 /home/build-user/swift/utils/PathSanitizingFileCheck --allow-unused-prefixes --sanitize BUILD_DIR=/home/build-user/build/buildbot_linux/swift-linux-x86_64 --sanitize SOURCE_DIR=/home/build-user/swift --use-filecheck /home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/FileCheck  --check-prefix=CHECK-DELEGATES /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift
: 'RUN: at line 21';   /usr/bin/env LD_LIBRARY_PATH='/home/build-user/build/buildbot_linux/swift-linux-x86_64/lib/swift/linux'  /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so | not /usr/bin/python3.8 /home/build-user/swift/utils/PathSanitizingFileCheck --allow-unused-prefixes --sanitize BUILD_DIR=/home/build-user/build/buildbot_linux/swift-linux-x86_64 --sanitize SOURCE_DIR=/home/build-user/swift --use-filecheck /home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/FileCheck  --check-prefix=CHECK-NO-DELEGATES /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift
: 'RUN: at line 24';   /home/build-user/build/buildbot_linux/swift-linux-x86_64/bin/swiftc -target x86_64-unknown-linux-gnu -toolchain-stdlib-rpath  -module-cache-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4  -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 9999:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.0:macOS 10.14.4, iOS 12.2, watchOS 5.2, tvOS 12.2' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.1:macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.2:macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.3:macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.4:macOS 11.3, iOS 14.5, watchOS 7.4, tvOS 14.5' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.5:macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.6:macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.7:macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.8:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -O -parse-as-library -emit-library -o '/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so' -Xfrontend -disable-availability-checking -enable-library-evolution /home/build-user/swift/test/Concurrency/Runtime/Inputs/MysteryInit.swift -emit-module -emit-module-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/MysteryInit.swiftmodule -module-name MysteryInit
: 'RUN: at line 25';   echo /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so
: 'RUN: at line 28';   /usr/bin/env LD_LIBRARY_PATH='/home/build-user/build/buildbot_linux/swift-linux-x86_64/lib/swift/linux'  /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so | /usr/bin/python3.8 /home/build-user/swift/utils/PathSanitizingFileCheck --allow-unused-prefixes --sanitize BUILD_DIR=/home/build-user/build/buildbot_linux/swift-linux-x86_64 --sanitize SOURCE_DIR=/home/build-user/swift --use-filecheck /home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/FileCheck  --check-prefix=CHECK-NO-DELEGATES /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift
: 'RUN: at line 36';   /home/build-user/build/buildbot_linux/swift-linux-x86_64/bin/swiftc -target x86_64-unknown-linux-gnu -toolchain-stdlib-rpath  -module-cache-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4  -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 9999:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.0:macOS 10.14.4, iOS 12.2, watchOS 5.2, tvOS 12.2' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.1:macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.2:macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.3:macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.4:macOS 11.3, iOS 14.5, watchOS 7.4, tvOS 14.5' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.5:macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.6:macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.7:macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.8:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -O -parse-as-library  -Xfrontend -disable-availability-checking /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift -lMysteryInit -I /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp -L /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp -o /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main -Xlinker -rpath -Xlinker /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp
: 'RUN: at line 37';   echo /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main
: 'RUN: at line 38';   /usr/bin/env LD_LIBRARY_PATH='/home/build-user/build/buildbot_linux/swift-linux-x86_64/lib/swift/linux'  /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so | /usr/bin/python3.8 /home/build-user/swift/utils/PathSanitizingFileCheck --allow-unused-prefixes --sanitize BUILD_DIR=/home/build-user/build/buildbot_linux/swift-linux-x86_64 --sanitize SOURCE_DIR=/home/build-user/swift --use-filecheck /home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/FileCheck  --check-prefix=CHECK-NO-DELEGATES /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift
: 'RUN: at line 41';   /home/build-user/build/buildbot_linux/swift-linux-x86_64/bin/swiftc -target x86_64-unknown-linux-gnu -toolchain-stdlib-rpath  -module-cache-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4  -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 9999:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.0:macOS 10.14.4, iOS 12.2, watchOS 5.2, tvOS 12.2' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.1:macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.2:macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.3:macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.4:macOS 11.3, iOS 14.5, watchOS 7.4, tvOS 14.5' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.5:macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.6:macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.7:macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0' -Xfrontend -define-availability -Xfrontend 'SwiftStdlib 5.8:macOS 9999, iOS 9999, watchOS 9999, tvOS 9999' -O -parse-as-library -emit-library -o '/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so' -D DELEGATES -Xfrontend -disable-availability-checking -enable-library-evolution /home/build-user/swift/test/Concurrency/Runtime/Inputs/MysteryInit.swift -emit-module -emit-module-path /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/MysteryInit.swiftmodule -module-name MysteryInit
: 'RUN: at line 42';   echo /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so
: 'RUN: at line 45';   /usr/bin/env LD_LIBRARY_PATH='/home/build-user/build/buildbot_linux/swift-linux-x86_64/lib/swift/linux'  /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so | /usr/bin/python3.8 /home/build-user/swift/utils/PathSanitizingFileCheck --allow-unused-prefixes --sanitize BUILD_DIR=/home/build-user/build/buildbot_linux/swift-linux-x86_64 --sanitize SOURCE_DIR=/home/build-user/swift --use-filecheck /home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/FileCheck  --check-prefix=CHECK-DELEGATES /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift
--
Exit Code: 2

Command Output (stdout):
--
/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so
/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main
/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so
/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main
/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/libMysteryInit.so

--
Command Output (stderr):
--
/home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift:63:25: error: CHECK-NO-DELEGATES: expected string not found in input
 // CHECK-NO-DELEGATES: bigfoot is myth
                        ^
<stdin>:1:1: note: scanning from here
bigfoot is real
^

Input file: <stdin>
Check file: /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift

-dump-input=help explains the following input dump.

Input was:
<<<<<<
          1: bigfoot is real 
check:63     X~~~~~~~~~~~~~~~ error: no match found
>>>>>>
/home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main: symbol lookup error: /home/build-user/build/buildbot_linux/swift-linux-x86_64/test-linux-x86_64/Concurrency/Runtime/Output/actor_init_abi.swift.tmp/main: undefined symbol: $s11MysteryInit7BigFootCACSgycfc
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/build-user/build/buildbot_linux/llvm-linux-x86_64/bin/FileCheck --allow-unused-prefixes --check-prefix=CHECK-DELEGATES /home/build-user/swift/test/Concurrency/Runtime/actor_init_abi.swift

--

********************

@kavon
Copy link
Member Author

kavon commented Jun 29, 2022

@swift-ci please test

1 similar comment
@kavon
Copy link
Member Author

kavon commented Jun 30, 2022

@swift-ci please test

@kavon kavon force-pushed the inconvenienced-actors branch from 071e388 to cf7a99d Compare June 30, 2022 17:30
@kavon
Copy link
Member Author

kavon commented Jun 30, 2022

@swift-ci please test and merge

@kavon
Copy link
Member Author

kavon commented Jun 30, 2022

@swift-ci please test

just want to cancel the merge so i can add another change

@kavon kavon force-pushed the inconvenienced-actors branch 2 times, most recently from ac43753 to d4a1ab8 Compare June 30, 2022 20:46
A public designated initializer of a class would have its allocating
entry-point serialized in the module, meaning with `-O` that entry-point
can get inlined into programs linking against that module. Once that
entry-point is inlined, the program will _require_ that it remain non-delegating,
because it will depend on the 2nd entry-point (for actual initializing) to be in the
library.

As a result of this change, public initializers of an actor should be resilient in a
library, whether their underlying implementation is delegating or not.
@kavon kavon force-pushed the inconvenienced-actors branch from d4a1ab8 to 2e865c8 Compare June 30, 2022 20:47
@swift-ci swift-ci merged commit 9aa2de4 into swiftlang:main Jun 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants