NCGenerics: add availability checking

Not all runtimes can correctly operate with types that use noncopyable
generics. When the generic argument of a type is noncopyable, old
runtimes can't recognize that to correctly check conformances that may
be conditional on those arguments being Copyable, etc.

resolves rdar://126239335
This commit is contained in:
Kavon Farvardin
2024-07-02 14:49:46 -07:00
parent 5c57745c1d
commit 04454054b7
7 changed files with 234 additions and 49 deletions

View File

@@ -6737,6 +6737,16 @@ ERROR(availability_isolated_any_only_version_newer, none,
"%0 %1 or newer",
(StringRef, llvm::VersionTuple))
ERROR(availability_copyable_generics_casting_only_version_newer, none,
"runtime support for casting types with noncopyable generic arguments "
"is only available in %0 %1 or newer",
(StringRef, llvm::VersionTuple))
ERROR(availability_escapable_generics_casting_only_version_newer, none,
"runtime support for casting types with nonescapable generic arguments "
"is only available in %0 %1 or newer",
(StringRef, llvm::VersionTuple))
ERROR(availability_typed_throws_only_version_newer, none,
"runtime support for typed throws function types is only available in "
"%0 %1 or newer",

View File

@@ -71,6 +71,8 @@ FEATURE(SwiftExceptionPersonality, (6, 0))
// Metadata support for @isolated(any) function types
FEATURE(IsolatedAny, (6, 0))
FEATURE(NoncopyableGenerics, (6, 0))
FEATURE(TaskExecutor, FUTURE)
FEATURE(Differentiation, FUTURE)
FEATURE(InitRawStructMetadata, FUTURE)