@@ -1822,6 +1822,7 @@ let MakeAndPublishSimpleValsForMergedScope (cenv: cenv) env m (names: NameMap<_>
18221822 notifyNameResolution (pos, item, itemGroup, itemTyparInst, occurrence, nenv, ad, m, replacing)
18231823
18241824 member _.NotifyExprHasType(_, _, _, _) = assert false // no expr typings in MakeAndPublishSimpleVals
1825+ member _.NotifyExprHasTypeSynthetic(_, _, _, _) = assert false // no expr typings in MakeAndPublishSimpleVals
18251826
18261827 member _.NotifyFormatSpecifierLocation(_, _) = ()
18271828
@@ -5844,13 +5845,13 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
58445845 TcNonControlFlowExpr env <| fun env ->
58455846 CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy.Commit, env.AccessRights)
58465847 TcConstExpr cenv overallTy env m tpenv synConst
5848+
58475849 | SynExpr.DotLambda (synExpr, m, trivia) ->
58485850 match env.NameEnv.eUnqualifiedItems |> Map.tryFind "_arg1" with
58495851 // Compiler-generated _arg items can have more forms, the real underscore will be 1-character wide
58505852 | Some (Item.Value(valRef)) when valRef.Range.StartColumn+1 = valRef.Range.EndColumn ->
58515853 warning(Error(FSComp.SR.tcAmbiguousDiscardDotLambda(), trivia.UnderscoreRange))
5852- | Some _ -> ()
5853- | None -> ()
5854+ | _ -> ()
58545855
58555856 let unaryArg = mkSynId trivia.UnderscoreRange (cenv.synArgNameGenerator.New())
58565857 let svar = mkSynCompGenSimplePatVar unaryArg
@@ -6131,6 +6132,7 @@ and TcExprMatchLambda (cenv: cenv) overallTy env tpenv (isExnMatch, mFunction, c
61316132 let domainTy, resultTy = UnifyFunctionType None cenv env.DisplayEnv m overallTy.Commit
61326133 let idv1, idve1 = mkCompGenLocal mFunction (cenv.synArgNameGenerator.New()) domainTy
61336134 CallExprHasTypeSink cenv.tcSink (mFunction.StartRange, env.NameEnv, domainTy, env.AccessRights)
6135+ CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy.Commit, env.AccessRights)
61346136 let envinner = ExitFamilyRegion env
61356137 let envinner = { envinner with eIsControlFlow = true }
61366138 let idv2, matchExpr, tpenv = TcAndPatternCompileMatchClauses m mFunction (if isExnMatch then Throw else ThrowIncompleteMatchException) cenv None domainTy (MustConvertTo (false, resultTy)) envinner tpenv clauses
@@ -6534,6 +6536,7 @@ and TcIteratedLambdas (cenv: cenv) isFirst (env: TcEnv) overallTy takenNames tpe
65346536 | [] -> envinner
65356537
65366538 let bodyExpr, tpenv = TcIteratedLambdas cenv false envinner (MustConvertTo (false, resultTy)) takenNames tpenv bodyExpr
6539+ CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy.Commit, env.AccessRights)
65376540
65386541 // See bug 5758: Non-monotonicity in inference: need to ensure that parameters are never inferred to have byref type, instead it is always declared
65396542 byrefs |> Map.iter (fun _ (orig, v) ->
@@ -7779,6 +7782,7 @@ and TcAssertExpr cenv overallTy env (m: range) tpenv x =
77797782 TcExpr cenv overallTy env tpenv callDiagnosticsExpr
77807783
77817784and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, mWholeExpr) =
7785+ CallExprHasTypeSink cenv.tcSink (mWholeExpr, env.NameEnv, overallTy, env.eAccessRights)
77827786 let g = cenv.g
77837787
77847788 let requiresCtor = (GetCtorShapeCounter env = 1) // Get special expression forms for constructors
@@ -8404,6 +8408,8 @@ and TcDelayed cenv (overallTy: OverallTy) env tpenv mExpr expr exprTy (atomicFla
84048408 // We can now record for posterity the type of this expression and the location of the expression.
84058409 if (atomicFlag = ExprAtomicFlag.Atomic) then
84068410 CallExprHasTypeSink cenv.tcSink (mExpr, env.NameEnv, exprTy, env.eAccessRights)
8411+ else
8412+ CallExprHasTypeSinkSynthetic cenv.tcSink (mExpr, env.NameEnv, exprTy, env.eAccessRights)
84078413
84088414 match delayed with
84098415 | []
0 commit comments