@@ -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
0 commit comments