SwiftLint icon indicating copy to clipboard operation
SwiftLint copied to clipboard

Rule Request: Don't add ACL modifiers when they're already the default

Open SimplyDanny opened this issue 1 year ago • 1 comments

New Rule Request

Avoid redundant access-level modifiers such as internal on top-level declarations.

  1. Why should this rule be added? Share links to existing discussion about what the community thinks about this.

    See header.

  2. Provide several examples of what would and wouldn't trigger violations.

    Triggering:

    internal struct S {
      internal let a = 1
    }
    
    public extension E {
      public func f() {}
    }
    

    Not triggering:

    public struct S {
      internal let a = 1
    }
    
  3. Should the rule be configurable, if so what parameters should be configurable?

    Nothing to configure.

  4. Should the rule be opt-in or enabled by default? Why? See README.md for guidelines on when to mark a rule as opt-in.

    Opt-in. It will conflict with the explicit_acl rule which is also opt-in.

SimplyDanny avatar Oct 18 '24 19:10 SimplyDanny

It probably makes sense to implement this as a required option for explicit_acl that accepts values like always (default; current behavior) & only_when_necessary (implements your proposed rule). Maybe other useful values could be added later, but I haven't yet thought of any others.

In general, I think it makes sense to have a configurable rule option instead of 2 separate rules with opposite functionality.

rgoldberg avatar Oct 28 '25 21:10 rgoldberg