diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ae866d82..fad5ef05d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,11 @@ [SimplyDanny](https://github.com/SimplyDanny) [#4599](https://github.com/realm/SwiftLint/issues/4599) +* Fix whitespaces issue in auto-fix of `redundant_optional_initialization` + rule when multiple variable declaration are involved. + [SimplyDanny](https://github.com/SimplyDanny) + [#4794](https://github.com/realm/SwiftLint/issues/4794) + * Stop triggering `strict_fileprivate` rule on symbols implementing a protocol in the same file. [SimplyDanny](https://github.com/SimplyDanny) diff --git a/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift b/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift index b6f713f0b..3a8215370 100644 --- a/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift +++ b/Source/SwiftLintFramework/Rules/Idiomatic/RedundantOptionalInitializationRule.swift @@ -96,12 +96,12 @@ struct RedundantOptionalInitializationRule: SwiftSyntaxCorrectableRule, Configur """), Example(""" func foo() { - var myVar: String?↓ = nil + var myVar: String?↓ = nil, b: Int } """): Example(""" func foo() { - var myVar: String? + var myVar: String?, b: Int } """) ] @@ -165,14 +165,14 @@ private extension RedundantOptionalInitializationRule { guard violatingBindings.contains(binding) else { return binding } - let newBinding = binding.with(\.initializer, nil) - - if newBinding.accessor == nil { - return newBinding.with(\.trailingTrivia, binding.initializer?.trailingTrivia ?? .zero) - } else { + if newBinding.accessor != nil { return newBinding } + if binding.trailingComma != nil { + return newBinding.with(\.typeAnnotation, binding.typeAnnotation?.with(\.trailingTrivia, .zero)) + } + return newBinding.with(\.trailingTrivia, binding.initializer?.trailingTrivia ?? .zero) }) return super.visit(node.with(\.bindings, newBindings))