@@ -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