@@ -4859,9 +4859,9 @@ module TcDeclarations =
48594859//-------------------------------------------------------------------------
48604860// Bind module types
48614861//-------------------------------------------------------------------------
4862-
4863- let rec TcSignatureElementNonMutRec ( cenv : cenv ) parent typeNames endm ( env : TcEnv ) synSigDecl : Cancellable < TcEnv > =
4864- cancellable {
4862+ #nowarn 3511
4863+ let rec TcSignatureElementNonMutRec ( cenv : cenv ) parent typeNames endm ( env : TcEnv ) synSigDecl : Async2 < TcEnv > =
4864+ async2 {
48654865 let g = cenv.g
48664866 try
48674867 match synSigDecl with
@@ -5010,14 +5010,14 @@ let rec TcSignatureElementNonMutRec (cenv: cenv) parent typeNames endm (env: TcE
50105010
50115011 return env
50125012
5013- with RecoverableException exn ->
5013+ with exn ->
50145014 errorRecovery exn endm
50155015 return env
50165016 }
50175017
50185018
50195019and TcSignatureElements cenv parent endm env xml mutRecNSInfo defs =
5020- cancellable {
5020+ async2 {
50215021 // Ensure the .Deref call in UpdateAccModuleOrNamespaceType succeeds
50225022 if cenv.compilingCanonicalFslibModuleType then
50235023 let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs
@@ -5033,10 +5033,16 @@ and TcSignatureElements cenv parent endm env xml mutRecNSInfo defs =
50335033 }
50345034
50355035and TcSignatureElementsNonMutRec cenv parent typeNames endm env defs =
5036- Cancellable.fold ( TcSignatureElementNonMutRec cenv parent typeNames endm) env defs
5036+ async2 {
5037+ match defs with
5038+ | [] -> return env
5039+ | def :: rest ->
5040+ let! env = TcSignatureElementNonMutRec cenv parent typeNames endm env def
5041+ return ! TcSignatureElementsNonMutRec cenv parent typeNames endm env rest
5042+ }
50375043
50385044and TcSignatureElementsMutRec cenv parent typeNames m mutRecNSInfo envInitial ( defs : SynModuleSigDecl list ) =
5039- cancellable {
5045+ async2 {
50405046 let m = match defs with [] -> m | _ -> defs |> List.map ( fun d -> d.Range) |> List.reduce unionRanges
50415047 let scopem = ( defs, m) ||> List.foldBack ( fun h m -> unionRanges h.Range m)
50425048
@@ -5091,7 +5097,7 @@ and TcSignatureElementsMutRec cenv parent typeNames m mutRecNSInfo envInitial (d
50915097
50925098and TcModuleOrNamespaceSignatureElementsNonMutRec cenv parent env ( id , moduleKind , defs , m : range , xml ) =
50935099
5094- cancellable {
5100+ async2 {
50955101 let endm = m.EndRange // use end of range for errors
50965102
50975103 // Create the module type that will hold the results of type checking....
@@ -5249,7 +5255,7 @@ let TcModuleOrNamespaceElementsMutRec (cenv: cenv) parent typeNames m envInitial
52495255
52505256/// The non-mutually recursive case for a declaration
52515257let rec TcModuleOrNamespaceElementNonMutRec ( cenv : cenv ) parent typeNames scopem env synDecl =
5252- cancellable {
5258+ async2 {
52535259 let g = cenv.g
52545260 cenv.synArgNameGenerator.Reset()
52555261 let tpenv = emptyUnscopedTyparEnv
@@ -5360,7 +5366,6 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
53605366 // Now typecheck.
53615367 let! moduleContents , topAttrsNew , envAtEnd =
53625368 TcModuleOrNamespaceElements cenv ( Parent ( mkLocalModuleRef moduleEntity)) endm envForModule xml None [] moduleDefs
5363- |> cenv.stackGuard.GuardCancellable
53645369
53655370 // Get the inferred type of the decls and record it in the modul.
53665371 moduleEntity.entity_ modul_ type <- MaybeLazy.Strict moduleTyAcc.Value
@@ -5452,7 +5457,6 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
54525457
54535458 let! moduleContents , topAttrs , envAtEnd =
54545459 TcModuleOrNamespaceElements cenv parent endm envNS xml mutRecNSInfo [] defs
5455- |> cenv.stackGuard.GuardCancellable
54565460
54575461 MutRecBindingChecking.TcMutRecDefns_ UpdateNSContents nsInfo
54585462 let env , openDecls =
@@ -5482,20 +5486,17 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem
54825486 return
54835487 ( defns, [], topAttrs), env, envAtEnd
54845488
5485- with RecoverableException exn ->
5489+ with exn ->
54865490 errorRecovery exn synDecl.Range
54875491 return ([], [], []), env, env
54885492 }
54895493
54905494/// The non-mutually recursive case for a sequence of declarations
5491- and [<TailCall>] TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ( defsSoFar , env , envAtEnd ) ( moreDefs : SynModuleDecl list ) ( ct : CancellationToken ) =
5492-
5493- if ct.IsCancellationRequested then
5494- ValueOrCancelled.Cancelled( OperationCanceledException ct)
5495- else
5495+ and TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ( defsSoFar , env , envAtEnd ) ( moreDefs : SynModuleDecl list ) =
5496+ async2 {
54965497 match moreDefs with
54975498 | [] ->
5498- ValueOrCancelled.Value ( List.rev defsSoFar, envAtEnd)
5499+ return List.rev defsSoFar, envAtEnd
54995500 | firstDef :: otherDefs ->
55005501 // Lookahead one to find out the scope of the next declaration.
55015502 let scopem =
@@ -5504,17 +5505,12 @@ and [<TailCall>] TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm
55045505 else
55055506 unionRanges ( List.head otherDefs). Range endm
55065507
5507- let result = Cancellable.run ct ( TcModuleOrNamespaceElementNonMutRec cenv parent typeNames scopem env firstDef |> cenv.stackGuard.GuardCancellable)
5508-
5509- match result with
5510- | ValueOrCancelled.Cancelled x ->
5511- ValueOrCancelled.Cancelled x
5512- | ValueOrCancelled.Value( firstDef, env, envAtEnd) ->
5513- TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm (( firstDef :: defsSoFar), env, envAtEnd) otherDefs ct
5514-
5508+ let! firstDef , env , envAtEnd = TcModuleOrNamespaceElementNonMutRec cenv parent typeNames scopem env firstDef
5509+ return ! TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm (( firstDef :: defsSoFar), env, envAtEnd) otherDefs
5510+ }
55155511
55165512and TcModuleOrNamespaceElements cenv parent endm env xml mutRecNSInfo openDecls0 synModuleDecls =
5517- cancellable {
5513+ async2 {
55185514 // Ensure the deref_nlpath call in UpdateAccModuleOrNamespaceType succeeds
55195515 if cenv.compilingCanonicalFslibModuleType then
55205516 let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs
@@ -5536,21 +5532,15 @@ and TcModuleOrNamespaceElements cenv parent endm env xml mutRecNSInfo openDecls0
55365532 return ( moduleContents, topAttrsNew, envAtEnd)
55375533
55385534 | None ->
5539- let! ct = Cancellable.token ()
5540- let result = TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ([], env, env) synModuleDecls ct
5541-
5542- match result with
5543- | ValueOrCancelled.Value( compiledDefs, envAtEnd) ->
5544- // Apply the functions for each declaration to build the overall expression-builder
5545- let moduleDefs = List.collect p13 compiledDefs
5546- let moduleDefs = match openDecls0 with [] -> moduleDefs | _ -> TMDefOpens openDecls0 :: moduleDefs
5547- let moduleContents = TMDefs moduleDefs
5548-
5549- // Collect up the attributes that are global to the file
5550- let topAttrsNew = List.collect p33 compiledDefs
5551- return ( moduleContents, topAttrsNew, envAtEnd)
5552- | ValueOrCancelled.Cancelled x ->
5553- return ! Cancellable( fun _ -> ValueOrCancelled.Cancelled x)
5535+ let! compiledDefs , envAtEnd = TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm ([], env, env) synModuleDecls
5536+ // Apply the functions for each declaration to build the overall expression-builder
5537+ let moduleDefs = List.collect p13 compiledDefs
5538+ let moduleDefs = match openDecls0 with [] -> moduleDefs | _ -> TMDefOpens openDecls0 :: moduleDefs
5539+ let moduleContents = TMDefs moduleDefs
5540+
5541+ // Collect up the attributes that are global to the file
5542+ let topAttrsNew = List.collect p33 compiledDefs
5543+ return ( moduleContents, topAttrsNew, envAtEnd)
55545544 }
55555545
55565546
@@ -5762,7 +5752,7 @@ let CheckOneImplFile
57625752 let ( ParsedImplFileInput ( fileName , isScript , qualNameOfFile , _ , implFileFrags , isLastCompiland , _ , _ )) = synImplFile
57635753 let infoReader = InfoReader( g, amap)
57645754
5765- cancellable {
5755+ async2 {
57665756 use _ =
57675757 Activity.start " CheckDeclarations.CheckOneImplFile"
57685758 [|
@@ -5787,7 +5777,6 @@ let CheckOneImplFile
57875777 let defs = [ for x in implFileFrags -> SynModuleDecl.NamespaceFragment x ]
57885778 let! moduleContents , topAttrs , envAtEnd =
57895779 TcModuleOrNamespaceElements cenv ParentNone qualNameOfFile.Range envinner PreXmlDoc.Empty None openDecls0 defs
5790- |> cenv.stackGuard.GuardCancellable
57915780
57925781 let implFileTypePriorToSig = moduleTyAcc.Value
57935782
@@ -5907,7 +5896,7 @@ let CheckOneImplFile
59075896
59085897/// Check an entire signature file
59095898let CheckOneSigFile ( g , amap , thisCcu , checkForErrors , conditionalDefines , tcSink , isInternalTestSpanStackReferring , diagnosticOptions ) tcEnv ( sigFile : ParsedSigFileInput ) =
5910- cancellable {
5899+ async2 {
59115900 use _ =
59125901 Activity.start " CheckDeclarations.CheckOneSigFile"
59135902 [|
@@ -5938,7 +5927,7 @@ let CheckOneSigFile (g, amap, thisCcu, checkForErrors, conditionalDefines, tcSin
59385927 try
59395928 sigFileType |> IterTyconsOfModuleOrNamespaceType ( fun tycon ->
59405929 FinalTypeDefinitionChecksAtEndOfInferenceScope( cenv.infoReader, tcEnv.NameEnv, cenv.tcSink, false , tcEnv.DisplayEnv, tycon))
5941- with RecoverableException exn -> errorRecovery exn sigFile.QualifiedName.Range
5930+ with exn -> errorRecovery exn sigFile.QualifiedName.Range
59425931
59435932 UpdatePrettyTyparNames.updateModuleOrNamespaceType sigFileType
59445933
0 commit comments