# Language version.
--swiftversion 5.2

# Ignore generated files.
--exclude .build/,**/XCTestManifests.swift,**/*.grpc.swift,**/*.pb.swift

--indent 2
--maxwidth 100

# Require explicit self
--self insert

# Only remove unused args in closures.
--stripunusedargs closure-only

# Wrap before the first argument (if wrapping is necessary).
--wraparguments before-first

# Don't indent #if blocks
--ifdef no-indent

# Don't turn Optional<Foo> into Foo?
--shortoptionals except-properties

# This rule doesn't always work as we'd expect: specifically when we return a
# succeeded future whose type is a closure then that closure is incorrectly
# treated as a trailing closure. This is relevant because the service provider
# API for client streaming RPCs has this exact shape.
--disable trailingClosures

# Don't wrap the opening brace of multiline statements.
--disable wrapMultilineStatementBraces

# We used to support 5.0 and return is redundant in more places in 5.1: enabling
# this rule creates a large (and unnecessary) diff.
--disable redundantReturn

# Don't prefer using key paths for trivial closures.
--disable preferKeyPath

# Put ACLs on declarations within an extension rather than the extension itself.
--extensionacl on-declarations
