Return Value Ignored
ID |
swift.return_value_ignored |
Severity |
low |
Remediation Complexity |
trivial |
Remediation Risk |
low |
Remediation Effort |
low |
Resource |
Reliability |
Language |
Swift |
Tags |
reliability, unused_result |
Description
Reports calls to well-known immutable-API methods whose return value
is discarded. Many Swift idioms return a new instance instead of
mutating the receiver (String.lowercased(), Array.sorted(),
Sequence.map); ignoring the result means the operation has no
effect.
var s = "Hello"
s.lowercased() // FLAW — result discarded
s = s.lowercased() // OK — assigned back
_ = s.lowercased() // OK — intentional discard
Rationale
Swift’s compiler emits an "unused result" warning when the callee is
not marked @discardableResult, but stdlib extensions, bridged
Foundation calls, and many third-party libraries omit the attribute,
so the warning never appears. The rule surfaces a curated subset of
well-known immutable methods (String, Array, Set, Sequence, Optional)
so the mistake is caught at review time.
Remediation
Either consume the return value or signal the discard explicitly:
// 1) assign back
s = s.lowercased()
// 2) consume in a larger expression
return xs.map(transform).reduce(0, +)
// 3) explicit discard
_ = s.lowercased()
Mirrors java.return_value_ignored.