Skip to content

Commit b83de98

Browse files
committed
AvoidSinglePipeOperator: fix for all inner exprs
1 parent 9f3c47e commit b83de98

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

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

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@ let runner (args: AstNodeRuleParams) =
1717
TypeChecks = List.Empty
1818
} |> Array.singleton
1919

20-
let checkExpr (expr: SynExpr) =
20+
let rec checkExpr (expr: SynExpr) (parrentList: AstNode list): WarningDetails array =
21+
let checkParentPiped (expr: AstNode) =
22+
match expr with
23+
| AstNode.Expression(SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, _argExpr, _range)) ->
24+
(checkExpr funcExpr []).Length = 0
25+
| _ -> false
26+
2127
match expr with
2228
| SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, argExpr, _range) ->
2329
match funcExpr with
@@ -29,7 +35,14 @@ let runner (args: AstNodeRuleParams) =
2935
| SynExpr.IfThenElse _ ->
3036
Array.empty
3137
| _ ->
32-
errors ident.idRange
38+
let isIdentPiped =
39+
match parrentList with
40+
| head::_ -> checkParentPiped head
41+
| [] -> false
42+
if isIdentPiped then
43+
Array.empty
44+
else
45+
errors ident.idRange
3346
else
3447
Array.empty
3548
| _ ->
@@ -39,16 +52,8 @@ let runner (args: AstNodeRuleParams) =
3952

4053
let error =
4154
match args.AstNode with
42-
| AstNode.Binding (SynBinding(_synAcc, _synBinding, _mustInline, _isMut, _synAttribs, _preXmlDoc, _synValData, _headPat, _synBindingRet, synExpr, _range, _debugPointAtBinding, _)) ->
43-
match synExpr with
44-
| SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, _argExpr, _range) ->
45-
checkExpr funcExpr
46-
| SynExpr.IfThenElse(_, SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, _argExpr, _range), _, _, _, _, _) ->
47-
checkExpr funcExpr
48-
| SynExpr.ArrayOrListComputed(_, SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, _argExpr, _range), _) ->
49-
checkExpr funcExpr
50-
| _ ->
51-
Array.empty
55+
| AstNode.Expression(SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, _argExpr, _range)) ->
56+
checkExpr funcExpr (args.GetParents args.NodeIndex)
5257
| _ ->
5358
Array.empty
5459

0 commit comments

Comments
 (0)