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