Skip to content

Commit 0a6261e

Browse files
committed
CSharpFriendlyAsyncOverload: fix failing tests
1 parent 70d721f commit 0a6261e

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/FSharpLint.Core/Rules/Conventions/CSharpFriendlyAsyncOverload.fs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ let rec private getIdentFromSynPat =
1818
|> Some
1919
| SynPat.Typed (pat, _, _) -> getIdentFromSynPat pat
2020
| _ -> None
21+
22+
let getErrorMessage (ident: string) (range: range) =
23+
{ Range = range
24+
Message = String.Format(Resources.GetString "RulesCSharpFriendlyAsyncOverload", ident)
25+
SuggestedFix = None
26+
TypeChecks = List.Empty }
27+
|> Array.singleton
2128

2229
let runner (args: AstNodeRuleParams) =
2330
let hasAsync (syntaxArray: array<AbstractSyntaxArray.Node>) nodeIndex fnIdent =
@@ -46,14 +53,13 @@ let runner (args: AstNodeRuleParams) =
4653
let idents = getIdentFromSynPat pattern
4754
match idents with
4855
| Some ident when not (ident.EndsWith "Async") ->
49-
match hasAsync args.SyntaxArray args.NodeIndex ident with
50-
| Some _ -> Array.empty
51-
| None ->
52-
{ Range = range
53-
Message = String.Format(Resources.GetString "RulesCSharpFriendlyAsyncOverload", ident)
54-
SuggestedFix = None
55-
TypeChecks = List.Empty }
56-
|> Array.singleton
56+
if (ident.StartsWith "Async") then
57+
match hasAsync args.SyntaxArray args.NodeIndex (ident.Replace("Async", "", StringComparison.Ordinal)) with
58+
| Some _ -> Array.empty
59+
| None ->
60+
getErrorMessage ident range
61+
else
62+
getErrorMessage ident range
5763
| _ -> Array.empty
5864
| _ -> Array.empty
5965
| _ -> Array.empty

src/FSharpLint.Core/Text.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,6 @@
346346
<value>Consider using 'Array.empty' instead.</value>
347347
</data>
348348
<data name="RulesCSharpFriendlyAsyncOverload" xml:space="preserve">
349-
<value>Consider using a C#-friendly async overload for {0}.</value>
349+
<value>Async functions in F# should have the "Async" prefix and a C# friendly overload. Check these conventions for {0}.</value>
350350
</data>
351351
</root>

0 commit comments

Comments
 (0)