Skip to content

Commit 8460556

Browse files
authored
Merge pull request #230 from MoiraeSoftware/repo-assist/fix-issue-229-extract-case-match-clause-helper-02149910356a3ef6
[Repo Assist] Extract createCaseMatchClause helper in DUCasesGenerator
2 parents 61780f1 + 4ca2fd8 commit 8460556

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

src/Myriad.Plugins/DUCasesGenerator.fs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ module internal CreateDUModule =
2727
let ident = SynLongIdent.CreateString inputIdent
2828
SynExpr.CreateLongIdent(false, ident, None)
2929

30+
let createCaseMatchClause (requiresQualifiedAccess: bool) (parent: LongIdent) (id: Ident) (hasFields: bool) (rhs: SynExpr) : SynMatchClause =
31+
let indent = resolveCaseIdent requiresQualifiedAccess parent id
32+
let args = if hasFields then [SynPat.CreateWild] else []
33+
let p = SynPat.CreateLongIdent(indent, args)
34+
SynMatchClause.Create(p, None, rhs)
35+
3036
let createDuLetBinding (varName: string) (inputType: SynType) (returnType: SynType) (buildMatchClauses: unit -> SynMatchClause list) : SynModuleDecl =
3137
let varIdent = SynLongIdent.CreateString varName
3238
let inputIdent = "x"
@@ -41,11 +47,8 @@ module internal CreateDUModule =
4147
createDuLetBinding "toString" duType (SynType.String()) (fun () ->
4248
cases
4349
|> List.map (fun (SynUnionCase.SynUnionCase(_,SynIdent(id, _),_,_,_,_,_) as unionCase) ->
44-
let indent = resolveCaseIdent requiresQualifiedAccess parent id
45-
let args = if unionCase.HasFields then [SynPat.CreateWild] else []
46-
let p = SynPat.CreateLongIdent(indent, args)
4750
let rhs = SynExpr.CreateConst(SynConst.CreateString id.idText)
48-
SynMatchClause.Create(p, None, rhs)
51+
createCaseMatchClause requiresQualifiedAccess parent id unionCase.HasFields rhs
4952
)
5053
)
5154

@@ -79,11 +82,8 @@ module internal CreateDUModule =
7982
cases
8083
|> List.mapi (fun i case ->
8184
let (SynUnionCase.SynUnionCase(_,SynIdent(id, _),_,_,_,_,_)) = case
82-
let indent = resolveCaseIdent requiresQualifiedAccess parent id
83-
let args = if case.HasFields then [SynPat.CreateWild] else []
84-
let p = SynPat.CreateLongIdent(indent, args)
8585
let rhs = SynExpr.Const(SynConst.Int32 i, range0)
86-
SynMatchClause.Create(p, None, rhs)
86+
createCaseMatchClause requiresQualifiedAccess parent id case.HasFields rhs
8787
)
8888
)
8989

@@ -93,11 +93,8 @@ module internal CreateDUModule =
9393
let (SynUnionCase.SynUnionCase(_,SynIdent(id, _),_,_,_,_,_)) = case
9494
createDuLetBinding $"is%s{id.idText}" duType (SynType.Bool()) (fun () ->
9595
let matchCase =
96-
let indent = resolveCaseIdent requiresQualifiedAccess parent id
97-
let args = if case.HasFields then [SynPat.CreateWild] else []
98-
let p = SynPat.CreateLongIdent(indent, args)
9996
let rhs = SynExpr.CreateConst(SynConst.Bool true)
100-
SynMatchClause.Create(p, None, rhs)
97+
createCaseMatchClause requiresQualifiedAccess parent id case.HasFields rhs
10198
let wildCase =
10299
let rhs = SynExpr.CreateConst(SynConst.Bool false)
103100
SynMatchClause.Create(SynPat.CreateWild, None, rhs)

0 commit comments

Comments
 (0)