Open jeremypearson opened 2 years ago
Thanks for the report. It should be possible to check to see if we're in a result builder.
@jpsim you're welcome!
Do you think it would be a good idea to temporarily suppress the autofix-support for this rule and/or temporarily change it from being an opt-out rule to being an opt-in rule, just until this bug is fixed?
Perhaps such temporary changes would cause more problems than they're worth though. What are your thoughts :)?
Perhaps such temporary changes would cause more problems than they're worth though
That's my thoughts on this. I suggest you disable the rule with // swiftlint:disable
comments where you're encountering this until we find a resolution.
@jpsim Thanks. I've already opted to disable the rule by adding it to my disabled rules list in my config file, as in my projects, whenever I have a let _ = <expression>
it's usually in an @ViewBuilder
-annotated computed property variable - but for say, non-SwiftUI projects, I'd probably prefer to disable it in each individual case via // swiftlint:disable
comments as you've recommended :).
Did anyone make any progress in detecting a builder context? I'm having this problem as well, and we are separately having this problem in Muter.
New Issue Checklist
Describe the bug
redundant_discardable_let
rule causes a compilation error for things that are wrapped in a result-builder annotation.Here's a link to the rule on GitHub which contains the bug: https://github.com/realm/SwiftLint/blob/master/Source/SwiftLintFramework/Rules/Style/RedundantDiscardableLetRule.swift
It's unsafe, for say, the
body
property of a struct which conforms to theView
protocol from SwiftUI (and which therefore has abody
property that's implicitly-annotated with the@ViewBuilder
result-builder annotation), to replace this code snippet:with this code snippet:
as making such a replacement, would result in a compilation error. In this specific example, that compilation error will be: "Type '()' cannot conform to 'View'".
Complete output when running SwiftLint, including the stack trace and command used
Environments
SwiftLint version: 0.46.2
Installation method used: Homebrew
Paste your configuration file: N/A - default settings were used.
Nested configurations are not being used.
Xcode version: Xcode 13.2 Build version 13C5066c
Running the command:
swiftlint lint --path /Users/jeremy/dev/xcode/SwiftLintBugDemoApp/SwiftLintBugDemoApp/ContentView.swift --no-cache --enable-all-rules
produced the following output: