diff --git a/CHANGELOG.md b/CHANGELOG.md index 74b9e05abb..3b52f00d6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,10 @@ #### Bug Fixes +* Fix false positive in `implicit_getter` rule when using unknown accessors. + [kabiroberai](https://github.com/kabiroberai) + [#5300](https://github.com/realm/SwiftLint/issues/5300) + * Fix correction of `explicit_init` rule by keeping significant trivia. [BB9z](https://github.com/BB9z) [#5289](https://github.com/realm/SwiftLint/issues/5289) diff --git a/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRule.swift b/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRule.swift index 1fd2bd33c4..494a0533cf 100644 --- a/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRule.swift +++ b/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRule.swift @@ -30,8 +30,8 @@ private enum ViolationKind { private extension ImplicitGetterRule { final class Visitor: ViolationsSyntaxVisitor { override func visitPost(_ node: AccessorBlockSyntax) { - guard let getAccessor = node.getAccessor, - node.setAccessor == nil, + guard node.accessorsList.count == 1, + let getAccessor = node.getAccessor, getAccessor.effectSpecifiers == nil, getAccessor.modifier == nil, getAccessor.attributes.isEmpty == true, diff --git a/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRuleExamples.swift b/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRuleExamples.swift index c5cfb1c1aa..c2683aa487 100644 --- a/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRuleExamples.swift +++ b/Source/SwiftLintBuiltInRules/Rules/Style/ImplicitGetterRuleExamples.swift @@ -30,6 +30,24 @@ struct ImplicitGetterRuleExamples { } } """), + Example(""" + class Foo { + var foo: Int { + get { _foo } + _modify { yield &_foo } + } + } + """), + Example(""" + class Foo { + var _foo: Int + var foo: Int { + @storageRestrictions(initializes: _foo) + init { _foo = newValue } + get { _foo } + } + } + """), Example(""" class Foo { var foo: Int diff --git a/Source/SwiftLintCore/Models/RuleConfigurationDescription.swift b/Source/SwiftLintCore/Models/RuleConfigurationDescription.swift index 20f8802a5c..afc3ea5330 100644 --- a/Source/SwiftLintCore/Models/RuleConfigurationDescription.swift +++ b/Source/SwiftLintCore/Models/RuleConfigurationDescription.swift @@ -397,7 +397,7 @@ public struct ConfigurationElement