Skip to content

Commit 48415c9

Browse files
authored
Merge pull request #76740 from drodriguez/test-swift-features
[test] Improve testing of Swift features
2 parents 3eabc0b + 2f62bf4 commit 48415c9

File tree

733 files changed

+1268
-297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

733 files changed

+1268
-297
lines changed

docs/Testing.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,27 @@ FIXME: full list.
549549
* ``XFAIL: linux``: tests that need to be adapted for Linux, for example parts
550550
that depend on Objective-C interop need to be split out.
551551

552+
#### Features ``REQUIRES: swift_feature_...``
553+
554+
Each of the Swift compiler features defined in `include/swift/Basic/Features.def`
555+
will get a LLVM Lit feature prefixing `swift_feature_` to the feature name
556+
automatically. The LLVM Lit features will be available only in those
557+
configurations where the compiler supports the given feature, and will not be
558+
available when the compiler does not support the feature. This means that
559+
standard language features and upcoming features will always be available,
560+
while experimental features will only be available when the compiler supports
561+
them.
562+
563+
For every test that uses `--enable-experimental-feature` or
564+
`--enable-upcoming-feature` add a `REQUIRES: swift_feature_...` for each of the
565+
used features. The `Misc/verify-swift-feature-testing.test-sh` will check that
566+
every test with those command line arguments have the necessary `REQUIRES:` and
567+
fail otherwise.
568+
569+
Do NOT add `REQUIRES: asserts` for experimental features anymore. The correct
570+
usage of `REQUIRES: swift_feature_...` will take care of testing the feature as
571+
it evolves from experimental, to upcoming, to language feature.
572+
552573
#### Feature ``REQUIRES: executable_test``
553574

554575
This feature marks an executable test. The test harness makes this feature

test/ASTGen/attrs.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212

1313
// REQUIRES: executable_test
1414
// REQUIRES: swift_swift_parser
15+
// REQUIRES: swift_feature_ParserASTGen
1516

16-
// -enable-experimental-feature requires an asserts build
17-
// REQUIRES: asserts
1817
// rdar://116686158
1918
// UNSUPPORTED: asan
2019

test/ASTGen/decls.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313

1414
// REQUIRES: executable_test
1515
// REQUIRES: swift_swift_parser
16+
// REQUIRES: swift_feature_ParserASTGen
17+
// REQUIRES: swift_feature_SwiftParser
18+
// REQUIRES: swift_feature_ValueGenerics
1619

17-
// -enable-experimental-feature requires an asserts build
18-
// REQUIRES: asserts
1920
// rdar://116686158
2021
// UNSUPPORTED: asan
2122

test/ASTGen/diagnostics.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
// RUN: %target-typecheck-verify-swift -disable-availability-checking -enable-bare-slash-regex -enable-experimental-feature ParserASTGen
1313

1414
// REQUIRES: swift_swift_parser
15-
// -enable-experimental-feature requires an asserts build
16-
// REQUIRES: asserts
15+
// REQUIRES: swift_feature_ParserASTGen
1716
// rdar://116686158
1817
// UNSUPPORTED: asan
1918

test/ASTGen/do_expr.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
// RUN: %target-typecheck-verify-swift -disable-availability-checking -enable-experimental-feature DoExpressions -enable-experimental-feature ParserASTGen
1313

1414
// REQUIRES: swift_swift_parser
15-
// -enable-experimental-feature requires an asserts build
16-
// REQUIRES: asserts
15+
// REQUIRES: swift_feature_DoExpressions
16+
// REQUIRES: swift_feature_ParserASTGen
1717
// rdar://116686158
1818
// UNSUPPORTED: asan
1919

test/ASTGen/exprs.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313

1414
// REQUIRES: executable_test
1515
// REQUIRES: swift_swift_parser
16+
// REQUIRES: swift_feature_ParserASTGen
17+
// REQUIRES: swift_feature_SwiftParser
1618

17-
// -enable-experimental-feature requires an asserts build
18-
// REQUIRES: asserts
1919
// rdar://116686158
2020
// UNSUPPORTED: asan
2121

test/ASTGen/if_config.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen -DDISCARDABLE -DNONSENDABLE -swift-version 6
2-
/// -enable-experimental-feature requires an asserts build
3-
// REQUIRES: asserts
2+
3+
// REQUIRES: swift_feature_ParserASTGen
44

55
#if NOT_SET
66
func f { } // expected-error{{expected parameter clause in function signature}}

test/ASTGen/if_config_expr.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen -D CONDITION_1
22

3-
// -enable-experimental-feature requires an asserts build
4-
// REQUIRES: asserts
53
// REQUIRES: swift_swift_parser
4+
// REQUIRES: swift_feature_ParserASTGen
65

76
postfix operator ++
87
postfix func ++ (_: Int) -> Int { 0 }

test/ASTGen/macros.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// REQUIRES: swift_swift_parser, asserts
2+
// REQUIRES: swift_feature_ParserASTGen
23

34
// RUN: %empty-directory(%t)
45

test/ASTGen/regex.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen -enable-bare-slash-regex -disable-availability-checking
1212

1313
// REQUIRES: swift_swift_parser
14+
// REQUIRES: swift_feature_ParserASTGen
1415

15-
// -enable-experimental-feature requires an asserts build
16-
// REQUIRES: asserts
1716
// rdar://116686158
1817
// UNSUPPORTED: asan
1918

test/ASTGen/stmts.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212

1313
// REQUIRES: executable_test
1414
// REQUIRES: swift_swift_parser
15+
// REQUIRES: swift_feature_ParserASTGen
16+
// REQUIRES: swift_feature_SwiftParser
17+
// REQUIRES: swift_feature_ThenStatements
1518

16-
// -enable-experimental-feature requires an asserts build
17-
// REQUIRES: asserts
1819
// rdar://116686158
1920
// UNSUPPORTED: asan
2021

test/ASTGen/top_level.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
// RUN: %diff -u %t/astgen.ast %t/cpp-parser.ast
1010

11-
// -enable-experimental-feature requires an asserts build
12-
// REQUIRES: asserts
11+
// REQUIRES: swift_feature_ParserASTGen
12+
1313
// rdar://116686158
1414
// UNSUPPORTED: asan
1515

test/ASTGen/types.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen
22

3-
// -enable-experimental-feature requires an asserts build
4-
// REQUIRES: asserts
3+
// REQUIRES: swift_feature_ParserASTGen
4+
55
// rdar://116686158
66
// UNSUPPORTED: asan
77

test/AssociatedTypeInference/associated_type_tuple.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// RUN: %target-typecheck-verify-swift -enable-experimental-feature TupleConformances
22

3-
// REQUIRES: asserts
3+
// REQUIRES: swift_feature_TupleConformances
44

55
typealias Tuple<each T> = (repeat each T)
66

test/CAS/block-list.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
// RUN: -cache-replay-prefix-map /^tmp=%t \
4141
// RUN: /^tmp/main.swift @%t/MyApp.cmd 2>&1 | %FileCheck %s --check-prefix CHECK-BLOCKED
4242

43+
// REQUIRES: swift_feature_LayoutStringValueWitnesses
44+
// REQUIRES: swift_feature_LayoutStringValueWitnessesInstantiation
45+
4346
// CHECK-BLOCKED: note: Layout string value witnesses have been disabled for module 'Test' through block list entry
4447
// CHECK-BLOCKED-NOT: type_layout_string
4548

test/CMakeLists.txt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,16 @@ if(NOT "${COVERAGE_DB}" STREQUAL "")
253253
COMMENT "Touching covering tests")
254254
endif()
255255

256+
if(SWIFT_COMPILER_IS_MSVC_LIKE)
257+
set(C_PREPROCESSOR_COMMAND
258+
"${CMAKE_C_COMPILER}" "/P" "/EP" "/I" "${SWIFT_MAIN_INCLUDE_DIR}" "/TC"
259+
"/Fi<<<OUTPUT_FILE>>>")
260+
else()
261+
set(C_PREPROCESSOR_COMMAND
262+
"${CMAKE_C_COMPILER}" "-E" "-P" "-I${SWIFT_MAIN_INCLUDE_DIR}" "-x" "c" "-o"
263+
"<<<OUTPUT_FILE>>>")
264+
endif()
265+
256266
foreach(SDK ${SWIFT_SDKS})
257267
foreach(ARCH ${SWIFT_SDK_${SDK}_ARCHITECTURES})
258268
# macCatalyst needs to run two sets of tests: one with the normal macosx target triple
@@ -304,6 +314,38 @@ foreach(SDK ${SWIFT_SDKS})
304314
"${validation_test_bin_dir}/lit.site.cfg"
305315
"validation-test${VARIANT_SUFFIX}.lit.site.cfg")
306316

317+
set(test_lit_swift_features_cmd ${C_PREPROCESSOR_COMMAND})
318+
list(
319+
TRANSFORM test_lit_swift_features_cmd
320+
REPLACE "<<<OUTPUT_FILE>>>" "${test_bin_dir}/lit.swift-features.cfg")
321+
add_custom_command(
322+
OUTPUT "${test_bin_dir}/lit.swift-features.cfg"
323+
COMMAND
324+
${test_lit_swift_features_cmd}
325+
"${CMAKE_CURRENT_SOURCE_DIR}/lit.swift-features.cfg.inc"
326+
DEPENDS
327+
"lit.swift-features.cfg.inc"
328+
"${SWIFT_MAIN_INCLUDE_DIR}/swift/Basic/Features.def"
329+
)
330+
331+
set(validation_test_lit_swift_features_cmd ${C_PREPROCESSOR_COMMAND})
332+
list(
333+
TRANSFORM validation_test_lit_swift_features_cmd
334+
REPLACE "<<<OUTPUT_FILE>>>" "${validation_test_bin_dir}/lit.swift-features.cfg")
335+
add_custom_command(
336+
OUTPUT "${validation_test_bin_dir}/lit.swift-features.cfg"
337+
COMMAND
338+
${validation_test_lit_swift_features_cmd}
339+
"${CMAKE_CURRENT_SOURCE_DIR}/lit.swift-features.cfg.inc"
340+
DEPENDS
341+
"lit.swift-features.cfg.inc"
342+
"${SWIFT_MAIN_INCLUDE_DIR}/swift/Basic/Features.def"
343+
)
344+
add_custom_target(lit_swift_features_cfg_${VARIANT_SUFFIX}
345+
DEPENDS
346+
"${test_bin_dir}/lit.swift-features.cfg"
347+
"${validation_test_bin_dir}/lit.swift-features.cfg")
348+
307349
set(test_dependencies)
308350
get_test_dependencies("${SDK}" test_dependencies)
309351

@@ -341,6 +383,9 @@ foreach(SDK ${SWIFT_SDKS})
341383

342384
set(validation_test_dependencies)
343385

386+
list(APPEND test_dependencies lit_swift_features_cfg_${VARIANT_SUFFIX})
387+
list(APPEND validation_test_dependencies lit_swift_features_cfg_${VARIANT_SUFFIX})
388+
344389
set(command_upload_stdlib)
345390
set(command_upload_swift_reflection_test)
346391
if("${SDK}" STREQUAL "IOS" OR "${SDK}" STREQUAL "TVOS" OR "${SDK}" STREQUAL "WATCHOS" OR "${SDK}" STREQUAL "XROS")

test/ClangImporter/dynamic_actor_isolation_checks.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-availability-checking -enable-upcoming-feature DynamicActorIsolation -emit-silgen -module-name preconcurrency_conformances %t/src/checks.swift | %FileCheck %t/src/checks.swift
55
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-availability-checking -swift-version 6 -disable-dynamic-actor-isolation -emit-silgen -module-name preconcurrency_conformances %t/src/checks_disabled.swift | %FileCheck %t/src/checks_disabled.swift
66

7-
// REQUIRES: asserts
87
// REQUIRES: concurrency
98
// REQUIRES: objc_interop
9+
// REQUIRES: swift_feature_DynamicActorIsolation
1010

1111
//--- checks.swift
1212
import Foundation

test/ClangImporter/incomplete_objc_types_availability.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// REQUIRES: objc_interop
1212
// REQUIRES: executable_test
13+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1314

1415
// Verify that Clang declarations referencing either of the forward declares types "ForwardDeclaredInterface" or
1516
// "ForwardDeclaredProtocol" are usable from Swift.

test/ClangImporter/incomplete_objc_types_base_interface.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// REQUIRES: objc_interop
99
// REQUIRES: executable_test
1010
// REQUIRES: OS=macosx
11+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1112

1213
import Foundation
1314
import IncompleteTypeLibrary1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// RUN: %target-swift-frontend -import-objc-header %S/Inputs/incomplete_objc_types_bridging_header.h -enable-upcoming-feature ImportObjcForwardDeclarations -enable-objc-interop -typecheck %s
22

33
// REQUIRES: objc_interop
4+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
45

56
let foo = CFunctionReturningAForwardDeclaredInterface()
67
CFunctionTakingAForwardDeclaredInterface(foo)

test/ClangImporter/incomplete_objc_types_compatibility_complete_incomplete.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// REQUIRES: objc_interop
1313
// REQUIRES: executable_test
14+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1415

1516
// "ForwardDeclaredInterface" and "ForwardDeclaredProtocol" are forward declared in IncompleteTypeLibrary1/2, and
1617
// completely declared in CompleteTypes. This test verifies that instances of the complete types can be passed

test/ClangImporter/incomplete_objc_types_compatibility_complete_incomplete_inter_file_clang_definition.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
// REQUIRES: executable_test
1111
// REQUIRES: objc_interop
12+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1213

1314
//--- full_definition.swift
1415

test/ClangImporter/incomplete_objc_types_compatibility_complete_incomplete_inter_file_swift_definition.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
// RUN: not %target-swift-frontend -enable-upcoming-feature ImportObjcForwardDeclarations -enable-objc-interop -typecheck -I %S/Inputs/custom-modules/IncompleteTypes -I %t %t/incomplete_definition.swift %t/full_definition.swift -diagnostic-style llvm 2>&1 | %FileCheck %s
66

77
// REQUIRES: objc_interop
8+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
89

910
//--- full_definition.swift
1011

test/ClangImporter/incomplete_objc_types_compatibility_incomplete_incomplete.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// REQUIRES: objc_interop
1313
// REQUIRES: executable_test
14+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1415

1516
// Both libraries "IncompleteTypeConsumer1" and "IncompleteTypeConsumer2" forward declare an interface "ForwardDeclaredInterface"
1617
// and a protocol "ForwardDeclaredProtocol". This test verifies that the synthesized Swift declaration created to represent

test/ClangImporter/incomplete_objc_types_full_availability.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
// REQUIRES: objc_interop
99
// REQUIRES: executable_test
10+
// REQUIRES: swift_feature_ImportObjCForwardDeclarations
1011

1112
import IncompleteTypeLibrary1
1213
import CompleteTypes

test/ClangImporter/incomplete_objc_types_importing_limitations_diagnostics.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// RUN: not %target-swift-frontend -swift-version 6 -enable-objc-interop -typecheck -I %S/Inputs/custom-modules/IncompleteTypes %s -diagnostic-style llvm 2>&1 | %FileCheck %s
33

44
// REQUIRES: objc_interop
5+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
56

67
import IncompleteTypeLibrary1
78
import IncompleteNoRootTypeProtocolLibrary

test/ClangImporter/incomplete_objc_types_no_reference.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// RUN: not %target-swift-frontend -swift-version 6 -enable-objc-interop -typecheck -I %S/Inputs/custom-modules/IncompleteTypes %s 2>&1 | %FileCheck %s
33

44
// REQUIRES: objc_interop
5+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
56

67
import IncompleteTypeLibrary1
78

test/ClangImporter/incomplete_objc_types_no_root_protocol.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
// REQUIRES: objc_interop
1111
// REQUIRES: executable_test
12+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1213

1314
// Verify that a forward declared protocol not inheriting from NSObject is usable
1415
// from Swift, if cumbersome

test/ClangImporter/incomplete_objc_types_nsproxy.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
// REQUIRES: objc_interop
1111
// REQUIRES: executable_test
12+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1213

1314
// Verify that a forward declared interface for a type inheriting from NSProxy instead
1415
// of NSObject is still usable from Swift.

test/ClangImporter/incomplete_objc_types_swift_definition_imported.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// RUN: not %target-swift-frontend -swift-version 6 -enable-objc-interop -typecheck -I %S/Inputs/custom-modules/IncompleteTypes -I %t %s -diagnostic-style llvm 2>&1 | %FileCheck %s
55

66
// REQUIRES: objc_interop
7+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
78

89
import CompleteSwiftTypes
910
import ObjCLibraryForwardDeclaringCompleteSwiftTypes

test/ClangImporter/incomplete_objc_types_swift_definition_imported_implementationOnly.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// RUN: not %target-swift-frontend -swift-version 6 -enable-objc-interop -typecheck -I %S/Inputs/custom-modules/IncompleteTypes -I %t %s -diagnostic-style llvm 2>&1 | %FileCheck %s
55

66
// REQUIRES: objc_interop
7+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
78

89
@_implementationOnly import CompleteSwiftTypes
910
import ObjCLibraryForwardDeclaringCompleteSwiftTypes

test/ClangImporter/incomplete_objc_types_swift_definition_imported_name_conflict.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// RUN: not %target-swift-frontend -swift-version 6 -enable-objc-interop -typecheck -I %S/Inputs/custom-modules/IncompleteTypes -I %t %s -diagnostic-style llvm 2>&1 | %FileCheck %s
55

66
// REQUIRES: objc_interop
7+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
78

89
import CompleteSwiftTypes
910
import ObjCLibraryForwardDeclaringCompleteSwiftTypes

test/ClangImporter/incomplete_objc_types_swift_definition_imported_shadow_type_mismatch.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
// REQUIRES: objc_interop
88
// REQUIRES: executable_test
9+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
910

1011
import CompleteSwiftTypes
1112
import ObjCLibraryForwardDeclaringCompleteSwiftTypes

test/ClangImporter/incomplete_objc_types_swift_ide_test.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
// RUN: -enable-objc-interop -swift-version 6 -source-filename x | %FileCheck %s
1212

1313
// REQUIRES: objc_interop
14+
// REQUIRES: swift_feature_ImportObjcForwardDeclarations
1415

1516
// CHECK: import Foundation
1617
// CHECK: @available(*, unavailable, message: "This Objective-C class has only been forward-declared; import its owning module to use it")

test/ClangImporter/objc_async.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
// REQUIRES: objc_interop
44
// REQUIRES: concurrency
5-
// REQUIRES: asserts
5+
// REQUIRES: swift_feature_SendableCompletionHandlers
66

77
import Foundation
88
import ObjCConcurrency

0 commit comments

Comments
 (0)