swiftlang/swift

Invalid fix-it on unused optional binding when multiple conditions

Open

#89 131 ouverte le 14 mai 2026

Voir sur GitHub
 (2 commentaires) (0 réactions) (1 assigné)Swift (10 719 forks)batch import
compilerdiagnostics qualityfix-itsgood first issuestatementsswift 6.4type checker

Métriques du dépôt

Stars
 (69 989 stars)
Métriques de merge PR
 (Merge moyen 7j 6h) (556 PRs mergées en 30 j)

Description

Description

No response

Reproduction

func sync() -> Int? {}
func async() async -> Int? {}
do {
  if let x = sync(), true {} // bad fix-it
  if let x = sync() {}      // good fix-it

  if let x = await async(), true {} // bad fix-it
  if let x = await async() {}     // good fix-it
}
warning: immutable value 'x' was never used; consider replacing with '_' or removing it [#NoUsage]
  if let x = sync(), true {}
     ~~~~^
     _
warning: value 'x' was defined but never used; consider replacing with boolean test [#NoUsage]
  if let x = sync() {}
     ~~~~^~~~
                    != nil
warning: immutable value 'x' was never used; consider replacing with '_' or removing it [#NoUsage]
  if let x = await async(), true {}
     ~~~~^
     _
warning: value 'x' was defined but never used; consider replacing with boolean test [#NoUsage]
  if let x = await async() {}
     ~~~~^~~~
     (                    ) != nil

Expected behavior

Fix-it should match the one we emit when the condition is single.

Environment

f0d8239caeefc8b

Additional information

Please add tests for both if let x = sync(), true and if true, let x = sync().

Guide contributeur