Skip to content

Commit 31f3d2b

Browse files
authored
Merge pull request #16831 from psfinaki/revert
Revert "Allow access modifiers to auto properties getters and setters (#16687)"
2 parents c4f7bed + 2a7de3d commit 31f3d2b

File tree

52 files changed

+67
-588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+67
-588
lines changed

docs/release-notes/.FSharp.Compiler.Service/8.0.300.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
* Add switch to generate types and members with IL visibility that accurately represents their F# visibility. ([PR #15484](https://github.com/dotnet/fsharp/pull/15484)
2727
* 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))
2828
* Symbols: Add GenericArguments to FSharpEntity ([PR #16470](https://github.com/dotnet/fsharp/pull/16470))
29-
* 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))
3029

3130
### Changed
3231

docs/release-notes/.Language/preview.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
* Bidirectional F#/C# interop for 'unmanaged' constraint. ([PR #12154](https://github.com/dotnet/fsharp/pull/12154))
66
* 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))
77
* 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))
8-
* 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))
98

109
### Fixed
1110

src/Compiler/Checking/CheckDeclarations.fs

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4309,7 +4309,7 @@ module TcDeclarations =
43094309
| _ -> ()
43104310

43114311
/// Split auto-properties into 'let' and 'member' bindings
4312-
let private SplitAutoProps (g: TcGlobals) members =
4312+
let private SplitAutoProps members =
43134313
let membersIncludingAutoProps, vals_Inherits_Abstractslots =
43144314
members |> List.partition (fun memb ->
43154315
match memb with
@@ -4359,7 +4359,7 @@ module TcDeclarations =
43594359
let rec postAutoProps memb =
43604360
match memb with
43614361
| SynMemberDefn.AutoProperty(ident = id) when String.IsNullOrEmpty(id.idText) -> []
4362-
| 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) ->
4362+
| SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; accessibility=access; trivia = { GetSetKeywords = mGetSetOpt }) ->
43634363
let mMemberPortion = id.idRange
43644364
// Only the keep the non-field-targeted attributes
43654365
let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true)
@@ -4372,41 +4372,7 @@ module TcDeclarations =
43724372
match propKind, mGetSetOpt with
43734373
| SynMemberKind.PropertySet, Some getSetKeywords -> errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(), getSetKeywords.Range))
43744374
| _ -> ()
4375-
4376-
let getterAccess, setterAccess =
4377-
match propKind with
4378-
| SynMemberKind.PropertyGetSet ->
4379-
match access with
4380-
| Some _ ->
4381-
match getterAccess, setterAccess with
4382-
| None, None -> access, access
4383-
| Some x, _
4384-
| _, Some x ->
4385-
errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range))
4386-
None, None
4387-
| None ->
4388-
match getterAccess, setterAccess with
4389-
| Some x, _
4390-
| _, Some x ->
4391-
checkLanguageFeatureAndRecover g.langVersion LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters x.Range
4392-
getterAccess, setterAccess
4393-
| _, _ -> None, None
4394-
| SynMemberKind.PropertySet ->
4395-
match access, setterAccess with
4396-
| Some _, Some x ->
4397-
errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range))
4398-
None, None
4399-
| _, None -> None, access
4400-
| None, _ -> None, setterAccess
4401-
| SynMemberKind.Member
4402-
| SynMemberKind.PropertyGet
4403-
| _ ->
4404-
match access, getterAccess with
4405-
| Some _, Some x ->
4406-
errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(), x.Range))
4407-
None, None
4408-
| _, None -> access, None
4409-
| None, _ -> getterAccess, None
4375+
44104376
[
44114377
match propKind with
44124378
| SynMemberKind.Member
@@ -4416,7 +4382,7 @@ module TcDeclarations =
44164382
let rhsExpr = SynExpr.Ident fldId
44174383
let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
44184384
let attribs = mkAttributeList attribs mMemberPortion
4419-
let binding = mkSynBinding (xmlDoc, headPat) (getterAccess, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero)
4385+
let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero)
44204386
SynMemberDefn.Member (binding, mMemberPortion)
44214387
yield getter
44224388
| _ -> ()
@@ -4428,7 +4394,7 @@ module TcDeclarations =
44284394
let vId = ident("v", mMemberPortion)
44294395
let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [mkSynPatVar None vId], None, mMemberPortion)
44304396
let rhsExpr = mkSynAssign (SynExpr.Ident fldId) (SynExpr.Ident vId)
4431-
let binding = mkSynBinding (xmlDoc, headPat) (setterAccess, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero)
4397+
let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero)
44324398
SynMemberDefn.Member (binding, mMemberPortion)
44334399
yield setter
44344400
| _ -> ()]
@@ -4452,9 +4418,9 @@ module TcDeclarations =
44524418
/// where simpleRepr can contain inherit type, declared fields and virtual slots.
44534419
/// body = members
44544420
/// where members contain methods/overrides, also implicit ctor, inheritCall and local definitions.
4455-
let rec private SplitTyconDefn g (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) =
4421+
let rec private SplitTyconDefn (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) =
44564422
let extraMembers = desugarGetSetMembers extraMembers
4457-
let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps g extraMembers
4423+
let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps extraMembers
44584424
let implements1 = extraMembers |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None)
44594425

44604426
match trepr with
@@ -4475,7 +4441,7 @@ module TcDeclarations =
44754441

44764442
let slotsigs = members |> List.choose (function SynMemberDefn.AbstractSlot (slotSig = x; flags = y) -> Some(x, y) | _ -> None)
44774443

4478-
let members,_vals_Inherits_Abstractslots = SplitAutoProps g members
4444+
let members,_vals_Inherits_Abstractslots = SplitAutoProps members
44794445

44804446
let isConcrete =
44814447
members |> List.exists (function
@@ -4537,7 +4503,7 @@ module TcDeclarations =
45374503

45384504
// Split the definitions into "core representations" and "members". The code to process core representations
45394505
// is shared between processing of signature files and implementation files.
4540-
let mutRecDefnsAfterSplit = mutRecDefns |> MutRecShapes.mapTycons (fun i -> SplitTyconDefn g i)
4506+
let mutRecDefnsAfterSplit = mutRecDefns |> MutRecShapes.mapTycons SplitTyconDefn
45414507

45424508
// Create the entities for each module and type definition, and process the core representation of each type definition.
45434509
let tycons, envMutRecPrelim, mutRecDefnsAfterCore =

src/Compiler/FSComp.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1746,6 +1746,4 @@ featureReuseSameFieldsInStructUnions,"Share underlying fields in a [<Struct>] di
17461746
3862,parsStaticMemberImcompleteSyntax,"Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration."
17471747
3863,parsExpectingField,"Expecting record field"
17481748
3864,tooManyMethodsInDotNetTypeWritingAssembly,"The type '%s' has too many methods. Found: '%d', maximum: '%d'"
1749-
3865,parsOnlySimplePatternsAreAllowedInConstructors,"Only simple patterns are allowed in primary constructors"
1750-
featureAllowAccessModifiersToAutoPropertiesGettersAndSetters,"Allow access modifiers to auto properties getters and setters"
1751-
3866,parsAccessModifiersBeforeGettersAndSettersNotAllowedInSigFile,"The modifier will be ignored because access modifiers before getters and setters are not allowed in signature file."
1749+
3865,parsOnlySimplePatternsAreAllowedInConstructors,"Only simple patterns are allowed in primary constructors"

src/Compiler/Facilities/LanguageFeatures.fs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ type LanguageFeature =
8585
| WarningIndexedPropertiesGetSetSameType
8686
| WarningWhenTailCallAttrOnNonRec
8787
| BooleanReturningAndReturnTypeDirectedPartialActivePattern
88-
| AllowAccessModifiersToAutoPropertiesGettersAndSetters
8988
| EnforceAttributeTargetsOnFunctions
9089
| EnforceAttributeTargetsUnionCaseDeclarations
9190
| LowerInterpolatedStringToConcat
@@ -202,7 +201,6 @@ type LanguageVersion(versionText) =
202201
LanguageFeature.WarningWhenTailCallAttrOnNonRec, previewVersion
203202
LanguageFeature.UnionIsPropertiesVisible, previewVersion
204203
LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern, previewVersion
205-
LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters, previewVersion
206204
LanguageFeature.EnforceAttributeTargetsOnFunctions, previewVersion
207205
LanguageFeature.EnforceAttributeTargetsUnionCaseDeclarations, previewVersion
208206
LanguageFeature.LowerInterpolatedStringToConcat, previewVersion
@@ -350,8 +348,6 @@ type LanguageVersion(versionText) =
350348
| LanguageFeature.WarningWhenTailCallAttrOnNonRec -> FSComp.SR.featureChkTailCallAttrOnNonRec ()
351349
| LanguageFeature.BooleanReturningAndReturnTypeDirectedPartialActivePattern ->
352350
FSComp.SR.featureBooleanReturningAndReturnTypeDirectedPartialActivePattern ()
353-
| LanguageFeature.AllowAccessModifiersToAutoPropertiesGettersAndSetters ->
354-
FSComp.SR.featureAllowAccessModifiersToAutoPropertiesGettersAndSetters ()
355351
| LanguageFeature.EnforceAttributeTargetsOnFunctions -> FSComp.SR.featureEnforceAttributeTargetsOnFunctions ()
356352
| LanguageFeature.EnforceAttributeTargetsUnionCaseDeclarations -> FSComp.SR.featureEnforceAttributeTargetsUnionCaseDeclarations ()
357353
| LanguageFeature.LowerInterpolatedStringToConcat -> FSComp.SR.featureLowerInterpolatedStringToConcat ()

src/Compiler/Facilities/LanguageFeatures.fsi

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ type LanguageFeature =
7676
| WarningIndexedPropertiesGetSetSameType
7777
| WarningWhenTailCallAttrOnNonRec
7878
| BooleanReturningAndReturnTypeDirectedPartialActivePattern
79-
| AllowAccessModifiersToAutoPropertiesGettersAndSetters
8079
| EnforceAttributeTargetsOnFunctions
8180
| EnforceAttributeTargetsUnionCaseDeclarations
8281
| LowerInterpolatedStringToConcat

src/Compiler/Service/ServiceNavigation.fs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -332,19 +332,9 @@ module NavigationImpl =
332332
[
333333
createMember (rcid, NavigationItemKind.Field, FSharpGlyph.Field, range, enclosingEntityKind, false, access)
334334
]
335-
| SynMemberDefn.AutoProperty(
336-
ident = id; accessibility = access; getterAccessibility = getterAccessibility; setterAccessibility = setterAccessibility; propKind = propKind) ->
337-
let getterAccessibility = getterAccessibility |> Option.orElse access
338-
let setterAccessibility = setterAccessibility |> Option.orElse access
339-
335+
| SynMemberDefn.AutoProperty(ident = id; accessibility = access) ->
340336
[
341-
match propKind with
342-
| SynMemberKind.PropertyGetSet ->
343-
yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, getterAccessibility)
344-
yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, setterAccessibility)
345-
| SynMemberKind.PropertySet ->
346-
yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, setterAccessibility)
347-
| _ -> yield createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, getterAccessibility)
337+
createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, access)
348338
]
349339
| SynMemberDefn.AbstractSlot(slotSig = SynValSig(ident = SynIdent(id, _); synType = ty; accessibility = access)) ->
350340
[

src/Compiler/SyntaxTree/ParseHelpers.fs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,7 @@ let mkSynUnionCase attributes (access: SynAccess option) id kind mDecl (xmlDoc,
11011101
SynUnionCase(attributes, id, kind, xmlDoc, None, mDecl, trivia)
11021102

11031103
let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDoc attribs flags rangeStart =
1104-
let mWith, (getSet, getSetOpt, getterAccess, setterAccess) = accessors
1104+
let mWith, (getSet, getSetOpt) = accessors
11051105

11061106
let memberRange =
11071107
match getSetOpt with
@@ -1135,8 +1135,6 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo
11351135
memberFlagsForSet,
11361136
xmlDoc,
11371137
access,
1138-
getterAccess,
1139-
setterAccess,
11401138
expr,
11411139
memberRange,
11421140
trivia

src/Compiler/SyntaxTree/ParseHelpers.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ val mkAutoPropDefn:
272272
typ: SynType option ->
273273
mEquals: range option ->
274274
expr: SynExpr ->
275-
accessors: range option * (SynMemberKind * GetSetKeywords option * SynAccess option * SynAccess option) ->
275+
accessors: range option * (SynMemberKind * GetSetKeywords option) ->
276276
xmlDoc: PreXmlDoc ->
277277
attribs: SynAttributes ->
278278
flags: (SynMemberKind -> SynMemberFlags) * SynLeadingKeyword ->

src/Compiler/SyntaxTree/SyntaxTree.fs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,8 +1463,6 @@ type SynMemberDefn =
14631463
memberFlagsForSet: SynMemberFlags *
14641464
xmlDoc: PreXmlDoc *
14651465
accessibility: SynAccess option *
1466-
getterAccessibility: SynAccess option *
1467-
setterAccessibility: SynAccess option *
14681466
synExpr: SynExpr *
14691467
range: range *
14701468
trivia: SynMemberDefnAutoPropertyTrivia

src/Compiler/SyntaxTree/SyntaxTree.fsi

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,8 +1656,6 @@ type SynMemberDefn =
16561656
memberFlagsForSet: SynMemberFlags *
16571657
xmlDoc: PreXmlDoc *
16581658
accessibility: SynAccess option *
1659-
getterAccessibility: SynAccess option *
1660-
setterAccessibility: SynAccess option *
16611659
synExpr: SynExpr *
16621660
range: range *
16631661
trivia: SynMemberDefnAutoPropertyTrivia

0 commit comments

Comments
 (0)