Skip to content

Commit ee608bf

Browse files
committed
FavourStaticEmptyFields: simplified expression processing
To not have duplicate code.
1 parent e67978b commit ee608bf

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

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

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,35 @@ let private generateError (fileContents: string) (range:FSharp.Compiler.Text.Ran
3838
SuggestedFix = Some suggestedFix
3939
TypeChecks = List.Empty }
4040

41-
let private runner (args: AstNodeRuleParams) =
42-
match args.AstNode with
43-
| AstNode.Expression(SynExpr.Const (SynConst.String ("", _, range), _)) ->
41+
let rec private processExpression (args: AstNodeRuleParams) (expression: SynExpr) =
42+
match expression with
43+
| SynExpr.Const(SynConst.String ("", _, range), _) ->
4444
generateError args.FileContent range EmptyStringLiteral
45-
| AstNode.Expression(SynExpr.ArrayOrList (isArray, [], range)) ->
45+
| SynExpr.ArrayOrList (isArray, [], range) ->
4646
let emptyLiteralType =
4747
if isArray then EmptyArrayLiteral else EmptyListLiteral
4848
generateError args.FileContent range emptyLiteralType
49-
| AstNode.Expression(SynExpr.Record(_, _, synExprRecordField, _)) ->
49+
| SynExpr.App(_, _, _, argExpr, _) ->
50+
processExpression args argExpr
51+
| SynExpr.Record(_, _, synExprRecordFields, _) ->
5052
let mapping =
5153
function
5254
| SynExprRecordField(_, _, expr, _) ->
5355
match expr with
54-
| Some(SynExpr.ArrayOrList(isArray, [], range)) ->
55-
let emptyLiteralType = if isArray then EmptyArrayLiteral else EmptyListLiteral
56-
generateError args.FileContent range emptyLiteralType
57-
| Some(SynExpr.Const (SynConst.String ("", _, range), _)) ->
58-
generateError args.FileContent range EmptyStringLiteral
59-
| Some(SynExpr.App(_, _, _, SynExpr.Const (SynConst.String ("", _, range), _), _)) ->
60-
generateError args.FileContent range EmptyStringLiteral
56+
| Some innerExpression ->
57+
processExpression args innerExpression
6158
| _ -> Array.empty
62-
synExprRecordField
59+
synExprRecordFields
6360
|> List.map mapping
6461
|> Array.concat
6562
| _ -> Array.empty
6663

64+
let private runner (args: AstNodeRuleParams) =
65+
match args.AstNode with
66+
| AstNode.Expression(expr) ->
67+
processExpression args expr
68+
| _ -> Array.empty
69+
6770

6871
let rule =
6972
AstNodeRule

0 commit comments

Comments
 (0)