Skip to content

Commit b0fac9d

Browse files
authored
Sequentialize GetAllUsesOfAllSymolsInFile (#10357)
1 parent 65da35e commit b0fac9d

File tree

18 files changed

+772
-169
lines changed

18 files changed

+772
-169
lines changed

src/fsharp/service/FSharpCheckerResults.fs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1872,16 +1872,18 @@ type FSharpCheckFileResults
18721872
member __.DependencyFiles = dependencyFiles
18731873

18741874
member __.GetAllUsesOfAllSymbolsInFile(?cancellationToken: CancellationToken ) =
1875-
threadSafeOp
1876-
(fun () -> [| |])
1875+
threadSafeOp
1876+
(fun () -> Seq.empty)
18771877
(fun scope ->
18781878
let cenv = scope.SymbolEnv
1879-
[| for symbolUseChunk in scope.ScopeSymbolUses.AllUsesOfSymbols do
1880-
for symbolUse in symbolUseChunk do
1881-
cancellationToken |> Option.iter (fun ct -> ct.ThrowIfCancellationRequested())
1882-
if symbolUse.ItemOccurence <> ItemOccurence.RelatedText then
1883-
let symbol = FSharpSymbol.Create(cenv, symbolUse.Item)
1884-
yield FSharpSymbolUse(scope.TcGlobals, symbolUse.DisplayEnv, symbol, symbolUse.ItemOccurence, symbolUse.Range) |])
1879+
seq {
1880+
for symbolUseChunk in scope.ScopeSymbolUses.AllUsesOfSymbols do
1881+
for symbolUse in symbolUseChunk do
1882+
cancellationToken |> Option.iter (fun ct -> ct.ThrowIfCancellationRequested())
1883+
if symbolUse.ItemOccurence <> ItemOccurence.RelatedText then
1884+
let symbol = FSharpSymbol.Create(cenv, symbolUse.Item)
1885+
FSharpSymbolUse(scope.TcGlobals, symbolUse.DisplayEnv, symbol, symbolUse.ItemOccurence, symbolUse.Range)
1886+
})
18851887

18861888
member __.GetUsesOfSymbolInFile(symbol:FSharpSymbol, ?cancellationToken: CancellationToken) =
18871889
threadSafeOp

src/fsharp/service/FSharpCheckerResults.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ type public FSharpCheckFileResults =
210210
member GetFormatSpecifierLocationsAndArity : unit -> (range*int)[]
211211

212212
/// Get all textual usages of all symbols throughout the file
213-
member GetAllUsesOfAllSymbolsInFile : ?cancellationToken: CancellationToken -> FSharpSymbolUse[]
213+
member GetAllUsesOfAllSymbolsInFile : ?cancellationToken: CancellationToken -> seq<FSharpSymbolUse>
214214

215215
/// Get the textual usages that resolved to the given symbol throughout the file
216216
member GetUsesOfSymbolInFile : symbol:FSharpSymbol * ?cancellationToken: CancellationToken -> FSharpSymbolUse[]

src/fsharp/service/ServiceAnalysis.fs

Lines changed: 101 additions & 98 deletions
Large diffs are not rendered by default.

src/fsharp/service/ServiceAnalysis.fsi

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
namespace FSharp.Compiler.SourceCodeServices
44

5-
open FSharp.Compiler.NameResolution
65
open FSharp.Compiler.Range
7-
open FSharp.Compiler.SyntaxTree
86

97
module public UnusedOpens =
108

@@ -24,9 +22,9 @@ module public SimplifyNames =
2422
}
2523

2624
/// Get all ranges that can be simplified in a file
27-
val getSimplifiableNames : checkFileResults: FSharpCheckFileResults * getSourceLineStr: (int -> string) -> Async<SimplifiableRange list>
25+
val getSimplifiableNames : checkFileResults: FSharpCheckFileResults * getSourceLineStr: (int -> string) -> Async<seq<SimplifiableRange>>
2826

2927
module public UnusedDeclarations =
3028

3129
/// Get all unused declarations in a file
32-
val getUnusedDeclarations : checkFileResults: FSharpCheckFileResults * isScriptFile: bool -> Async<range list>
30+
val getUnusedDeclarations : checkFileResults: FSharpCheckFileResults * isScriptFile: bool -> Async<seq<range>>

tests/FSharp.Compiler.Service.Tests/SurfaceArea.netstandard.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21450,7 +21450,7 @@ FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.Sourc
2145021450
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpDeclarationListInfo GetDeclarationListInfo(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SourceCodeServices.FSharpParseFileResults], Int32, System.String, FSharp.Compiler.PartialLongName, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.SourceCodeServices.AssemblySymbol]]])
2145121451
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpFindDeclResult GetDeclarationLocation(Int32, Int32, System.String, Microsoft.FSharp.Collections.FSharpList`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.Boolean])
2145221452
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpMethodGroup GetMethods(Int32, Int32, System.String, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[System.String]])
21453-
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpSymbolUse[] GetAllUsesOfAllSymbolsInFile(Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken])
21453+
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: System.Collections.Generic.IEnumerable`1[FSharp.Compiler.SourceCodeServices.FSharpSymbolUse] GetAllUsesOfAllSymbolsInFile(Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken])
2145421454
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpSymbolUse[] GetUsesOfSymbolInFile(FSharp.Compiler.SourceCodeServices.FSharpSymbol, Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken])
2145521455
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpToolTipText`1[Internal.Utilities.StructuredFormat.Layout] GetStructuredToolTipText(Int32, Int32, System.String, Microsoft.FSharp.Collections.FSharpList`1[System.String], Int32)
2145621456
FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults: FSharp.Compiler.SourceCodeServices.FSharpToolTipText`1[System.String] GetToolTipText(Int32, Int32, System.String, Microsoft.FSharp.Collections.FSharpList`1[System.String], Int32)
@@ -24992,7 +24992,7 @@ FSharp.Compiler.SourceCodeServices.SimplifyNames+SimplifiableRange: Void .ctor(r
2499224992
FSharp.Compiler.SourceCodeServices.SimplifyNames+SimplifiableRange: range Range
2499324993
FSharp.Compiler.SourceCodeServices.SimplifyNames+SimplifiableRange: range get_Range()
2499424994
FSharp.Compiler.SourceCodeServices.SimplifyNames: FSharp.Compiler.SourceCodeServices.SimplifyNames+SimplifiableRange
24995-
FSharp.Compiler.SourceCodeServices.SimplifyNames: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.SourceCodeServices.SimplifyNames+SimplifiableRange]] getSimplifiableNames(FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String])
24995+
FSharp.Compiler.SourceCodeServices.SimplifyNames: Microsoft.FSharp.Control.FSharpAsync`1[System.Collections.Generic.IEnumerable`1[FSharp.Compiler.SourceCodeServices.SimplifyNames+SimplifiableRange]] getSimplifiableNames(FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String])
2499624996
FSharp.Compiler.SourceCodeServices.SourceFile: Boolean IsCompilable(System.String)
2499724997
FSharp.Compiler.SourceCodeServices.SourceFile: Boolean MustBeSingleFileProject(System.String)
2499824998
FSharp.Compiler.SourceCodeServices.Structure+Collapse+Tags: Int32 Below
@@ -25356,7 +25356,7 @@ FSharp.Compiler.SourceCodeServices.UntypedParseImpl: Microsoft.FSharp.Core.FShar
2535625356
FSharp.Compiler.SourceCodeServices.UntypedParseImpl: Microsoft.FSharp.Core.FSharpOption`1[System.String] TryFindExpressionIslandInPosition(pos, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTree+ParsedInput])
2535725357
FSharp.Compiler.SourceCodeServices.UntypedParseImpl: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Range+pos,System.Boolean]] TryFindExpressionASTLeftOfDotLeftOfCursor(pos, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTree+ParsedInput])
2535825358
FSharp.Compiler.SourceCodeServices.UntypedParseImpl: System.String[] GetFullNameOfSmallestModuleOrNamespaceAtPoint(ParsedInput, pos)
25359-
FSharp.Compiler.SourceCodeServices.UnusedDeclarations: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Range+range]] getUnusedDeclarations(FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults, Boolean)
25359+
FSharp.Compiler.SourceCodeServices.UnusedDeclarations: Microsoft.FSharp.Control.FSharpAsync`1[System.Collections.Generic.IEnumerable`1[FSharp.Compiler.Range+range]] getUnusedDeclarations(FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults, Boolean)
2536025360
FSharp.Compiler.SourceCodeServices.UnusedOpens: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Range+range]] getUnusedOpens(FSharp.Compiler.SourceCodeServices.FSharpCheckFileResults, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String])
2536125361
FSharp.Compiler.SourceCodeServices.XmlDocComment: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] isBlank(System.String)
2536225362
FSharp.Compiler.SourceCodeServices.XmlDocParser: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.SourceCodeServices.XmlDocable] getXmlDocables(FSharp.Compiler.Text.ISourceText, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.SyntaxTree+ParsedInput])

tests/benchmarks/Benchmarks.sln

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ VisualStudioVersion = 16.0.28407.52
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "CompilerServiceBenchmarks", "CompilerServiceBenchmarks\CompilerServiceBenchmarks.fsproj", "{9A3C565C-B514-4AE0-8B01-CA80E8453EB0}"
77
EndProject
8-
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "..\src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}"
8+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Service", "..\..\src\fsharp\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj", "{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}"
99
EndProject
10-
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Private", "..\src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}"
10+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "..\..\src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{A2E3D114-10EE-4438-9C1D-2E15046607F3}"
1111
EndProject
1212
Global
1313
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -22,18 +22,18 @@ Global
2222
{9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Proto|Any CPU.Build.0 = Release|Any CPU
2323
{9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
2424
{9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Release|Any CPU.Build.0 = Release|Any CPU
25-
{DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26-
{DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.Build.0 = Debug|Any CPU
27-
{DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
28-
{DED3BBD7-53F4-428A-8C9F-27968E768605}.Proto|Any CPU.Build.0 = Debug|Any CPU
29-
{DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.ActiveCfg = Release|Any CPU
30-
{DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.Build.0 = Release|Any CPU
31-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
33-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
34-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Proto|Any CPU.Build.0 = Debug|Any CPU
35-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
36-
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU
25+
{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26+
{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
27+
{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
28+
{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}.Proto|Any CPU.Build.0 = Debug|Any CPU
29+
{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
30+
{0BD3108C-8CDC-48E3-8CD3-B50E4F2E72A4}.Release|Any CPU.Build.0 = Release|Any CPU
31+
{A2E3D114-10EE-4438-9C1D-2E15046607F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32+
{A2E3D114-10EE-4438-9C1D-2E15046607F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
33+
{A2E3D114-10EE-4438-9C1D-2E15046607F3}.Proto|Any CPU.ActiveCfg = Debug|Any CPU
34+
{A2E3D114-10EE-4438-9C1D-2E15046607F3}.Proto|Any CPU.Build.0 = Debug|Any CPU
35+
{A2E3D114-10EE-4438-9C1D-2E15046607F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
36+
{A2E3D114-10EE-4438-9C1D-2E15046607F3}.Release|Any CPU.Build.0 = Release|Any CPU
3737
EndGlobalSection
3838
GlobalSection(SolutionProperties) = preSolution
3939
HideSolutionNode = FALSE

tests/benchmarks/CompilerServiceBenchmarks/CompilerServiceBenchmarks.fsproj

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,20 @@
1717
</PropertyGroup>
1818

1919
<ItemGroup>
20+
<None Include="decentlySizedStandAloneFile.fsx" />
2021
<Compile Include="Program.fs" />
2122
</ItemGroup>
2223

24+
<ItemGroup />
25+
2326
<ItemGroup>
2427
<PackageReference Include="BenchmarkDotNet" Version="0.11.3" />
2528
<PackageReference Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="2.9.0" />
2629
</ItemGroup>
2730

2831
<ItemGroup>
29-
<ProjectReference Include="$(FSharpSourcesRoot)\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj" />
30-
<ProjectReference Include="$(FSharpSourcesRoot)\fsharp\FSharp.Core\FSharp.Core.fsproj" />
32+
<ProjectReference Include="..\..\..\src\fsharp\FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj" />
33+
<ProjectReference Include="..\..\..\src\fsharp\FSharp.Core\FSharp.Core.fsproj" />
3134
</ItemGroup>
3235

3336
</Project>

tests/benchmarks/CompilerServiceBenchmarks/Program.fs

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ open System.Text
44
open FSharp.Compiler.ErrorLogger
55
open FSharp.Compiler.SourceCodeServices
66
open FSharp.Compiler.Text
7+
open FSharp.Compiler.Range
78
open FSharp.Compiler.AbstractIL
89
open FSharp.Compiler.AbstractIL.IL
910
open FSharp.Compiler.AbstractIL.ILBinaryReader
@@ -123,12 +124,14 @@ let function%s (x: %s) =
123124
let z = x + y
124125
z""" moduleName moduleName moduleName moduleName
125126

127+
let decentlySizedStandAloneFile = File.ReadAllText(Path.Combine(__SOURCE_DIRECTORY__, "decentlySizedStandAloneFile.fsx"))
128+
126129
[<MemoryDiagnoser>]
127130
type CompilerService() =
128-
129131
let mutable checkerOpt = None
130-
131132
let mutable sourceOpt = None
133+
let mutable assembliesOpt = None
134+
let mutable decentlySizedStandAloneFileCheckResultOpt = None
132135

133136
let parsingOptions =
134137
{
@@ -141,8 +144,6 @@ type CompilerService() =
141144
IsExe = false
142145
}
143146

144-
let mutable assembliesOpt = None
145-
146147
let readerOptions =
147148
{
148149
pdbDirPath = None
@@ -168,6 +169,18 @@ type CompilerService() =
168169
System.AppDomain.CurrentDomain.GetAssemblies()
169170
|> Array.map (fun x -> (x.Location))
170171
|> Some
172+
173+
| _ -> ()
174+
175+
match decentlySizedStandAloneFileCheckResultOpt with
176+
| None ->
177+
let options, _ =
178+
checkerOpt.Value.GetProjectOptionsFromScript("decentlySizedStandAloneFile.fsx", SourceText.ofString decentlySizedStandAloneFile)
179+
|> Async.RunSynchronously
180+
let _, checkResult =
181+
checkerOpt.Value.ParseAndCheckFileInProject("decentlySizedStandAloneFile.fsx", 0, SourceText.ofString decentlySizedStandAloneFile, options)
182+
|> Async.RunSynchronously
183+
decentlySizedStandAloneFileCheckResultOpt <- Some checkResult
171184
| _ -> ()
172185

173186
[<Benchmark>]
@@ -292,6 +305,8 @@ type CompilerService() =
292305
// If set to 3, it will be almost as slow as re-evaluating all project and it's projects references on setup; this could be a bug or not what we want.
293306
this.TypeCheckFileWith100ReferencedProjectsRun()
294307

308+
member val TypeCheckFileWithNoReferencesOptions = createProject "MainProject" []
309+
295310
[<IterationCleanup(Target = "TypeCheckFileWith100ReferencedProjects")>]
296311
member this.TypeCheckFileWith100ReferencedProjectsCleanup() =
297312
this.TypeCheckFileWith100ReferencedProjectsOptions.SourceFiles
@@ -314,7 +329,45 @@ type CompilerService() =
314329
checker.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients()
315330
ClearAllILModuleReaderCache()
316331

332+
[<Benchmark>]
333+
member this.SimplifyNames() =
334+
match decentlySizedStandAloneFileCheckResultOpt with
335+
| Some checkResult ->
336+
match checkResult with
337+
| FSharpCheckFileAnswer.Aborted -> failwith "checker aborted"
338+
| FSharpCheckFileAnswer.Succeeded results ->
339+
let sourceLines = decentlySizedStandAloneFile.Split ([|"\r\n"; "\n"; "\r"|], StringSplitOptions.None)
340+
let ranges = SimplifyNames.getSimplifiableNames(results, fun lineNum -> sourceLines.[Line.toZ lineNum]) |> Async.RunSynchronously
341+
ignore ranges
342+
()
343+
| _ -> failwith "oopsie"
344+
345+
[<Benchmark>]
346+
member this.UnusedOpens() =
347+
match decentlySizedStandAloneFileCheckResultOpt with
348+
| Some checkResult ->
349+
match checkResult with
350+
| FSharpCheckFileAnswer.Aborted -> failwith "checker aborted"
351+
| FSharpCheckFileAnswer.Succeeded results ->
352+
let sourceLines = decentlySizedStandAloneFile.Split ([|"\r\n"; "\n"; "\r"|], StringSplitOptions.None)
353+
let decls = UnusedOpens.getUnusedOpens(results, fun lineNum -> sourceLines.[Line.toZ lineNum]) |> Async.RunSynchronously
354+
ignore decls
355+
()
356+
| _ -> failwith "oopsie"
357+
358+
[<Benchmark>]
359+
member this.UnusedDeclarations() =
360+
match decentlySizedStandAloneFileCheckResultOpt with
361+
| Some checkResult ->
362+
match checkResult with
363+
| FSharpCheckFileAnswer.Aborted -> failwith "checker aborted"
364+
| FSharpCheckFileAnswer.Succeeded results ->
365+
let decls = UnusedDeclarations.getUnusedDeclarations(results, true) |> Async.RunSynchronously
366+
ignore decls // should be 16
367+
()
368+
| _ -> failwith "oopsie"
369+
317370
[<EntryPoint>]
318-
let main argv =
319-
let _ = BenchmarkRunner.Run<CompilerService>()
371+
let main _ =
372+
BenchmarkRunner.Run<CompilerService>() |> ignore
320373
0

0 commit comments

Comments
 (0)