realm/SwiftLint

`unowned_variable_capture` fires for `unowned(unsafe)` captures

Open

#6,817 opened on Jul 10, 2026

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Swift (2,295 forks)batch import
enhancementgood first issue

Repository metrics

Stars
 (19,570 stars)
PR merge metrics
 (Avg merge 16d 3h) (37 merged PRs in 30d)

Description

the unowned_variable_capture rule currently fires not only for unowned captures, but also for unowned(unsafe) captures.

IMO this is excessive, as the unsafe addition already makes clear the programmer's intent to trade safety for performance here, and guarantee that the captured value's lifetime will exceed that of the closure.

suggestion: unowned_variable_capture should fire only for unowned captures, but not for unowned(unsafe) ones.

looking at the rule's documentation, it seems like this should be the behaviour anyway, as the "triggering examples" section lists only unowned captures but no unowned(unsafe) ones.

Contributor guide