From e1b8a12376f161574f489ba8585ccad3d85d6c0c Mon Sep 17 00:00:00 2001 From: Norio Nomura Date: Fri, 8 Jan 2016 08:57:49 +0900 Subject: [PATCH 1/2] Add failing example --- Source/SwiftLintFramework/Rules/ValidDocsRule.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/SwiftLintFramework/Rules/ValidDocsRule.swift b/Source/SwiftLintFramework/Rules/ValidDocsRule.swift index c79a56ecc..5dfefb124 100644 --- a/Source/SwiftLintFramework/Rules/ValidDocsRule.swift +++ b/Source/SwiftLintFramework/Rules/ValidDocsRule.swift @@ -135,6 +135,7 @@ public struct ValidDocsRule: Rule { "\n///- parameter param2: this is void too" + "\npublic func no(param: (Void -> Void)?, param2: String->Void) {}", "/// docs👨‍👩‍👧‍👧\n/// - returns: false\npublic func no() -> Bool { return false }", + "/// docs\n/// - returns: tuple\npublic func no() -> (Int, Int) {return (1, 2)}", ], triggeringExamples: [ "/// docs\npublic ↓func a(param: Void) {}\n", From 8edc234e6423f9c7d631779919622e458bf95a9b Mon Sep 17 00:00:00 2001 From: Norio Nomura Date: Fri, 8 Jan 2016 09:03:48 +0900 Subject: [PATCH 2/2] Fix regex for ignoring closure parameter on detecting return value fix #324 --- CHANGELOG.md | 3 +++ Source/SwiftLintFramework/Rules/ValidDocsRule.swift | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83ec3ff17..dfa9aa65d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ * AutoCorrect for TrailingNewlineRule only removes at most one line. [John Estropia](https://github.com/JohnEstropia) +* `valid_docs` did not detect tuple as return value. + [Norio Nomura](https://github.com/norio-nomura) + [#324](https://github.com/realm/SwiftLint/issues/324) ## 0.5.5: Magic Drying Fluff Balls™ diff --git a/Source/SwiftLintFramework/Rules/ValidDocsRule.swift b/Source/SwiftLintFramework/Rules/ValidDocsRule.swift index 5dfefb124..96ddc312e 100644 --- a/Source/SwiftLintFramework/Rules/ValidDocsRule.swift +++ b/Source/SwiftLintFramework/Rules/ValidDocsRule.swift @@ -43,7 +43,7 @@ func delcarationReturns(declaration: String, kind: SwiftDeclarationKind) -> Bool if SwiftDeclarationKind.variableKinds().contains(kind) { return true } let outsideBraces = NSMutableString(string: declaration) - regex("(\\s*->\\s*).*[^(]\\)").replaceMatchesInString(outsideBraces, options: [], + regex("(\\s*->\\s*)[^(]*\\)").replaceMatchesInString(outsideBraces, options: [], range: NSRange(location: 0, length: outsideBraces.length), withTemplate: "") return outsideBraces.containsString("->") @@ -60,7 +60,7 @@ func commentReturns(comment: String) -> Bool { func missingReturnDocumentation(declaration: String, comment: String) -> Bool { let outsideBraces = NSMutableString(string: declaration) - regex("(\\s*->\\s*).*[^(]\\)").replaceMatchesInString(outsideBraces, options: [], + regex("(\\s*->\\s*)[^(]*\\)").replaceMatchesInString(outsideBraces, options: [], range: NSRange(location: 0, length: outsideBraces.length), withTemplate: "") return outsideBraces.containsString("->") && !commentReturns(comment)