rspec/rules/S1871/swift/exceptions.adoc

38 lines
1.1 KiB
Plaintext
Raw Permalink Normal View History

2023-10-24 14:02:02 +02:00
=== Exceptions
`case` labels that declare variables cannot have multiple patterns. Therefore this situation is ignored.
[source,swift]
----
switch a {
case .STR_CASE(let x):
print(x)
case .INT_CASE(let x):
print(x)
default:
print("default")
}
----
Blocks in an `if` chain that contain a single line of code are ignored, as are blocks in a `switch` statement that contain a single line of code with or without a following `break`.
[source,swift]
----
if a >= 0 && a < 10 { // no issue, usually this is done on purpose to increase the readability
doTheThing()
} else if a >= 10 && a < 20 {
doTheThing()
} else if a >= 20 && a < 50 {
doFirstThing()
}
----
But this exception does not apply to `if` chains without `else`-s, or to `switch`-es without default clauses when all branches have the same single line of code. In the case of `if` chains with `else`-s, or of `switch`-es with default clauses, rule S3923 raises a bug.
[source,swift]
----
if a >= 0 && a < 10 { // Noncompliant, this might have been done on purpose but probably not
doTheThing()
} else if a >= 10 && a < 20 {
doTheThing()
}
----