Skip to content

Commit 1aad363

Browse files
committed
squash
1 parent 6ef4403 commit 1aad363

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1377
-1053
lines changed

src/Compiler/Checking/CheckDeclarations.fs

Lines changed: 35 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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

50195019
and 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

50355035
and 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

50385044
and 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

50925098
and 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
52515257
let 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

55165512
and 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
59095898
let 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

src/Compiler/Checking/CheckDeclarations.fsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ val CheckOneImplFile:
5959
ModuleOrNamespaceType option *
6060
ParsedImplFileInput *
6161
FSharpDiagnosticOptions ->
62-
Cancellable<TopAttribs * CheckedImplFile * TcEnv * bool>
62+
Async2<TopAttribs * CheckedImplFile * TcEnv * bool>
6363

6464
val CheckOneSigFile:
6565
TcGlobals *
@@ -72,7 +72,7 @@ val CheckOneSigFile:
7272
FSharpDiagnosticOptions ->
7373
TcEnv ->
7474
ParsedSigFileInput ->
75-
Cancellable<TcEnv * ModuleOrNamespaceType * bool>
75+
Async2<TcEnv * ModuleOrNamespaceType * bool>
7676

7777
exception NotUpperCaseConstructor of range: range
7878

src/Compiler/Driver/CompilerConfig.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ and IProjectReference =
294294
abstract FileName: string
295295

296296
/// Evaluate raw contents of the assembly file generated by the project
297-
abstract EvaluateRawContents: unit -> Async<ProjectAssemblyDataResult>
297+
abstract EvaluateRawContents: unit -> Async2<ProjectAssemblyDataResult>
298298

299299
/// Get the logical timestamp that would be the timestamp of the assembly file generated by the project
300300
///

src/Compiler/Driver/CompilerConfig.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ and IProjectReference =
8888
/// Evaluate raw contents of the assembly file generated by the project.
8989
/// 'None' may be returned if an in-memory view of the contents is, for some reason,
9090
/// not available. In this case the on-disk view of the contents will be preferred.
91-
abstract EvaluateRawContents: unit -> Async<ProjectAssemblyDataResult>
91+
abstract EvaluateRawContents: unit -> Async2<ProjectAssemblyDataResult>
9292

9393
/// Get the logical timestamp that would be the timestamp of the assembly file generated by the project.
9494
///

src/Compiler/Driver/CompilerImports.fs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2248,15 +2248,15 @@ and [<Sealed>] TcImports
22482248
// NOTE: When used in the Language Service this can cause the transitive checking of projects. Hence it must be cancellable.
22492249
member tcImports.RegisterAndImportReferencedAssemblies(ctok, nms: AssemblyResolution list) =
22502250
let tryGetAssemblyData (r: AssemblyResolution) =
2251-
async {
2251+
async2 {
22522252
CheckDisposed()
22532253
let m = r.originalReference.Range
22542254
let fileName = r.resolvedPath
22552255

22562256
try
22572257

22582258
let! contentsOpt =
2259-
async {
2259+
async2 {
22602260
match r.ProjectReference with
22612261
| Some ilb -> return! ilb.EvaluateRawContents()
22622262
| None -> return ProjectAssemblyDataResult.Unavailable true
@@ -2290,7 +2290,7 @@ and [<Sealed>] TcImports
22902290
let phase2 () =
22912291
[ tcImports.FindCcuInfo(ctok, m, ilShortAssemName, lookupOnly = true) ]
22922292

2293-
async { return phase2 () }
2293+
async2 { return phase2 () }
22942294
else
22952295
let dllinfo =
22962296
{
@@ -2320,9 +2320,9 @@ and [<Sealed>] TcImports
23202320
else
23212321
tcImports.PrepareToImportReferencedILAssembly(ctok, m, fileName, dllinfo)
23222322

2323-
async { return phase2 () }
2323+
async2 { return phase2 () }
23242324

2325-
async {
2325+
async2 {
23262326
CheckDisposed()
23272327

23282328
let tcConfig = tcConfigP.Get ctok
@@ -2371,7 +2371,7 @@ and [<Sealed>] TcImports
23712371
ReportWarnings warns
23722372

23732373
tcImports.RegisterAndImportReferencedAssemblies(ctok, res)
2374-
|> Async.RunSynchronously
2374+
|> Async2.RunSynchronously
23752375
|> ignore
23762376

23772377
true
@@ -2461,7 +2461,7 @@ and [<Sealed>] TcImports
24612461
// we dispose TcImports is because we need to dispose type providers, and type providers are never included in the framework DLL set.
24622462
// If a framework set ever includes type providers, you will not have to worry about explicitly calling Dispose as the Finalizer will handle it.
24632463
static member BuildFrameworkTcImports(tcConfigP: TcConfigProvider, frameworkDLLs, nonFrameworkDLLs) =
2464-
async {
2464+
async2 {
24652465
let ctok = CompilationThreadToken()
24662466
let tcConfig = tcConfigP.Get ctok
24672467

@@ -2538,7 +2538,7 @@ and [<Sealed>] TcImports
25382538
resolvedAssemblies |> List.choose tryFindEquivPrimaryAssembly
25392539

25402540
let! fslibCcu, fsharpCoreAssemblyScopeRef =
2541-
async {
2541+
async2 {
25422542
if tcConfig.compilingFSharpCore then
25432543
// When compiling FSharp.Core.dll, the fslibCcu reference to FSharp.Core.dll is a delayed ccu thunk fixed up during type checking
25442544
return CcuThunk.CreateDelayed getFSharpCoreLibraryName, ILScopeRef.Local
@@ -2629,7 +2629,7 @@ and [<Sealed>] TcImports
26292629
(tcConfigP: TcConfigProvider, baseTcImports, nonFrameworkReferences, knownUnresolved, dependencyProvider)
26302630
=
26312631

2632-
async {
2632+
async2 {
26332633
let ctok = CompilationThreadToken()
26342634
let tcConfig = tcConfigP.Get ctok
26352635

@@ -2647,7 +2647,7 @@ and [<Sealed>] TcImports
26472647
}
26482648

26492649
static member BuildTcImports(tcConfigP: TcConfigProvider, dependencyProvider) =
2650-
async {
2650+
async2 {
26512651
let ctok = CompilationThreadToken()
26522652
let tcConfig = tcConfigP.Get ctok
26532653

@@ -2679,7 +2679,7 @@ let RequireReferences (ctok, tcImports: TcImports, tcEnv, thisAssemblyName, reso
26792679

26802680
let ccuinfos =
26812681
tcImports.RegisterAndImportReferencedAssemblies(ctok, resolutions)
2682-
|> Async.RunSynchronously
2682+
|> Async2.RunSynchronously
26832683

26842684
let asms =
26852685
ccuinfos

src/Compiler/Driver/CompilerImports.fsi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,14 +205,14 @@ type TcImports =
205205
member internal Base: TcImports option
206206

207207
static member BuildFrameworkTcImports:
208-
TcConfigProvider * AssemblyResolution list * AssemblyResolution list -> Async<TcGlobals * TcImports>
208+
TcConfigProvider * AssemblyResolution list * AssemblyResolution list -> Async2<TcGlobals * TcImports>
209209

210210
static member BuildNonFrameworkTcImports:
211211
TcConfigProvider * TcImports * AssemblyResolution list * UnresolvedAssemblyReference list * DependencyProvider ->
212-
Async<TcImports>
212+
Async2<TcImports>
213213

214214
static member BuildTcImports:
215-
tcConfigP: TcConfigProvider * dependencyProvider: DependencyProvider -> Async<TcGlobals * TcImports>
215+
tcConfigP: TcConfigProvider * dependencyProvider: DependencyProvider -> Async2<TcGlobals * TcImports>
216216

217217
/// Process a group of #r in F# Interactive.
218218
/// Adds the reference to the tcImports and add the ccu to the type checking environment.

0 commit comments

Comments
 (0)