Skip to content

Commit 121a373

Browse files
committed
Update to always use named fields
1 parent a9f08ae commit 121a373

File tree

3 files changed

+125
-13
lines changed

3 files changed

+125
-13
lines changed

src/Compiler/Checking/CheckRecordSyntaxHelpers.fs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,13 @@ let BindOriginalRecdExpr (withExpr: SynExpr * BlockSeparator) mkRecdExpr =
180180
None,
181181
SynBindingTrivia.Zero)
182182

183-
SynExpr.LetOrUse(false, false, false, false, [ binding ], mkRecdExpr (Some withExpr), mOrigExprSynth, SynExprLetOrUseTrivia.Zero)
183+
SynExpr.LetOrUse(
184+
isRecursive = false,
185+
isUse = false,
186+
isFromSource = false,
187+
isComputed = false,
188+
bindings = [ binding ],
189+
body = mkRecdExpr (Some withExpr),
190+
range = mOrigExprSynth,
191+
trivia = SynExprLetOrUseTrivia.Zero
192+
)

src/Compiler/Checking/Expressions/CheckComputationExpressions.fs

Lines changed: 114 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,7 +1415,16 @@ let rec TryTranslateComputationExpression
14151415
)
14161416

14171417
let bindCondExpr =
1418-
SynExpr.LetOrUse(false, false, true, true, [ binding ], setCondExpr, mGuard, SynExprLetOrUseTrivia.Zero)
1418+
SynExpr.LetOrUse(
1419+
isRecursive = false,
1420+
isUse = false,
1421+
isFromSource = true,
1422+
isComputed = true,
1423+
bindings = [ binding ],
1424+
body = setCondExpr,
1425+
range = mGuard,
1426+
trivia = SynExprLetOrUseTrivia.Zero
1427+
)
14191428

14201429
let whileExpr =
14211430
SynExpr.While(
@@ -1432,7 +1441,16 @@ let rec TryTranslateComputationExpression
14321441
mOrig
14331442
)
14341443

1435-
SynExpr.LetOrUse(false, false, false, false, [ condBinding ], whileExpr, mGuard, SynExprLetOrUseTrivia.Zero)
1444+
SynExpr.LetOrUse(
1445+
isRecursive = false,
1446+
isUse = false,
1447+
isFromSource = false,
1448+
isComputed = false,
1449+
bindings = [ condBinding ],
1450+
body = whileExpr,
1451+
range = mGuard,
1452+
trivia = SynExprLetOrUseTrivia.Zero
1453+
)
14361454

14371455
let binding =
14381456
SynBinding(
@@ -1451,7 +1469,16 @@ let rec TryTranslateComputationExpression
14511469
trivia = SynBindingTrivia.Zero
14521470
)
14531471

1454-
SynExpr.LetOrUse(false, false, true, true, [ binding ], body, mGuard, SynExprLetOrUseTrivia.Zero)
1472+
SynExpr.LetOrUse(
1473+
isRecursive = false,
1474+
isUse = false,
1475+
isFromSource = true,
1476+
isComputed = true,
1477+
bindings = [ binding ],
1478+
body = body,
1479+
range = mGuard,
1480+
trivia = SynExprLetOrUseTrivia.Zero
1481+
)
14551482

14561483
TryTranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace rewrittenWhileExpr translatedCtxt
14571484

@@ -1662,7 +1689,16 @@ let rec TryTranslateComputationExpression
16621689
CompExprTranslationPass.Initial
16631690
q
16641691
varSpace
1665-
(SynExpr.LetOrUse(false, false, true, true, [ binding ], innerComp2, m, SynExprLetOrUseTrivia.Zero))
1692+
(SynExpr.LetOrUse(
1693+
isRecursive = false,
1694+
isUse = false,
1695+
isFromSource = true,
1696+
isComputed = true,
1697+
bindings = [ binding ],
1698+
body = innerComp2,
1699+
range = m,
1700+
trivia = SynExprLetOrUseTrivia.Zero
1701+
))
16661702
translatedCtxt
16671703
)
16681704

@@ -1730,7 +1766,15 @@ let rec TryTranslateComputationExpression
17301766
)
17311767

17321768
// 'let binds in expr'
1733-
| SynExpr.LetOrUse(isRec, false, isFromSource, false, binds, innerComp, m, trivia) ->
1769+
| SynExpr.LetOrUse(
1770+
isRecursive = isRec
1771+
isUse = false
1772+
isFromSource = isFromSource
1773+
isComputed = false
1774+
bindings = binds
1775+
body = innerComp
1776+
range = m
1777+
trivia = trivia) ->
17341778

17351779
// For 'query' check immediately
17361780
if ceenv.isQuery then
@@ -1763,7 +1807,18 @@ let rec TryTranslateComputationExpression
17631807

17641808
Some(
17651809
TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill ->
1766-
translatedCtxt (SynExpr.LetOrUse(isRec, false, isFromSource, false, binds, holeFill, m, trivia)))
1810+
translatedCtxt (
1811+
SynExpr.LetOrUse(
1812+
isRecursive = isRec,
1813+
isUse = false,
1814+
isFromSource = isFromSource,
1815+
isComputed = false,
1816+
bindings = binds,
1817+
body = holeFill,
1818+
range = m,
1819+
trivia = trivia
1820+
)
1821+
))
17671822
)
17681823

17691824
// 'use x = expr in expr'
@@ -2409,7 +2464,16 @@ and ConsumeCustomOpClauses
24092464
trivia = SynBindingTrivia.Zero
24102465
)
24112466

2412-
SynExpr.LetOrUse(false, false, false, true, [ binding ], contExpr, intoPat.Range, SynExprLetOrUseTrivia.Zero)
2467+
SynExpr.LetOrUse(
2468+
isRecursive = false,
2469+
isUse = false,
2470+
isFromSource = false,
2471+
isComputed = true,
2472+
bindings = [ binding ],
2473+
body = contExpr,
2474+
range = intoPat.Range,
2475+
trivia = SynExprLetOrUseTrivia.Zero
2476+
)
24132477
else
24142478
SynExpr.ForEach(
24152479
DebugPointAtFor.No,
@@ -2457,7 +2521,16 @@ and ConsumeCustomOpClauses
24572521
trivia = SynBindingTrivia.Zero
24582522
)
24592523

2460-
SynExpr.LetOrUse(false, false, false, true, [ binding ], compClausesExpr, compClausesExpr.Range, SynExprLetOrUseTrivia.Zero)
2524+
SynExpr.LetOrUse(
2525+
isRecursive = false,
2526+
isUse = false,
2527+
isFromSource = false,
2528+
isComputed = true,
2529+
bindings = [ binding ],
2530+
body = compClausesExpr,
2531+
range = compClausesExpr.Range,
2532+
trivia = SynExprLetOrUseTrivia.Zero
2533+
)
24612534
else
24622535
SynExpr.ForEach(
24632536
DebugPointAtFor.No,
@@ -2587,11 +2660,32 @@ and convertSimpleReturnToExpr (ceenv: ComputationExpressionContext<'a>) comp var
25872660
| Some elseExprOpt ->
25882661
Some(SynExpr.IfThenElse(guardExpr, thenExpr, elseExprOpt, spIfToThen, isRecovery, mIfToEndOfElseBranch, trivia), None)
25892662

2590-
| SynExpr.LetOrUse(isRec, false, isFromSource, false, binds, innerComp, m, trivia) ->
2663+
| SynExpr.LetOrUse(
2664+
isRecursive = isRec
2665+
isUse = false
2666+
isFromSource = isFromSource
2667+
isComputed = false
2668+
bindings = binds
2669+
body = innerComp
2670+
range = m
2671+
trivia = trivia) ->
25912672
match convertSimpleReturnToExpr ceenv comp varSpace innerComp with
25922673
| None -> None
25932674
| Some(_, Some _) -> None
2594-
| Some(innerExpr, None) -> Some(SynExpr.LetOrUse(isRec, false, isFromSource, false, binds, innerExpr, m, trivia), None)
2675+
| Some(innerExpr, None) ->
2676+
Some(
2677+
SynExpr.LetOrUse(
2678+
isRecursive = isRec,
2679+
isUse = false,
2680+
isFromSource = isFromSource,
2681+
isComputed = false,
2682+
bindings = binds,
2683+
body = innerExpr,
2684+
range = m,
2685+
trivia = trivia
2686+
),
2687+
None
2688+
)
25952689

25962690
| OptionalSequential(CustomOperationClause ceenv (nm, _, _, mClause, _), _) when customOperationMaintainsVarSpaceUsingBind ceenv nm ->
25972691

@@ -2707,7 +2801,16 @@ and TranslateComputationExpression (ceenv: ComputationExpressionContext<'a>) fir
27072801
trivia = SynBindingTrivia.Zero
27082802
)
27092803

2710-
SynExpr.LetOrUse(false, false, false, true, [ binding ], bodyExpr, m, SynExprLetOrUseTrivia.Zero)
2804+
SynExpr.LetOrUse(
2805+
isRecursive = false,
2806+
isUse = false,
2807+
isFromSource = false,
2808+
isComputed = true,
2809+
bindings = [ binding ],
2810+
body = bodyExpr,
2811+
range = m,
2812+
trivia = SynExprLetOrUseTrivia.Zero
2813+
)
27112814

27122815
TranslateComputationExpression ceenv CompExprTranslationPass.Initial q varSpace letBangBind translatedCtxt
27132816

src/Compiler/Checking/Expressions/CheckExpressions.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10614,7 +10614,7 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr synExpr cont =
1061410614
TcLinearExprs bodyChecker cenv env2 overallTy tpenv isCompExpr expr2 (fun (expr2R, tpenv) ->
1061510615
cont (Expr.Sequential (expr1R, expr2R, NormalSeq, m), tpenv))
1061610616

10617-
| SynExpr.LetOrUse (isRec, isUse, _, _, binds, body, m, _) when not (isUse && isCompExpr) ->
10617+
| SynExpr.LetOrUse (isRecursive = isRec; isUse= isUse; bindings = binds; body = body; range = m) when not (isUse && isCompExpr) ->
1061810618
if isRec then
1061910619
// TcLinearExprs processes at most one recursive binding, this is not tailcalling
1062010620
CheckRecursiveBindingIds binds

0 commit comments

Comments
 (0)