@@ -2531,6 +2531,7 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial bindsm scopem mutRecNSInfo (env
25312531 | SynMemberDefn.LetBindings _
25322532 | SynMemberDefn.AutoProperty _
25332533 | SynMemberDefn.Member _
2534+ | SynMemberDefn.GetSetMember _
25342535 | SynMemberDefn.Open _
25352536 -> Some( TyconBindingDefn( containerInfo, newslotsOK, declKind, memb, memb.Range))
25362537
@@ -2554,7 +2555,8 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial bindsm scopem mutRecNSInfo (env
25542555 error( InternalError( " Intrinsic augmentations of types are only permitted in the same file as the definition of the type" , m))
25552556 members |> List.iter ( fun mem ->
25562557 match mem with
2557- | SynMemberDefn.Member _ -> ()
2558+ | SynMemberDefn.Member _
2559+ | SynMemberDefn.GetSetMember _
25582560 | SynMemberDefn.Interface _ -> ()
25592561 | SynMemberDefn.Open _
25602562 | SynMemberDefn.AutoProperty _
@@ -4813,10 +4815,12 @@ module TcDeclarations =
48134815 /// where simpleRepr can contain inherit type, declared fields and virtual slots.
48144816 /// body = members
48154817 /// where members contain methods/overrides, also implicit ctor, inheritCall and local definitions.
4816- let rec private SplitTyconDefn ( SynTypeDefn ( typeInfo = synTyconInfo; typeRepr= trepr; members= extraMembers)) =
4818+ let rec private SplitTyconDefn ( SynTypeDefn ( typeInfo = synTyconInfo; typeRepr= trepr; members= extraMembers)) =
4819+ let extraMembers = desugarGetSetMembers extraMembers
48174820 let implements1 = List.choose ( function SynMemberDefn.Interface ( interfaceType= ty) -> Some( ty, ty.Range) | _ -> None) extraMembers
48184821 match trepr with
48194822 | SynTypeDefnRepr.ObjectModel( kind, cspec, m) ->
4823+ let cspec = desugarGetSetMembers cspec
48204824 CheckMembersForm cspec
48214825 let fields = cspec |> List.choose ( function SynMemberDefn.ValField ( f, _) -> Some f | _ -> None)
48224826 let implements2 = cspec |> List.choose ( function SynMemberDefn.Interface ( interfaceType= ty) -> Some( ty, ty.Range) | _ -> None)
@@ -4833,7 +4837,8 @@ module TcDeclarations =
48334837 cspec |> List.filter ( fun memb ->
48344838 match memb with
48354839 | SynMemberDefn.Interface _
4836- | SynMemberDefn.Member _
4840+ | SynMemberDefn.Member _
4841+ | SynMemberDefn.GetSetMember _
48374842 | SynMemberDefn.LetBindings _
48384843 | SynMemberDefn.ImplicitCtor _
48394844 | SynMemberDefn.AutoProperty _
@@ -4853,7 +4858,7 @@ module TcDeclarations =
48534858 let attribs = attribs |> List.filter ( fun a -> match a.Target with Some t when t.idText = " field" -> true | _ -> false )
48544859 let mLetPortion = synExpr.Range
48554860 let fldId = ident ( CompilerGeneratedName id.idText, mLetPortion)
4856- let headPat = SynPat.LongIdent ( SynLongIdent([ fldId], [], [ None]), None, None , Some noInferredTypars, SynArgPats.Pats [], None, mLetPortion)
4861+ let headPat = SynPat.LongIdent ( SynLongIdent([ fldId], [], [ None]), None, Some noInferredTypars, SynArgPats.Pats [], None, mLetPortion)
48574862 let retInfo = match tyOpt with None -> None | Some ty -> Some ( SynReturnInfo(( ty, SynInfo.unnamedRetVal), ty.Range))
48584863 let isMutable =
48594864 match propKind with
@@ -4881,7 +4886,7 @@ module TcDeclarations =
48814886 let attribs = attribs |> List.filter ( fun a -> match a.Target with Some t when t.idText = " field" -> false | _ -> true )
48824887 let fldId = ident ( CompilerGeneratedName id.idText, mMemberPortion)
48834888 let headPatIds = if isStatic then [ id] else [ ident ( " __" , mMemberPortion); id]
4884- let headPat = SynPat.LongIdent ( SynLongIdent( headPatIds, [], List.replicate headPatIds.Length None), None, None , Some noInferredTypars, SynArgPats.Pats [], None, mMemberPortion)
4889+ let headPat = SynPat.LongIdent ( SynLongIdent( headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [], None, mMemberPortion)
48854890
48864891 match propKind, mGetSetOpt with
48874892 | SynMemberKind.PropertySet, Some m -> errorR( Error( FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(), m))
@@ -4906,7 +4911,7 @@ module TcDeclarations =
49064911 | SynMemberKind.PropertyGetSet ->
49074912 let setter =
49084913 let vId = ident( " v" , mMemberPortion)
4909- let headPat = SynPat.LongIdent ( SynLongIdent( headPatIds, [], List.replicate headPatIds.Length None), None, None , Some noInferredTypars, SynArgPats.Pats [ mkSynPatVar None vId], None, mMemberPortion)
4914+ let headPat = SynPat.LongIdent ( SynLongIdent( headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [ mkSynPatVar None vId], None, mMemberPortion)
49104915 let rhsExpr = mkSynAssign ( SynExpr.Ident fldId) ( SynExpr.Ident vId)
49114916 //let retInfo = match tyOpt with None -> None | Some ty -> Some (SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
49124917 let binding = mkSynBinding ( xmlDoc, headPat) ( access, false , false , mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some ( memberFlags SynMemberKind.PropertySet), SynBindingTrivia.Zero)
@@ -5717,7 +5722,8 @@ and TcModuleOrNamespaceElementsMutRec (cenv: cenv) parent typeNames m envInitial
57175722 let decls = [ MutRecShape.Open ( MutRecDataForOpen( target, m, moduleRange, ref [])) ]
57185723 decls, ( openOk, moduleAbbrevOk, attrs)
57195724
5720- | SynModuleDecl.Exception ( SynExceptionDefn( repr, _, members, _), _ m) ->
5725+ | SynModuleDecl.Exception ( SynExceptionDefn( repr, _, members, _), _ m) ->
5726+ let members = desugarGetSetMembers members
57215727 let ( SynExceptionDefnRepr ( synAttrs , SynUnionCase ( ident = SynIdent( id,_)), _ repr, xmlDoc, vis, m)) = repr
57225728 let compInfo = SynComponentInfo( synAttrs, None, [], [ id], xmlDoc, false , vis, id.idRange)
57235729 let decls = [ MutRecShape.Tycon( SynTypeDefn( compInfo, SynTypeDefnRepr.Exception repr, members, None, m, SynTypeDefnTrivia.Zero)) ]
0 commit comments