Skip to content

Commit 20c7828

Browse files
authored
Add colon to SynBindingReturnInfo trivia. (#14113)
1 parent b21f161 commit 20c7828

File tree

14 files changed

+89
-26
lines changed

14 files changed

+89
-26
lines changed

src/Compiler/Checking/CheckDeclarations.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4035,7 +4035,7 @@ module TcDeclarations =
40354035
let mLetPortion = synExpr.Range
40364036
let fldId = ident (CompilerGeneratedName id.idText, mLetPortion)
40374037
let headPat = SynPat.LongIdent (SynLongIdent([fldId], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [], None, mLetPortion)
4038-
let retInfo = match tyOpt with None -> None | Some ty -> Some (SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
4038+
let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
40394039
let isMutable =
40404040
match propKind with
40414041
| SynMemberKind.PropertySet
@@ -4077,7 +4077,7 @@ module TcDeclarations =
40774077
| SynMemberKind.PropertyGetSet ->
40784078
let getter =
40794079
let rhsExpr = SynExpr.Ident fldId
4080-
let retInfo = match tyOpt with None -> None | Some ty -> Some (SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
4080+
let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range))
40814081
let attribs = mkAttributeList attribs mMemberPortion
40824082
let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero)
40834083
SynMemberDefn.Member (binding, mMemberPortion)

src/Compiler/Checking/CheckExpressions.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10246,7 +10246,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt
1024610246
|> fun (r, v) -> (List.map fst r, List.map snd r, List.map snd v)
1024710247
let retAttribs =
1024810248
match rtyOpt with
10249-
| Some (SynBindingReturnInfo(_, _, Attributes retAttrs)) ->
10249+
| Some (SynBindingReturnInfo(attributes = Attributes retAttrs)) ->
1025010250
rotRetAttribs @ TcAttrs AttributeTargets.ReturnValue true retAttrs
1025110251
| None -> rotRetAttribs
1025210252
let valSynData =
@@ -10894,7 +10894,7 @@ and ApplyTypesFromArgumentPatterns (cenv: cenv, env, optionalArgsOK, ty, m, tpen
1089410894
| [] ->
1089510895
match retInfoOpt with
1089610896
| None -> ()
10897-
| Some (SynBindingReturnInfo (retInfoTy, m, _)) ->
10897+
| Some (SynBindingReturnInfo (typeName = retInfoTy; range = m)) ->
1089810898
let retInfoTy, _ = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv retInfoTy
1089910899
UnifyTypes cenv env m ty retInfoTy
1090010900
// Property setters always have "unit" return type

src/Compiler/Service/ServiceParsedInputOps.fs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ module ParsedInput =
647647
|> Option.orElseWith (fun () -> walkExpr e)
648648
|> Option.orElseWith (fun () ->
649649
match returnInfo with
650-
| Some (SynBindingReturnInfo (t, _, _)) -> walkType t
650+
| Some (SynBindingReturnInfo (typeName = t)) -> walkType t
651651
| None -> None)
652652

653653
and walkInterfaceImpl (SynInterfaceImpl (bindings = bindings)) = List.tryPick walkBinding bindings
@@ -1662,7 +1662,9 @@ module ParsedInput =
16621662
List.iter walkAttribute attrs
16631663
walkPat pat
16641664
walkExpr e
1665-
returnInfo |> Option.iter (fun (SynBindingReturnInfo (t, _, _)) -> walkType t)
1665+
1666+
returnInfo
1667+
|> Option.iter (fun (SynBindingReturnInfo (typeName = t)) -> walkType t)
16661668

16671669
and walkInterfaceImpl (SynInterfaceImpl (bindings = bindings)) = List.iter walkBinding bindings
16681670

src/Compiler/SyntaxTree/ParseHelpers.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,11 +422,11 @@ let mkSynMemberDefnGetSet
422422
(parseState: IParseState)
423423
(opt_inline: bool)
424424
(mWith: range)
425-
(classDefnMemberGetSetElements: (bool * SynAttributeList list * (SynPat * range) * SynReturnInfo option * range option * SynExpr * range) list)
425+
(classDefnMemberGetSetElements: (bool * SynAttributeList list * (SynPat * range) * (range option * SynReturnInfo) option * range option * SynExpr * range) list)
426426
(mAnd: range option)
427427
(mWhole: range)
428428
(propertyNameBindingPat: SynPat)
429-
(optPropertyType: SynReturnInfo option)
429+
(optPropertyType: (range option * SynReturnInfo) option)
430430
(visNoLongerUsed: SynAccess option)
431431
flagsBuilderAndLeadingKeyword
432432
(attrs: SynAttributeList list)

src/Compiler/SyntaxTree/ParseHelpers.fsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,11 @@ val mkSynMemberDefnGetSet:
166166
parseState: IParseState ->
167167
opt_inline: bool ->
168168
mWith: range ->
169-
classDefnMemberGetSetElements: (bool * SynAttributeList list * (SynPat * range) * SynReturnInfo option * range option * SynExpr * range) list ->
169+
classDefnMemberGetSetElements: (bool * SynAttributeList list * (SynPat * range) * (range option * SynReturnInfo) option * range option * SynExpr * range) list ->
170170
mAnd: range option ->
171171
mWhole: range ->
172172
propertyNameBindingPat: SynPat ->
173-
optPropertyType: SynReturnInfo option ->
173+
optPropertyType: (range option * SynReturnInfo) option ->
174174
visNoLongerUsed: SynAccess option ->
175175
flagsBuilderAndLeadingKeyword: (SynMemberKind -> SynMemberFlags) * SynLeadingKeyword ->
176176
attrs: SynAttributeList list ->

src/Compiler/SyntaxTree/SyntaxTree.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1065,7 +1065,8 @@ type SynBinding =
10651065
member x.RangeOfHeadPattern = let (SynBinding (headPat = headPat)) = x in headPat.Range
10661066

10671067
[<NoEquality; NoComparison>]
1068-
type SynBindingReturnInfo = SynBindingReturnInfo of typeName: SynType * range: range * attributes: SynAttributes
1068+
type SynBindingReturnInfo =
1069+
| SynBindingReturnInfo of typeName: SynType * range: range * attributes: SynAttributes * trivia: SynBindingReturnInfoTrivia
10691070

10701071
[<NoComparison; RequireQualifiedAccess; CustomEquality>]
10711072
type SynMemberFlags =

src/Compiler/SyntaxTree/SyntaxTree.fsi

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,12 @@ type SynBinding =
12091209

12101210
/// Represents the return information in a binding for a 'let' or 'member' declaration
12111211
[<NoEquality; NoComparison>]
1212-
type SynBindingReturnInfo = SynBindingReturnInfo of typeName: SynType * range: range * attributes: SynAttributes
1212+
type SynBindingReturnInfo =
1213+
| SynBindingReturnInfo of
1214+
typeName: SynType *
1215+
range: range *
1216+
attributes: SynAttributes *
1217+
trivia: SynBindingReturnInfoTrivia
12131218

12141219
/// Represents the flags for a 'member' declaration
12151220
[<NoComparison; RequireQualifiedAccess; CustomEquality>]

src/Compiler/SyntaxTree/SyntaxTreeOps.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -673,8 +673,8 @@ let mkSynBindingRhs staticOptimizations rhsExpr mRhs retInfo =
673673

674674
let rhsExpr, retTyOpt =
675675
match retInfo with
676-
| Some (SynReturnInfo ((ty, SynArgInfo (rAttribs, _, _)), tym)) ->
677-
SynExpr.Typed(rhsExpr, ty, rhsExpr.Range), Some(SynBindingReturnInfo(ty, tym, rAttribs))
676+
| Some (mColon, SynReturnInfo ((ty, SynArgInfo (rAttribs, _, _)), tym)) ->
677+
SynExpr.Typed(rhsExpr, ty, rhsExpr.Range), Some(SynBindingReturnInfo(ty, tym, rAttribs, { ColonRange = mColon }))
678678
| None -> rhsExpr, None
679679

680680
rhsExpr, retTyOpt
@@ -684,7 +684,7 @@ let mkSynBinding
684684
(vis, isInline, isMutable, mBind, spBind, retInfo, origRhsExpr, mRhs, staticOptimizations, attrs, memberFlagsOpt, trivia)
685685
=
686686
let info =
687-
SynInfo.InferSynValData(memberFlagsOpt, Some headPat, retInfo, origRhsExpr)
687+
SynInfo.InferSynValData(memberFlagsOpt, Some headPat, Option.map snd retInfo, origRhsExpr)
688688

689689
let rhsExpr, retTyOpt = mkSynBindingRhs staticOptimizations origRhsExpr mRhs retInfo
690690
let mBind = unionRangeWithXmlDoc xmlDoc mBind

src/Compiler/SyntaxTree/SyntaxTreeOps.fsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ val mkSynBindingRhs:
269269
staticOptimizations: (SynStaticOptimizationConstraint list * SynExpr) list ->
270270
rhsExpr: SynExpr ->
271271
mRhs: range ->
272-
retInfo: SynReturnInfo option ->
272+
retInfo: (range option * SynReturnInfo) option ->
273273
SynExpr * SynBindingReturnInfo option
274274

275275
val mkSynBinding:
@@ -279,7 +279,7 @@ val mkSynBinding:
279279
isMutable: bool *
280280
mBind: range *
281281
spBind: DebugPointAtBinding *
282-
retInfo: SynReturnInfo option *
282+
retInfo: (range option * SynReturnInfo) option *
283283
origRhsExpr: SynExpr *
284284
mRhs: range *
285285
staticOptimizations: (SynStaticOptimizationConstraint list * SynExpr) list *

src/Compiler/SyntaxTree/SyntaxTrivia.fs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,4 +320,8 @@ type SynFieldTrivia =
320320

321321
static member Zero: SynFieldTrivia = { LeadingKeyword = None }
322322

323+
[<NoEquality; NoComparison>]
323324
type SynTypeOrTrivia = { OrKeyword: range }
325+
326+
[<NoEquality; NoComparison>]
327+
type SynBindingReturnInfoTrivia = { ColonRange: range option }

0 commit comments

Comments
 (0)