swiftlang/swift

Redundant effect warnings should have fixits

開放

#85,882 建立於 2025年12月6日

 (7 則留言) (0 個反應) (1 位負責人)Swift (10,719 個分叉)batch import
compilerdiagnostics qualityerror handlingfix-itsgood first issueswift 6.3type checker

倉庫指標

星標
 (69,989 顆星)
PR 合併指標
 (平均合併 8天 17小時) (30 天內合併 510 個 PR)

描述

Description

this is a follow up task to https://github.com/swiftlang/swift/issues/85818 – in working on that issue, it appeared that the other 'redundant effect' warnings also generally lack fixits that will remove the unneeded effect markers. specifically, we should support fixits for redundant try and unsafe on expressions that do not produce those effects. the 'single value expression' diagnostic variants should also be handled in these cases.

Reproduction

no fixits are produced for these:

@discardableResult
func g() -> Int? { nil }

_ = try g()
_ = try switch g() { default: 0 }
_ = unsafe switch g() { default: 0 }
12 | func g() -> Int? { nil }
13 | 
14 | _ = try g()
   |     `- warning: no calls to throwing functions occur within 'try' expression [no_throw_in_try]
15 | _ = try switch g() { default: 0 }
16 | _ = unsafe switch g() { default: 0 }

13 | 
14 | _ = try g()
15 | _ = try switch g() { default: 0 }
   |     `- warning: 'try' has no effect on 'switch' expression [effect_marker_on_single_value_stmt]
16 | _ = unsafe switch g() { default: 0 }
17 | 

14 | _ = try g()
15 | _ = try switch g() { default: 0 }
16 | _ = unsafe switch g() { default: 0 }
   |     `- warning: 'unsafe' has no effect on 'switch' expression [effect_marker_on_single_value_stmt]
17 | 

Expected behavior

the redundant effect markers should have fixits offering to remove them

Environment

Swift version 6.3-dev (LLVM 35f48306184cd25, Swift a69dbb3366e64d8) Target: x86_64-unknown-linux-gnu

Additional information

No response

貢獻者指南