Skip to content
Open
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion docs/release-notes/.FSharp.Compiler.Service/11.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,9 @@
* Parallel compilation features: ref resolution, graph based checking, ILXGen and optimization enabled by default ([PR #18998](https://github.com/dotnet/fsharp/pull/18998))
* Make graph based type checking and parallel optimizations deterministic ([PR #19028](https://github.com/dotnet/fsharp/pull/19028))


### Breaking Changes

* `SynExpr.LetOrUse` holds `SynLetOrUse`. ([PR #19090](https://github.com/dotnet/fsharp/pull/19090))
* `SynExprLetOrUseTrivia` is now `SynLetOrUseTrivia`. ([PR #19090](https://github.com/dotnet/fsharp/pull/19090))
* `SynMemberDefn.LetBindings` has trivia. ([PR #19090](https://github.com/dotnet/fsharp/pull/19090))
* `SynModuleDecl.Let` has trivia. ([PR #19090](https://github.com/dotnet/fsharp/pull/19090))
10 changes: 5 additions & 5 deletions src/Compiler/Checking/CheckDeclarations.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1108,7 +1108,7 @@ module MutRecBindingChecking =
let innerState = (incrCtorInfoOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev)
[Phase2AInherit (ty, arg, baseValOpt, m); Phase2AIncrClassCtorJustAfterSuperInit], innerState

| Some (SynMemberDefn.LetBindings (letBinds, isStatic, isRec, m)), _ ->
| Some (SynMemberDefn.LetBindings (bindings = letBinds; isStatic = isStatic; isRecursive = isRec; range = m)), _ ->
match tcref.TypeOrMeasureKind, isStatic with
| TyparKind.Measure, false -> errorR(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m))
| _ -> ()
Expand Down Expand Up @@ -4412,7 +4412,7 @@ module TcDeclarations =
let attribs = mkAttributeList attribs mWholeAutoProp
let binding = mkSynBinding (xmlDoc, headPat) (None, false, isMutable, mLetPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, synExpr, synExpr.Range, [], attribs, None, SynBindingTrivia.Zero)

[(SynMemberDefn.LetBindings ([binding], isStatic, false, mWholeAutoProp))]
[(SynMemberDefn.LetBindings ([binding], isStatic, false, mWholeAutoProp, SynMemberDefnLetBindingsTrivia.Zero))]

| SynMemberDefn.Interface (members=Some membs) -> membs |> List.collect preAutoProps
| SynMemberDefn.LetBindings _
Expand Down Expand Up @@ -5113,7 +5113,7 @@ let ElimSynModuleDeclExpr bind =
match bind with
| SynModuleDecl.Expr (expr, m) ->
let bind2 = SynBinding (None, SynBindingKind.StandaloneExpression, false, false, [], PreXmlDoc.Empty, SynInfo.emptySynValData, SynPat.Wild m, None, expr, m, DebugPointAtBinding.NoneAtDo, SynBindingTrivia.Zero)
SynModuleDecl.Let(false, [bind2], m)
SynModuleDecl.Let(false, [bind2], m, SynModuleDeclLetTrivia.Zero)
| _ -> bind

let TcMutRecDefnsEscapeCheck (binds: MutRecShapes<_, _, _>) env =
Expand Down Expand Up @@ -5187,7 +5187,7 @@ let TcModuleOrNamespaceElementsMutRec (cenv: cenv) parent typeNames m envInitial
let decls = typeDefs |> List.map MutRecShape.Tycon
decls, (false, false, attrs)

| SynModuleDecl.Let (letrec, binds, m) ->
| SynModuleDecl.Let (isRecursive = letrec; bindings = binds; range = m) ->
let binds =
if isNamespace then
CheckLetOrDoInNamespace binds m; []
Expand Down Expand Up @@ -5292,7 +5292,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
| _ -> [ TMDefOpens openDecls ]
return (defns, [], []), env, env

| SynModuleDecl.Let (letrec, binds, m) ->
| SynModuleDecl.Let (isRecursive = letrec; bindings = binds; range = m) ->

match parent with
| ParentNone ->
Expand Down
18 changes: 8 additions & 10 deletions src/Compiler/Checking/CheckRecordSyntaxHelpers.fs
Original file line number Diff line number Diff line change
Expand Up @@ -193,13 +193,11 @@ let BindOriginalRecdExpr (withExpr: SynExpr * BlockSeparator) mkRecdExpr =
None,
SynBindingTrivia.Zero)

SynExpr.LetOrUse(
isRecursive = false,
isUse = false,
isFromSource = false, // compiler generated during desugaring
isBang = false,
bindings = [ binding ],
body = mkRecdExpr (Some withExpr),
range = mOrigExprSynth,
trivia = SynExprLetOrUseTrivia.Zero
)
SynExpr.LetOrUse
{
IsRecursive = false
Bindings = [ binding ]
Body = mkRecdExpr (Some withExpr)
Range = mOrigExprSynth
Trivia = SynLetOrUseTrivia.Zero
}
Loading
Loading