swiftlang/swift

Invalid fix-it on unused optional binding when multiple conditions

Open

#89.131 geöffnet am 14. Mai 2026

Auf GitHub ansehen
 (2 Kommentare) (0 Reaktionen) (1 zugewiesene Person)Swift (10.719 Forks)batch import
compilerdiagnostics qualityfix-itsgood first issuestatementsswift 6.4type checker

Repository-Metriken

Stars
 (69.989 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 7T 6h) (556 gemergte PRs in 30 T)

Beschreibung

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().

Contributor Guide