1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
@_spi(Rules) import SwiftFormat
import _SwiftFormatTestSupport
final class AmbiguousTrailingClosureOverloadTests: LintOrFormatRuleTestCase {
func testAmbiguousOverloads() {
assertLint(
AmbiguousTrailingClosureOverload.self,
"""
func 1️⃣strong(mad: () -> Int) {}
func 2️⃣strong(bad: (Bool) -> Bool) {}
func 3️⃣strong(sad: (String) -> Bool) {}
class A {
static func 4️⃣the(cheat: (Int) -> Void) {}
class func 5️⃣the(sneak: (Int) -> Void) {}
func 6️⃣the(kingOfTown: () -> Void) {}
func 7️⃣the(cheatCommandos: (Bool) -> Void) {}
func 8️⃣the(brothersStrong: (String) -> Void) {}
}
struct B {
func 9️⃣hom(estar: () -> Int) {}
func 🔟hom(sar: () -> Bool) {}
static func baleeted(_ f: () -> Void) {}
func baleeted(_ f: () -> Void) {}
}
""",
findings: [
FindingSpec(
"1️⃣",
message: "rename 'strong(mad:)' so it is no longer ambiguous when called with a trailing closure",
notes: [
NoteSpec("2️⃣", message: "ambiguous overload 'strong(bad:)' is here"),
NoteSpec("3️⃣", message: "ambiguous overload 'strong(sad:)' is here"),
]
),
FindingSpec(
"4️⃣",
message: "rename 'the(cheat:)' so it is no longer ambiguous when called with a trailing closure",
notes: [
NoteSpec("5️⃣", message: "ambiguous overload 'the(sneak:)' is here")
]
),
FindingSpec(
"6️⃣",
message: "rename 'the(kingOfTown:)' so it is no longer ambiguous when called with a trailing closure",
notes: [
NoteSpec("7️⃣", message: "ambiguous overload 'the(cheatCommandos:)' is here"),
NoteSpec("8️⃣", message: "ambiguous overload 'the(brothersStrong:)' is here"),
]
),
FindingSpec(
"9️⃣",
message: "rename 'hom(estar:)' so it is no longer ambiguous when called with a trailing closure",
notes: [
NoteSpec("🔟", message: "ambiguous overload 'hom(sar:)' is here")
]
),
]
)
}
}
|