---
title: Unused values (NoUsage)
framework: swift-compiler
role: article
role_heading: Article
path: swift-compiler/documentation/diagnostics/no-usage
---

# Unused values (NoUsage)

## Overview

Overview These diagnostics are emitted when a value is computed or defined but never used, which often indicates a programming mistake such as a missing assignment or an unintentionally discarded result. The NoUsage group covers a range of unused-value situations like calling a function and ignoring its return value or declaring a variable or constant that is never read. Example func sortedCopy(_ array: [Int]) -> [Int] {     var copy = array     copy.sort()   // ok: sort() mutates in place     array.sorted() // warning: result of call to 'sorted()' is unused     return copy } How to fix Use the result, or assign it to _ to explicitly discard it: _ = incrementGlobalCounter() // increment the counter without using the new value If ignoring the return value of a function is intentional and common for callers, then annotate the function with @discardableResult: private var counter = 0

@discardableResult // callers may not need to use the new value func incrementGlobalCounter() -> Int { 	counter += 1   return counter } Replace an unused binding with _: enum NetworkError: Error {   case requestFailed(statusCode: Int, message: String)   case timeout }

func handle(_ error: NetworkError) {   switch error {   case .requestFailed(let statusCode, _):  // message not needed here     print("Request failed with status \(statusCode)")   case .timeout:     print("Request timed out")   } }

## See Also

- [@dynamicCallable implementation requirements (DynamicCallable)](swift-compiler/documentation/diagnostics/dynamic-callable-requirements.md)
- [Add @preconcurrency import (AddPreconcurrencyImport)](swift-compiler/documentation/diagnostics/add-preconcurrency-import.md)
- [Always enabled availability domains (AlwaysAvailableDomain)](swift-compiler/documentation/diagnostics/always-available-domain.md)
- [Argument matching for trailing closures (TrailingClosureMatching)](swift-compiler/documentation/diagnostics/trailing-closure-matching.md)
- [Calling a mutating async actor-isolated method (ActorIsolatedMutatingAsync)](swift-compiler/documentation/diagnostics/actor-isolated-mutating-async.md)
- [Calling an actor-isolated method from a synchronous nonisolated context (ActorIsolatedCall)](swift-compiler/documentation/diagnostics/actor-isolated-call.md)
- [Captures in a `@Sendable` closure (SendableClosureCaptures)](swift-compiler/documentation/diagnostics/sendable-closure-captures.md)
- [Compilation caching (CompilationCaching)](swift-compiler/documentation/diagnostics/compilation-caching.md)
- [Conforming to `StringInterpolationProtocol` (StringInterpolationConformance)](swift-compiler/documentation/diagnostics/string-interpolation-conformance.md)
- [Conversion from `@isolated(any)` function type to synchronous function type (ConversionFromIsolatedAnyToSynchronous)](swift-compiler/documentation/diagnostics/conversion-from-isolated-any-to-synchronous.md)
- [Cross-isolation data race (RegionIsolationCrossIsolationDataRace)](swift-compiler/documentation/diagnostics/region-isolation-cross-isolation-data-race.md)
- [Deprecated declaration warnings (DeprecatedDeclaration)](swift-compiler/documentation/diagnostics/deprecated-declaration.md)
- [Deprecated implementation-only imports (ImplementationOnlyDeprecated)](swift-compiler/documentation/diagnostics/implementation-only-deprecated.md)
- [Dynamic exclusivity (DynamicExclusivity)](swift-compiler/documentation/diagnostics/dynamic-exclusivity.md)
- [Embedded Swift language restrictions (EmbeddedRestrictions)](swift-compiler/documentation/diagnostics/embedded-restrictions.md)
