Skip to content

Commit bc3d807

Browse files
authored
Merge branch 'main' into fsi-nuget-script-fix
2 parents 1925e91 + 749853e commit bc3d807

14 files changed

+81
-92
lines changed

docs/release-notes/.FSharp.Compiler.Service/9.0.200.md

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
* Sink: report SynPat.ArrayOrList type ([PR #18127](https://github.com/dotnet/fsharp/pull/18127))
3434
* Show the default value of compiler options ([PR #18054](https://github.com/dotnet/fsharp/pull/18054))
3535
* Support ValueOption + Struct attribute as optional parameter for methods ([Language suggestion #1136](https://github.com/fsharp/fslang-suggestions/issues/1136), [PR #18098](https://github.com/dotnet/fsharp/pull/18098))
36+
* Cancellable: add safer APIs to check the token ([PR #18175](https://github.com/dotnet/fsharp/pull/18175))
3637

3738
### Changed
3839

eng/Build.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ try {
609609
}
610610

611611
if ($testCoreClr) {
612-
$cpuLimit = if ($ci) { "-m:2 -- xUnit.MaxParallelThreads=0.25x" } else { "" }
612+
$cpuLimit = if ($ci) { "-m:1 -- xUnit.MaxParallelThreads=1" } else { "" }
613613
TestUsingMSBuild -testProject "$RepoRoot\FSharp.sln" -targetFramework $script:coreclrTargetFramework -testadapterpath "$ArtifactsDir\bin\FSharp.Compiler.ComponentTests\" -settings $cpuLimit
614614
}
615615

eng/Version.Details.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@
4242
</Dependency>
4343
</ProductDependencies>
4444
<ToolsetDependencies>
45-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24572.2">
45+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24623.3">
4646
<Uri>https://github.com/dotnet/arcade</Uri>
47-
<Sha>b41381d5cd633471265e9cd72e933a7048e03062</Sha>
47+
<Sha>e0e05154656254a735ebf19ffa5a37a8b915039b</Sha>
4848
</Dependency>
4949
<!-- Intermediate is necessary for source build. -->
50-
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.24572.2">
50+
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.24623.3">
5151
<Uri>https://github.com/dotnet/arcade</Uri>
52-
<Sha>b41381d5cd633471265e9cd72e933a7048e03062</Sha>
52+
<Sha>e0e05154656254a735ebf19ffa5a37a8b915039b</Sha>
5353
<SourceBuild RepoName="arcade" ManagedOnly="true" />
5454
</Dependency>
5555
<Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.24462.2">

eng/Versions.props

+2-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@
8181
<SystemComponentModelCompositionVersion>$(SystemPackageVersionVersion)</SystemComponentModelCompositionVersion>
8282
<SystemCompositionVersion>$(SystemPackageVersionVersion)</SystemCompositionVersion>
8383
<SystemDiagnosticsDiagnosticSourceVersion>$(SystemPackageVersionVersion)</SystemDiagnosticsDiagnosticSourceVersion>
84-
<SystemMemoryVersion>4.6.0</SystemMemoryVersion>
84+
<SystemMemoryVersion Condition="'$(DotNetBuildSourceOnly)' != 'true'">4.5.5</SystemMemoryVersion>
85+
<SystemMemoryVersion Condition="'$(DotNetBuildSourceOnly)' == 'true'">4.6.0</SystemMemoryVersion>
8586
<SystemReflectionEmitVersion>4.7.0</SystemReflectionEmitVersion>
8687
<SystemReflectionMetadataVersion>$(SystemPackageVersionVersion)</SystemReflectionMetadataVersion>
8788
<SystemRuntimeCompilerServicesUnsafeVersion>6.1.0</SystemRuntimeCompilerServicesUnsafeVersion>

eng/build.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ function Test() {
220220
projectname="${projectname%.*}"
221221
testlogpath="$artifacts_dir/TestResults/$configuration/${projectname}_$targetframework.xml"
222222
args="test \"$testproject\" --no-restore --no-build -c $configuration -f $targetframework --test-adapter-path . --logger \"xunit;LogFilePath=$testlogpath\" --blame-hang-timeout 5minutes --results-directory $artifacts_dir/TestResults/$configuration -p:vstestusemsbuildoutput=false"
223-
args+=" -- xUnit.MaxParallelThreads=2"
223+
args+=" -- xUnit.MaxParallelThreads=1"
224224
"$DOTNET_INSTALL_DIR/dotnet" $args || exit $?
225225
}
226226

eng/common/cross/toolchain.cmake

+31-36
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if(TARGET_ARCH_NAME STREQUAL "arm")
4040
set(TOOLCHAIN "arm-linux-gnueabihf")
4141
endif()
4242
if(TIZEN)
43-
set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0")
43+
set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf")
4444
endif()
4545
elseif(TARGET_ARCH_NAME STREQUAL "arm64")
4646
set(CMAKE_SYSTEM_PROCESSOR aarch64)
@@ -49,7 +49,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
4949
elseif(LINUX)
5050
set(TOOLCHAIN "aarch64-linux-gnu")
5151
if(TIZEN)
52-
set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0")
52+
set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu")
5353
endif()
5454
elseif(FREEBSD)
5555
set(triple "aarch64-unknown-freebsd12")
@@ -58,7 +58,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "armel")
5858
set(CMAKE_SYSTEM_PROCESSOR armv7l)
5959
set(TOOLCHAIN "arm-linux-gnueabi")
6060
if(TIZEN)
61-
set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0")
61+
set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi")
6262
endif()
6363
elseif(TARGET_ARCH_NAME STREQUAL "armv6")
6464
set(CMAKE_SYSTEM_PROCESSOR armv6l)
@@ -81,7 +81,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "riscv64")
8181
else()
8282
set(TOOLCHAIN "riscv64-linux-gnu")
8383
if(TIZEN)
84-
set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu/13.1.0")
84+
set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu")
8585
endif()
8686
endif()
8787
elseif(TARGET_ARCH_NAME STREQUAL "s390x")
@@ -98,7 +98,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
9898
elseif(LINUX)
9999
set(TOOLCHAIN "x86_64-linux-gnu")
100100
if(TIZEN)
101-
set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0")
101+
set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu")
102102
endif()
103103
elseif(FREEBSD)
104104
set(triple "x86_64-unknown-freebsd12")
@@ -115,7 +115,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
115115
set(TOOLCHAIN "i686-linux-gnu")
116116
endif()
117117
if(TIZEN)
118-
set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0")
118+
set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu")
119119
endif()
120120
else()
121121
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!")
@@ -127,30 +127,25 @@ endif()
127127

128128
# Specify include paths
129129
if(TIZEN)
130-
if(TARGET_ARCH_NAME STREQUAL "arm")
131-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
132-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7hl-tizen-linux-gnueabihf)
133-
endif()
134-
if(TARGET_ARCH_NAME STREQUAL "armel")
135-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
136-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
137-
endif()
138-
if(TARGET_ARCH_NAME STREQUAL "arm64")
139-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
140-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/aarch64-tizen-linux-gnu)
141-
endif()
142-
if(TARGET_ARCH_NAME STREQUAL "x86")
143-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
144-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu)
145-
endif()
146-
if(TARGET_ARCH_NAME STREQUAL "x64")
147-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
148-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu)
149-
endif()
150-
if(TARGET_ARCH_NAME STREQUAL "riscv64")
151-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
152-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/riscv64-tizen-linux-gnu)
130+
function(find_toolchain_dir prefix)
131+
# Dynamically find the version subdirectory
132+
file(GLOB DIRECTORIES "${prefix}/*")
133+
list(GET DIRECTORIES 0 FIRST_MATCH)
134+
get_filename_component(TOOLCHAIN_VERSION ${FIRST_MATCH} NAME)
135+
136+
set(TIZEN_TOOLCHAIN_PATH "${prefix}/${TOOLCHAIN_VERSION}" PARENT_SCOPE)
137+
endfunction()
138+
139+
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$")
140+
find_toolchain_dir("${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
141+
else()
142+
find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
153143
endif()
144+
145+
message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}")
146+
147+
include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++)
148+
include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN})
154149
endif()
155150

156151
if(ANDROID)
@@ -272,21 +267,21 @@ endif()
272267

273268
if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
274269
if(TIZEN)
275-
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
270+
add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
276271
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
277272
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
278-
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
273+
add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
279274
endif()
280275
elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64|riscv64)$")
281276
if(TIZEN)
282-
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
277+
add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
283278
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64")
284279
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64")
285-
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
280+
add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
286281

287282
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64")
288283
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64")
289-
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
284+
add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}")
290285
endif()
291286
elseif(TARGET_ARCH_NAME STREQUAL "s390x")
292287
add_toolchain_linker_flag("--target=${TOOLCHAIN}")
@@ -297,10 +292,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
297292
endif()
298293
add_toolchain_linker_flag(-m32)
299294
if(TIZEN)
300-
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
295+
add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
301296
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
302297
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
303-
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
298+
add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
304299
endif()
305300
elseif(ILLUMOS)
306301
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64")

eng/common/tools.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ function InstallDotNet([string] $dotnetRoot,
320320
$variations += @($installParameters)
321321

322322
$dotnetBuilds = $installParameters.Clone()
323-
$dotnetbuilds.AzureFeed = "https://dotnetbuilds.azureedge.net/public"
323+
$dotnetbuilds.AzureFeed = "https://ci.dot.net/public"
324324
$variations += @($dotnetBuilds)
325325

326326
if ($runtimeSourceFeed) {

eng/common/tools.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ function InstallDotNet {
232232
local public_location=("${installParameters[@]}")
233233
variations+=(public_location)
234234

235-
local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://dotnetbuilds.azureedge.net/public")
235+
local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://ci.dot.net/public")
236236
variations+=(dotnetbuilds)
237237

238238
if [[ -n "${6:-}" ]]; then

global.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"perl": "5.38.2.2"
1818
},
1919
"msbuild-sdks": {
20-
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24572.2",
20+
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24623.3",
2121
"Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
2222
}
2323
}

src/Compiler/Facilities/BuildGraph.fs

+21-46
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
module FSharp.Compiler.BuildGraph
44

55
open System.Threading
6-
open System.Threading.Tasks
76
open System.Globalization
87

98
[<RequireQualifiedAccess>]
@@ -40,55 +39,31 @@ type GraphNode<'T> private (computation: Async<'T>, cachedResult: ValueOption<'T
4039
cachedResultNode
4140
else
4241
async {
42+
let! ct = Async.CancellationToken
4343
Interlocked.Increment(&requestCount) |> ignore
44+
let enter = semaphore.WaitAsync(ct)
4445

4546
try
46-
let! ct = Async.CancellationToken
47-
48-
// We must set 'taken' before any implicit cancellation checks
49-
// occur, making sure we are under the protection of the 'try'.
50-
// For example, NodeCode's 'try/finally' (TryFinally) uses async.TryFinally which does
51-
// implicit cancellation checks even before the try is entered, as do the
52-
// de-sugaring of 'do!' and other NodeCode constructs.
53-
let mutable taken = false
54-
55-
try
56-
do!
57-
semaphore
58-
.WaitAsync(ct)
59-
.ContinueWith(
60-
(fun _ -> taken <- true),
61-
(TaskContinuationOptions.NotOnCanceled
62-
||| TaskContinuationOptions.NotOnFaulted
63-
||| TaskContinuationOptions.ExecuteSynchronously)
64-
)
65-
|> Async.AwaitTask
66-
67-
match cachedResult with
68-
| ValueSome value -> return value
69-
| _ ->
70-
let tcs = TaskCompletionSource<'T>()
71-
72-
Async.StartWithContinuations(
73-
async {
74-
Thread.CurrentThread.CurrentUICulture <- GraphNode.culture
75-
return! computation
76-
},
77-
(fun res ->
78-
cachedResult <- ValueSome res
79-
cachedResultNode <- async.Return res
80-
computation <- Unchecked.defaultof<_>
81-
tcs.SetResult(res)),
82-
(fun ex -> tcs.SetException(ex)),
83-
(fun _ -> tcs.SetCanceled()),
84-
ct
85-
)
86-
87-
return! tcs.Task |> Async.AwaitTask
88-
finally
89-
if taken then
90-
semaphore.Release() |> ignore
47+
do! enter |> Async.AwaitTask
48+
49+
match cachedResult with
50+
| ValueSome value -> return value
51+
| _ ->
52+
Thread.CurrentThread.CurrentUICulture <- GraphNode.culture
53+
let! result = computation
54+
cachedResult <- ValueSome result
55+
cachedResultNode <- async.Return result
56+
computation <- Unchecked.defaultof<_>
57+
return result
9158
finally
59+
// At this point, the semaphore awaiter is either already completed or about to get canceled.
60+
// If calling Wait() does not throw an exception it means the semaphore was successfully taken and needs to be released.
61+
try
62+
enter.Wait()
63+
semaphore.Release() |> ignore
64+
with _ ->
65+
()
66+
9267
Interlocked.Decrement(&requestCount) |> ignore
9368
}
9469

src/Compiler/Utilities/Cancellable.fs

+7
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ type Cancellable =
1414
tokenHolder.Value
1515
|> ValueOption.defaultWith (fun () -> if guard then failwith msg else CancellationToken.None)
1616

17+
static member HasCancellationToken = tokenHolder.Value.IsSome
18+
1719
static member Token = ensureToken "Token not available outside of Cancellable computation."
1820

1921
static member UsingToken(ct) =
@@ -28,6 +30,11 @@ type Cancellable =
2830
let token = ensureToken "CheckAndThrow invoked outside of Cancellable computation."
2931
token.ThrowIfCancellationRequested()
3032

33+
static member TryCheckAndThrow() =
34+
match tokenHolder.Value with
35+
| ValueNone -> ()
36+
| ValueSome token -> token.ThrowIfCancellationRequested()
37+
3138
namespace Internal.Utilities.Library
3239

3340
open System

src/Compiler/Utilities/Cancellable.fsi

+4
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ open System.Threading
77
type Cancellable =
88
/// For use in testing only. Cancellable.token should be set only by the cancellable computation.
99
static member internal UsingToken: CancellationToken -> IDisposable
10+
11+
static member HasCancellationToken: bool
1012
static member Token: CancellationToken
13+
1114
static member CheckAndThrow: unit -> unit
15+
static member TryCheckAndThrow: unit -> unit
1216

1317
namespace Internal.Utilities.Library
1418

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl

+3
Original file line numberDiff line numberDiff line change
@@ -2011,9 +2011,12 @@ FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryRe
20112011
FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag
20122012
FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag
20132013
FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryReader+Shim
2014+
FSharp.Compiler.Cancellable: Boolean HasCancellationToken
2015+
FSharp.Compiler.Cancellable: Boolean get_HasCancellationToken()
20142016
FSharp.Compiler.Cancellable: System.Threading.CancellationToken Token
20152017
FSharp.Compiler.Cancellable: System.Threading.CancellationToken get_Token()
20162018
FSharp.Compiler.Cancellable: Void CheckAndThrow()
2019+
FSharp.Compiler.Cancellable: Void TryCheckAndThrow()
20172020
FSharp.Compiler.CodeAnalysis.DelayedILModuleReader: System.String OutputFile
20182021
FSharp.Compiler.CodeAnalysis.DelayedILModuleReader: System.String get_OutputFile()
20192022
FSharp.Compiler.CodeAnalysis.DelayedILModuleReader: Void .ctor(System.String, Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,Microsoft.FSharp.Core.FSharpOption`1[System.IO.Stream]])

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl

+3
Original file line numberDiff line numberDiff line change
@@ -2011,9 +2011,12 @@ FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryRe
20112011
FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag
20122012
FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag
20132013
FSharp.Compiler.AbstractIL.ILBinaryReader: FSharp.Compiler.AbstractIL.ILBinaryReader+Shim
2014+
FSharp.Compiler.Cancellable: Boolean HasCancellationToken
2015+
FSharp.Compiler.Cancellable: Boolean get_HasCancellationToken()
20142016
FSharp.Compiler.Cancellable: System.Threading.CancellationToken Token
20152017
FSharp.Compiler.Cancellable: System.Threading.CancellationToken get_Token()
20162018
FSharp.Compiler.Cancellable: Void CheckAndThrow()
2019+
FSharp.Compiler.Cancellable: Void TryCheckAndThrow()
20172020
FSharp.Compiler.CodeAnalysis.DelayedILModuleReader: System.String OutputFile
20182021
FSharp.Compiler.CodeAnalysis.DelayedILModuleReader: System.String get_OutputFile()
20192022
FSharp.Compiler.CodeAnalysis.DelayedILModuleReader: Void .ctor(System.String, Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,Microsoft.FSharp.Core.FSharpOption`1[System.IO.Stream]])

0 commit comments

Comments
 (0)