@@ -500,6 +500,9 @@ type BackgroundCompiler
500
500
Activity.Tags.cache, cache.ToString()
501
501
|]
502
502
503
+ let! ct = Async.CancellationToken
504
+ use _ = Cancellable.UsingToken( ct)
505
+
503
506
if cache then
504
507
let hash = sourceText.GetHashCode() |> int64
505
508
@@ -541,6 +544,9 @@ type BackgroundCompiler
541
544
" BackgroundCompiler.GetBackgroundParseResultsForFileInProject"
542
545
[| Activity.Tags.fileName, fileName; Activity.Tags.userOpName, userOpName |]
543
546
547
+ let! ct = NodeCode.CancellationToken
548
+ use _ = Cancellable.UsingToken( ct)
549
+
544
550
let! builderOpt , creationDiags = getOrCreateBuilder ( options, userOpName)
545
551
546
552
match builderOpt with
@@ -690,6 +696,9 @@ type BackgroundCompiler
690
696
Activity.Tags.userOpName, userOpName
691
697
|]
692
698
699
+ let! ct = NodeCode.CancellationToken
700
+ use _ = Cancellable.UsingToken( ct)
701
+
693
702
let! cachedResults =
694
703
node {
695
704
let! builderOpt , creationDiags = getAnyBuilder ( options, userOpName)
@@ -732,6 +741,9 @@ type BackgroundCompiler
732
741
Activity.Tags.userOpName, userOpName
733
742
|]
734
743
744
+ let! ct = NodeCode.CancellationToken
745
+ use _ = Cancellable.UsingToken( ct)
746
+
735
747
let! builderOpt , creationDiags = getOrCreateBuilder ( options, userOpName)
736
748
737
749
match builderOpt with
@@ -760,6 +772,9 @@ type BackgroundCompiler
760
772
Activity.Tags.userOpName, userOpName
761
773
|]
762
774
775
+ let! ct = NodeCode.CancellationToken
776
+ use _ = Cancellable.UsingToken( ct)
777
+
763
778
let! builderOpt , creationDiags = getOrCreateBuilder ( options, userOpName)
764
779
765
780
match builderOpt with
@@ -815,6 +830,9 @@ type BackgroundCompiler
815
830
Activity.Tags.userOpName, userOpName
816
831
|]
817
832
833
+ let! ct = NodeCode.CancellationToken
834
+ use _ = Cancellable.UsingToken( ct)
835
+
818
836
let! builderOpt , _ = getOrCreateBuilder ( options, userOpName)
819
837
820
838
match builderOpt with
@@ -834,6 +852,9 @@ type BackgroundCompiler
834
852
Activity.Tags.userOpName, userOpName
835
853
|]
836
854
855
+ let! ct = NodeCode.CancellationToken
856
+ use _ = Cancellable.UsingToken( ct)
857
+
837
858
let! builderOpt , creationDiags = getOrCreateBuilder ( options, userOpName)
838
859
839
860
match builderOpt with
@@ -974,6 +995,9 @@ type BackgroundCompiler
974
995
Activity.Tags.userOpName, userOpName
975
996
|]
976
997
998
+ let! ct = NodeCode.CancellationToken
999
+ use _ = Cancellable.UsingToken( ct)
1000
+
977
1001
let! builderOpt , _ = getOrCreateBuilder ( options, userOpName)
978
1002
979
1003
match builderOpt with
@@ -1016,6 +1040,9 @@ type BackgroundCompiler
1016
1040
/// Parse and typecheck the whole project (the implementation, called recursively as project graph is evaluated)
1017
1041
member private _.ParseAndCheckProjectImpl ( options , userOpName ) =
1018
1042
node {
1043
+ let! ct = NodeCode.CancellationToken
1044
+ use _ = Cancellable.UsingToken( ct)
1045
+
1019
1046
let! builderOpt , creationDiags = getOrCreateBuilder ( options, userOpName)
1020
1047
1021
1048
match builderOpt with
@@ -1149,6 +1176,9 @@ type BackgroundCompiler
1149
1176
// Do we assume .NET Framework references for scripts?
1150
1177
let assumeDotNetFramework = defaultArg assumeDotNetFramework true
1151
1178
1179
+ let! ct = Cancellable.token ()
1180
+ use _ = Cancellable.UsingToken( ct)
1181
+
1152
1182
let extraFlags =
1153
1183
if previewEnabled then
1154
1184
[| " --langversion:preview" |]
@@ -1269,6 +1299,9 @@ type BackgroundCompiler
1269
1299
|]
1270
1300
1271
1301
async {
1302
+ let! ct = Async.CancellationToken
1303
+ use _ = Cancellable.UsingToken( ct)
1304
+
1272
1305
let! ct = Async.CancellationToken
1273
1306
// If there was a similar entry (as there normally will have been) then re-establish an empty builder . This
1274
1307
// is a somewhat arbitrary choice - it will have the effect of releasing memory associated with the previous
@@ -1514,6 +1547,9 @@ type FSharpChecker
1514
1547
use _ = Activity.start " FSharpChecker.Compile" [| Activity.Tags.userOpName, _ userOpName |]
1515
1548
1516
1549
async {
1550
+ let! ct = Async.CancellationToken
1551
+ use _ = Cancellable.UsingToken( ct)
1552
+
1517
1553
let ctok = CompilationThreadToken()
1518
1554
return CompileHelpers.compileFromArgs ( ctok, argv, legacyReferenceResolver, None, None)
1519
1555
}
@@ -1633,6 +1669,9 @@ type FSharpChecker
1633
1669
let userOpName = defaultArg userOpName " Unknown"
1634
1670
1635
1671
node {
1672
+ let! ct = NodeCode.CancellationToken
1673
+ use _ = Cancellable.UsingToken( ct)
1674
+
1636
1675
if fastCheck <> Some true || not captureIdentifiersWhenParsing then
1637
1676
return ! backgroundCompiler.FindReferencesInFile( fileName, options, symbol, canInvalidateProject, userOpName)
1638
1677
else
0 commit comments