Deprecated declaration warnings (DeprecatedDeclaration)
Warnings related to deprecated APIs that may be removed in future versions and should be replaced with more current alternatives.
Overview
The DeprecatedDeclaration group covers the following warnings:
Use of a function annotated with
@available(<platform>, deprecated: <version>)@available(iOS, deprecated: 10.0) func oldFunction() { // This function is deprecated and should not be used. } oldFunction() // 'oldFunction()' is deprecatedUse of a function annotated with
@available(<platform>, deprecated: <version>, renamed: "<new name>")@available(iOS, deprecated: 10.0, renamed: "newFunction") func oldFunction() { // This function is deprecated and should not be used. } oldFunction() // 'oldFunction()' is deprecated: renamed to 'newFunction'Use of a type as an instance of a protocol when the type’s conformance to the protocol is marked as deprecated
struct S {} protocol P {} @available(*, deprecated) extension S: P {} func f(_ p: some P) {} func test() { f(S()) // Conformance of 'S' to 'P' is deprecated }When a protocol requirement has a default implementation marked as
deprecatedand the type conforming to the protocol doesn’t provide that requirementprotocol P { func f() func g() } extension P { @available(*, deprecated) func f() {} @available(*, deprecated, message: "write it yourself") func g() {} } struct S: P {} // deprecated default implementation is used to satisfy instance method 'f()' required by protocol 'P' // deprecated default implementation is used to satisfy instance method 'g()' required by protocol 'P': write it yourselfWhen a protocol requirement has been deprecated
struct S: Hashable { var hashValue: Int { // 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'S' to 'Hashable' by implementing 'hash(into:)' instead ... } } final class C: Executor { func enqueue(_ job: __owned Job) {} // 'Executor.enqueue(Job)' is deprecated as a protocol requirement; conform type 'C' to 'Executor' by implementing 'func enqueue(ExecutorJob)' instead }
See Also
@dynamicCallable implementation requirements (DynamicCallable)Add @preconcurrency import (AddPreconcurrencyImport)Always enabled availability domains (AlwaysAvailableDomain)Argument matching for trailing closures (TrailingClosureMatching)Calling a mutating async actor-isolated method (ActorIsolatedMutatingAsync)Calling an actor-isolated method from a synchronous nonisolated context (ActorIsolatedCall)Captures in a `@Sendable` closure (SendableClosureCaptures)Compilation caching (CompilationCaching)Conforming to `StringInterpolationProtocol` (StringInterpolationConformance)Conversion from `@isolated(any)` function type to synchronous function type (ConversionFromIsolatedAnyToSynchronous)Cross-isolation data race (RegionIsolationCrossIsolationDataRace)Deprecated implementation-only imports (ImplementationOnlyDeprecated)Dynamic exclusivity (DynamicExclusivity)Embedded Swift language restrictions (EmbeddedRestrictions)Existential Types and Performance (ExistentialType)