From ec79e8574c107c0df444b9e7b8eeeceb2a25e7c0 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 10 Feb 2024 17:35:02 +0800 Subject: [PATCH 01/18] Allow access modifies to auto properties --- src/Compiler/Checking/CheckBasics.fs | 1 + src/Compiler/Checking/CheckBasics.fsi | 1 + src/Compiler/Checking/CheckDeclarations.fs | 6 ++-- src/Compiler/Checking/CheckExpressions.fsi | 1 + .../Checking/CheckIncrementalClasses.fs | 1 + .../Checking/CheckIncrementalClasses.fsi | 1 + src/Compiler/Service/ServiceNavigation.fs | 6 ++-- src/Compiler/Service/ServiceNavigation.fsi | 1 + src/Compiler/SyntaxTree/ParseHelpers.fs | 13 ++++++- src/Compiler/SyntaxTree/SyntaxTree.fs | 23 ++---------- src/Compiler/SyntaxTree/SyntaxTree.fsi | 17 ++------- src/Compiler/SyntaxTree/SyntaxTrivia.fs | 24 +++++++++++-- src/Compiler/SyntaxTree/SyntaxTrivia.fsi | 16 ++++++++- src/Compiler/pars.fsy | 36 +++++++++++++++---- 14 files changed, 96 insertions(+), 51 deletions(-) diff --git a/src/Compiler/Checking/CheckBasics.fs b/src/Compiler/Checking/CheckBasics.fs index bbfa5557b2d..7ab45d7aef5 100644 --- a/src/Compiler/Checking/CheckBasics.fs +++ b/src/Compiler/Checking/CheckBasics.fs @@ -20,6 +20,7 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps diff --git a/src/Compiler/Checking/CheckBasics.fsi b/src/Compiler/Checking/CheckBasics.fsi index e3ad581cb61..d4c32f93c7d 100644 --- a/src/Compiler/Checking/CheckBasics.fsi +++ b/src/Compiler/Checking/CheckBasics.fsi @@ -18,6 +18,7 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index ef59411179e..727fc168a72 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -4342,7 +4342,7 @@ module TcDeclarations = let rec postAutoProps memb = match memb with | SynMemberDefn.AutoProperty(ident = id) when String.IsNullOrEmpty(id.idText) -> [] - | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; accessibility=access; trivia = { GetSetKeywords = mGetSetOpt }) -> + | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; trivia = { GetSetKeywords = mGetSetOpt }; getterAccessibility = getterAccesss; setterAccessibility = setterAccess) -> let mMemberPortion = id.idRange // Only the keep the non-field-targeted attributes let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true) @@ -4365,7 +4365,7 @@ module TcDeclarations = let rhsExpr = SynExpr.Ident fldId let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range)) let attribs = mkAttributeList attribs mMemberPortion - let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) + let binding = mkSynBinding (xmlDoc, headPat) (getterAccesss, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) SynMemberDefn.Member (binding, mMemberPortion) yield getter | _ -> () @@ -4377,7 +4377,7 @@ module TcDeclarations = let vId = ident("v", mMemberPortion) let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [mkSynPatVar None vId], None, mMemberPortion) let rhsExpr = mkSynAssign (SynExpr.Ident fldId) (SynExpr.Ident vId) - let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero) + let binding = mkSynBinding (xmlDoc, headPat) (setterAccess, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero) SynMemberDefn.Member (binding, mMemberPortion) yield setter | _ -> ()] diff --git a/src/Compiler/Checking/CheckExpressions.fsi b/src/Compiler/Checking/CheckExpressions.fsi index 852fee213e6..7a17b798cbd 100644 --- a/src/Compiler/Checking/CheckExpressions.fsi +++ b/src/Compiler/Checking/CheckExpressions.fsi @@ -18,6 +18,7 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text open FSharp.Compiler.Xml +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.CheckBasics diff --git a/src/Compiler/Checking/CheckIncrementalClasses.fs b/src/Compiler/Checking/CheckIncrementalClasses.fs index 85262e72a4c..555cc36edc1 100644 --- a/src/Compiler/Checking/CheckIncrementalClasses.fs +++ b/src/Compiler/Checking/CheckIncrementalClasses.fs @@ -19,6 +19,7 @@ open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text open FSharp.Compiler.Xml open FSharp.Compiler.TcGlobals +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeBasics open FSharp.Compiler.TypedTreeOps diff --git a/src/Compiler/Checking/CheckIncrementalClasses.fsi b/src/Compiler/Checking/CheckIncrementalClasses.fsi index 428ae98b632..0694dea5c8e 100644 --- a/src/Compiler/Checking/CheckIncrementalClasses.fsi +++ b/src/Compiler/Checking/CheckIncrementalClasses.fsi @@ -7,6 +7,7 @@ open FSharp.Compiler.CompilerGlobalState open FSharp.Compiler.Syntax open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.Xml diff --git a/src/Compiler/Service/ServiceNavigation.fs b/src/Compiler/Service/ServiceNavigation.fs index 03afe63b373..225cc24b4dc 100755 --- a/src/Compiler/Service/ServiceNavigation.fs +++ b/src/Compiler/Service/ServiceNavigation.fs @@ -13,6 +13,7 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text open FSharp.Compiler.Text.Range +open FSharp.Compiler.SyntaxTrivia /// Represents the different kinds of items that can appear in the navigation bar [] @@ -332,9 +333,10 @@ module NavigationImpl = [ createMember (rcid, NavigationItemKind.Field, FSharpGlyph.Field, range, enclosingEntityKind, false, access) ] - | SynMemberDefn.AutoProperty(ident = id; accessibility = access) -> + | SynMemberDefn.AutoProperty(ident = id; getterAccessibility = getterAccessibility; setterAccessibility = setterAccessibility) -> [ - createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, access) + createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, getterAccessibility) + createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, setterAccessibility) ] | SynMemberDefn.AbstractSlot(slotSig = SynValSig(ident = SynIdent(id, _); synType = ty; accessibility = access)) -> [ diff --git a/src/Compiler/Service/ServiceNavigation.fsi b/src/Compiler/Service/ServiceNavigation.fsi index 360855cce39..eddb1c6e7c8 100755 --- a/src/Compiler/Service/ServiceNavigation.fsi +++ b/src/Compiler/Service/ServiceNavigation.fsi @@ -7,6 +7,7 @@ namespace FSharp.Compiler.EditorServices +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Syntax open FSharp.Compiler.Text diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/Compiler/SyntaxTree/ParseHelpers.fs index cd4b41787e1..573d66a32fa 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -1117,6 +1117,16 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo let memberFlagsForSet = flags SynMemberKind.PropertySet let isStatic = not memberFlags.IsInstance + let getterAccess, setterAccess = + match access, getSetOpt with + | Some _, Some(GetSetKeywords.GetSet(_, None, _, None)) -> access, access + | Some _, Some(GetSetKeywords.GetSet(_, Some x, _, _)) + | Some _, Some(GetSetKeywords.GetSet(_, _, _, Some x)) -> raiseParseErrorAt x.Range (FSComp.SR.parsMultipleAccessibilitiesForGetSet()) + | None, Some(GetSetKeywords.GetSet(_, getterAccess, _, setterAccess)) -> getterAccess, setterAccess + | _, Some(GetSetKeywords.Get _) -> access, None + | _, Some(GetSetKeywords.Set _) -> None, access + | _ -> None, None + let trivia = { LeadingKeyword = leadingKeyword @@ -1134,7 +1144,8 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo memberFlags, memberFlagsForSet, xmlDoc, - access, + getterAccess, + setterAccess, expr, memberRange, trivia diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index 8b034740be4..d039b4a66ce 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -201,26 +201,6 @@ type SynRationalConst = | Paren of rationalConst: SynRationalConst * range: range -[] -type SynAccess = - | Public of range: range - - | Internal of range: range - - | Private of range: range - - override this.ToString() = - match this with - | Public _ -> "Public" - | Internal _ -> "Internal" - | Private _ -> "Private" - - member this.Range: range = - match this with - | Public m - | Internal m - | Private m -> m - [] type DebugPointAtTarget = | Yes @@ -1462,7 +1442,8 @@ type SynMemberDefn = memberFlags: SynMemberFlags * memberFlagsForSet: SynMemberFlags * xmlDoc: PreXmlDoc * - accessibility: SynAccess option * + getterAccessibility: SynAccess option * + setterAccessibility: SynAccess option * synExpr: SynExpr * range: range * trivia: SynMemberDefnAutoPropertyTrivia diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 3d9ef06dcad..1eb99ea0dd8 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -228,20 +228,6 @@ type SynRationalConst = | Paren of rationalConst: SynRationalConst * range: range -/// Represents an accessibility modifier in F# syntax -[] -type SynAccess = - /// A construct marked or assumed 'public' - | Public of range: range - - /// A construct marked or assumed 'internal' - | Internal of range: range - - /// A construct marked or assumed 'private' - | Private of range: range - - member Range: range - /// Represents whether a debug point should be present for the target /// of a decision tree, that is whether the construct corresponds to a debug /// point in the original source. @@ -1655,7 +1641,8 @@ type SynMemberDefn = memberFlags: SynMemberFlags * memberFlagsForSet: SynMemberFlags * xmlDoc: PreXmlDoc * - accessibility: SynAccess option * + getterAccessibility: SynAccess option * + setterAccessibility: SynAccess option * synExpr: SynExpr * range: range * trivia: SynMemberDefnAutoPropertyTrivia diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 7330ac9b695..1f7e35b81e5 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -346,17 +346,37 @@ type SynMemberDefnImplicitCtorTrivia = { AsKeyword: range option } [] type SynArgPatsNamePatPairsTrivia = { ParenRange: range } +[] +type SynAccess = + | Public of range: range + + | Internal of range: range + + | Private of range: range + + override this.ToString() = + match this with + | Public _ -> "Public" + | Internal _ -> "Internal" + | Private _ -> "Private" + + member this.Range: range = + match this with + | Public m + | Internal m + | Private m -> m + [] type GetSetKeywords = | Get of range | Set of range - | GetSet of get: range * set: range + | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option member x.Range = match x with | Get m | Set m -> m - | GetSet(mG, mS) -> + | GetSet(mG, _, mS, _) -> if Range.rangeBeforePos mG mS.Start then Range.unionRanges mG mS else diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index 137f5432803..d11eb876617 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -444,12 +444,26 @@ type SynArgPatsNamePatPairsTrivia = ParenRange: range } +/// Represents an accessibility modifier in F# syntax +[] +type SynAccess = + /// A construct marked or assumed 'public' + | Public of range: range + + /// A construct marked or assumed 'internal' + | Internal of range: range + + /// A construct marked or assumed 'private' + | Private of range: range + + member Range: range + /// Represents additional information for `get, set` syntax [] type GetSetKeywords = | Get of range | Set of range - | GetSet of get: range * set: range + | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option member Range: range diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 6c5415667d0..892bb6c9ee2 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -1048,20 +1048,44 @@ classMemberSpfnGetSetElements: else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) } - | nameop COMMA nameop + | opt_access nameop COMMA nameop + { let (SynIdent(id, _)) = $2 + let (SynIdent(id2, _)) = $4 + if not ((id.idText = "get" && id2.idText = "set") || + (id.idText = "set" && id2.idText = "get")) then + raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) + + if id.idText = "get" then + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, $1, id2.idRange, None)) + else + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, None, id.idRange, $1)) } + + | nameop COMMA opt_access nameop { let (SynIdent(id, _)) = $1 - let (SynIdent(id2, _)) = $3 + let (SynIdent(id2, _)) = $4 if not ((id.idText = "get" && id2.idText = "set") || (id.idText = "set" && id2.idText = "get")) then raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) if id.idText = "get" then - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, id2.idRange)) + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, None, id2.idRange, $3)) else - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange)) } + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, $3, id.idRange, None)) } - | nameop COMMA recover - { (let (SynIdent(id:Ident, _)) = $1 + | opt_access nameop COMMA opt_access nameop + { let (SynIdent(id, _)) = $2 + let (SynIdent(id2, _)) = $5 + if not ((id.idText = "get" && id2.idText = "set") || + (id.idText = "set" && id2.idText = "get")) then + raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) + + if id.idText = "get" then + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, $1, id2.idRange, $4)) + else + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, $4, id.idRange, $1)) } + + | opt_access nameop COMMA recover + { (let (SynIdent(id:Ident, _)) = $2 if id.idText = "get" then SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) else if id.idText = "set" then From 47f34ab3251f256ca0923a0af5bbfc44f6852959 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 10 Feb 2024 18:22:53 +0800 Subject: [PATCH 02/18] move types --- src/Compiler/Checking/CheckBasics.fs | 1 - src/Compiler/Checking/CheckBasics.fsi | 1 - src/Compiler/Checking/CheckExpressions.fsi | 1 - .../Checking/CheckIncrementalClasses.fs | 1 - .../Checking/CheckIncrementalClasses.fsi | 1 - src/Compiler/Service/ServiceNavigation.fs | 1 - src/Compiler/Service/ServiceNavigation.fsi | 1 - src/Compiler/SyntaxTree/ParseHelpers.fs | 5 +- src/Compiler/SyntaxTree/SyntaxTree.fs | 61 +++++++++++++++++++ src/Compiler/SyntaxTree/SyntaxTree.fsi | 60 ++++++++++++++++++ src/Compiler/SyntaxTree/SyntaxTrivia.fs | 61 ------------------- src/Compiler/SyntaxTree/SyntaxTrivia.fsi | 60 ------------------ 12 files changed, 124 insertions(+), 130 deletions(-) diff --git a/src/Compiler/Checking/CheckBasics.fs b/src/Compiler/Checking/CheckBasics.fs index 7ab45d7aef5..bbfa5557b2d 100644 --- a/src/Compiler/Checking/CheckBasics.fs +++ b/src/Compiler/Checking/CheckBasics.fs @@ -20,7 +20,6 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text -open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps diff --git a/src/Compiler/Checking/CheckBasics.fsi b/src/Compiler/Checking/CheckBasics.fsi index d4c32f93c7d..e3ad581cb61 100644 --- a/src/Compiler/Checking/CheckBasics.fsi +++ b/src/Compiler/Checking/CheckBasics.fsi @@ -18,7 +18,6 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text -open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps diff --git a/src/Compiler/Checking/CheckExpressions.fsi b/src/Compiler/Checking/CheckExpressions.fsi index 7a17b798cbd..852fee213e6 100644 --- a/src/Compiler/Checking/CheckExpressions.fsi +++ b/src/Compiler/Checking/CheckExpressions.fsi @@ -18,7 +18,6 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text open FSharp.Compiler.Xml -open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.CheckBasics diff --git a/src/Compiler/Checking/CheckIncrementalClasses.fs b/src/Compiler/Checking/CheckIncrementalClasses.fs index 555cc36edc1..85262e72a4c 100644 --- a/src/Compiler/Checking/CheckIncrementalClasses.fs +++ b/src/Compiler/Checking/CheckIncrementalClasses.fs @@ -19,7 +19,6 @@ open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text open FSharp.Compiler.Xml open FSharp.Compiler.TcGlobals -open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeBasics open FSharp.Compiler.TypedTreeOps diff --git a/src/Compiler/Checking/CheckIncrementalClasses.fsi b/src/Compiler/Checking/CheckIncrementalClasses.fsi index 0694dea5c8e..428ae98b632 100644 --- a/src/Compiler/Checking/CheckIncrementalClasses.fsi +++ b/src/Compiler/Checking/CheckIncrementalClasses.fsi @@ -7,7 +7,6 @@ open FSharp.Compiler.CompilerGlobalState open FSharp.Compiler.Syntax open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text -open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.Xml diff --git a/src/Compiler/Service/ServiceNavigation.fs b/src/Compiler/Service/ServiceNavigation.fs index 225cc24b4dc..c64b93042f8 100755 --- a/src/Compiler/Service/ServiceNavigation.fs +++ b/src/Compiler/Service/ServiceNavigation.fs @@ -13,7 +13,6 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text open FSharp.Compiler.Text.Range -open FSharp.Compiler.SyntaxTrivia /// Represents the different kinds of items that can appear in the navigation bar [] diff --git a/src/Compiler/Service/ServiceNavigation.fsi b/src/Compiler/Service/ServiceNavigation.fsi index eddb1c6e7c8..360855cce39 100755 --- a/src/Compiler/Service/ServiceNavigation.fsi +++ b/src/Compiler/Service/ServiceNavigation.fsi @@ -7,7 +7,6 @@ namespace FSharp.Compiler.EditorServices -open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Syntax open FSharp.Compiler.Text diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/Compiler/SyntaxTree/ParseHelpers.fs index 573d66a32fa..25c5dde1b24 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -1118,10 +1118,11 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo let isStatic = not memberFlags.IsInstance let getterAccess, setterAccess = - match access, getSetOpt with + match access, getSetOpt with | Some _, Some(GetSetKeywords.GetSet(_, None, _, None)) -> access, access | Some _, Some(GetSetKeywords.GetSet(_, Some x, _, _)) - | Some _, Some(GetSetKeywords.GetSet(_, _, _, Some x)) -> raiseParseErrorAt x.Range (FSComp.SR.parsMultipleAccessibilitiesForGetSet()) + | Some _, Some(GetSetKeywords.GetSet(_, _, _, Some x)) -> + raiseParseErrorAt x.Range (FSComp.SR.parsMultipleAccessibilitiesForGetSet ()) | None, Some(GetSetKeywords.GetSet(_, getterAccess, _, setterAccess)) -> getterAccess, setterAccess | _, Some(GetSetKeywords.Get _) -> access, None | _, Some(GetSetKeywords.Set _) -> None, access diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index d039b4a66ce..7585daf8c63 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -201,6 +201,67 @@ type SynRationalConst = | Paren of rationalConst: SynRationalConst * range: range +[] +type SynAccess = + | Public of range: range + + | Internal of range: range + + | Private of range: range + + override this.ToString() = + match this with + | Public _ -> "Public" + | Internal _ -> "Internal" + | Private _ -> "Private" + + member this.Range: range = + match this with + | Public m + | Internal m + | Private m -> m + +[] +type GetSetKeywords = + | Get of range + | Set of range + | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option + + member x.Range = + match x with + | Get m + | Set m -> m + | GetSet(mG, _, mS, _) -> + if Range.rangeBeforePos mG mS.Start then + Range.unionRanges mG mS + else + Range.unionRanges mS mG + +[] +type SynMemberDefnAutoPropertyTrivia = + { + LeadingKeyword: SynLeadingKeyword + WithKeyword: range option + EqualsRange: range option + GetSetKeywords: GetSetKeywords option + } + +[] +type SynMemberDefnAbstractSlotTrivia = + { + GetSetKeywords: GetSetKeywords option + } + + static member Zero = { GetSetKeywords = None } + +[] +type SynMemberSigMemberTrivia = + { + GetSetKeywords: GetSetKeywords option + } + + static member Zero: SynMemberSigMemberTrivia = { GetSetKeywords = None } + [] type DebugPointAtTarget = | Yes diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 1eb99ea0dd8..5ee96309126 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -228,6 +228,66 @@ type SynRationalConst = | Paren of rationalConst: SynRationalConst * range: range +/// Represents an accessibility modifier in F# syntax +[] +type SynAccess = + /// A construct marked or assumed 'public' + | Public of range: range + + /// A construct marked or assumed 'internal' + | Internal of range: range + + /// A construct marked or assumed 'private' + | Private of range: range + + member Range: range + +/// Represents additional information for `get, set` syntax +[] +type GetSetKeywords = + | Get of range + | Set of range + | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option + + member Range: range + +/// Represents additional information for SynMemberDefn.AutoProperty +[] +type SynMemberDefnAutoPropertyTrivia = + { + /// Used leading keyword of AutoProperty + LeadingKeyword: SynLeadingKeyword + + /// The syntax range of the `with` keyword + WithKeyword: range option + + /// The syntax range of the `=` token + EqualsRange: range option + + /// The syntax range of 'get, set' + GetSetKeywords: GetSetKeywords option + } + +/// Represents additional information for SynMemberDefn.AbstractSlot +[] +type SynMemberDefnAbstractSlotTrivia = + { + /// The syntax range of 'get, set' + GetSetKeywords: GetSetKeywords option + } + + static member Zero: SynMemberDefnAbstractSlotTrivia + +/// Represents additional information for SynMemberSig.Member +[] +type SynMemberSigMemberTrivia = + { + /// The syntax range of 'get, set' + GetSetKeywords: GetSetKeywords option + } + + static member Zero: SynMemberSigMemberTrivia + /// Represents whether a debug point should be present for the target /// of a decision tree, that is whether the construct corresponds to a debug /// point in the original source. diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 1f7e35b81e5..8b5d439a7ec 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -346,59 +346,6 @@ type SynMemberDefnImplicitCtorTrivia = { AsKeyword: range option } [] type SynArgPatsNamePatPairsTrivia = { ParenRange: range } -[] -type SynAccess = - | Public of range: range - - | Internal of range: range - - | Private of range: range - - override this.ToString() = - match this with - | Public _ -> "Public" - | Internal _ -> "Internal" - | Private _ -> "Private" - - member this.Range: range = - match this with - | Public m - | Internal m - | Private m -> m - -[] -type GetSetKeywords = - | Get of range - | Set of range - | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option - - member x.Range = - match x with - | Get m - | Set m -> m - | GetSet(mG, _, mS, _) -> - if Range.rangeBeforePos mG mS.Start then - Range.unionRanges mG mS - else - Range.unionRanges mS mG - -[] -type SynMemberDefnAutoPropertyTrivia = - { - LeadingKeyword: SynLeadingKeyword - WithKeyword: range option - EqualsRange: range option - GetSetKeywords: GetSetKeywords option - } - -[] -type SynMemberDefnAbstractSlotTrivia = - { - GetSetKeywords: GetSetKeywords option - } - - static member Zero = { GetSetKeywords = None } - [] type SynFieldTrivia = { @@ -418,14 +365,6 @@ type SynTypeOrTrivia = { OrKeyword: range } [] type SynBindingReturnInfoTrivia = { ColonRange: range option } -[] -type SynMemberSigMemberTrivia = - { - GetSetKeywords: GetSetKeywords option - } - - static member Zero: SynMemberSigMemberTrivia = { GetSetKeywords = None } - [] type SynTyparDeclTrivia = { diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index d11eb876617..a3ffe0227a3 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -444,56 +444,6 @@ type SynArgPatsNamePatPairsTrivia = ParenRange: range } -/// Represents an accessibility modifier in F# syntax -[] -type SynAccess = - /// A construct marked or assumed 'public' - | Public of range: range - - /// A construct marked or assumed 'internal' - | Internal of range: range - - /// A construct marked or assumed 'private' - | Private of range: range - - member Range: range - -/// Represents additional information for `get, set` syntax -[] -type GetSetKeywords = - | Get of range - | Set of range - | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option - - member Range: range - -/// Represents additional information for SynMemberDefn.AutoProperty -[] -type SynMemberDefnAutoPropertyTrivia = - { - /// Used leading keyword of AutoProperty - LeadingKeyword: SynLeadingKeyword - - /// The syntax range of the `with` keyword - WithKeyword: range option - - /// The syntax range of the `=` token - EqualsRange: range option - - /// The syntax range of 'get, set' - GetSetKeywords: GetSetKeywords option - } - -/// Represents additional information for SynMemberDefn.AbstractSlot -[] -type SynMemberDefnAbstractSlotTrivia = - { - /// The syntax range of 'get, set' - GetSetKeywords: GetSetKeywords option - } - - static member Zero: SynMemberDefnAbstractSlotTrivia - /// Represents additional information for SynField [] type SynFieldTrivia = @@ -522,16 +472,6 @@ type SynBindingReturnInfoTrivia = ColonRange: range option } -/// Represents additional information for SynMemberSig.Member -[] -type SynMemberSigMemberTrivia = - { - /// The syntax range of 'get, set' - GetSetKeywords: GetSetKeywords option - } - - static member Zero: SynMemberSigMemberTrivia - /// Represents additional information for SynTyparDecl [] type SynTyparDeclTrivia = From 76e615bb10acd903b0453fad21ce1c19528320e9 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 10 Feb 2024 18:26:06 +0800 Subject: [PATCH 03/18] update release note --- docs/release-notes/.FSharp.Compiler.Service/8.0.300.md | 1 + docs/release-notes/.Language/preview.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md index 6a4d44d2aec..7ac58e299f3 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.300.md @@ -18,6 +18,7 @@ * Higher-order-function-based API for working with the untyped abstract syntax tree. ([PR #16462](https://github.com/dotnet/fsharp/pull/16462)) * Allow returning bool instead of unit option for partial active patterns. ([Language suggestion #1041](https://github.com/fsharp/fslang-suggestions/issues/1041), [PR #16473](https://github.com/dotnet/fsharp/pull/16473)) * Symbols: Add GenericArguments to FSharpEntity ([PR #16470](https://github.com/dotnet/fsharp/pull/16470)) +* Allow access modifies to auto properties getters and setters ([PR 16687](https://github.com/dotnet/fsharp/pull/16687), [Language suggestion #430](https://github.com/fsharp/fslang-suggestions/issues/430)) ### Changed diff --git a/docs/release-notes/.Language/preview.md b/docs/release-notes/.Language/preview.md index 832dd924a44..5559fee7313 100644 --- a/docs/release-notes/.Language/preview.md +++ b/docs/release-notes/.Language/preview.md @@ -4,6 +4,7 @@ * Bidirectional F#/C# interop for 'unmanaged' constraint. ([PR #12154](https://github.com/dotnet/fsharp/pull/12154)) * Make `.Is*` discriminated union properties visible. ([Language suggestion #222](https://github.com/fsharp/fslang-suggestions/issues/222), [PR #16341](https://github.com/dotnet/fsharp/pull/16341)) * Allow returning bool instead of unit option for partial active patterns. ([Language suggestion #1041](https://github.com/fsharp/fslang-suggestions/issues/1041), [PR #16473](https://github.com/dotnet/fsharp/pull/16473)) +* Allow access modifies to auto properties getters and setters ([PR 16687](https://github.com/dotnet/fsharp/pull/16687), [Language suggestion #430](https://github.com/fsharp/fslang-suggestions/issues/430)) ### Fixed From 5c3b230edd1fa26eb645f22705af0bf912d2d872 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 10 Feb 2024 20:38:35 +0800 Subject: [PATCH 04/18] Put it under preview flag --- src/Compiler/FSComp.txt | 3 ++- src/Compiler/Facilities/LanguageFeatures.fs | 4 ++++ src/Compiler/Facilities/LanguageFeatures.fsi | 1 + src/Compiler/SyntaxTree/ParseHelpers.fs | 12 ++++++++++-- src/Compiler/SyntaxTree/ParseHelpers.fsi | 1 + src/Compiler/SyntaxTree/SyntaxTree.fs | 1 + src/Compiler/SyntaxTree/SyntaxTree.fsi | 1 + src/Compiler/pars.fsy | 8 ++++---- src/Compiler/xlf/FSComp.txt.cs.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.de.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.es.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.fr.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.it.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.ja.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.ko.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.pl.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.pt-BR.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.ru.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.tr.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.zh-Hans.xlf | 5 +++++ src/Compiler/xlf/FSComp.txt.zh-Hant.xlf | 5 +++++ 21 files changed, 89 insertions(+), 7 deletions(-) diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index a9fc2692157..bd18f6b8ad3 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1742,4 +1742,5 @@ featureReuseSameFieldsInStructUnions,"Share underlying fields in a [] di 3862,parsStaticMemberImcompleteSyntax,"Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration." 3863,parsExpectingField,"Expecting record field" 3864,tooManyMethodsInDotNetTypeWritingAssembly,"The type '%s' has too many methods. Found: '%d', maximum: '%d'" -3865,parsOnlySimplePatternsAreAllowedInConstructors,"Only simple patterns are allowed in primary constructors" \ No newline at end of file +3865,parsOnlySimplePatternsAreAllowedInConstructors,"Only simple patterns are allowed in primary constructors" +featureAllowAccessModifiersToAutoPropertiesGettersAndSetters,"Allow access modifiers to auto properties getters and setters" \ No newline at end of file diff --git a/src/Compiler/Facilities/LanguageFeatures.fs b/src/Compiler/Facilities/LanguageFeatures.fs index e7c2a25ee3d..801bd0b229a 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fs +++ b/src/Compiler/Facilities/LanguageFeatures.fs @@ -85,6 +85,7 @@ type LanguageFeature = | WarningIndexedPropertiesGetSetSameType | WarningWhenTailCallAttrOnNonRec | BooleanReturningAndReturnTypeDirectedPartialActivePattern + | AllowAccessModifiersToAutoPropertiesGettersAndSetters /// LanguageVersion management type LanguageVersion(versionText) = @@ -197,6 +198,7 @@ type LanguageVersion(versionText) = LanguageFeature.WarningWhenTailCallAttrOnNonRec, previewVersion LanguageFeature.UnionIsPropertiesVisible, previewVersion LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern, previewVersion + LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters, previewVersion ] static let defaultLanguageVersion = LanguageVersion("default") @@ -340,6 +342,8 @@ type LanguageVersion(versionText) = | LanguageFeature.WarningWhenTailCallAttrOnNonRec -> FSComp.SR.featureChkTailCallAttrOnNonRec () | LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern -> FSComp.SR.featureBooleanReturningAndReturnTypeDirectedPartialActivePattern () + | LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters -> + FSComp.SR.featureAllowAccessModifiersToAutoPropertiesGettersAndSetters () /// Get a version string associated with the given feature. static member GetFeatureVersionString feature = diff --git a/src/Compiler/Facilities/LanguageFeatures.fsi b/src/Compiler/Facilities/LanguageFeatures.fsi index 29d6c2c33a3..14e8cf51fe5 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/Compiler/Facilities/LanguageFeatures.fsi @@ -76,6 +76,7 @@ type LanguageFeature = | WarningIndexedPropertiesGetSetSameType | WarningWhenTailCallAttrOnNonRec | BooleanReturningAndReturnTypeDirectedPartialActivePattern + | AllowAccessModifiersToAutoPropertiesGettersAndSetters /// LanguageVersion management type LanguageVersion = diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/Compiler/SyntaxTree/ParseHelpers.fs index 25c5dde1b24..17ee6f21834 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -1100,7 +1100,7 @@ let mkSynUnionCase attributes (access: SynAccess option) id kind mDecl (xmlDoc, let mDecl = unionRangeWithXmlDoc xmlDoc mDecl SynUnionCase(attributes, id, kind, xmlDoc, None, mDecl, trivia) -let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDoc attribs flags rangeStart = +let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDoc attribs flags rangeStart langVersion = let mWith, (getSet, getSetOpt) = accessors let memberRange = @@ -1123,7 +1123,14 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo | Some _, Some(GetSetKeywords.GetSet(_, Some x, _, _)) | Some _, Some(GetSetKeywords.GetSet(_, _, _, Some x)) -> raiseParseErrorAt x.Range (FSComp.SR.parsMultipleAccessibilitiesForGetSet ()) - | None, Some(GetSetKeywords.GetSet(_, getterAccess, _, setterAccess)) -> getterAccess, setterAccess + | None, Some(GetSetKeywords.GetSet(_, getterAccess, _, setterAccess)) -> + match getterAccess, setterAccess with + | Some x, _ + | _, Some x -> + checkLanguageFeatureError langVersion LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters x.Range + | None, None -> () + + getterAccess, setterAccess | _, Some(GetSetKeywords.Get _) -> access, None | _, Some(GetSetKeywords.Set _) -> None, access | _ -> None, None @@ -1145,6 +1152,7 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo memberFlags, memberFlagsForSet, xmlDoc, + access, getterAccess, setterAccess, expr, diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fsi b/src/Compiler/SyntaxTree/ParseHelpers.fsi index 9add16af683..2cb3c520343 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fsi +++ b/src/Compiler/SyntaxTree/ParseHelpers.fsi @@ -277,6 +277,7 @@ val mkAutoPropDefn: attribs: SynAttributes -> flags: (SynMemberKind -> SynMemberFlags) * SynLeadingKeyword -> rangeStart: range -> + langVersion: LanguageVersion -> SynMemberDefn val mkValField: diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index 7585daf8c63..00d94c9648c 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -1503,6 +1503,7 @@ type SynMemberDefn = memberFlags: SynMemberFlags * memberFlagsForSet: SynMemberFlags * xmlDoc: PreXmlDoc * + accessibility: SynAccess option * getterAccessibility: SynAccess option * setterAccessibility: SynAccess option * synExpr: SynExpr * diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 5ee96309126..982927d2ea0 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -1701,6 +1701,7 @@ type SynMemberDefn = memberFlags: SynMemberFlags * memberFlagsForSet: SynMemberFlags * xmlDoc: PreXmlDoc * + accessibility: SynAccess option * getterAccessibility: SynAccess option * setterAccessibility: SynAccess option * synExpr: SynExpr * diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 892bb6c9ee2..7f7743c90f7 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -2192,7 +2192,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 $4 $5 (Some mEquals) $7 $8 xmlDoc attribs flags rangeStart ] } + [ mkAutoPropDefn mVal $3 $4 $5 (Some mEquals) $7 $8 xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } | VAL opt_mutable opt_access ident opt_typ ends_coming_soon_or_recover { let mVal = rhs parseState 1 @@ -2205,7 +2205,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] } + [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } | VAL opt_mutable opt_access ident opt_typ OBLOCKSEP { let mVal = rhs parseState 1 @@ -2218,7 +2218,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] } + [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } | VAL opt_mutable opt_access recover { let mVal = rhs parseState 1 @@ -2228,7 +2228,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 id None None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] } + [ mkAutoPropDefn mVal $3 id None None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } /* An optional type on an auto-property definition */ opt_typ: diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index c7dbc64bac7..b6b3e4f56a7 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -227,6 +227,11 @@ další převody orientované na typ + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions aplikativní výpočetní výrazy diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index d5800420f00..f3a17764fec 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -227,6 +227,11 @@ zusätzliche typgesteuerte Konvertierungen + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions applikative Berechnungsausdrücke diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index dcfce175697..ed887c52184 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -227,6 +227,11 @@ conversiones adicionales dirigidas a tipos + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions expresiones de cálculo aplicativas diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index 590c4fb8e15..eea44fc4e4f 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -227,6 +227,11 @@ conversions supplémentaires dirigées vers le type + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions expressions de calcul applicatives diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index 70613984b76..fd639342ae6 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -227,6 +227,11 @@ conversioni aggiuntive dirette ai tipi + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions espressioni di calcolo applicativo diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index 84a9ca6ef70..f4d2699cbaa 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -227,6 +227,11 @@ その他の型指定された変換 + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions 適用できる計算式 diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index 38ffac7d32d..00efc286d77 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -227,6 +227,11 @@ 추가 형식-디렉션 변환 + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions 적용 가능한 계산 식 diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index ac1d54f63c4..8c3a793c8dc 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -227,6 +227,11 @@ dodatkowe konwersje ukierunkowane na typ + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions praktyczne wyrażenia obliczeniowe diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index 6beb1946267..af6284b64a7 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -227,6 +227,11 @@ conversões direcionadas por tipos adicionais + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions expressões de computação aplicáveis diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index 1b83dc7cc6b..4050c482270 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -227,6 +227,11 @@ дополнительные преобразования на основе типа + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions применимые вычислительные выражения diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 43f5069b2eb..31d5e4faf85 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -227,6 +227,11 @@ ek tür ile yönlendirilen dönüştürmeler + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions uygulama hesaplama ifadeleri diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 91cad01e99e..9127e6ef239 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -227,6 +227,11 @@ 附加类型定向转换 + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions 适用的计算表达式 diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index f12b3fd0b5e..e77b7ba89d3 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -227,6 +227,11 @@ 其他類型導向轉換 + + Allow access modifiers to auto properties getters and setters + Allow access modifiers to auto properties getters and setters + + applicative computation expressions 適用的計算運算式 From f974953354f83c843ab48424d1d4ce247e8be300 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 10 Feb 2024 21:23:28 +0800 Subject: [PATCH 05/18] add and update baseline --- src/Compiler/pars.fsy | 9 ++ ...vice.SurfaceArea.netstandard20.release.bsl | 128 ++++++++++-------- .../LeadingKeyword/DefaultValKeyword.fs.bsl | 3 +- .../LeadingKeyword/MemberValKeyword.fs.bsl | 3 +- .../LeadingKeyword/OverrideValKeyword.fs.bsl | 3 +- .../StaticMemberValKeyword.fs.bsl | 3 +- .../Member/Abstract - Property 02.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 01.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 02.fs.bsl | 2 +- .../SyntaxTree/Member/Auto property 03.fs.bsl | 5 +- .../SyntaxTree/Member/Auto property 04.fs.bsl | 6 +- .../SyntaxTree/Member/Auto property 05.fs.bsl | 6 +- .../SyntaxTree/Member/Auto property 06.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 07.fs.bsl | 6 +- .../SyntaxTree/Member/Auto property 08.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 09.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 10.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 11.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 12.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 13.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 14.fs | 4 + .../SyntaxTree/Member/Auto property 14.fs.bsl | 59 ++++++++ .../SyntaxTree/Member/Auto property 15.fs | 4 + .../SyntaxTree/Member/Auto property 15.fs.bsl | 26 ++++ .../Member/SignatureMemberWithSetget.fsi.bsl | 3 +- ...lotContainsTheRangeOfTheWithKeyword.fs.bsl | 3 +- ...ertyContainsTheRangeOfTheEqualsSign.fs.bsl | 5 +- ...rtyContainsTheRangeOfTheWithKeyword.fs.bsl | 7 +- ...erDefnAutoPropertyHasCorrectKeyword.fs.bsl | 12 +- ...ldContainsTheRangeOfTheWithKeyword.fsi.bsl | 3 +- 30 files changed, 233 insertions(+), 94 deletions(-) create mode 100644 tests/service/data/SyntaxTree/Member/Auto property 14.fs create mode 100644 tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl create mode 100644 tests/service/data/SyntaxTree/Member/Auto property 15.fs create mode 100644 tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 7f7743c90f7..05abd13456d 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -1083,6 +1083,15 @@ classMemberSpfnGetSetElements: SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, $1, id2.idRange, $4)) else SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, $4, id.idRange, $1)) } + + | nameop COMMA recover + { (let (SynIdent(id:Ident, _)) = $1 + if id.idText = "get" then + SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) + else if id.idText = "set" then + SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange) + else + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) } | opt_access nameop COMMA recover { (let (SynIdent(id:Ident, _)) = $2 diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl index da61adbe19b..ea8da8a84f2 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl @@ -5739,6 +5739,39 @@ FSharp.Compiler.Syntax.DebugPointAtWith: System.String ToString() FSharp.Compiler.Syntax.ExprAtomicFlag: FSharp.Compiler.Syntax.ExprAtomicFlag Atomic FSharp.Compiler.Syntax.ExprAtomicFlag: FSharp.Compiler.Syntax.ExprAtomicFlag NonAtomic FSharp.Compiler.Syntax.ExprAtomicFlag: Int32 value__ +FSharp.Compiler.Syntax.GetSetKeywords+Get: FSharp.Compiler.Text.Range Item +FSharp.Compiler.Syntax.GetSetKeywords+Get: FSharp.Compiler.Text.Range get_Item() +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_get() +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_set() +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range set +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_getterAccess() +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_setterAccess() +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] getterAccess +FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] setterAccess +FSharp.Compiler.Syntax.GetSetKeywords+Set: FSharp.Compiler.Text.Range Item +FSharp.Compiler.Syntax.GetSetKeywords+Set: FSharp.Compiler.Text.Range get_Item() +FSharp.Compiler.Syntax.GetSetKeywords+Tags: Int32 Get +FSharp.Compiler.Syntax.GetSetKeywords+Tags: Int32 GetSet +FSharp.Compiler.Syntax.GetSetKeywords+Tags: Int32 Set +FSharp.Compiler.Syntax.GetSetKeywords: Boolean IsGet +FSharp.Compiler.Syntax.GetSetKeywords: Boolean IsGetSet +FSharp.Compiler.Syntax.GetSetKeywords: Boolean IsSet +FSharp.Compiler.Syntax.GetSetKeywords: Boolean get_IsGet() +FSharp.Compiler.Syntax.GetSetKeywords: Boolean get_IsGetSet() +FSharp.Compiler.Syntax.GetSetKeywords: Boolean get_IsSet() +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords NewGet(FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords NewGetSet(FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess]) +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords NewSet(FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+Get +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+GetSet +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+Set +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+Tags +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Text.Range Range +FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Text.Range get_Range() +FSharp.Compiler.Syntax.GetSetKeywords: Int32 Tag +FSharp.Compiler.Syntax.GetSetKeywords: Int32 get_Tag() +FSharp.Compiler.Syntax.GetSetKeywords: System.String ToString() FSharp.Compiler.Syntax.Ident: FSharp.Compiler.Text.Range get_idRange() FSharp.Compiler.Syntax.Ident: FSharp.Compiler.Text.Range idRange FSharp.Compiler.Syntax.Ident: System.String ToString() @@ -7680,12 +7713,12 @@ FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure+Var FSharp.Compiler.Syntax.SynMeasure: Int32 Tag FSharp.Compiler.Syntax.SynMeasure: Int32 get_Tag() FSharp.Compiler.Syntax.SynMeasure: System.String ToString() +FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia get_trivia() +FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberFlags flags FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberFlags get_flags() FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynValSig get_slotSig() FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynValSig slotSig -FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia get_trivia() -FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Boolean get_isStatic() @@ -7694,14 +7727,14 @@ FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.Ident FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.Ident ident FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynExpr get_synExpr() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynExpr synExpr +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia get_trivia() +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags get_memberFlags() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags get_memberFlagsForSet() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags memberFlags FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags memberFlagsForSet FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberKind get_propKind() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberKind propKind -FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia get_trivia() -FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Xml.PreXmlDoc get_xmlDoc() @@ -7710,6 +7743,10 @@ FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Collections. FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] get_attributes() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] accessibility FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_accessibility() +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_getterAccessibility() +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_setterAccessibility() +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] getterAccessibility +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] setterAccessibility FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynType] get_typeOpt() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynType] typeOpt FSharp.Compiler.Syntax.SynMemberDefn+GetSetMember: FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia get_trivia() @@ -7818,8 +7855,8 @@ FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsMember() FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsNestedType() FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsOpen() FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsValField() -FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAbstractSlot(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia) -FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAutoProperty(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], Boolean, FSharp.Compiler.Syntax.Ident, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynType], FSharp.Compiler.Syntax.SynMemberKind, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Xml.PreXmlDoc, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia) +FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAbstractSlot(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia) +FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAutoProperty(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], Boolean, FSharp.Compiler.Syntax.Ident, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynType], FSharp.Compiler.Syntax.SynMemberKind, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Xml.PreXmlDoc, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia) FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewGetSetMember(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynBinding], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynBinding], FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia) FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewImplicitCtor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], FSharp.Compiler.Syntax.SynPat, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident], FSharp.Compiler.Xml.PreXmlDoc, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia) FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewImplicitInherit(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Syntax.SynExpr, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident], FSharp.Compiler.Text.Range) @@ -7848,6 +7885,22 @@ FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Text.Range get_Range() FSharp.Compiler.Syntax.SynMemberDefn: Int32 Tag FSharp.Compiler.Syntax.SynMemberDefn: Int32 get_Tag() FSharp.Compiler.Syntax.SynMemberDefn: System.String ToString() +FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia Zero +FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia get_Zero() +FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] GetSetKeywords +FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] get_GetSetKeywords() +FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: System.String ToString() +FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords]) +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword LeadingKeyword +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword get_LeadingKeyword() +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] GetSetKeywords +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] get_GetSetKeywords() +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] EqualsRange +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] WithKeyword +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_EqualsRange() +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_WithKeyword() +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: System.String ToString() +FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Void .ctor(FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords]) FSharp.Compiler.Syntax.SynMemberFlags: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynMemberFlags: Boolean GetterOrSetterIsCompilerGenerated FSharp.Compiler.Syntax.SynMemberFlags: Boolean IsDispatchSlot @@ -7913,10 +7966,10 @@ FSharp.Compiler.Syntax.SynMemberSig+Interface: FSharp.Compiler.Text.Range get_ra FSharp.Compiler.Syntax.SynMemberSig+Interface: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberFlags flags FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberFlags get_flags() +FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia get_trivia() +FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia trivia FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynValSig get_memberSig() FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynValSig memberSig -FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia get_trivia() -FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia trivia FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberSig+NestedType: FSharp.Compiler.Syntax.SynTypeDefnSig get_nestedType() @@ -7944,7 +7997,7 @@ FSharp.Compiler.Syntax.SynMemberSig: Boolean get_IsNestedType() FSharp.Compiler.Syntax.SynMemberSig: Boolean get_IsValField() FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewInherit(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewInterface(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewMember(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia) +FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewMember(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMemberSigMemberTrivia) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewNestedType(FSharp.Compiler.Syntax.SynTypeDefnSig, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewValField(FSharp.Compiler.Syntax.SynField, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig+Inherit @@ -7958,6 +8011,12 @@ FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Text.Range get_Range() FSharp.Compiler.Syntax.SynMemberSig: Int32 Tag FSharp.Compiler.Syntax.SynMemberSig: Int32 get_Tag() FSharp.Compiler.Syntax.SynMemberSig: System.String ToString() +FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia Zero +FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia get_Zero() +FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] GetSetKeywords +FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] get_GetSetKeywords() +FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: System.String ToString() +FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords]) FSharp.Compiler.Syntax.SynModuleDecl+Attributes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynModuleDecl+Attributes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynModuleDecl+Attributes: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] attributes @@ -9663,35 +9722,6 @@ FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: FSharp.Compiler.SyntaxT FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: Int32 Tag FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: Int32 get_Tag() FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: System.String ToString() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Get: FSharp.Compiler.Text.Range Item -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Get: FSharp.Compiler.Text.Range get_Item() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_get() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_set() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range set -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Set: FSharp.Compiler.Text.Range Item -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Set: FSharp.Compiler.Text.Range get_Item() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags: Int32 Get -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags: Int32 GetSet -FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags: Int32 Set -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean IsGet -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean IsGetSet -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean IsSet -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean get_IsGet() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean get_IsGetSet() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean get_IsSet() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords NewGet(FSharp.Compiler.Text.Range) -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords NewGetSet(FSharp.Compiler.Text.Range, FSharp.Compiler.Text.Range) -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords NewSet(FSharp.Compiler.Text.Range) -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Get -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Set -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.Text.Range Range -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.Text.Range get_Range() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Int32 Tag -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Int32 get_Tag() -FSharp.Compiler.SyntaxTrivia.GetSetKeywords: System.String ToString() FSharp.Compiler.SyntaxTrivia.IdentTrivia+HasParenthesis: FSharp.Compiler.Text.Range get_leftParenRange() FSharp.Compiler.SyntaxTrivia.IdentTrivia+HasParenthesis: FSharp.Compiler.Text.Range get_rightParenRange() FSharp.Compiler.SyntaxTrivia.IdentTrivia+HasParenthesis: FSharp.Compiler.Text.Range leftParenRange @@ -10118,22 +10148,6 @@ FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: FSharp.Compiler.Text.Rang FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: FSharp.Compiler.Text.Range get_LessRange() FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: System.String ToString() FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: Void .ctor(FSharp.Compiler.Text.Range, FSharp.Compiler.Text.Range) -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia Zero -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia get_Zero() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] GetSetKeywords -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] get_GetSetKeywords() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: System.String ToString() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords]) -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword LeadingKeyword -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword get_LeadingKeyword() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] GetSetKeywords -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] get_GetSetKeywords() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] EqualsRange -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] WithKeyword -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_EqualsRange() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_WithKeyword() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: System.String ToString() -FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Void .ctor(FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords]) FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] AsKeyword FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_AsKeyword() FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia: System.String ToString() @@ -10150,12 +10164,6 @@ FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: Microsoft.FSharp.Core.FSharp FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_SetKeyword() FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: System.String ToString() FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range]) -FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia Zero -FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia get_Zero() -FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] GetSetKeywords -FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] get_GetSetKeywords() -FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: System.String ToString() -FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords]) FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia: FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia Zero FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia: FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia get_Zero() FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] EqualsRange diff --git a/tests/service/data/SyntaxTree/LeadingKeyword/DefaultValKeyword.fs.bsl b/tests/service/data/SyntaxTree/LeadingKeyword/DefaultValKeyword.fs.bsl index 0451b561b92..aae0b57cb0c 100644 --- a/tests/service/data/SyntaxTree/LeadingKeyword/DefaultValKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/LeadingKeyword/DefaultValKeyword.fs.bsl @@ -28,7 +28,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (3,26--3,27)), (3,4--3,27), + None, None, None, Const (Int32 1, (3,26--3,27)), + (3,4--3,27), { LeadingKeyword = DefaultVal ((3,4--3,11), (3,12--3,15)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/LeadingKeyword/MemberValKeyword.fs.bsl b/tests/service/data/SyntaxTree/LeadingKeyword/MemberValKeyword.fs.bsl index 7178d569385..a5a5c94bbf8 100644 --- a/tests/service/data/SyntaxTree/LeadingKeyword/MemberValKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/LeadingKeyword/MemberValKeyword.fs.bsl @@ -28,7 +28,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (3,25--3,26)), (3,4--3,26), + None, None, None, Const (Int32 1, (3,25--3,26)), + (3,4--3,26), { LeadingKeyword = MemberVal ((3,4--3,10), (3,11--3,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/LeadingKeyword/OverrideValKeyword.fs.bsl b/tests/service/data/SyntaxTree/LeadingKeyword/OverrideValKeyword.fs.bsl index 4d3005f29e3..de95a8f3bbb 100644 --- a/tests/service/data/SyntaxTree/LeadingKeyword/OverrideValKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/LeadingKeyword/OverrideValKeyword.fs.bsl @@ -28,7 +28,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (3,27--3,28)), (3,4--3,28), + None, None, None, Const (Int32 1, (3,27--3,28)), + (3,4--3,28), { LeadingKeyword = OverrideVal ((3,4--3,12), (3,13--3,16)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/LeadingKeyword/StaticMemberValKeyword.fs.bsl b/tests/service/data/SyntaxTree/LeadingKeyword/StaticMemberValKeyword.fs.bsl index 809096c0c78..2ac6f5d2c39 100644 --- a/tests/service/data/SyntaxTree/LeadingKeyword/StaticMemberValKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/LeadingKeyword/StaticMemberValKeyword.fs.bsl @@ -28,7 +28,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (3,32--3,33)), (3,4--3,33), + None, None, None, Const (Int32 1, (3,32--3,33)), + (3,4--3,33), { LeadingKeyword = StaticMemberVal ((3,4--3,10), (3,11--3,17), (3,18--3,21)) diff --git a/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl b/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl index b136527eb6b..4177671e31b 100644 --- a/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl @@ -32,7 +32,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (4,4--4,33), { GetSetKeywords = - Some (GetSet ((4,25--4,28), (4,30--4,33))) })], + Some + (GetSet ((4,25--4,28), None, (4,30--4,33), None)) })], (4,4--4,33)), [], None, (3,5--4,33), { LeadingKeyword = Type (3,0--3,4) EqualsRange = Some (3,7--3,8) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 01.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 01.fs.bsl index 5155ca1b3e3..4576c205a95 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 01.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 01.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,20--4,21)), (4,4--4,21), + None, None, None, Const (Int32 1, (4,20--4,21)), + (4,4--4,21), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/Member/Auto property 02.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 02.fs.bsl index af2cbcfa598..b8736fd23e2 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 02.fs.bsl @@ -27,7 +27,7 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, + None, None, None, ArbitraryAfterError ("typedSequentialExprBlock1", (4,19--4,19)), (4,4--4,19), diff --git a/tests/service/data/SyntaxTree/Member/Auto property 03.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 03.fs.bsl index 4dc2510f320..c489efc4380 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 03.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 03.fs.bsl @@ -27,7 +27,7 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, + None, None, None, ArbitraryAfterError ("typedSequentialExprBlock1", (4,19--4,19)), (4,4--4,19), @@ -51,7 +51,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 2, (5,20--5,21)), (5,4--5,21), + None, None, None, Const (Int32 2, (5,20--5,21)), + (5,4--5,21), { LeadingKeyword = MemberVal ((5,4--5,10), (5,11--5,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/Member/Auto property 04.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 04.fs.bsl index 9497c483352..f9c511bfc5e 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 04.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 04.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, ArbitraryAfterError ("autoProp2", (4,17--4,17)), + None, None, None, + ArbitraryAfterError ("autoProp2", (4,17--4,17)), (4,4--4,17), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) @@ -49,7 +50,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 2, (5,20--5,21)), (5,4--5,21), + None, None, None, Const (Int32 2, (5,20--5,21)), + (5,4--5,21), { LeadingKeyword = MemberVal ((5,4--5,10), (5,11--5,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/Member/Auto property 05.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 05.fs.bsl index 84a9f629f6e..541adf1f681 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 05.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 05.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, ArbitraryAfterError ("autoProp3", (4,14--4,14)), + None, None, None, + ArbitraryAfterError ("autoProp3", (4,14--4,14)), (4,4--4,14), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) @@ -49,7 +50,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 2, (5,20--5,21)), (5,4--5,21), + None, None, None, Const (Int32 2, (5,20--5,21)), + (5,4--5,21), { LeadingKeyword = MemberVal ((5,4--5,10), (5,11--5,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/Member/Auto property 06.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 06.fs.bsl index 50d5378bf80..0a7d12909ea 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 06.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 06.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,20--4,21)), (4,4--4,21), + None, None, None, Const (Int32 1, (4,20--4,21)), + (4,4--4,21), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl index 492124d31f0..12a7bfa4ef7 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl @@ -32,13 +32,15 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 7, (4,24--4,25)), (4,4--4,38), + None, None, None, Const (Int32 7, (4,24--4,25)), + (4,4--4,38), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,26--4,30) EqualsRange = Some (4,22--4,23) GetSetKeywords = - Some (GetSet ((4,31--4,34), (4,35--4,38))) })], + Some + (GetSet ((4,31--4,34), None, (4,35--4,38), None)) })], (4,4--4,38)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl index 82805ec6df7..f4e62f0ba4b 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,19--4,20)), (4,4--4,29), + None, None, None, Const (Int32 1, (4,19--4,20)), + (4,4--4,29), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,21--4,25) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl index 00760cf2537..2ccd7d7a362 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,20--4,21)), (4,4--4,30), + None, None, None, Const (Int32 1, (4,20--4,21)), + (4,4--4,30), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,22--4,26) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl index 1a61306fb2d..1bb870f1f31 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,19--4,20)), (4,4--4,29), + None, None, None, Const (Int32 1, (4,19--4,20)), + (4,4--4,29), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,21--4,25) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 11.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 11.fs.bsl index 14121127b62..b0235cf362a 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 11.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 11.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,19--4,20)), (4,4--4,29), + None, None, None, Const (Int32 1, (4,19--4,20)), + (4,4--4,29), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,21--4,25) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 12.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 12.fs.bsl index d466718e4af..79d41c4f5a0 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 12.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 12.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,19--4,20)), (4,4--4,20), + None, None, None, Const (Int32 1, (4,19--4,20)), + (4,4--4,20), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,21--4,25) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 13.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 13.fs.bsl index d0c7a6c9dbc..a4515894463 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 13.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 13.fs.bsl @@ -27,7 +27,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,19--4,20)), (4,4--4,20), + None, None, None, Const (Int32 1, (4,19--4,20)), + (4,4--4,20), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = Some (4,21--4,25) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 14.fs b/tests/service/data/SyntaxTree/Member/Auto property 14.fs new file mode 100644 index 00000000000..c69c16bcfbf --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Auto property 14.fs @@ -0,0 +1,4 @@ +module A + +type X() = + member val Y: int = 7 with public get, private set diff --git a/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl new file mode 100644 index 00000000000..bf24b421311 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl @@ -0,0 +1,59 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Auto property 14.fs", false, QualifiedNameOfFile A, [], [], + [SynModuleOrNamespace + ([A], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [X], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [ImplicitCtor + (None, [], Const (Unit, (3,6--3,8)), None, + PreXmlDoc ((3,6), FSharp.Compiler.Xml.XmlDocCollector), + (3,5--3,6), { AsKeyword = None }); + AutoProperty + ([], false, Y, + Some (LongIdent (SynLongIdent ([int], [], [None]))), + PropertyGetSet, + { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = false + IsFinal = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = Member }, + { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = false + IsFinal = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = PropertySet }, + PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), + None, Some (Public (4,31--4,37)), + Some (Private (4,43--4,50)), + Const (Int32 7, (4,24--4,25)), (4,4--4,54), + { LeadingKeyword = + MemberVal ((4,4--4,10), (4,11--4,14)) + WithKeyword = Some (4,26--4,30) + EqualsRange = Some (4,22--4,23) + GetSetKeywords = + Some + (GetSet + ((4,38--4,41), Some (Public (4,31--4,37)), + (4,51--4,54), Some (Private (4,43--4,50)))) })], + (4,4--4,54)), [], + Some + (ImplicitCtor + (None, [], Const (Unit, (3,6--3,8)), None, + PreXmlDoc ((3,6), FSharp.Compiler.Xml.XmlDocCollector), + (3,5--3,6), { AsKeyword = None })), (3,5--4,54), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,9--3,10) + WithKeyword = None })], (3,0--4,54))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,54), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 15.fs b/tests/service/data/SyntaxTree/Member/Auto property 15.fs new file mode 100644 index 00000000000..aedf83865d3 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Auto property 15.fs @@ -0,0 +1,4 @@ +module A + +type X() = + member val internal Y: int = 7 with public get, private set diff --git a/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl new file mode 100644 index 00000000000..e48f3c1e3a8 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl @@ -0,0 +1,26 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Auto property 15.fs", false, QualifiedNameOfFile A, [], [], + [SynModuleOrNamespace + ([A], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [X], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + Simple (None (3,5--3,6), (3,5--3,6)), + [ImplicitCtor + (None, [], Const (Unit, (3,6--3,8)), None, + PreXmlDoc ((3,6), FSharp.Compiler.Xml.XmlDocCollector), + (3,5--3,6), { AsKeyword = None })], None, (3,5--3,6), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = None + WithKeyword = None })], (3,0--3,6))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,6), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,40)-(4,46) parse error When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. +(5,0)-(5,0) parse error Incomplete structured construct at or before this point in implementation file diff --git a/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl b/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl index db84482f638..2ea2ecd15d8 100644 --- a/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl +++ b/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl @@ -32,7 +32,8 @@ SigFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (6,4--8,39), { GetSetKeywords = - Some (GetSet ((8,36--8,39), (8,28--8,31))) })], + Some + (GetSet ((8,36--8,39), None, (8,28--8,31), None)) })], (6,4--8,39)), [], (4,5--8,39), { LeadingKeyword = Type (4,0--4,4) EqualsRange = Some (4,7--4,8) diff --git a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl index f3b24278efa..17bef2d8981 100644 --- a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl @@ -40,7 +40,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (3,4--3,42), { GetSetKeywords = - Some (GetSet ((3,35--3,38), (3,39--3,42))) })], + Some + (GetSet ((3,35--3,38), None, (3,39--3,42), None)) })], (3,4--3,42)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl index 7cfa4c283eb..75e8d5de26e 100644 --- a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl @@ -51,13 +51,14 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Ident name, (4,4--5,40), + None, None, None, Ident name, (4,4--5,40), { LeadingKeyword = MemberVal ((5,4--5,10), (5,11--5,14)) WithKeyword = Some (5,27--5,31) EqualsRange = Some (5,20--5,21) GetSetKeywords = - Some (GetSet ((5,32--5,35), (5,37--5,40))) })], + Some + (GetSet ((5,32--5,35), None, (5,37--5,40), None)) })], (4,4--5,40)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl index 0bef3c32697..82c7fc00c2d 100644 --- a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl @@ -34,13 +34,14 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Ident autoProp, (3,4--3,52), + None, None, None, Ident autoProp, (3,4--3,52), { LeadingKeyword = MemberVal ((3,4--3,10), (3,11--3,14)) WithKeyword = Some (3,39--3,43) EqualsRange = Some (3,28--3,29) GetSetKeywords = - Some (GetSet ((3,44--3,47), (3,49--3,52))) }); + Some + (GetSet ((3,44--3,47), None, (3,49--3,52), None)) }); AutoProperty ([], false, AutoProperty2, None, Member, { IsInstance = true @@ -56,7 +57,7 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Ident autoProp, (4,4--4,39), + None, None, None, Ident autoProp, (4,4--4,39), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/MemberFlag/SynMemberDefnAutoPropertyHasCorrectKeyword.fs.bsl b/tests/service/data/SyntaxTree/MemberFlag/SynMemberDefnAutoPropertyHasCorrectKeyword.fs.bsl index f3b34e63689..67858fd3916 100644 --- a/tests/service/data/SyntaxTree/MemberFlag/SynMemberDefnAutoPropertyHasCorrectKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/MemberFlag/SynMemberDefnAutoPropertyHasCorrectKeyword.fs.bsl @@ -28,7 +28,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (3,32--3,33)), (3,4--3,33), + None, None, None, Const (Int32 1, (3,32--3,33)), + (3,4--3,33), { LeadingKeyword = StaticMemberVal ((3,4--3,10), (3,11--3,17), (3,18--3,21)) @@ -51,7 +52,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (4,25--4,26)), (4,4--4,26), + None, None, None, Const (Int32 1, (4,25--4,26)), + (4,4--4,26), { LeadingKeyword = MemberVal ((4,4--4,10), (4,11--4,14)) WithKeyword = None @@ -73,7 +75,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 2, (5,27--5,28)), (5,4--5,28), + None, None, None, Const (Int32 2, (5,27--5,28)), + (5,4--5,28), { LeadingKeyword = OverrideVal ((5,4--5,12), (5,13--5,16)) WithKeyword = None @@ -95,7 +98,8 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertySet }, PreXmlDoc ((6,4), FSharp.Compiler.Xml.XmlDocCollector), - None, Const (Int32 1, (6,26--6,27)), (6,4--6,27), + None, None, None, Const (Int32 1, (6,26--6,27)), + (6,4--6,27), { LeadingKeyword = DefaultVal ((6,4--6,11), (6,12--6,15)) WithKeyword = None diff --git a/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl b/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl index 32b9b945708..73ab09a709c 100644 --- a/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl +++ b/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl @@ -35,7 +35,8 @@ SigFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (5,4--5,42), { GetSetKeywords = - Some (GetSet ((5,35--5,38), (5,39--5,42))) })], + Some + (GetSet ((5,35--5,38), None, (5,39--5,42), None)) })], (5,4--5,42)), [], (4,5--5,42), { LeadingKeyword = Type (4,0--4,4) EqualsRange = Some (4,9--4,10) From 3588adab525f4fb423a704377c1ca5fe7cb2944c Mon Sep 17 00:00:00 2001 From: ijklam Date: Sun, 11 Feb 2024 11:48:22 +0800 Subject: [PATCH 06/18] move checks leave parser --- src/Compiler/Checking/CheckDeclarations.fs | 44 +++++-- src/Compiler/FSComp.txt | 3 +- src/Compiler/SyntaxTree/ParseHelpers.fs | 22 +--- src/Compiler/SyntaxTree/ParseHelpers.fsi | 3 +- src/Compiler/SyntaxTree/SyntaxTree.fs | 41 ------ src/Compiler/SyntaxTree/SyntaxTree.fsi | 46 ------- src/Compiler/SyntaxTree/SyntaxTrivia.fs | 41 ++++++ src/Compiler/SyntaxTree/SyntaxTrivia.fsi | 46 +++++++ src/Compiler/pars.fsy | 77 ++++------- src/Compiler/xlf/FSComp.txt.cs.xlf | 5 + src/Compiler/xlf/FSComp.txt.de.xlf | 5 + src/Compiler/xlf/FSComp.txt.es.xlf | 5 + src/Compiler/xlf/FSComp.txt.fr.xlf | 5 + src/Compiler/xlf/FSComp.txt.it.xlf | 5 + src/Compiler/xlf/FSComp.txt.ja.xlf | 5 + src/Compiler/xlf/FSComp.txt.ko.xlf | 5 + src/Compiler/xlf/FSComp.txt.pl.xlf | 5 + src/Compiler/xlf/FSComp.txt.pt-BR.xlf | 5 + src/Compiler/xlf/FSComp.txt.ru.xlf | 5 + src/Compiler/xlf/FSComp.txt.tr.xlf | 5 + src/Compiler/xlf/FSComp.txt.zh-Hans.xlf | 5 + src/Compiler/xlf/FSComp.txt.zh-Hant.xlf | 5 + ...vice.SurfaceArea.netstandard20.release.bsl | 124 +++++++++--------- .../Member/Abstract - Property 02.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 07.fs.bsl | 3 +- .../SyntaxTree/Member/Auto property 08.fs.bsl | 2 +- .../SyntaxTree/Member/Auto property 09.fs.bsl | 2 +- .../SyntaxTree/Member/Auto property 10.fs.bsl | 2 +- .../SyntaxTree/Member/Auto property 14.fs.bsl | 5 +- .../SyntaxTree/Member/Auto property 15.fs.bsl | 52 ++++++-- .../Member/SignatureMemberWithSetget.fsi.bsl | 3 +- ...lotContainsTheRangeOfTheWithKeyword.fs.bsl | 3 +- ...ertyContainsTheRangeOfTheEqualsSign.fs.bsl | 3 +- ...rtyContainsTheRangeOfTheWithKeyword.fs.bsl | 3 +- ...ldContainsTheRangeOfTheWithKeyword.fsi.bsl | 3 +- 35 files changed, 331 insertions(+), 265 deletions(-) diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index 727fc168a72..d5c46735f3d 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -4292,7 +4292,7 @@ module TcDeclarations = | _ -> () /// Split auto-properties into 'let' and 'member' bindings - let private SplitAutoProps members = + let private SplitAutoProps (g: TcGlobals) members = let membersIncludingAutoProps, vals_Inherits_Abstractslots = members |> List.partition (fun memb -> match memb with @@ -4342,7 +4342,7 @@ module TcDeclarations = let rec postAutoProps memb = match memb with | SynMemberDefn.AutoProperty(ident = id) when String.IsNullOrEmpty(id.idText) -> [] - | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; trivia = { GetSetKeywords = mGetSetOpt }; getterAccessibility = getterAccesss; setterAccessibility = setterAccess) -> + | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; trivia = { GetSetKeywords = mGetSetOpt }; accessibility = access; getterAccessibility = getterAccess; setterAccessibility = setterAccess) -> let mMemberPortion = id.idRange // Only the keep the non-field-targeted attributes let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true) @@ -4355,7 +4355,35 @@ module TcDeclarations = match propKind, mGetSetOpt with | SynMemberKind.PropertySet, Some getSetKeywords -> errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(), getSetKeywords.Range)) | _ -> () - + + let getterAccess, setterAccess = + match propKind with + | SynMemberKind.PropertyGetSet -> + match access with + | Some _ -> + match getterAccess, setterAccess with + | None, None -> access, access + | Some x, _ + | _, Some x -> error(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + | None -> + match getterAccess, setterAccess with + | Some x, _ + | _, Some x -> + checkLanguageFeatureError g.langVersion LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters x.Range + getterAccess, setterAccess + | _, _ -> None, None + | SynMemberKind.PropertySet -> + match access, setterAccess with + | Some _, Some x -> error(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + | _, None -> None, access + | None, _ -> None, setterAccess + | SynMemberKind.Member + | SynMemberKind.PropertyGet + | _ -> + match access, getterAccess with + | Some _, Some x -> error(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + | _, None -> access, None + | None, _ -> getterAccess, None [ match propKind with | SynMemberKind.Member @@ -4365,7 +4393,7 @@ module TcDeclarations = let rhsExpr = SynExpr.Ident fldId let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range)) let attribs = mkAttributeList attribs mMemberPortion - let binding = mkSynBinding (xmlDoc, headPat) (getterAccesss, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) + let binding = mkSynBinding (xmlDoc, headPat) (getterAccess, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) SynMemberDefn.Member (binding, mMemberPortion) yield getter | _ -> () @@ -4401,9 +4429,9 @@ module TcDeclarations = /// where simpleRepr can contain inherit type, declared fields and virtual slots. /// body = members /// where members contain methods/overrides, also implicit ctor, inheritCall and local definitions. - let rec private SplitTyconDefn (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) = + let rec private SplitTyconDefn g (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) = let extraMembers = desugarGetSetMembers extraMembers - let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps extraMembers + let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps g extraMembers let implements1 = extraMembers |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None) match trepr with @@ -4424,7 +4452,7 @@ module TcDeclarations = let slotsigs = members |> List.choose (function SynMemberDefn.AbstractSlot (slotSig = x; flags = y) -> Some(x, y) | _ -> None) - let members,_vals_Inherits_Abstractslots = SplitAutoProps members + let members,_vals_Inherits_Abstractslots = SplitAutoProps g members let isConcrete = members |> List.exists (function @@ -4486,7 +4514,7 @@ module TcDeclarations = // Split the definitions into "core representations" and "members". The code to process core representations // is shared between processing of signature files and implementation files. - let mutRecDefnsAfterSplit = mutRecDefns |> MutRecShapes.mapTycons SplitTyconDefn + let mutRecDefnsAfterSplit = mutRecDefns |> MutRecShapes.mapTycons (fun i -> SplitTyconDefn g i) // Create the entities for each module and type definition, and process the core representation of each type definition. let tycons, envMutRecPrelim, mutRecDefnsAfterCore = diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index bd18f6b8ad3..eabe67b0386 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1743,4 +1743,5 @@ featureReuseSameFieldsInStructUnions,"Share underlying fields in a [] di 3863,parsExpectingField,"Expecting record field" 3864,tooManyMethodsInDotNetTypeWritingAssembly,"The type '%s' has too many methods. Found: '%d', maximum: '%d'" 3865,parsOnlySimplePatternsAreAllowedInConstructors,"Only simple patterns are allowed in primary constructors" -featureAllowAccessModifiersToAutoPropertiesGettersAndSetters,"Allow access modifiers to auto properties getters and setters" \ No newline at end of file +featureAllowAccessModifiersToAutoPropertiesGettersAndSetters,"Allow access modifiers to auto properties getters and setters" +3866,parsAccessModifiersBeforeGettersAndSettersNotAllowedInSigFile,"The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file." \ No newline at end of file diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/Compiler/SyntaxTree/ParseHelpers.fs index 17ee6f21834..e4c766b1b69 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -1100,8 +1100,8 @@ let mkSynUnionCase attributes (access: SynAccess option) id kind mDecl (xmlDoc, let mDecl = unionRangeWithXmlDoc xmlDoc mDecl SynUnionCase(attributes, id, kind, xmlDoc, None, mDecl, trivia) -let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDoc attribs flags rangeStart langVersion = - let mWith, (getSet, getSetOpt) = accessors +let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDoc attribs flags rangeStart = + let mWith, (getSet, getSetOpt, getterAccess, setterAccess) = accessors let memberRange = match getSetOpt with @@ -1117,24 +1117,6 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo let memberFlagsForSet = flags SynMemberKind.PropertySet let isStatic = not memberFlags.IsInstance - let getterAccess, setterAccess = - match access, getSetOpt with - | Some _, Some(GetSetKeywords.GetSet(_, None, _, None)) -> access, access - | Some _, Some(GetSetKeywords.GetSet(_, Some x, _, _)) - | Some _, Some(GetSetKeywords.GetSet(_, _, _, Some x)) -> - raiseParseErrorAt x.Range (FSComp.SR.parsMultipleAccessibilitiesForGetSet ()) - | None, Some(GetSetKeywords.GetSet(_, getterAccess, _, setterAccess)) -> - match getterAccess, setterAccess with - | Some x, _ - | _, Some x -> - checkLanguageFeatureError langVersion LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters x.Range - | None, None -> () - - getterAccess, setterAccess - | _, Some(GetSetKeywords.Get _) -> access, None - | _, Some(GetSetKeywords.Set _) -> None, access - | _ -> None, None - let trivia = { LeadingKeyword = leadingKeyword diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fsi b/src/Compiler/SyntaxTree/ParseHelpers.fsi index 2cb3c520343..a90b010eef2 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fsi +++ b/src/Compiler/SyntaxTree/ParseHelpers.fsi @@ -272,12 +272,11 @@ val mkAutoPropDefn: typ: SynType option -> mEquals: range option -> expr: SynExpr -> - accessors: range option * (SynMemberKind * GetSetKeywords option) -> + accessors: range option * (SynMemberKind * GetSetKeywords option * SynAccess option * SynAccess option) -> xmlDoc: PreXmlDoc -> attribs: SynAttributes -> flags: (SynMemberKind -> SynMemberFlags) * SynLeadingKeyword -> rangeStart: range -> - langVersion: LanguageVersion -> SynMemberDefn val mkValField: diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/Compiler/SyntaxTree/SyntaxTree.fs index 00d94c9648c..a4ba8c601f4 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -221,47 +221,6 @@ type SynAccess = | Internal m | Private m -> m -[] -type GetSetKeywords = - | Get of range - | Set of range - | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option - - member x.Range = - match x with - | Get m - | Set m -> m - | GetSet(mG, _, mS, _) -> - if Range.rangeBeforePos mG mS.Start then - Range.unionRanges mG mS - else - Range.unionRanges mS mG - -[] -type SynMemberDefnAutoPropertyTrivia = - { - LeadingKeyword: SynLeadingKeyword - WithKeyword: range option - EqualsRange: range option - GetSetKeywords: GetSetKeywords option - } - -[] -type SynMemberDefnAbstractSlotTrivia = - { - GetSetKeywords: GetSetKeywords option - } - - static member Zero = { GetSetKeywords = None } - -[] -type SynMemberSigMemberTrivia = - { - GetSetKeywords: GetSetKeywords option - } - - static member Zero: SynMemberSigMemberTrivia = { GetSetKeywords = None } - [] type DebugPointAtTarget = | Yes diff --git a/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/Compiler/SyntaxTree/SyntaxTree.fsi index 982927d2ea0..2f1d1d5776c 100644 --- a/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -242,52 +242,6 @@ type SynAccess = member Range: range -/// Represents additional information for `get, set` syntax -[] -type GetSetKeywords = - | Get of range - | Set of range - | GetSet of get: range * getterAccess: SynAccess option * set: range * setterAccess: SynAccess option - - member Range: range - -/// Represents additional information for SynMemberDefn.AutoProperty -[] -type SynMemberDefnAutoPropertyTrivia = - { - /// Used leading keyword of AutoProperty - LeadingKeyword: SynLeadingKeyword - - /// The syntax range of the `with` keyword - WithKeyword: range option - - /// The syntax range of the `=` token - EqualsRange: range option - - /// The syntax range of 'get, set' - GetSetKeywords: GetSetKeywords option - } - -/// Represents additional information for SynMemberDefn.AbstractSlot -[] -type SynMemberDefnAbstractSlotTrivia = - { - /// The syntax range of 'get, set' - GetSetKeywords: GetSetKeywords option - } - - static member Zero: SynMemberDefnAbstractSlotTrivia - -/// Represents additional information for SynMemberSig.Member -[] -type SynMemberSigMemberTrivia = - { - /// The syntax range of 'get, set' - GetSetKeywords: GetSetKeywords option - } - - static member Zero: SynMemberSigMemberTrivia - /// Represents whether a debug point should be present for the target /// of a decision tree, that is whether the construct corresponds to a debug /// point in the original source. diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 8b5d439a7ec..7330ac9b695 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -346,6 +346,39 @@ type SynMemberDefnImplicitCtorTrivia = { AsKeyword: range option } [] type SynArgPatsNamePatPairsTrivia = { ParenRange: range } +[] +type GetSetKeywords = + | Get of range + | Set of range + | GetSet of get: range * set: range + + member x.Range = + match x with + | Get m + | Set m -> m + | GetSet(mG, mS) -> + if Range.rangeBeforePos mG mS.Start then + Range.unionRanges mG mS + else + Range.unionRanges mS mG + +[] +type SynMemberDefnAutoPropertyTrivia = + { + LeadingKeyword: SynLeadingKeyword + WithKeyword: range option + EqualsRange: range option + GetSetKeywords: GetSetKeywords option + } + +[] +type SynMemberDefnAbstractSlotTrivia = + { + GetSetKeywords: GetSetKeywords option + } + + static member Zero = { GetSetKeywords = None } + [] type SynFieldTrivia = { @@ -365,6 +398,14 @@ type SynTypeOrTrivia = { OrKeyword: range } [] type SynBindingReturnInfoTrivia = { ColonRange: range option } +[] +type SynMemberSigMemberTrivia = + { + GetSetKeywords: GetSetKeywords option + } + + static member Zero: SynMemberSigMemberTrivia = { GetSetKeywords = None } + [] type SynTyparDeclTrivia = { diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index a3ffe0227a3..137f5432803 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -444,6 +444,42 @@ type SynArgPatsNamePatPairsTrivia = ParenRange: range } +/// Represents additional information for `get, set` syntax +[] +type GetSetKeywords = + | Get of range + | Set of range + | GetSet of get: range * set: range + + member Range: range + +/// Represents additional information for SynMemberDefn.AutoProperty +[] +type SynMemberDefnAutoPropertyTrivia = + { + /// Used leading keyword of AutoProperty + LeadingKeyword: SynLeadingKeyword + + /// The syntax range of the `with` keyword + WithKeyword: range option + + /// The syntax range of the `=` token + EqualsRange: range option + + /// The syntax range of 'get, set' + GetSetKeywords: GetSetKeywords option + } + +/// Represents additional information for SynMemberDefn.AbstractSlot +[] +type SynMemberDefnAbstractSlotTrivia = + { + /// The syntax range of 'get, set' + GetSetKeywords: GetSetKeywords option + } + + static member Zero: SynMemberDefnAbstractSlotTrivia + /// Represents additional information for SynField [] type SynFieldTrivia = @@ -472,6 +508,16 @@ type SynBindingReturnInfoTrivia = ColonRange: range option } +/// Represents additional information for SynMemberSig.Member +[] +type SynMemberSigMemberTrivia = + { + /// The syntax range of 'get, set' + GetSetKeywords: GetSetKeywords option + } + + static member Zero: SynMemberSigMemberTrivia + /// Represents additional information for SynTyparDecl [] type SynTyparDeclTrivia = diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 05abd13456d..9f6f3029509 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -949,7 +949,14 @@ classMemberSpfn: | opt_attributes opt_access memberSpecFlags opt_inline opt_access nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints classMemberSpfnGetSet optLiteralValueSpfn { if Option.isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let isInline, doc, vis2, id, explicitValTyparDecls, (ty, arity), (mEquals, optLiteralValue) = (Option.isSome $4), grabXmlDoc(parseState, $1, 1), $5, $6, $7, $9, $11 - let mWith, (getSet, getSetRangeOpt) = $10 + let mWith, (getSet, getSetRangeOpt, getterAccess, setterAccess) = $10 + match getterAccess with + | Some(x: SynAccess) -> warning(Error(FSComp.SR.parsAccessModifiersBeforeGettersAndSettersNotAllowedInSigFile(), x.Range)) + | _ -> () + match setterAccess with + | Some(x: SynAccess) -> warning(Error(FSComp.SR.parsAccessModifiersBeforeGettersAndSettersNotAllowedInSigFile(), x.Range)) + | _ -> () + let getSetAdjuster arity = match arity, getSet with SynValInfo([], _), SynMemberKind.Member -> SynMemberKind.PropertyGet | _ -> getSet let mWhole = let m = rhs parseState 3 @@ -1021,7 +1028,7 @@ classMemberSpfn: /* The optional "with get, set" on a member in a signature */ classMemberSpfnGetSet: | /* EMPTY */ - { None, (SynMemberKind.Member, None) } + { None, (SynMemberKind.Member, None, None, None) } | WITH classMemberSpfnGetSetElements { let mWith = rhs parseState 1 @@ -1039,39 +1046,15 @@ classMemberSpfnGetSet: /* The "get, set" on a property member in a signature */ classMemberSpfnGetSetElements: - | nameop - { (let (SynIdent(id:Ident, _)) = $1 + | opt_access nameop + { (let (SynIdent(id:Ident, _)) = $2 if id.idText = "get" then - SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) + SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange), $1, None else if id.idText = "set" then - SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange) + SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange), None, $1 else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) } - | opt_access nameop COMMA nameop - { let (SynIdent(id, _)) = $2 - let (SynIdent(id2, _)) = $4 - if not ((id.idText = "get" && id2.idText = "set") || - (id.idText = "set" && id2.idText = "get")) then - raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) - - if id.idText = "get" then - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, $1, id2.idRange, None)) - else - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, None, id.idRange, $1)) } - - | nameop COMMA opt_access nameop - { let (SynIdent(id, _)) = $1 - let (SynIdent(id2, _)) = $4 - if not ((id.idText = "get" && id2.idText = "set") || - (id.idText = "set" && id2.idText = "get")) then - raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) - - if id.idText = "get" then - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, None, id2.idRange, $3)) - else - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, $3, id.idRange, None)) } - | opt_access nameop COMMA opt_access nameop { let (SynIdent(id, _)) = $2 let (SynIdent(id2, _)) = $5 @@ -1080,31 +1063,22 @@ classMemberSpfnGetSetElements: raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) if id.idText = "get" then - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, $1, id2.idRange, $4)) + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id.idRange, id2.idRange)), $1, $4 else - SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, $4, id.idRange, $1)) } - - | nameop COMMA recover - { (let (SynIdent(id:Ident, _)) = $1 - if id.idText = "get" then - SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) - else if id.idText = "set" then - SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange) - else - raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) } + SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange)), $4, $1 } | opt_access nameop COMMA recover { (let (SynIdent(id:Ident, _)) = $2 if id.idText = "get" then - SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) + SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange), $1, None else if id.idText = "set" then - SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange) + SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange), None, $1 else - raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) } + raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsGetOrSetRequired())) } | OBLOCKBEGIN oblockend ODECLEND { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIdentifierExpected()) - SynMemberKind.Member, None } + SynMemberKind.Member, None, None, None } memberSpecFlags: | memberFlags { $1 } @@ -2067,7 +2041,7 @@ classDefnMember: | opt_attributes opt_access abstractMemberFlags opt_inline nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints classMemberSpfnGetSet opt_ODECLEND { let ty, arity = $8 let isInline, doc, id, explicitValTyparDecls = (Option.isSome $4), grabXmlDoc(parseState, $1, 1), $5, $6 - let mWith, (getSet, getSetRangeOpt) = $9 + let mWith, (getSet, getSetRangeOpt, getterAccess, setterAccess) = $9 let getSetAdjuster arity = match arity, getSet with SynValInfo([], _), SynMemberKind.Member -> SynMemberKind.PropertyGet | _ -> getSet let mWhole = let m = rhs parseState 1 @@ -2075,7 +2049,8 @@ classDefnMember: | None -> unionRanges m ty.Range | Some gs -> unionRanges m gs.Range |> unionRangeWithXmlDoc doc - if Option.isSome $2 then errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(), mWhole)) + if Option.isSome $2 || Option.isSome getterAccess || Option.isSome setterAccess + then errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(), mWhole)) let mkFlags, leadingKeyword = $3 let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = $4; WithKeyword = mWith; EqualsRange = None } let valSpfn = SynValSig($1, id, explicitValTyparDecls, ty, arity, isInline, false, doc, None, None, mWhole, trivia) @@ -2201,7 +2176,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 $4 $5 (Some mEquals) $7 $8 xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } + [ mkAutoPropDefn mVal $3 $4 $5 (Some mEquals) $7 $8 xmlDoc attribs flags rangeStart ] } | VAL opt_mutable opt_access ident opt_typ ends_coming_soon_or_recover { let mVal = rhs parseState 1 @@ -2214,7 +2189,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } + [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None, None, None)) xmlDoc attribs flags rangeStart ] } | VAL opt_mutable opt_access ident opt_typ OBLOCKSEP { let mVal = rhs parseState 1 @@ -2227,7 +2202,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } + [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None, None, None)) xmlDoc attribs flags rangeStart ] } | VAL opt_mutable opt_access recover { let mVal = rhs parseState 1 @@ -2237,7 +2212,7 @@ autoPropsDefnDecl: errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart) - [ mkAutoPropDefn mVal $3 id None None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart parseState.LexBuffer.LanguageVersion ] } + [ mkAutoPropDefn mVal $3 id None None expr (None, (SynMemberKind.Member, None, None, None)) xmlDoc attribs flags rangeStart ] } /* An optional type on an auto-property definition */ opt_typ: diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index b6b3e4f56a7..b54f9aaa4ec 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -887,6 +887,11 @@ Funkce správy balíčků vyžaduje jazykovou verzi 5.0 nebo vyšší. + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. Syntaxi průniku omezení lze použít pouze s flexibilními typy, například „#IDisposable a #ISomeInterface“. diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index f3a17764fec..0ca678a13c2 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -887,6 +887,11 @@ Für das „Paketverwaltungsfeature“ ist Sprachversion 5.0 oder höher erforderlich + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. Die Einschränkungsüberschneidungssyntax kann nur mit flexiblen Typen verwendet werden, z. B. "#IDisposable & #ISomeInterface". diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index ed887c52184..8df2c1c3cf0 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -887,6 +887,11 @@ La característica de "administración de paquetes" requiere la versión de lenguaje 5.0 o superior + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. La sintaxis de intersección de restricciones solo se puede usar con tipos flexibles, por ejemplo, "#IDisposable &#ISomeInterface". diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index eea44fc4e4f..7b14f362852 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -887,6 +887,11 @@ La fonction « gestion des paquets » nécessite une version de langue 5.0 ou supérieure. + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. La syntaxe d'intersection de contraintes ne peut être utilisée qu'avec des types flexibles, par ex. '#IDisposable et #ISomeInterface'. diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index fd639342ae6..9c923fc1fe6 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -887,6 +887,11 @@ La funzionalità 'gestione pacchetti' richiede la versione del linguaggio 5.0 o superiore + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. La sintassi dell'intersezione dei vincoli può essere usata solo con tipi flessibili, ad esempio '#IDisposable & #ISomeInterface'. diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index f4d2699cbaa..95aaa690cf0 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -887,6 +887,11 @@ 'package management' (パッケージ管理) 機能には、言語バージョン 5.0 以降が必要です + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. 制約交差構文は、"#IDisposable & #ISomeInterface" など、柔軟な型でのみ使用できます。 diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index 00efc286d77..4ce3b12588b 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -887,6 +887,11 @@ '패키지 관리' 기능을 사용하려면 언어 버전 5.0 이상이 필요합니다. + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. 제약 조건 교차 구문은 유연한 형식(예: '#IDisposable &#ISomeInterface')에서만 사용할 수 있습니다. diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index 8c3a793c8dc..f5ea2d522ee 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -887,6 +887,11 @@ Funkcja „Zarządzanie pakietami” wymaga języka w wersji 5.0 lub nowszej + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. Składnia przecięcia ograniczenia może być używana tylko z typami elastycznymi, np. „#IDisposable &#ISomeInterface”. diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index af6284b64a7..44d8df91205 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -887,6 +887,11 @@ O recurso 'gerenciamento de pacotes' requer a versão 5.0 ou superior do idioma + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. A sintaxe de interseção de restrição só pode ser usada com tipos flexíveis, por exemplo, "#IDisposable & #ISomeInterface". diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index 4050c482270..d9a51bb6e29 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -887,6 +887,11 @@ Для функции управления пакетами требуется версия языка 5.0 или более поздняя + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. Синтаксис пересечения ограничений можно использовать только с гибкими типами, например. "#IDisposable & #ISomeInterface". diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 31d5e4faf85..90db21b473c 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -887,6 +887,11 @@ ‘Paket yönetimi’ özelliği, dil sürümü 5.0 veya üstünü gerektirir + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. Kısıtlama kesişimi söz dizimi yalnızca esnek türlerle kullanılabilir. Ör. '#IDisposable & #ISomeInterface'. diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 9127e6ef239..30fcdc6c46f 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -887,6 +887,11 @@ “包管理”功能需要语言版本 5.0 或更高版本 + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. 约束交集语法只能与灵活类型一起使用,例如 "#IDisposable & #ISomeInterface"。 diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index e77b7ba89d3..eb04592e7d9 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -887,6 +887,11 @@ 「套件管理」功能需要語言版本 5.0 或更新版本 + + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. 條件約束交集語法只能搭配彈性類型使用,例如「#IDisposable 與 #ISomeInterface'」。 diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl index ea8da8a84f2..dfa92cb26c8 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl @@ -5739,39 +5739,6 @@ FSharp.Compiler.Syntax.DebugPointAtWith: System.String ToString() FSharp.Compiler.Syntax.ExprAtomicFlag: FSharp.Compiler.Syntax.ExprAtomicFlag Atomic FSharp.Compiler.Syntax.ExprAtomicFlag: FSharp.Compiler.Syntax.ExprAtomicFlag NonAtomic FSharp.Compiler.Syntax.ExprAtomicFlag: Int32 value__ -FSharp.Compiler.Syntax.GetSetKeywords+Get: FSharp.Compiler.Text.Range Item -FSharp.Compiler.Syntax.GetSetKeywords+Get: FSharp.Compiler.Text.Range get_Item() -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_get() -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_set() -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range set -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_getterAccess() -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] get_setterAccess() -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] getterAccess -FSharp.Compiler.Syntax.GetSetKeywords+GetSet: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess] setterAccess -FSharp.Compiler.Syntax.GetSetKeywords+Set: FSharp.Compiler.Text.Range Item -FSharp.Compiler.Syntax.GetSetKeywords+Set: FSharp.Compiler.Text.Range get_Item() -FSharp.Compiler.Syntax.GetSetKeywords+Tags: Int32 Get -FSharp.Compiler.Syntax.GetSetKeywords+Tags: Int32 GetSet -FSharp.Compiler.Syntax.GetSetKeywords+Tags: Int32 Set -FSharp.Compiler.Syntax.GetSetKeywords: Boolean IsGet -FSharp.Compiler.Syntax.GetSetKeywords: Boolean IsGetSet -FSharp.Compiler.Syntax.GetSetKeywords: Boolean IsSet -FSharp.Compiler.Syntax.GetSetKeywords: Boolean get_IsGet() -FSharp.Compiler.Syntax.GetSetKeywords: Boolean get_IsGetSet() -FSharp.Compiler.Syntax.GetSetKeywords: Boolean get_IsSet() -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords NewGet(FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords NewGetSet(FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess]) -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords NewSet(FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+Get -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+GetSet -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+Set -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Syntax.GetSetKeywords+Tags -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Text.Range Range -FSharp.Compiler.Syntax.GetSetKeywords: FSharp.Compiler.Text.Range get_Range() -FSharp.Compiler.Syntax.GetSetKeywords: Int32 Tag -FSharp.Compiler.Syntax.GetSetKeywords: Int32 get_Tag() -FSharp.Compiler.Syntax.GetSetKeywords: System.String ToString() FSharp.Compiler.Syntax.Ident: FSharp.Compiler.Text.Range get_idRange() FSharp.Compiler.Syntax.Ident: FSharp.Compiler.Text.Range idRange FSharp.Compiler.Syntax.Ident: System.String ToString() @@ -7713,12 +7680,12 @@ FSharp.Compiler.Syntax.SynMeasure: FSharp.Compiler.Syntax.SynMeasure+Var FSharp.Compiler.Syntax.SynMeasure: Int32 Tag FSharp.Compiler.Syntax.SynMeasure: Int32 get_Tag() FSharp.Compiler.Syntax.SynMeasure: System.String ToString() -FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia get_trivia() -FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberFlags flags FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynMemberFlags get_flags() FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynValSig get_slotSig() FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Syntax.SynValSig slotSig +FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia get_trivia() +FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynMemberDefn+AbstractSlot: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: Boolean get_isStatic() @@ -7727,14 +7694,14 @@ FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.Ident FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.Ident ident FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynExpr get_synExpr() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynExpr synExpr -FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia get_trivia() -FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags get_memberFlags() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags get_memberFlagsForSet() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags memberFlags FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberFlags memberFlagsForSet FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberKind get_propKind() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Syntax.SynMemberKind propKind +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia get_trivia() +FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia trivia FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberDefn+AutoProperty: FSharp.Compiler.Xml.PreXmlDoc get_xmlDoc() @@ -7855,8 +7822,8 @@ FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsMember() FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsNestedType() FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsOpen() FSharp.Compiler.Syntax.SynMemberDefn: Boolean get_IsValField() -FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAbstractSlot(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia) -FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAutoProperty(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], Boolean, FSharp.Compiler.Syntax.Ident, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynType], FSharp.Compiler.Syntax.SynMemberKind, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Xml.PreXmlDoc, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia) +FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAbstractSlot(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia) +FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewAutoProperty(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], Boolean, FSharp.Compiler.Syntax.Ident, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynType], FSharp.Compiler.Syntax.SynMemberKind, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Xml.PreXmlDoc, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia) FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewGetSetMember(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynBinding], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynBinding], FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia) FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewImplicitCtor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess], Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList], FSharp.Compiler.Syntax.SynPat, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident], FSharp.Compiler.Xml.PreXmlDoc, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia) FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Syntax.SynMemberDefn NewImplicitInherit(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Syntax.SynExpr, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident], FSharp.Compiler.Text.Range) @@ -7885,22 +7852,6 @@ FSharp.Compiler.Syntax.SynMemberDefn: FSharp.Compiler.Text.Range get_Range() FSharp.Compiler.Syntax.SynMemberDefn: Int32 Tag FSharp.Compiler.Syntax.SynMemberDefn: Int32 get_Tag() FSharp.Compiler.Syntax.SynMemberDefn: System.String ToString() -FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia Zero -FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia get_Zero() -FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] GetSetKeywords -FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] get_GetSetKeywords() -FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: System.String ToString() -FSharp.Compiler.Syntax.SynMemberDefnAbstractSlotTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords]) -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword LeadingKeyword -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword get_LeadingKeyword() -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] GetSetKeywords -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] get_GetSetKeywords() -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] EqualsRange -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] WithKeyword -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_EqualsRange() -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_WithKeyword() -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: System.String ToString() -FSharp.Compiler.Syntax.SynMemberDefnAutoPropertyTrivia: Void .ctor(FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords]) FSharp.Compiler.Syntax.SynMemberFlags: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynMemberFlags: Boolean GetterOrSetterIsCompilerGenerated FSharp.Compiler.Syntax.SynMemberFlags: Boolean IsDispatchSlot @@ -7966,10 +7917,10 @@ FSharp.Compiler.Syntax.SynMemberSig+Interface: FSharp.Compiler.Text.Range get_ra FSharp.Compiler.Syntax.SynMemberSig+Interface: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberFlags flags FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberFlags get_flags() -FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia get_trivia() -FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia trivia FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynValSig get_memberSig() FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Syntax.SynValSig memberSig +FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia get_trivia() +FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia trivia FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynMemberSig+Member: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynMemberSig+NestedType: FSharp.Compiler.Syntax.SynTypeDefnSig get_nestedType() @@ -7997,7 +7948,7 @@ FSharp.Compiler.Syntax.SynMemberSig: Boolean get_IsNestedType() FSharp.Compiler.Syntax.SynMemberSig: Boolean get_IsValField() FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewInherit(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewInterface(FSharp.Compiler.Syntax.SynType, FSharp.Compiler.Text.Range) -FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewMember(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.SynMemberSigMemberTrivia) +FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewMember(FSharp.Compiler.Syntax.SynValSig, FSharp.Compiler.Syntax.SynMemberFlags, FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewNestedType(FSharp.Compiler.Syntax.SynTypeDefnSig, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig NewValField(FSharp.Compiler.Syntax.SynField, FSharp.Compiler.Text.Range) FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Syntax.SynMemberSig+Inherit @@ -8011,12 +7962,6 @@ FSharp.Compiler.Syntax.SynMemberSig: FSharp.Compiler.Text.Range get_Range() FSharp.Compiler.Syntax.SynMemberSig: Int32 Tag FSharp.Compiler.Syntax.SynMemberSig: Int32 get_Tag() FSharp.Compiler.Syntax.SynMemberSig: System.String ToString() -FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia Zero -FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: FSharp.Compiler.Syntax.SynMemberSigMemberTrivia get_Zero() -FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] GetSetKeywords -FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords] get_GetSetKeywords() -FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: System.String ToString() -FSharp.Compiler.Syntax.SynMemberSigMemberTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.GetSetKeywords]) FSharp.Compiler.Syntax.SynModuleDecl+Attributes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.SynModuleDecl+Attributes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.SynModuleDecl+Attributes: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList] attributes @@ -9722,6 +9667,35 @@ FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: FSharp.Compiler.SyntaxT FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: Int32 Tag FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: Int32 get_Tag() FSharp.Compiler.SyntaxTrivia.ConditionalDirectiveTrivia: System.String ToString() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Get: FSharp.Compiler.Text.Range Item +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Get: FSharp.Compiler.Text.Range get_Item() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_get() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range get_set() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet: FSharp.Compiler.Text.Range set +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Set: FSharp.Compiler.Text.Range Item +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Set: FSharp.Compiler.Text.Range get_Item() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags: Int32 Get +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags: Int32 GetSet +FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags: Int32 Set +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean IsGet +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean IsGetSet +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean IsSet +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean get_IsGet() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean get_IsGetSet() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Boolean get_IsSet() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords NewGet(FSharp.Compiler.Text.Range) +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords NewGetSet(FSharp.Compiler.Text.Range, FSharp.Compiler.Text.Range) +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords NewSet(FSharp.Compiler.Text.Range) +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Get +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+GetSet +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Set +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.SyntaxTrivia.GetSetKeywords+Tags +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.Text.Range Range +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: FSharp.Compiler.Text.Range get_Range() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Int32 Tag +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: Int32 get_Tag() +FSharp.Compiler.SyntaxTrivia.GetSetKeywords: System.String ToString() FSharp.Compiler.SyntaxTrivia.IdentTrivia+HasParenthesis: FSharp.Compiler.Text.Range get_leftParenRange() FSharp.Compiler.SyntaxTrivia.IdentTrivia+HasParenthesis: FSharp.Compiler.Text.Range get_rightParenRange() FSharp.Compiler.SyntaxTrivia.IdentTrivia+HasParenthesis: FSharp.Compiler.Text.Range leftParenRange @@ -10148,6 +10122,22 @@ FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: FSharp.Compiler.Text.Rang FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: FSharp.Compiler.Text.Range get_LessRange() FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: System.String ToString() FSharp.Compiler.SyntaxTrivia.SynMeasureConstantTrivia: Void .ctor(FSharp.Compiler.Text.Range, FSharp.Compiler.Text.Range) +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia Zero +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia get_Zero() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] GetSetKeywords +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] get_GetSetKeywords() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: System.String ToString() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAbstractSlotTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords]) +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword LeadingKeyword +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword get_LeadingKeyword() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] GetSetKeywords +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] get_GetSetKeywords() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] EqualsRange +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] WithKeyword +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_EqualsRange() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_WithKeyword() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: System.String ToString() +FSharp.Compiler.SyntaxTrivia.SynMemberDefnAutoPropertyTrivia: Void .ctor(FSharp.Compiler.SyntaxTrivia.SynLeadingKeyword, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords]) FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] AsKeyword FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_AsKeyword() FSharp.Compiler.SyntaxTrivia.SynMemberDefnImplicitCtorTrivia: System.String ToString() @@ -10164,6 +10154,12 @@ FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: Microsoft.FSharp.Core.FSharp FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_SetKeyword() FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: System.String ToString() FSharp.Compiler.SyntaxTrivia.SynMemberGetSetTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range]) +FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia Zero +FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia get_Zero() +FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] GetSetKeywords +FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords] get_GetSetKeywords() +FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: System.String ToString() +FSharp.Compiler.SyntaxTrivia.SynMemberSigMemberTrivia: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTrivia.GetSetKeywords]) FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia: FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia Zero FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia: FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia get_Zero() FSharp.Compiler.SyntaxTrivia.SynModuleDeclNestedModuleTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] EqualsRange diff --git a/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl b/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl index 4177671e31b..b136527eb6b 100644 --- a/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Abstract - Property 02.fs.bsl @@ -32,8 +32,7 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (4,4--4,33), { GetSetKeywords = - Some - (GetSet ((4,25--4,28), None, (4,30--4,33), None)) })], + Some (GetSet ((4,25--4,28), (4,30--4,33))) })], (4,4--4,33)), [], None, (3,5--4,33), { LeadingKeyword = Type (3,0--3,4) EqualsRange = Some (3,7--3,8) diff --git a/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl index 12a7bfa4ef7..84e7a69d193 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 07.fs.bsl @@ -39,8 +39,7 @@ ImplFile WithKeyword = Some (4,26--4,30) EqualsRange = Some (4,22--4,23) GetSetKeywords = - Some - (GetSet ((4,31--4,34), None, (4,35--4,38), None)) })], + Some (GetSet ((4,31--4,34), (4,35--4,38))) })], (4,4--4,38)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl index f4e62f0ba4b..982030b64d2 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 08.fs.bsl @@ -46,4 +46,4 @@ ImplFile (6,0)-(6,1) parse error Unexpected syntax or possible incorrect indentation: this token is offside of context started at position (4:22). Try indenting this further. To continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. -(6,0)-(6,1) parse error Incomplete structured construct at or before this point in member definition. Expected identifier, '(', '(*)' or other token. +(6,0)-(6,1) parse error Incomplete structured construct at or before this point. Expected identifier, '(', '(*)' or other token. diff --git a/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl index 2ccd7d7a362..f4d9b9aa777 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 09.fs.bsl @@ -69,4 +69,4 @@ ImplFile (5,4)-(5,10) parse error Unexpected syntax or possible incorrect indentation: this token is offside of context started at position (4:23). Try indenting this further. To continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. -(5,4)-(5,10) parse error Incomplete structured construct at or before this point in member definition. Expected identifier, '(', '(*)' or other token. +(5,4)-(5,10) parse error Incomplete structured construct at or before this point. Expected identifier, '(', '(*)' or other token. diff --git a/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl index 1bb870f1f31..aeaf553b54c 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 10.fs.bsl @@ -45,4 +45,4 @@ ImplFile (5,0)-(5,0) parse error Unexpected syntax or possible incorrect indentation: this token is offside of context started at position (4:22). Try indenting this further. To continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. -(5,0)-(5,0) parse error Incomplete structured construct at or before this point in member definition. Expected identifier, '(', '(*)' or other token. +(5,0)-(5,0) parse error Incomplete structured construct at or before this point. Expected identifier, '(', '(*)' or other token. diff --git a/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl index bf24b421311..2235a327002 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 14.fs.bsl @@ -40,10 +40,7 @@ ImplFile WithKeyword = Some (4,26--4,30) EqualsRange = Some (4,22--4,23) GetSetKeywords = - Some - (GetSet - ((4,38--4,41), Some (Public (4,31--4,37)), - (4,51--4,54), Some (Private (4,43--4,50)))) })], + Some (GetSet ((4,38--4,41), (4,51--4,54))) })], (4,4--4,54)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl b/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl index e48f3c1e3a8..457b112dc31 100644 --- a/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/Auto property 15.fs.bsl @@ -9,18 +9,48 @@ ImplFile ([], None, [], [X], PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), false, None, (3,5--3,6)), - Simple (None (3,5--3,6), (3,5--3,6)), - [ImplicitCtor - (None, [], Const (Unit, (3,6--3,8)), None, - PreXmlDoc ((3,6), FSharp.Compiler.Xml.XmlDocCollector), - (3,5--3,6), { AsKeyword = None })], None, (3,5--3,6), + ObjectModel + (Unspecified, + [ImplicitCtor + (None, [], Const (Unit, (3,6--3,8)), None, + PreXmlDoc ((3,6), FSharp.Compiler.Xml.XmlDocCollector), + (3,5--3,6), { AsKeyword = None }); + AutoProperty + ([], false, Y, + Some (LongIdent (SynLongIdent ([int], [], [None]))), + PropertyGetSet, + { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = false + IsFinal = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = Member }, + { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = false + IsFinal = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = PropertySet }, + PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), + Some (Internal (4,15--4,23)), + Some (Public (4,40--4,46)), Some (Private (4,52--4,59)), + Const (Int32 7, (4,33--4,34)), (4,4--4,63), + { LeadingKeyword = + MemberVal ((4,4--4,10), (4,11--4,14)) + WithKeyword = Some (4,35--4,39) + EqualsRange = Some (4,31--4,32) + GetSetKeywords = + Some (GetSet ((4,47--4,50), (4,60--4,63))) })], + (4,4--4,63)), [], + Some + (ImplicitCtor + (None, [], Const (Unit, (3,6--3,8)), None, + PreXmlDoc ((3,6), FSharp.Compiler.Xml.XmlDocCollector), + (3,5--3,6), { AsKeyword = None })), (3,5--4,63), { LeadingKeyword = Type (3,0--3,4) - EqualsRange = None - WithKeyword = None })], (3,0--3,6))], + EqualsRange = Some (3,9--3,10) + WithKeyword = None })], (3,0--4,63))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, - (1,0--3,6), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + (1,0--4,63), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) - -(4,40)-(4,46) parse error When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. -(5,0)-(5,0) parse error Incomplete structured construct at or before this point in implementation file diff --git a/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl b/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl index 2ea2ecd15d8..db84482f638 100644 --- a/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl +++ b/tests/service/data/SyntaxTree/Member/SignatureMemberWithSetget.fsi.bsl @@ -32,8 +32,7 @@ SigFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (6,4--8,39), { GetSetKeywords = - Some - (GetSet ((8,36--8,39), None, (8,28--8,31), None)) })], + Some (GetSet ((8,36--8,39), (8,28--8,31))) })], (6,4--8,39)), [], (4,5--8,39), { LeadingKeyword = Type (4,0--4,4) EqualsRange = Some (4,7--4,8) diff --git a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl index 17bef2d8981..f3b24278efa 100644 --- a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAbstractSlotContainsTheRangeOfTheWithKeyword.fs.bsl @@ -40,8 +40,7 @@ ImplFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (3,4--3,42), { GetSetKeywords = - Some - (GetSet ((3,35--3,38), None, (3,39--3,42), None)) })], + Some (GetSet ((3,35--3,38), (3,39--3,42))) })], (3,4--3,42)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl index 75e8d5de26e..9ebebcbddf1 100644 --- a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheEqualsSign.fs.bsl @@ -57,8 +57,7 @@ ImplFile WithKeyword = Some (5,27--5,31) EqualsRange = Some (5,20--5,21) GetSetKeywords = - Some - (GetSet ((5,32--5,35), None, (5,37--5,40), None)) })], + Some (GetSet ((5,32--5,35), (5,37--5,40))) })], (4,4--5,40)), [], Some (ImplicitCtor diff --git a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl index 82c7fc00c2d..c5a3db03d4d 100644 --- a/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl +++ b/tests/service/data/SyntaxTree/Member/SynTypeDefnWithAutoPropertyContainsTheRangeOfTheWithKeyword.fs.bsl @@ -40,8 +40,7 @@ ImplFile WithKeyword = Some (3,39--3,43) EqualsRange = Some (3,28--3,29) GetSetKeywords = - Some - (GetSet ((3,44--3,47), None, (3,49--3,52), None)) }); + Some (GetSet ((3,44--3,47), (3,49--3,52))) }); AutoProperty ([], false, AutoProperty2, None, Member, { IsInstance = true diff --git a/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl b/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl index 73ab09a709c..32b9b945708 100644 --- a/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl +++ b/tests/service/data/SyntaxTree/SignatureType/MemberSigOfSynMemberSigMemberShouldContainsTheRangeOfTheWithKeyword.fsi.bsl @@ -35,8 +35,7 @@ SigFile GetterOrSetterIsCompilerGenerated = false MemberKind = PropertyGetSet }, (5,4--5,42), { GetSetKeywords = - Some - (GetSet ((5,35--5,38), None, (5,39--5,42), None)) })], + Some (GetSet ((5,35--5,38), (5,39--5,42))) })], (5,4--5,42)), [], (4,5--5,42), { LeadingKeyword = Type (4,0--4,4) EqualsRange = Some (4,9--4,10) From 09311ef3f3409c99f427b70fb7847a53b58824fb Mon Sep 17 00:00:00 2001 From: ijklam Date: Sun, 11 Feb 2024 12:02:27 +0800 Subject: [PATCH 07/18] update ServiceNavigation; fantomas --- src/Compiler/Service/ServiceNavigation.fs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Compiler/Service/ServiceNavigation.fs b/src/Compiler/Service/ServiceNavigation.fs index c64b93042f8..bb118ae2c76 100755 --- a/src/Compiler/Service/ServiceNavigation.fs +++ b/src/Compiler/Service/ServiceNavigation.fs @@ -332,10 +332,19 @@ module NavigationImpl = [ createMember (rcid, NavigationItemKind.Field, FSharpGlyph.Field, range, enclosingEntityKind, false, access) ] - | SynMemberDefn.AutoProperty(ident = id; getterAccessibility = getterAccessibility; setterAccessibility = setterAccessibility) -> + | SynMemberDefn.AutoProperty( + ident = id; accessibility = access; getterAccessibility = getterAccessibility; setterAccessibility = setterAccessibility; propKind = propKind) -> + let getterAccessibility = getterAccessibility |> Option.orElse access + let setterAccessibility = setterAccessibility |> Option.orElse access + [ - createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, getterAccessibility) - createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, setterAccessibility) + match propKind with + | SynMemberKind.PropertyGetSet -> + yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, getterAccessibility) + yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, setterAccessibility) + | SynMemberKind.PropertySet -> + yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, setterAccessibility) + | _ -> yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, getterAccessibility) ] | SynMemberDefn.AbstractSlot(slotSig = SynValSig(ident = SynIdent(id, _); synType = ty; accessibility = access)) -> [ From dc04a91f3f2b8178cd51ef2921eb51726cf11e9d Mon Sep 17 00:00:00 2001 From: ijklam Date: Sun, 11 Feb 2024 15:16:45 +0800 Subject: [PATCH 08/18] add tests --- src/Compiler/Checking/CheckDeclarations.fs | 14 +- .../AutoPropsWithModifierBeforeGetSet.fs | 172 ++++++++++++++++++ .../FSharp.Compiler.ComponentTests.fsproj | 1 + 3 files changed, 183 insertions(+), 4 deletions(-) create mode 100644 tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index d5c46735f3d..cd919a0cde3 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -4364,24 +4364,30 @@ module TcDeclarations = match getterAccess, setterAccess with | None, None -> access, access | Some x, _ - | _, Some x -> error(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + | _, Some x -> + errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + None, None | None -> match getterAccess, setterAccess with | Some x, _ | _, Some x -> - checkLanguageFeatureError g.langVersion LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters x.Range + checkLanguageFeatureAndRecover g.langVersion LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters x.Range getterAccess, setterAccess | _, _ -> None, None | SynMemberKind.PropertySet -> match access, setterAccess with - | Some _, Some x -> error(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + | Some _, Some x -> + errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + None, None | _, None -> None, access | None, _ -> None, setterAccess | SynMemberKind.Member | SynMemberKind.PropertyGet | _ -> match access, getterAccess with - | Some _, Some x -> error(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + | Some _, Some x -> + errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range)) + None, None | _, None -> access, None | None, _ -> getterAccess, None [ diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs new file mode 100644 index 00000000000..6bce30c9c05 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +module Conformance.BasicGrammarElements.AutoPropsWithModifierBeforeGetSet + +open Xunit +open FSharp.Test +open FSharp.Test.Compiler + +let verifyCompile compilation = + compilation + |> asExe + |> withOptions ["--nowarn:988"] + |> compile + +let verifyCompileAndRun compilation = + compilation + |> asExe + |> withOptions ["--nowarn:988"] + |> compileAndRun + +[] +let ``Instance Properties Test`` = + Fs """type InstancePropertiesTest() = + member val B1: int = 0 with get + // should failed + member val B2: int = 0 with set + member val B3: int = 0 with get, set + member val B4: int = 0 with internal get + // should failed + member val B5: int = 0 with internal set + member val B6: int = 0 with internal get, internal set + member val B7: int = 0 with internal get, set + member val B8: int = 0 with get, internal set + // should failed + member val internal B11: int = 0 with internal get, set + // should failed + member val internal B12: int = 0 with internal get + // should failed + member val internal B13: int = 0 with internal set + member val internal B14: int = 0 with get, set + member val internal B15: int = 0 with get + // should failed + member val internal B16: int = 0 with set""" + |> typecheck + |> shouldFail + |> withDiagnostics [ + (Error 3135, Line 4, Col 33, Line 4, Col 36, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + (Error 3135, Line 8, Col 42, Line 8, Col 45, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + (Error 0558, Line 13, Col 43, Line 13, Col 51, "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.") + (Error 0558, Line 15, Col 43, Line 15, Col 51, "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.") + (Error 3135, Line 17, Col 52, Line 17, Col 55, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + (Error 0558, Line 17, Col 43, Line 17, Col 51, "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.") + (Error 3135, Line 21, Col 43, Line 21, Col 46, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + ] + +[] +let ``Static Properties Test`` = + Fs """type StaticPropertiesTest() = + static member val B1: int = 0 with get + // should failed + static member val B2: int = 0 with set + static member val B3: int = 0 with get, set + static member val B4: int = 0 with internal get + // should failed + static member val B5: int = 0 with internal set + static member val B6: int = 0 with internal get, internal set + static member val B7: int = 0 with internal get, set + static member val B8: int = 0 with get, internal set + // should failed + static member val internal B11: int = 0 with internal get, set + // should failed + static member val internal B12: int = 0 with internal get + // should failed + static member val internal B13: int = 0 with internal set + static member val internal B14: int = 0 with get, set + static member val internal B15: int = 0 with get + // should failed + static member val internal B16: int = 0 with set""" + |> typecheck + |> shouldFail + |> withDiagnostics [ + (Error 3135, Line 4, Col 40, Line 4, Col 43, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + (Error 3135, Line 8, Col 49, Line 8, Col 52, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + (Error 0558, Line 13, Col 50, Line 13, Col 58, "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.") + (Error 0558, Line 15, Col 50, Line 15, Col 58, "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.") + (Error 3135, Line 17, Col 59, Line 17, Col 62, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + (Error 0558, Line 17, Col 50, Line 17, Col 58, "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.") + (Error 3135, Line 21, Col 50, Line 21, Col 53, "To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.") + ] + +[] +let ``Abstract Properties Test: access modifiers are not allowed`` = + Fs """type ``Abstract Properties Test`` = + abstract member B1: int with get, set + abstract member B2: int with get + abstract member B3: int with set + // should failed + abstract member B4: int with internal get, set + // should failed + abstract member B5: int with get, internal set + // should failed + abstract member B6: int with internal get, internal set + // should failed + abstract member B7: int with internal get + // should failed + abstract member B8: int with internal set""" + |> typecheck + |> shouldFail + |> withDiagnostics [ + (Error 0561, Line 6, Col 5, Line 6, Col 51, "Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.") + (Error 0561, Line 8, Col 5, Line 8, Col 51, "Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.") + (Error 0561, Line 10, Col 5, Line 10, Col 60, "Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.") + (Error 0561, Line 12, Col 5, Line 12, Col 46, "Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.") + (Error 0561, Line 14, Col 5, Line 14, Col 46, "Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.") + ] + +[] +let ``Signature File Test: no access modifiers before getter and setter`` = + Fsi """module Program + + type A = + new: unit -> A + member internal B: int + member internal C: int with get, set + // will warning + member D: int with internal get, private set + abstract E: int with get, set + // will warning + abstract F: int with get, private set""" + |> verifyCompile + |> shouldFail + |> withDiagnostics [ + (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + (Warning 3866, Line 10, Col 31, Line 8, Col 38, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + ] + +[] +let ``Signature And Implement File Test`` = + let encodeFs = + FsSource """module Program + +type A() = + member val B: int = 0 with internal get, internal set + member val C: int = 0 with internal get, internal set + member val D: int = 0 with internal get, private set""" + Fsi """module Program + + type A = + new: unit -> A + member internal B: int + member internal C: int with get, set + // will warning + member D: int with internal get, private set + abstract E: int with get, set""" + |> withAdditionalSourceFile encodeFs + |> compile + |> shouldFail + |> withDiagnostics [ + (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains + member private A.D: int with set + but its signature specifies + member A.D: int with set + The accessibility specified in the signature is more than that specified in the implementation") + (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains + member internal A.D: int + but its signature specifies + member A.D: int + The accessibility specified in the signature is more than that specified in the implementation") + ] diff --git a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj index ec4fc441f29..2ef191736fc 100644 --- a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj +++ b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj @@ -56,6 +56,7 @@ + From 6cf5d1c29db933ddd923c26c0cb382dc4f347c23 Mon Sep 17 00:00:00 2001 From: ijklam Date: Fri, 1 Mar 2024 20:31:10 +0800 Subject: [PATCH 09/18] fix tests --- .../AutoPropsWithModifierBeforeGetSet.fs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 6bce30c9c05..fa299086542 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -19,7 +19,7 @@ let verifyCompileAndRun compilation = |> compileAndRun [] -let ``Instance Properties Test`` = +let ``Instance Properties Test`` () = Fs """type InstancePropertiesTest() = member val B1: int = 0 with get // should failed @@ -54,7 +54,7 @@ let ``Instance Properties Test`` = ] [] -let ``Static Properties Test`` = +let ``Static Properties Test`` () = Fs """type StaticPropertiesTest() = static member val B1: int = 0 with get // should failed @@ -89,7 +89,7 @@ let ``Static Properties Test`` = ] [] -let ``Abstract Properties Test: access modifiers are not allowed`` = +let ``Abstract Properties Test: access modifiers are not allowed`` () = Fs """type ``Abstract Properties Test`` = abstract member B1: int with get, set abstract member B2: int with get @@ -115,7 +115,7 @@ let ``Abstract Properties Test: access modifiers are not allowed`` = ] [] -let ``Signature File Test: no access modifiers before getter and setter`` = +let ``Signature File Test: no access modifiers before getter and setter`` () = Fsi """module Program type A = @@ -136,7 +136,7 @@ let ``Signature File Test: no access modifiers before getter and setter`` = ] [] -let ``Signature And Implement File Test`` = +let ``Signature And Implement File Test`` () = let encodeFs = FsSource """module Program From dbc52d493b45841411022e83783cca0bf4ccf395 Mon Sep 17 00:00:00 2001 From: ijklam Date: Fri, 1 Mar 2024 23:40:11 +0800 Subject: [PATCH 10/18] fix tests --- .../AutoPropsWithModifierBeforeGetSet.fs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index fa299086542..7333e59e93d 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -41,6 +41,7 @@ let ``Instance Properties Test`` () = member val internal B15: int = 0 with get // should failed member val internal B16: int = 0 with set""" + |> withLangVersionPreview |> typecheck |> shouldFail |> withDiagnostics [ @@ -76,6 +77,7 @@ let ``Static Properties Test`` () = static member val internal B15: int = 0 with get // should failed static member val internal B16: int = 0 with set""" + |> withLangVersionPreview |> typecheck |> shouldFail |> withDiagnostics [ @@ -104,6 +106,7 @@ let ``Abstract Properties Test: access modifiers are not allowed`` () = abstract member B7: int with internal get // should failed abstract member B8: int with internal set""" + |> withLangVersionPreview |> typecheck |> shouldFail |> withDiagnostics [ @@ -127,6 +130,7 @@ let ``Signature File Test: no access modifiers before getter and setter`` () = abstract E: int with get, set // will warning abstract F: int with get, private set""" + |> withLangVersionPreview |> verifyCompile |> shouldFail |> withDiagnostics [ @@ -154,6 +158,7 @@ type A() = member D: int with internal get, private set abstract E: int with get, set""" |> withAdditionalSourceFile encodeFs + |> withLangVersionPreview |> compile |> shouldFail |> withDiagnostics [ From fbe1736ebcff65417bffddd5ddb42944587fea43 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 2 Mar 2024 01:43:14 +0800 Subject: [PATCH 11/18] fix tests --- .../AutoPropsWithModifierBeforeGetSet.fs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 7333e59e93d..3238bba99f4 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -134,9 +134,10 @@ let ``Signature File Test: no access modifiers before getter and setter`` () = |> verifyCompile |> shouldFail |> withDiagnostics [ - (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") - (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") - (Warning 3866, Line 10, Col 31, Line 8, Col 38, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 10, Col 31, Line 8, Col 38, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Error 240, Line 1, Col 1, Line 11, Col 46, "The signature file 'Program' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.") ] [] @@ -162,8 +163,8 @@ type A() = |> compile |> shouldFail |> withDiagnostics [ - (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") - (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and set ters are not allowed in signature file.") + (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains member private A.D: int with set but its signature specifies From 8e3a529558b09d7c56b688dd47e28efdcf3e508a Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 2 Mar 2024 02:32:34 +0800 Subject: [PATCH 12/18] fix tests --- .../AutoPropsWithModifierBeforeGetSet.fs | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 3238bba99f4..1fff66bba7f 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -120,24 +120,24 @@ let ``Abstract Properties Test: access modifiers are not allowed`` () = [] let ``Signature File Test: no access modifiers before getter and setter`` () = Fsi """module Program - - type A = - new: unit -> A - member internal B: int - member internal C: int with get, set - // will warning - member D: int with internal get, private set - abstract E: int with get, set - // will warning - abstract F: int with get, private set""" + +type A = + new: unit -> A + member internal B: int + member internal C: int with get, set + // will warning + member D: int with internal get, private set + abstract E: int with get, set + // will warning + abstract F: int with get, private set""" |> withLangVersionPreview |> verifyCompile |> shouldFail |> withDiagnostics [ (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") - (Warning 3866, Line 10, Col 31, Line 8, Col 38, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") - (Error 240, Line 1, Col 1, Line 11, Col 46, "The signature file 'Program' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.") + (Warning 3866, Line 11, Col 31, Line 8, Col 38, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Error 240, Line 1, Col 1, Line 11, Col 42, "The signature file 'Program' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.") ] [] @@ -150,14 +150,14 @@ type A() = member val C: int = 0 with internal get, internal set member val D: int = 0 with internal get, private set""" Fsi """module Program - - type A = - new: unit -> A - member internal B: int - member internal C: int with get, set - // will warning - member D: int with internal get, private set - abstract E: int with get, set""" + +type A = + new: unit -> A + member internal B: int + member internal C: int with get, set + // will warning + member D: int with internal get, private set + abstract E: int with get, set""" |> withAdditionalSourceFile encodeFs |> withLangVersionPreview |> compile From 88e16782a11d0bfcdab5a3730641d3ceac8132aa Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 2 Mar 2024 02:35:25 +0800 Subject: [PATCH 13/18] fix --- .../MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 1fff66bba7f..7e50420be72 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -136,7 +136,7 @@ type A = |> withDiagnostics [ (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") - (Warning 3866, Line 11, Col 31, Line 8, Col 38, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 11, Col 31, Line 11, Col 38, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Error 240, Line 1, Col 1, Line 11, Col 42, "The signature file 'Program' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.") ] From 304348fa9918899769726a2b51fbbe33a026b785 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 2 Mar 2024 03:07:39 +0800 Subject: [PATCH 14/18] fix --- .../MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 7e50420be72..b5626794d9c 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -156,8 +156,7 @@ type A = member internal B: int member internal C: int with get, set // will warning - member D: int with internal get, private set - abstract E: int with get, set""" + member D: int with internal get, private set""" |> withAdditionalSourceFile encodeFs |> withLangVersionPreview |> compile From f82df9ed0873ed3ffef0fb19638a8d2af1ade4a7 Mon Sep 17 00:00:00 2001 From: ijklam Date: Sat, 2 Mar 2024 03:40:23 +0800 Subject: [PATCH 15/18] fix --- .../AutoPropsWithModifierBeforeGetSet.fs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index b5626794d9c..af378e0b10b 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -166,12 +166,12 @@ type A = (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains member private A.D: int with set - but its signature specifies +but its signature specifies member A.D: int with set - The accessibility specified in the signature is more than that specified in the implementation") +The accessibility specified in the signature is more than that specified in the implementation") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains member internal A.D: int - but its signature specifies +but its signature specifies member A.D: int - The accessibility specified in the signature is more than that specified in the implementation") +The accessibility specified in the signature is more than that specified in the implementation") ] From 97933a5b73f4ee431210636ed33f4069b1ae3da6 Mon Sep 17 00:00:00 2001 From: ijklam <43789618+Tangent-90@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:37:40 +0800 Subject: [PATCH 16/18] fix --- .../MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index af378e0b10b..1521cd246d5 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -167,11 +167,11 @@ type A = (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains member private A.D: int with set but its signature specifies - member A.D: int with set + member A.D: int with set The accessibility specified in the signature is more than that specified in the implementation") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains member internal A.D: int but its signature specifies - member A.D: int + member A.D: int The accessibility specified in the signature is more than that specified in the implementation") ] From 5a2d1fe5d276e1744c92c7e68fab75f8330f51d7 Mon Sep 17 00:00:00 2001 From: ijklam <43789618+Tangent-90@users.noreply.github.com> Date: Sat, 2 Mar 2024 05:55:19 +0800 Subject: [PATCH 17/18] add spaces --- .../MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 1521cd246d5..8cbb793a95b 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -165,12 +165,12 @@ type A = (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains - member private A.D: int with set + member private A.D: int with set but its signature specifies member A.D: int with set The accessibility specified in the signature is more than that specified in the implementation") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains - member internal A.D: int + member internal A.D: int but its signature specifies member A.D: int The accessibility specified in the signature is more than that specified in the implementation") From 55e90813993e5ba57fbb732aad5faed29a501b1e Mon Sep 17 00:00:00 2001 From: ijklam Date: Tue, 5 Mar 2024 22:11:50 +0800 Subject: [PATCH 18/18] fix grammar --- src/Compiler/FSComp.txt | 2 +- src/Compiler/xlf/FSComp.txt.cs.xlf | 4 +- src/Compiler/xlf/FSComp.txt.de.xlf | 4 +- src/Compiler/xlf/FSComp.txt.es.xlf | 4 +- src/Compiler/xlf/FSComp.txt.fr.xlf | 4 +- src/Compiler/xlf/FSComp.txt.it.xlf | 4 +- src/Compiler/xlf/FSComp.txt.ja.xlf | 4 +- src/Compiler/xlf/FSComp.txt.ko.xlf | 4 +- src/Compiler/xlf/FSComp.txt.pl.xlf | 4 +- src/Compiler/xlf/FSComp.txt.pt-BR.xlf | 4 +- src/Compiler/xlf/FSComp.txt.ru.xlf | 4 +- src/Compiler/xlf/FSComp.txt.tr.xlf | 4 +- src/Compiler/xlf/FSComp.txt.zh-Hans.xlf | 4 +- src/Compiler/xlf/FSComp.txt.zh-Hant.xlf | 4 +- .../AutoPropsWithModifierBeforeGetSet.fs | 44 +++++++++---------- 15 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index b01ae65862e..a834f06d1d7 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1747,4 +1747,4 @@ featureReuseSameFieldsInStructUnions,"Share underlying fields in a [] di 3864,tooManyMethodsInDotNetTypeWritingAssembly,"The type '%s' has too many methods. Found: '%d', maximum: '%d'" 3865,parsOnlySimplePatternsAreAllowedInConstructors,"Only simple patterns are allowed in primary constructors" featureAllowAccessModifiersToAutoPropertiesGettersAndSetters,"Allow access modifiers to auto properties getters and setters" -3866,parsAccessModifiersBeforeGettersAndSettersNotAllowedInSigFile,"The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file." \ No newline at end of file +3866,parsAccessModifiersBeforeGettersAndSettersNotAllowedInSigFile,"The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file." \ No newline at end of file diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index 6f5a9917162..265796ff457 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index 1763e40f516..00d3f8fa117 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index edb7f81451e..6ca34652320 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index acf1d659841..d58f9d1c985 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index ffd344eb313..7047082d50f 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index 9fec3132b7e..5b36b870885 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index 83100be58e5..6a1ddc4eb1f 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index d0b68ea2aac..fe2c3d35019 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index 7d6257a13ce..d020fe90a8e 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index a8c475adaf2..bac57c5e781 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index e397891356f..b17dba8ce76 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 9354c615978..37b0fab11bb 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index fc8903ff698..1ef681918f6 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -908,8 +908,8 @@ - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. - The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. + The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file. diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs index 8cbb793a95b..8e1703df5a2 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/MemberDefinitions/MethodsAndProperties/AutoPropsWithModifierBeforeGetSet.fs @@ -22,24 +22,24 @@ let verifyCompileAndRun compilation = let ``Instance Properties Test`` () = Fs """type InstancePropertiesTest() = member val B1: int = 0 with get - // should failed + // should fail member val B2: int = 0 with set member val B3: int = 0 with get, set member val B4: int = 0 with internal get - // should failed + // should fail member val B5: int = 0 with internal set member val B6: int = 0 with internal get, internal set member val B7: int = 0 with internal get, set member val B8: int = 0 with get, internal set - // should failed + // should fail member val internal B11: int = 0 with internal get, set - // should failed + // should fail member val internal B12: int = 0 with internal get - // should failed + // should fail member val internal B13: int = 0 with internal set member val internal B14: int = 0 with get, set member val internal B15: int = 0 with get - // should failed + // should fail member val internal B16: int = 0 with set""" |> withLangVersionPreview |> typecheck @@ -58,24 +58,24 @@ let ``Instance Properties Test`` () = let ``Static Properties Test`` () = Fs """type StaticPropertiesTest() = static member val B1: int = 0 with get - // should failed + // should fail static member val B2: int = 0 with set static member val B3: int = 0 with get, set static member val B4: int = 0 with internal get - // should failed + // should fail static member val B5: int = 0 with internal set static member val B6: int = 0 with internal get, internal set static member val B7: int = 0 with internal get, set static member val B8: int = 0 with get, internal set - // should failed + // should fail static member val internal B11: int = 0 with internal get, set - // should failed + // should fail static member val internal B12: int = 0 with internal get - // should failed + // should fail static member val internal B13: int = 0 with internal set static member val internal B14: int = 0 with get, set static member val internal B15: int = 0 with get - // should failed + // should fail static member val internal B16: int = 0 with set""" |> withLangVersionPreview |> typecheck @@ -96,15 +96,15 @@ let ``Abstract Properties Test: access modifiers are not allowed`` () = abstract member B1: int with get, set abstract member B2: int with get abstract member B3: int with set - // should failed + // should fail abstract member B4: int with internal get, set - // should failed + // should fail abstract member B5: int with get, internal set - // should failed + // should fail abstract member B6: int with internal get, internal set - // should failed + // should fail abstract member B7: int with internal get - // should failed + // should fail abstract member B8: int with internal set""" |> withLangVersionPreview |> typecheck @@ -134,9 +134,9 @@ type A = |> verifyCompile |> shouldFail |> withDiagnostics [ - (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") - (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") - (Warning 3866, Line 11, Col 31, Line 11, Col 38, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 11, Col 31, Line 11, Col 38, "The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file.") (Error 240, Line 1, Col 1, Line 11, Col 42, "The signature file 'Program' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.") ] @@ -162,8 +162,8 @@ type A = |> compile |> shouldFail |> withDiagnostics [ - (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") - (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because accessible modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 8, Col 24, Line 8, Col 32, "The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file.") + (Warning 3866, Line 8, Col 38, Line 8, Col 45, "The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file.") (Error 0034, Line 6, Col 16, Line 6, Col 17, "Module 'Program' contains member private A.D: int with set but its signature specifies