diff --git a/Sources/Tokenizer.swift b/Sources/Tokenizer.swift index 8ad7e318e..0ae79dc58 100644 --- a/Sources/Tokenizer.swift +++ b/Sources/Tokenizer.swift @@ -1964,7 +1964,7 @@ public func tokenize(_ source: String) -> [Token] { switch token { case let .operator(string, _): switch string { - case ".", "==", "?", "!", "&", "->", "~": + case ".", "==", "?", "!", "&", "->", "~", "::": if index(of: .nonSpaceOrCommentOrLinebreak, before: count - 1) == scopeIndex { // These are allowed in a generic, but not as the first character fallthrough diff --git a/Tests/Rules/SpaceAroundOperatorsTests.swift b/Tests/Rules/SpaceAroundOperatorsTests.swift index 0713d97f1..1178e2d73 100644 --- a/Tests/Rules/SpaceAroundOperatorsTests.swift +++ b/Tests/Rules/SpaceAroundOperatorsTests.swift @@ -1208,4 +1208,18 @@ final class SpaceAroundOperatorsTests: XCTestCase { """ testFormatting(for: input, rule: .spaceAroundOperators) } + + func testNoSpaceAroundGenericWithModuleSelector() { + let input = """ + let x: AnyPublisher + """ + testFormatting(for: input, rule: .spaceAroundOperators) + } + + func testNoSpaceAroundGenericWithModuleSelectorMultipleParams() { + let input = """ + let x: Result + """ + testFormatting(for: input, rule: .spaceAroundOperators) + } }