From a1934242375ccc4323518af6f877ef26abb0cf8c Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Sat, 7 Aug 2021 10:20:08 +0200 Subject: [PATCH 01/12] Upgrade to FCS 40 (#1856) * Initial upgrade to FCS 40. * Fix remaining unit tests. * Remove AST workaround for Attributes. * Update for SynTyparDecls, SynPat.As and ParsedHashDirectiveArgument. * Re-enable ignored tests. * Update to FCS 40.0.1-preview.21366.4 --- paket.dependencies | 4 +- paket.lock | 39 +-- src/Fantomas.Benchmarks/Runners.fs | 4 +- src/Fantomas.Extras/FakeHelpers.fs | 2 +- src/Fantomas.Tests/AttributeTests.fs | 42 +++ src/Fantomas.Tests/TestHelpers.fs | 24 +- src/Fantomas.Tests/TokenParserTests.fs | 4 +- src/Fantomas.Tests/TriviaTests.fs | 4 +- src/Fantomas/AstExtensions.fs | 45 ++- src/Fantomas/AstTransformer.fs | 251 ++++++++-------- src/Fantomas/CodeFormatter.fsi | 4 +- src/Fantomas/CodeFormatterImpl.fs | 60 ++-- src/Fantomas/CodePrinter.fs | 383 ++++++++++++++----------- src/Fantomas/Context.fs | 40 +-- src/Fantomas/SourceParser.fs | 229 ++++++--------- src/Fantomas/SourceTransformer.fs | 21 +- src/Fantomas/TokenParser.fs | 20 +- src/Fantomas/Trivia.fs | 126 +++----- src/Fantomas/TriviaTypes.fs | 75 ++--- 19 files changed, 695 insertions(+), 682 deletions(-) diff --git a/paket.dependencies b/paket.dependencies index 1491b937aa..08dcfe79a9 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -3,8 +3,8 @@ source https://api.nuget.org/v3/index.json framework: netstandard2.0, net5.0, netcoreapp3.1 storage: none -nuget FSharp.Core -nuget FSharp.Compiler.Service ~> 39.0 +nuget FSharp.Core 5.0.3-beta.21352.5 +nuget FSharp.Compiler.Service 40.0.1-preview.21352.5 nuget FsUnit nuget FsCheck nuget Microsoft.NET.Test.Sdk 16.9.1 diff --git a/paket.lock b/paket.lock index 981557a49a..2e54219a9d 100644 --- a/paket.lock +++ b/paket.lock @@ -26,11 +26,11 @@ NUGET editorconfig (0.12.2) FsCheck (2.14.3) FSharp.Core (>= 4.2.3) - FSharp.Compiler.Service (39.0) - FSharp.Core (5.0.1) - Microsoft.Build.Framework (>= 16.6) - Microsoft.Build.Tasks.Core (>= 16.6) - Microsoft.Build.Utilities.Core (>= 16.6) + FSharp.Compiler.Service (40.0.1-preview.21352.5) + FSharp.Core (5.0.3-beta.21352.5) + Microsoft.Build.Framework (>= 16.9) + Microsoft.Build.Tasks.Core (>= 16.9) + Microsoft.Build.Utilities.Core (>= 16.9) System.Buffers (>= 4.5.1) System.Collections.Immutable (>= 5.0) System.Diagnostics.Process (>= 4.3) @@ -44,6 +44,7 @@ NUGET System.Reflection.Metadata (>= 5.0) System.Reflection.TypeExtensions (>= 4.3) System.Runtime (>= 4.3) + System.Runtime.CompilerServices.Unsafe (>= 5.0) System.Runtime.InteropServices (>= 4.3) System.Runtime.Loader (>= 4.3) System.Security.Claims (>= 4.3) @@ -52,7 +53,7 @@ NUGET System.Threading.Tasks.Parallel (>= 4.3) System.Threading.Thread (>= 4.3) System.Threading.ThreadPool (>= 4.3) - FSharp.Core (5.0.1) + FSharp.Core (5.0.3-beta.21352.5) FsUnit (4.0.2) FSharp.Core (>= 4.3.4) NETStandard.Library (>= 2.0.3) @@ -60,26 +61,27 @@ NUGET Iced (1.7) MAB.DotIgnore (3.0.2) NETStandard.Library (>= 1.6.1) - Microsoft.Build.Framework (16.8) + Microsoft.Build.Framework (16.10) System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (16.8) - Microsoft.Build.Framework (>= 16.8) - Microsoft.Build.Utilities.Core (>= 16.8) + Microsoft.Build.Tasks.Core (16.10) + Microsoft.Build.Framework (>= 16.10) + Microsoft.Build.Utilities.Core (>= 16.10) + Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.CodeDom (>= 4.4) - System.Collections.Immutable (>= 1.5) + System.Collections.Immutable (>= 5.0) System.Reflection.Metadata (>= 1.6) - System.Reflection.TypeExtensions (>= 4.1) System.Resources.Extensions (>= 4.6) - System.Runtime.InteropServices (>= 4.3) System.Security.Cryptography.Pkcs (>= 4.7) System.Security.Cryptography.Xml (>= 4.7) System.Security.Permissions (>= 4.7) System.Threading.Tasks.Dataflow (>= 4.9) - Microsoft.Build.Utilities.Core (16.8) - Microsoft.Build.Framework (>= 16.8) + Microsoft.Build.Utilities.Core (16.10) + Microsoft.Build.Framework (>= 16.10) + Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) - System.Collections.Immutable (>= 1.5) + System.Collections.Immutable (>= 5.0) + System.Configuration.ConfigurationManager (>= 4.7) System.Security.Permissions (>= 4.7) System.Text.Encoding.CodePages (>= 4.0.1) Microsoft.CodeAnalysis.Analyzers (3.0) @@ -99,6 +101,9 @@ NUGET Microsoft.Diagnostics.Tracing.TraceEvent (2.0.56) System.Runtime.CompilerServices.Unsafe (>= 4.5.2) Microsoft.DotNet.PlatformAbstractions (3.1.4) + Microsoft.NET.StringTools (1.0) + System.Memory (>= 4.5.4) + System.Runtime.CompilerServices.Unsafe (>= 5.0) Microsoft.NET.Test.Sdk (16.9.1) Microsoft.CodeCoverage (>= 16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0)) Microsoft.TestPlatform.TestHost (>= 16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) @@ -437,7 +442,7 @@ NUGET System.Runtime (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (4.7) + System.Runtime.CompilerServices.Unsafe (5.0) System.Runtime.Extensions (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) diff --git a/src/Fantomas.Benchmarks/Runners.fs b/src/Fantomas.Benchmarks/Runners.fs index c25a9b214e..b7201dc0eb 100644 --- a/src/Fantomas.Benchmarks/Runners.fs +++ b/src/Fantomas.Benchmarks/Runners.fs @@ -1,8 +1,8 @@ module Fantomas.Benchmarks.Runners -open BenchmarkDotNet.Attributes open System.IO -open FSharp.Compiler.SourceCodeServices +open BenchmarkDotNet.Attributes +open FSharp.Compiler.CodeAnalysis open Fantomas open Fantomas.Extras diff --git a/src/Fantomas.Extras/FakeHelpers.fs b/src/Fantomas.Extras/FakeHelpers.fs index 8047f96c76..6a902eb831 100644 --- a/src/Fantomas.Extras/FakeHelpers.fs +++ b/src/Fantomas.Extras/FakeHelpers.fs @@ -2,7 +2,7 @@ module Fantomas.Extras.FakeHelpers open System open System.IO -open FSharp.Compiler.SourceCodeServices +open FSharp.Compiler.CodeAnalysis open Fantomas open Fantomas.FormatConfig open Fantomas.Extras diff --git a/src/Fantomas.Tests/AttributeTests.fs b/src/Fantomas.Tests/AttributeTests.fs index 5cbc9356c3..352358c69c 100644 --- a/src/Fantomas.Tests/AttributeTests.fs +++ b/src/Fantomas.Tests/AttributeTests.fs @@ -783,3 +783,45 @@ module Foo = [] extern bool GetFileInformationByHandleEx(IntPtr hFile, FILE_INFO_BY_HANDLE_CLASS infoClass, [] FILE_NAME_INFO& info, uint32 dwBufferSize) """ + +[] +let ``comment after attribute before let binding with return type`` () = + formatSourceString + false + """ +[] +// bar +let add (a: int) ( b : int) : int = a + b +""" + config + |> prepend newline + |> should + equal + """ +[] +// bar +let add (a: int) (b: int) : int = a + b +""" + +[] +let ``comment after attribute before value binding with return type`` () = + formatSourceString + false + """ +[] +// bar + +// bar again, cuz why not +let x: int = 99 +""" + config + |> prepend newline + |> should + equal + """ +[] +// bar + +// bar again, cuz why not +let x: int = 99 +""" diff --git a/src/Fantomas.Tests/TestHelpers.fs b/src/Fantomas.Tests/TestHelpers.fs index 7fb438dec3..c20c1a5fba 100644 --- a/src/Fantomas.Tests/TestHelpers.fs +++ b/src/Fantomas.Tests/TestHelpers.fs @@ -1,17 +1,17 @@ module Fantomas.Tests.TestHelper -open FsUnit open System +open System.IO +open NUnit.Framework +open FsCheck +open FsUnit +open FSharp.Compiler.Text +open FSharp.Compiler.CodeAnalysis +open FSharp.Compiler.Syntax +open FSharp.Compiler.Xml open Fantomas.FormatConfig open Fantomas open Fantomas.Extras -open FSharp.Compiler.Text -open FSharp.Compiler.SourceCodeServices -open FSharp.Compiler.SyntaxTree -open FSharp.Compiler.XmlDoc -open NUnit.Framework -open FsCheck -open System.IO [] do () @@ -41,7 +41,7 @@ let private isValidAndHasNoWarnings fileName source parsingOptions = let! untypedRes = sharedChecker.Value.ParseFile(fileName, sourceText, parsingOptionsWithDefines) let errors = - untypedRes.Errors + untypedRes.Diagnostics |> Array.filter (fun e -> not (List.contains e.Message safeToIgnoreWarnings)) // FSharpErrorInfo contains both Errors and Warnings // https://fsharp.github.io/FSharp.Compiler.Service/reference/fsharp-compiler-sourcecodeservices-fsharperrorinfo.html @@ -211,7 +211,7 @@ let toSynExprs (Input s) = [], [ SynModuleOrNamespace (_, false, - AnonModule, + SynModuleOrNamespaceKind.AnonModule, exprs, _, _, @@ -251,8 +251,8 @@ let fromSynExpr expr = [ SynModuleOrNamespace( [ ident ], false, - AnonModule, - [ SynModuleDecl.DoExpr(NoDebugPointAtDoBinding, expr, zero) ], + SynModuleOrNamespaceKind.AnonModule, + [ SynModuleDecl.DoExpr(DebugPointAtBinding.NoneAtDo, expr, zero) ], PreXmlDoc.Empty, [], None, diff --git a/src/Fantomas.Tests/TokenParserTests.fs b/src/Fantomas.Tests/TokenParserTests.fs index ace1ddf74d..f5c718e55a 100644 --- a/src/Fantomas.Tests/TokenParserTests.fs +++ b/src/Fantomas.Tests/TokenParserTests.fs @@ -23,8 +23,8 @@ let private mkRange: MkRange = fun (sl, sc) (el, ec) -> FSharp.Compiler.Text.Range.mkRange "TokenParserTests" - (FSharp.Compiler.Text.Pos.mkPos sl sc) - (FSharp.Compiler.Text.Pos.mkPos el ec) + (FSharp.Compiler.Text.Position.mkPos sl sc) + (FSharp.Compiler.Text.Position.mkPos el ec) let private getTriviaFromTokens = getTriviaFromTokens mkRange let private getTriviaNodesFromTokens = getTriviaNodesFromTokens mkRange diff --git a/src/Fantomas.Tests/TriviaTests.fs b/src/Fantomas.Tests/TriviaTests.fs index 8ef14d0f28..5ec4ad4ac3 100644 --- a/src/Fantomas.Tests/TriviaTests.fs +++ b/src/Fantomas.Tests/TriviaTests.fs @@ -10,8 +10,8 @@ let private collectTrivia = (fun (sl, sc) (el, ec) -> FSharp.Compiler.Text.Range.mkRange "TriviaTests" - (FSharp.Compiler.Text.Pos.mkPos sl sc) - (FSharp.Compiler.Text.Pos.mkPos el ec)) + (FSharp.Compiler.Text.Position.mkPos sl sc) + (FSharp.Compiler.Text.Position.mkPos el ec)) let private toTrivia source = let astWithDefines = parse false source |> Array.toList diff --git a/src/Fantomas/AstExtensions.fs b/src/Fantomas/AstExtensions.fs index b88b847228..606d9a85a6 100644 --- a/src/Fantomas/AstExtensions.fs +++ b/src/Fantomas/AstExtensions.fs @@ -1,16 +1,47 @@ module Fantomas.AstExtensions -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.Syntax open FSharp.Compiler.Text open FSharp.Compiler.Text.Range -type SynTypeDefnSig with - /// Combines the range of type name and the body. - member this.FullRange: Range = - match this with - | SynTypeDefnSig.TypeDefnSig (comp, _, _, r) -> mkRange r.FileName comp.Range.Start r.End - let longIdentFullRange (li: LongIdent) : Range = match li with | [] -> range.Zero | h :: _ -> unionRanges h.idRange (List.last li).idRange + +let private hasLinesBetweenAttributesAndFirstNode (attributes: SynAttributes) (firstNodeRange: Range) : Range option = + let fileName = firstNodeRange.FileName + + List.tryLast attributes + |> Option.bind + (fun lastAttribute -> + if lastAttribute.Range.EndLine + 1 < firstNodeRange.StartLine + && firstNodeRange.Start.Column > 0 then + let pos = + Position.mkPos firstNodeRange.StartLine 0 + + mkRange fileName pos pos |> Some + else + None) + +type SynBinding with + /// Construct an artificial range after the attributes and before the head pattern. + /// This is to detect newline or comment trivia in that exact location. + member this.AfterAttributesBeforeHeadPattern: Range option = + match this with + | SynBinding(attributes = []) -> None + | SynBinding (attributes = attrs; headPat = pat) -> hasLinesBetweenAttributesAndFirstNode attrs pat.Range + +type SynTypeDefn with + member this.AfterAttributesBeforeComponentInfo: Range option = + match this with + | SynTypeDefn(typeInfo = SynComponentInfo(attributes = [])) -> None + | SynTypeDefn(typeInfo = SynComponentInfo (attributes = attrs; range = compRange)) -> + hasLinesBetweenAttributesAndFirstNode attrs compRange + +type SynField with + member this.AfterAttributesBeforeIdentifier: Range option = + match this with + | SynField(attributes = []) -> None + | SynField (attributes = _ :: _; idOpt = None) -> None + | SynField (attributes = attrs; idOpt = Some ident) -> hasLinesBetweenAttributesAndFirstNode attrs ident.idRange diff --git a/src/Fantomas/AstTransformer.fs b/src/Fantomas/AstTransformer.fs index 107ea3bd5a..12a00e4cab 100644 --- a/src/Fantomas/AstTransformer.fs +++ b/src/Fantomas/AstTransformer.fs @@ -1,7 +1,7 @@ module Fantomas.AstTransformer open FSharp.Compiler.Text -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.Syntax open Fantomas.TriviaTypes open Fantomas.AstExtensions open Fantomas @@ -16,14 +16,14 @@ module private Ast = let rec visitSynModuleOrNamespace (modOrNs: SynModuleOrNamespace) : TriviaNodeAssigner list = match modOrNs with - | SynModuleOrNamespace (longIdent, _, kind, decls, _, attrs, _, range) -> + | SynModuleOrNamespace (longIdent, _, kind, decls, _, attrs, _, _range) -> let longIdentNodes = match kind, decls with | SynModuleOrNamespaceKind.AnonModule, _ :: _ -> [] | _ -> visitLongIdentIncludingFullRange longIdent [ yield! longIdentNodes - yield! (visitSynAttributeLists range attrs) + yield! (visitSynAttributeLists attrs) yield! (decls |> List.collect visitSynModuleDecl) ] and visitSynModuleDecl (ast: SynModuleDecl) : TriviaNodeAssigner list = @@ -75,7 +75,7 @@ module private Ast = |> finalContinuation | SynModuleDecl.Attributes (attrs, range) -> mkNode SynModuleDecl_Attributes range - :: (visitSynAttributeLists range attrs) + :: (visitSynAttributeLists attrs) |> finalContinuation | SynModuleDecl.HashDirective (hash, range) -> [ mkNode SynModuleDecl_HashDirective range @@ -455,12 +455,11 @@ module private Ast = (fun nodes -> mkNode SynExpr_AddressOf range :: nodes |> finalContinuation) - | SynExpr.TraitCall (typars, sign, expr, range) -> + | SynExpr.TraitCall (_typars, sign, expr, range) -> visit expr (fun nodes -> [ yield mkNode SynExpr_TraitCall range - yield! typars |> List.collect visitSynTypar yield! visitSynMemberSig sign yield! nodes ] |> finalContinuation) @@ -568,7 +567,7 @@ module private Ast = (fun nodes -> mkNode SynExpr_Fixed range :: nodes |> finalContinuation) - | SynExpr.InterpolatedString (parts, range) -> + | SynExpr.InterpolatedString (parts, _, range) -> mkNode SynExpr_InterpolatedString range :: (List.collect visitSynInterpolatedStringPart parts) |> finalContinuation @@ -619,8 +618,8 @@ module private Ast = and visitSynMatchClause (mc: SynMatchClause) : TriviaNodeAssigner list = match mc with - | SynMatchClause.Clause (pat, e1, e2, _range, _) -> - mkNode SynMatchClause_Clause mc.Range // _range is the same range as pat, see https://github.com/dotnet/fsharp/issues/10877 + | SynMatchClause (pat, e1, e2, _range, _) -> + mkNode SynMatchClause_ mc.Range // _range is the same range as pat, see https://github.com/dotnet/fsharp/issues/10877 :: [ yield! visitSynPat pat if e1.IsSome then yield! visitSynExpr e1.Value @@ -630,23 +629,32 @@ module private Ast = and visitSynInterfaceImpl (ii: SynInterfaceImpl) : TriviaNodeAssigner list = match ii with - | InterfaceImpl (typ, bindings, range) -> - [ yield mkNode InterfaceImpl_ range + | SynInterfaceImpl (typ, bindings, range) -> + [ yield mkNode SynInterfaceImpl_ range yield! visitSynType typ yield! (bindings |> List.collect visitSynBinding) ] and visitSynTypeDefn (td: SynTypeDefn) = match td with - | TypeDefn (sci, stdr, members, range) -> - [ yield mkNode TypeDefn_ range + | SynTypeDefn (sci, stdr, members, implicitConstructor, range) -> + let afterAttributesBeforeRepr = + match td.AfterAttributesBeforeComponentInfo with + | None -> [] + | Some r -> + mkNode SynTypeDefn_AfterAttributesBeforeComponentInfo r + |> List.singleton + + // TODO process implicitConstructor ?? + [ yield mkNode SynTypeDefn_ range yield! visitSynComponentInfo sci + yield! afterAttributesBeforeRepr yield! visitSynTypeDefnRepr stdr yield! (members |> List.collect visitSynMemberDefn) ] and visitSynTypeDefnSig (typeDefSig: SynTypeDefnSig) : TriviaNodeAssigner list = match typeDefSig with - | TypeDefnSig (sci, synTypeDefnSigReprs, memberSig, _) -> - [ yield mkNode TypeDefnSig_ typeDefSig.FullRange + | SynTypeDefnSig (sci, synTypeDefnSigReprs, memberSig, _) -> + [ yield mkNode SynTypeDefnSig_ typeDefSig.Range yield! visitSynComponentInfo sci yield! visitSynTypeDefnSigRepr synTypeDefnSigReprs yield! (memberSig |> List.collect visitSynMemberSig) ] @@ -675,7 +683,7 @@ module private Ast = :: (visitSynBinding memberDefn) | SynMemberDefn.ImplicitCtor (_, attrs, ctorArgs, _, _xmlDoc, range) -> [ yield mkNode SynMemberDefn_ImplicitCtor range - yield! (visitSynAttributeLists range attrs) + yield! (visitSynAttributeLists attrs) yield! visitSynSimplePats ctorArgs ] | SynMemberDefn.ImplicitInherit (inheritType, inheritArgs, _, range) -> [ yield mkNode SynMemberDefn_ImplicitInherit range @@ -703,7 +711,7 @@ module private Ast = :: (visitSynTypeDefn typeDefn) | SynMemberDefn.AutoProperty (attrs, _, _, typeOpt, _, _, _, _, synExpr, _, range) -> [ yield mkNode SynMemberDefn_AutoProperty range - yield! (visitSynAttributeLists range attrs) + yield! (visitSynAttributeLists attrs) if typeOpt.IsSome then yield! visitSynType typeOpt.Value yield! visitSynExpr synExpr ] @@ -732,7 +740,7 @@ module private Ast = (fun nodes -> [ yield mkNode SynSimplePat_Attrib range yield! nodes - yield! (visitSynAttributeLists range attrs) ] + yield! (visitSynAttributeLists attrs) ] |> continuation) visit sp id @@ -757,15 +765,23 @@ module private Ast = and visitSynBinding (binding: SynBinding) : TriviaNodeAssigner list = match binding with - | Binding (_, kind, _, _, attrs, _, valData, headPat, returnInfo, expr, range, _) -> + | SynBinding (_, kind, _, _, attrs, _, valData, headPat, returnInfo, expr, _range, _) -> let t = match kind with - | SynBindingKind.StandaloneExpression -> StandaloneExpression_ - | SynBindingKind.NormalBinding -> NormalBinding_ - | SynBindingKind.DoBinding -> DoBinding_ + | SynBindingKind.StandaloneExpression -> SynBindingKind_StandaloneExpression + | SynBindingKind.Normal -> SynBindingKind_Normal + | SynBindingKind.Do -> SynBindingKind_Do + + let afterAttributesBeforeHeadPattern = + match binding.AfterAttributesBeforeHeadPattern with + | Some r -> + mkNode SynBinding_AfterAttributes_BeforeHeadPattern r + |> List.singleton + | None -> [] - [ yield mkNode t binding.RangeOfBindingAndRhs - yield! visitSynAttributeLists range attrs + [ yield mkNode t binding.RangeOfBindingWithRhs + yield! visitSynAttributeLists attrs + yield! afterAttributesBeforeHeadPattern yield! visitSynValData valData yield! visitSynPat headPat yield! @@ -780,10 +796,10 @@ module private Ast = and visitSynValSig (svs: SynValSig) : TriviaNodeAssigner list = match svs with - | ValSpfn (attrs, ident, explicitValDecls, synType, arity, _, _, _, _, expr, range) -> - [ yield mkNode ValSpfn_ range + | SynValSig (attrs, ident, explicitValDecls, synType, arity, _, _, _, _, expr, range) -> + [ yield mkNode SynValSig_ range yield visitIdent ident - yield! (visitSynAttributeLists range attrs) + yield! (visitSynAttributeLists attrs) yield! visitSynValTyparDecls explicitValDecls yield! visitSynType synType yield! visitSynValInfo arity @@ -792,29 +808,19 @@ module private Ast = and visitSynValTyparDecls (valTypeDecl: SynValTyparDecls) : TriviaNodeAssigner list = match valTypeDecl with - | SynValTyparDecls (typardecls, _, _) -> List.collect visitSynTyparDecl typardecls + | SynValTyparDecls (Some typardecl, _) -> visitSynTyparDecls typardecl + | _ -> [] and visitSynTyparDecl (std: SynTyparDecl) : TriviaNodeAssigner list = match std with - | TyparDecl (attrs, typar) -> - [ yield! (visitSynAttributeLists typar.Range attrs) - yield! visitSynTypar typar ] - - and visitSynTypar (typar: SynTypar) : TriviaNodeAssigner list = - match typar with - | Typar _ -> [] - - and visitTyparStaticReq (tsr: TyparStaticReq) = - match tsr with - | NoStaticReq -> "NoStaticReq" - | HeadTypeStaticReq -> "HeadTypeStaticReq" + | SynTyparDecl (attrs, _) -> [ yield! (visitSynAttributeLists attrs) ] and visitSynBindingReturnInfo (returnInfo: SynBindingReturnInfo) : TriviaNodeAssigner list = match returnInfo with | SynBindingReturnInfo (typeName, range, attrs) -> [ yield mkNode SynBindingReturnInfo_ range yield! visitSynType typeName - yield! (visitSynAttributeLists range attrs) ] + yield! (visitSynAttributeLists attrs) ] and visitSynPat (sp: SynPat) : TriviaNodeAssigner list = let rec visit @@ -829,12 +835,19 @@ module private Ast = mkNode SynPat_Wild range |> List.singleton |> finalContinuation - | SynPat.Named (synPat, _, _, _, range) -> - visit - synPat - (fun nodes -> - mkNode SynPat_Named range :: nodes - |> finalContinuation) + | SynPat.Named (ident, _, _, range) -> + [ mkNode SynPat_Named range + visitIdent ident ] + |> finalContinuation + | SynPat.As (synPat, synPat2, range) -> + let continuations: ((TriviaNodeAssigner list -> TriviaNodeAssigner list) -> TriviaNodeAssigner list) list = + [ visit synPat; visit synPat2 ] + + let finalContinuation (nodes: TriviaNodeAssigner list list) : TriviaNodeAssigner list = + mkNode SynPat_As range :: (List.collect id nodes) + |> finalContinuation + + Continuation.sequence continuations finalContinuation | SynPat.Typed (synPat, synType, range) -> visit synPat @@ -848,7 +861,7 @@ module private Ast = (fun nodes -> [ yield mkNode SynPat_Attrib range yield! nodes - yield! (visitSynAttributeLists range attrs) ] + yield! (visitSynAttributeLists attrs) ] |> finalContinuation) | SynPat.Or (synPat, synPat2, _range) -> let continuations: ((TriviaNodeAssigner list -> TriviaNodeAssigner list) -> TriviaNodeAssigner list) list = @@ -943,17 +956,31 @@ module private Ast = and visitSynConstructorArgs (ctorArgs: SynArgPats) : TriviaNodeAssigner list = match ctorArgs with - | Pats pats -> List.collect visitSynPat pats - | NamePatPairs (pats, range) -> - mkNode NamePatPairs_ range + | SynArgPats.Pats pats -> List.collect visitSynPat pats + | SynArgPats.NamePatPairs (pats, range) -> + mkNode SynArgPats_NamePatPairs range :: (List.collect (snd >> visitSynPat) pats) and visitSynComponentInfo (sci: SynComponentInfo) : TriviaNodeAssigner list = match sci with - | ComponentInfo (attribs, typeParams, _, _, _, _, _, range) -> - [ yield mkNode ComponentInfo_ range - yield! (visitSynAttributeLists range attribs) - yield! (typeParams |> List.collect visitSynTyparDecl) ] + | SynComponentInfo (attribs, typeParams, _, _, _, _, _, range) -> + [ yield mkNode SynComponentInfo_ range + yield! (visitSynAttributeLists attribs) + yield! + (Option.map visitSynTyparDecls typeParams + |> Option.defaultValue []) ] + + and visitSynTyparDecls (decls: SynTyparDecls) : TriviaNodeAssigner list = + match decls with + | SynTyparDecls.PostfixList (decls, _constraints, range) -> + [ yield mkNode SynTyparDecls_PostfixList range + yield! (List.collect visitSynTyparDecl decls) ] + | SynTyparDecls.PrefixList (decls, range) -> + [ yield mkNode SynTyparDecls_PrefixList range + yield! (List.collect visitSynTyparDecl decls) ] + | SynTyparDecls.SinglePrefix (decl, range) -> + [ yield mkNode SynTyparDecls_SinglePrefix range + yield! (visitSynTyparDecl decl) ] and visitSynTypeDefnRepr (stdr: SynTypeDefnRepr) : TriviaNodeAssigner list = match stdr with @@ -965,17 +992,17 @@ module private Ast = and visitSynTypeDefnKind (kind: SynTypeDefnKind) : TriviaNodeAssigner list = match kind with - | TyconUnspecified - | TyconClass - | TyconInterface - | TyconStruct - | TyconRecord - | TyconAbbrev - | TyconHiddenRepr - | TyconAugmentation - | TyconUnion - | TyconILAssemblyCode -> [] - | TyconDelegate (typ, valinfo) -> visitSynType typ @ visitSynValInfo valinfo + | SynTypeDefnKind.Unspecified + | SynTypeDefnKind.Class + | SynTypeDefnKind.Interface + | SynTypeDefnKind.Struct + | SynTypeDefnKind.Record + | SynTypeDefnKind.Abbrev + | SynTypeDefnKind.Opaque + | SynTypeDefnKind.Augmentation + | SynTypeDefnKind.Union + | SynTypeDefnKind.IL -> [] + | SynTypeDefnKind.Delegate (typ, valinfo) -> visitSynType typ @ visitSynValInfo valinfo and visitSynTypeDefnSimpleRepr (arg: SynTypeDefnSimpleRepr) = match arg with @@ -1013,59 +1040,64 @@ module private Ast = match sedr with | SynExceptionDefnRepr (attrs, unionCase, _, _, _, range) -> [ yield mkNode SynExceptionDefnRepr_ range - yield! (visitSynAttributeLists range attrs) + yield! (visitSynAttributeLists attrs) yield! visitSynUnionCase unionCase ] and visitSynAttribute (attr: SynAttribute) : TriviaNodeAssigner list = mkNode SynAttribute_ attr.Range :: (visitSynExpr attr.ArgExpr) - and visitSynAttributeLists (parentRange: Range) (attrs: SynAttributeList list) : TriviaNodeAssigner list = - match attrs with - | [ h ] -> visitSynAttributeList parentRange h - | _ :: tail -> - let aRanges = - tail - |> List.map (fun a -> a.Range) - |> fun r -> r @ [ parentRange ] - - List.zip attrs aRanges - |> List.collect (fun (a, r) -> visitSynAttributeList r a) - | [] -> [] - - and visitSynAttributeList (parentRange: Range) (attrs: SynAttributeList) : TriviaNodeAssigner list = - TriviaNodeAssigner(MainNode(SynAttributeList_), attrs.Range, parentRange.StartLine - attrs.Range.EndLine - 1) + and visitSynAttributeLists (attrs: SynAttributeList list) : TriviaNodeAssigner list = + List.collect visitSynAttributeList attrs + // match attrs with +// | [ h ] -> visitSynAttributeList h +// | _ :: tail -> +// let aRanges = +// tail +// |> List.map (fun a -> a.Range) +// |> fun r -> r @ [ parentRange ] +// +// List.zip attrs aRanges +// |> List.collect (fun (a, r) -> visitSynAttributeList r a) +// | [] -> [] + + and visitSynAttributeList (attrs: SynAttributeList) : TriviaNodeAssigner list = + TriviaNodeAssigner(MainNode(SynAttributeList_), attrs.Range) :: (List.collect visitSynAttribute attrs.Attributes) and visitSynUnionCase (uc: SynUnionCase) : TriviaNodeAssigner list = match uc with - | UnionCase (attrs, _, uct, _, _, range) -> - [ yield mkNode UnionCase_ range + | SynUnionCase (attrs, _, uct, _, _, range) -> + [ yield mkNode SynUnionCase_ range yield! visitSynUnionCaseType uct - yield! (visitSynAttributeLists range attrs) ] + yield! (visitSynAttributeLists attrs) ] - and visitSynUnionCaseType (uct: SynUnionCaseType) = + and visitSynUnionCaseType (uct: SynUnionCaseKind) = match uct with - | UnionCaseFields cases -> List.collect visitSynField cases - | UnionCaseFullType (stype, valInfo) -> visitSynType stype @ visitSynValInfo valInfo + | SynUnionCaseKind.Fields fields -> List.collect visitSynField fields + | SynUnionCaseKind.FullType (stype, valInfo) -> visitSynType stype @ visitSynValInfo valInfo and visitSynEnumCase (sec: SynEnumCase) : TriviaNodeAssigner list = match sec with - | EnumCase (attrs, ident, value, _, range) -> - [ yield mkNode EnumCase_ range - yield! (visitSynAttributeLists range attrs) + | SynEnumCase (attrs, ident, value, _, _, range) -> + [ yield mkNode SynEnumCase_ range + yield! (visitSynAttributeLists attrs) yield visitIdent ident yield visitSynConst range value ] and visitSynField (sfield: SynField) : TriviaNodeAssigner list = match sfield with - | Field (attrs, _, ident, typ, _, _, _, range) -> - let parentRange = - Option.map (fun (i: Ident) -> i.idRange) ident - |> Option.defaultValue range + | SynField (attrs, _, _ident, typ, _, _, _, range) -> + let afterAttributesBeforeIdentifier = + match sfield.AfterAttributesBeforeIdentifier with + | None -> [] + | Some r -> + mkNode SynField_AfterAttributesBeforeIdentifier r + |> List.singleton - [ yield mkNode Field_ range - yield! (visitSynAttributeLists parentRange attrs) + [ yield mkNode SynField_ range + yield! (visitSynAttributeLists attrs) + yield! afterAttributesBeforeIdentifier yield! visitSynType typ ] and visitSynType (st: SynType) = @@ -1123,9 +1155,9 @@ module private Ast = |> finalContinuation Continuation.sequence continuations finalContinuation - | SynType.Var (genericName, range) -> + | SynType.Var (_, range) -> mkNode SynType_Var range - :: (visitSynTypar genericName) + |> List.singleton |> finalContinuation | SynType.Anon range -> mkNode SynType_Anon range @@ -1216,12 +1248,11 @@ module private Ast = | SynConst.Bytes _ -> SynConst_Bytes | SynConst.UInt16s _ -> SynConst_UInt16s | SynConst.Measure _ -> SynConst_Measure + | SynConst.SourceIdentifier _ -> SynConst_SourceIdentifier match sc with - | SynConst.Measure (n, SynMeasure.Seq (_, mr)) -> - let numberRange = - Range.mkRange mr.FileName parentRange.Start (Pos.mkPos mr.StartLine (mr.StartColumn - 1)) - + | SynConst.Measure (n, numberRange, _) -> + // TODO: take constant range into account mkNode (t n) numberRange | _ -> mkNode (t sc) (sc.Range parentRange) @@ -1233,13 +1264,7 @@ module private Ast = and visitSynArgInfo (sai: SynArgInfo) : TriviaNodeAssigner list = match sai with - | SynArgInfo (attrs, _, ident) -> - let parentRange = - ident - |> Option.map (fun i -> i.idRange) - |> Option.defaultValue range.Zero - - visitSynAttributeLists parentRange attrs + | SynArgInfo (attrs, _, _ident) -> visitSynAttributeLists attrs and visitParsedHashDirective (hash: ParsedHashDirective) : TriviaNodeAssigner = match hash with @@ -1247,14 +1272,14 @@ module private Ast = and visitSynModuleOrNamespaceSig (modOrNs: SynModuleOrNamespaceSig) : TriviaNodeAssigner list = match modOrNs with - | SynModuleOrNamespaceSig (longIdent, _, kind, decls, _, attrs, _, range) -> + | SynModuleOrNamespaceSig (longIdent, _, kind, decls, _, attrs, _, _range) -> let longIdentNodes = match kind, decls with | SynModuleOrNamespaceKind.AnonModule, _ :: _ -> [] | _ -> visitLongIdentIncludingFullRange longIdent [ yield! longIdentNodes - yield! (visitSynAttributeLists range attrs) + yield! (visitSynAttributeLists attrs) yield! (decls |> List.collect visitSynModuleSigDecl) ] and visitSynModuleSigDecl (ast: SynModuleSigDecl) : TriviaNodeAssigner list = @@ -1278,7 +1303,7 @@ module private Ast = |> finalContinuation Continuation.sequence continuations finalContinuation - | SynModuleSigDecl.Val (SynValSig.ValSpfn _ as node, _) -> visitSynValSig node |> finalContinuation + | SynModuleSigDecl.Val (SynValSig.SynValSig _ as node, _) -> visitSynValSig node |> finalContinuation | SynModuleSigDecl.Types (typeDefs, range) -> mkNode SynModuleSigDecl_Types range :: (List.collect visitSynTypeDefnSig typeDefs) diff --git a/src/Fantomas/CodeFormatter.fsi b/src/Fantomas/CodeFormatter.fsi index d24750815c..26201ff885 100644 --- a/src/Fantomas/CodeFormatter.fsi +++ b/src/Fantomas/CodeFormatter.fsi @@ -3,8 +3,8 @@ namespace Fantomas open Fantomas.FormatConfig open Fantomas.SourceOrigin open FSharp.Compiler.Text -open FSharp.Compiler.SourceCodeServices -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.CodeAnalysis +open FSharp.Compiler.Syntax [] type CodeFormatter = diff --git a/src/Fantomas/CodeFormatterImpl.fs b/src/Fantomas/CodeFormatterImpl.fs index d4d916830f..bdf97631c7 100644 --- a/src/Fantomas/CodeFormatterImpl.fs +++ b/src/Fantomas/CodeFormatterImpl.fs @@ -4,11 +4,13 @@ module Fantomas.CodeFormatterImpl open System open System.Diagnostics open System.Text.RegularExpressions -open FSharp.Compiler.Text.Range -open FSharp.Compiler.Text.Pos -open FSharp.Compiler.SourceCodeServices -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.CodeAnalysis +open FSharp.Compiler.Diagnostics +open FSharp.Compiler.Syntax open FSharp.Compiler.Text +open FSharp.Compiler.Text.Position +open FSharp.Compiler.Text.Range +open FSharp.Compiler.Tokenization open Fantomas open Fantomas.FormatConfig open Fantomas.SourceOrigin @@ -74,7 +76,7 @@ let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { File if untypedRes.ParseHadErrors then let errors = - untypedRes.Errors + untypedRes.Diagnostics |> Array.filter (fun e -> e.Severity = FSharpDiagnosticSeverity.Error) if not <| Array.isEmpty errors then @@ -83,14 +85,7 @@ let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { File sprintf "Parsing failed with errors: %A\nAnd options: %A" errors parsingOptionsWithDefines ) - let tree = - match untypedRes.ParseTree with - | Some tree -> tree - | None -> - raise - <| FormatException "Parsing failed. Please select a complete code fragment to format." - - return (tree, conditionalCompilationDefines, defineHashTokens) + return (untypedRes.ParseTree, conditionalCompilationDefines, defineHashTokens) }) |> Async.Parallel @@ -103,7 +98,7 @@ let isValidAST ast = let (|IndexerArgList|) xs = List.collect (|IndexerArg|) xs - let rec validateImplFileInput (ParsedImplFileInput (_, moduleOrNamespaceList)) = + let rec validateImplFileInput (SourceParser.ParsedImplFileInput (_, moduleOrNamespaceList)) = List.forall validateModuleOrNamespace moduleOrNamespaceList and validateModuleOrNamespace (SynModuleOrNamespace (decls = decls)) = List.forall validateModuleDecl decls @@ -123,7 +118,7 @@ let isValidAST ast = | SynModuleDecl.HashDirective _ | SynModuleDecl.Open _ -> true - and validateTypeDefn (TypeDefn (_componentInfo, representation, members, _range)) = + and validateTypeDefn (SynTypeDefn (_componentInfo, representation, members, _implicitConstructor, _range)) = validateTypeDefnRepr representation && List.forall validateMemberDefn members @@ -168,18 +163,18 @@ let isValidAST ast = | SynMemberDefn.ImplicitInherit (_, expr, _, _) -> validateExpr expr and validateBinding - (Binding (_access, - _bindingKind, - _isInline, - _isMutable, - _attrs, - _xmldoc, - _valData, - headPat, - _retTy, - expr, - _bindingRange, - _seqPoint)) + (SynBinding (_access, + _bindingKind, + _isInline, + _isMutable, + _attrs, + _xmldoc, + _valData, + headPat, + _retTy, + expr, + _bindingRange, + _seqPoint)) = validateExpr expr && validatePattern headPat @@ -321,7 +316,7 @@ let isValidAST ast = | SynExpr.FromParseError (_synExpr, _range) | SynExpr.DiscardAfterMissingQualificationAfterDot (_synExpr, _range) -> false | SynExpr.Fixed _ -> true - | SynExpr.InterpolatedString (parts, _) -> + | SynExpr.InterpolatedString (parts, _, _) -> parts |> List.forall (function @@ -333,7 +328,8 @@ let isValidAST ast = | SynPat.Const (_const, _range) -> true | SynPat.Wild _ | SynPat.Null _ -> true - | SynPat.Named (pat, _ident, _isThis, _accessOpt, _range) -> validatePattern pat + | SynPat.Named (_ident, _isThis, _accessOpt, _range) -> true + | SynPat.As (pat1, pat2, _) -> validatePattern pat1 && validatePattern pat2 | SynPat.Typed (pat, _typ, _range) -> validatePattern pat | SynPat.Attrib (pat, _attrib, _range) -> validatePattern pat | SynPat.Or (pat1, pat2, _range) -> validatePattern pat1 && validatePattern pat2 @@ -598,7 +594,7 @@ let private formatRange let sel = sourceCode.[start..finish].TrimEnd('\r') if startWithMember sel then - (String.Join(String.Empty, "type T = ", Environment.NewLine, String(' ', startCol), sel), TypeMember) + (String.Join(String.Empty, "type T = ", Environment.NewLine, System.String(' ', startCol), sel), TypeMember) elif String.startsWithOrdinal "and" (sel.TrimStart()) then let p = getPatch startCol lines.[..startLine - 1] @@ -614,13 +610,13 @@ let private formatRange if startLine = endLine then (pattern.Replace(sel, replacement, 1), p) else - (String(' ', startCol) + (System.String(' ', startCol) + pattern.Replace(sel, replacement, 1), p) elif startLine = endLine then (sel, Nothing) else - (String(' ', startCol) + sel, Nothing) + (System.String(' ', startCol) + sel, Nothing) let post = if finish < sourceCode.Length then diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index 352fd0ba66..bf4549e2fd 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -3,8 +3,8 @@ module internal Fantomas.CodePrinter open System open System.Text.RegularExpressions open FSharp.Compiler.Text -open FSharp.Compiler.SourceCodeServices -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.Syntax +open FSharp.Compiler.Xml open Fantomas open Fantomas.FormatConfig open Fantomas.SourceParser @@ -86,29 +86,25 @@ and genSigFile astContext (ParsedSigFileInput (hs, mns)) = +> (if hs.IsEmpty then sepNone else sepNln) +> col sepNln mns (genSigModuleOrNamespace astContext) -and genParsedHashDirective (ParsedHashDirective (h, s, r)) = - let printArgument arg = +and genParsedHashDirective (ParsedHashDirective (h, args, r)) = + let genArg (arg: ParsedHashDirectiveArgument) = match arg with - | "" -> sepNone - // Use verbatim string to escape '\' correctly - | _ when arg.Contains("\\") -> !-(sprintf "@\"%O\"" arg) - | _ -> !-(sprintf "\"%O\"" arg) - - let printIdent (ctx: Context) = - Map.tryFind ParsedHashDirective_ ctx.TriviaMainNodes - |> Option.defaultValue [] - |> List.tryFind (fun t -> RangeHelpers.rangeEq t.Range r) - |> Option.bind - (fun t -> - match t.ContentItself with - | Some (KeywordString c) -> Some c - | _ -> None) - |> function - | Some kw -> !-kw - | None -> col sepSpace s printArgument - <| ctx - - !- "#" -- h +> sepSpace +> printIdent + | ParsedHashDirectiveArgument.String (value, stringKind, range) -> + let stringStart, stringEnd = + match stringKind with + | SynStringKind.Regular -> "\"", "\"" + | SynStringKind.Verbatim -> "@\"", "\"" + | SynStringKind.TripleQuote -> "\"\"\"", "\"\"\"" + + !-(sprintf "%s%s%s" stringStart value stringEnd) + |> genTriviaFor ParsedHashDirectiveArgument_String range + | ParsedHashDirectiveArgument.SourceIdentifier (identifier, _, range) -> + !-identifier + |> genTriviaFor ParsedHashDirectiveArgument_String range + + !- "#" -- h + +> sepSpace + +> col sepSpace args genArg |> genTriviaFor ParsedHashDirective_ r and genModuleOrNamespaceKind (kind: SynModuleOrNamespaceKind) = @@ -125,11 +121,8 @@ and genModuleOrNamespace astContext (ModuleOrNamespace (ats, px, ao, lids, mds, match firstDecl with | None -> sepNone | Some mdl -> - let attrs = - getRangesFromAttributesFromModuleDeclaration mdl - sepNln - +> sepNlnConsideringTriviaContentBeforeWithAttributesFor (synModuleDeclToFsAstType mdl) mdl.Range attrs + +> sepNlnConsideringTriviaContentBeforeForMainNode (synModuleDeclToFsAstType mdl) mdl.Range let lidsFullRange = match lids with @@ -153,7 +146,7 @@ and genModuleOrNamespace astContext (ModuleOrNamespace (ats, px, ao, lids, mds, genPreXmlDoc px +> genAttributes astContext ats - +> ifElse (moduleKind = AnonModule) genTriviaForAnonModuleIdent moduleOrNamespace + +> ifElse (moduleKind = SynModuleOrNamespaceKind.AnonModule) genTriviaForAnonModuleIdent moduleOrNamespace +> sepModuleAndFirstDecl +> genModuleDeclList astContext mds @@ -166,11 +159,8 @@ and genSigModuleOrNamespace astContext (SigModuleOrNamespace (ats, px, ao, lids, | Some mdl -> match mdl with | SynModuleSigDecl.Types _ -> - let attrs = - getRangesFromAttributesFromSynModuleSigDeclaration mdl - - sepNlnConsideringTriviaContentBeforeWithAttributesFor SynModuleSigDecl_Types mdl.Range attrs - | SynModuleSigDecl.Val _ -> sepNlnConsideringTriviaContentBeforeForMainNode ValSpfn_ mdl.Range + sepNlnConsideringTriviaContentBeforeForMainNode SynModuleSigDecl_Types mdl.Range + | SynModuleSigDecl.Val _ -> sepNlnConsideringTriviaContentBeforeForMainNode SynValSig_ mdl.Range | _ -> sepNone +> sepNln @@ -188,7 +178,7 @@ and genSigModuleOrNamespace astContext (SigModuleOrNamespace (ats, px, ao, lids, genPreXmlDoc px +> genAttributes astContext ats - +> ifElse (moduleKind = AnonModule) sepNone moduleOrNamespace + +> ifElse (moduleKind = SynModuleOrNamespaceKind.AnonModule) sepNone moduleOrNamespace +> sepModuleAndFirstDecl +> genSigModuleDeclList astContext mds @@ -228,12 +218,9 @@ and genModuleDeclList astContext e = |> finalContinuation) | AttributesL (xs, y :: rest) -> - let attrs = - getRangesFromAttributesFromModuleDeclaration y - let expr = col sepNln xs (genModuleDecl astContext) - +> sepNlnConsideringTriviaContentBeforeWithAttributesFor (synModuleDeclToFsAstType y) y.Range attrs + +> sepNlnConsideringTriviaContentBeforeForMainNode (synModuleDeclToFsAstType y) y.Range +> genModuleDecl astContext y let r = List.head xs |> fun mdl -> mdl.Range @@ -248,11 +235,8 @@ and genModuleDeclList astContext e = |> finalContinuation) | m :: rest -> - let attrs = - getRangesFromAttributesFromModuleDeclaration m - let sepNln = - sepNlnConsideringTriviaContentBeforeWithAttributesFor (synModuleDeclToFsAstType m) m.Range attrs + sepNlnConsideringTriviaContentBeforeForMainNode (synModuleDeclToFsAstType m) m.Range let expr = genModuleDecl astContext m @@ -286,11 +270,8 @@ and genSigModuleDeclList astContext (e: SynModuleSigDecl list) = ColMultilineItem(expr, sepNln) :: ysItems |> finalContinuation) | s :: rest -> - let attrs = - getRangesFromAttributesFromSynModuleSigDeclaration s - let sepNln = - sepNlnConsideringTriviaContentBeforeWithAttributesFor (synModuleSigDeclToFsAstType s) s.Range attrs + sepNlnConsideringTriviaContentBeforeForMainNode (synModuleSigDeclToFsAstType s) s.Range let expr = genSigModuleDecl astContext s @@ -364,7 +345,7 @@ and genModuleDecl astContext (node: SynModuleDecl) = let sepBAndBs = match List.tryHead bs with | Some b' -> - let r = b'.RangeOfBindingAndRhs + let r = b'.RangeOfBindingWithRhs sepNln +> sepNlnConsideringTriviaContentBeforeForMainNode (synBindingToFsAstType b) r @@ -374,13 +355,13 @@ and genModuleDecl astContext (node: SynModuleDecl) = +> sepBAndBs +> colEx (fun (b': SynBinding) -> - let r = b'.RangeOfBindingAndRhs + let r = b'.RangeOfBindingWithRhs sepNln +> sepNlnConsideringTriviaContentBeforeForMainNode (synBindingToFsAstType b) r) bs (fun andBinding -> - enterNodeFor (synBindingToFsAstType b) andBinding.RangeOfBindingAndRhs + enterNodeFor (synBindingToFsAstType b) andBinding.RangeOfBindingWithRhs +> genLetBinding { astContext with IsFirstChild = false } "and " andBinding) | ModuleAbbrev (s1, s2) -> !- "module " -- s1 +> sepEq +> sepSpace -- s2 @@ -408,7 +389,7 @@ and genModuleDecl astContext (node: SynModuleDecl) = (fun t -> ColMultilineItem( genTypeDefn { astContext with IsFirstChild = false } t, - sepNlnConsideringTriviaContentBeforeForMainNode TypeDefn_ t.Range + sepNlnConsideringTriviaContentBeforeForMainNode SynTypeDefn_ t.Range )) ts) @@ -440,15 +421,9 @@ and genSigModuleDecl astContext node = let items = ColMultilineItem(genSigTypeDefn { astContext with IsFirstChild = true } t, sepNone) :: (List.map - (fun t -> + (fun (t: SynTypeDefnSig) -> let sepNln = - let attributeRanges = - getRangesFromAttributesFromSynTypeDefnSig t - - sepNlnConsideringTriviaContentBeforeWithAttributesFor - TypeDefnSig_ - t.FullRange - attributeRanges + sepNlnConsideringTriviaContentBeforeForMainNode SynTypeDefnSig_ t.Range ColMultilineItem(genSigTypeDefn { astContext with IsFirstChild = false } t, sepNln)) ts) @@ -511,7 +486,9 @@ and genAttributesCore astContext (ats: SynAttribute seq) = ifElse (Seq.isEmpty ats) sepNone (expressionFitsOnRestOfLine shortExpression longExpression) and genOnelinerAttributes astContext ats = - let ats = List.collect (fun a -> a.Attributes) ats + let ats = + List.collect (fun (a: SynAttributeList) -> a.Attributes) ats + ifElse (Seq.isEmpty ats) sepNone (genAttributesCore astContext ats +> sepSpace) /// Try to group attributes if they are on the same line @@ -565,8 +542,8 @@ and genTyparList astContext tps = +> col wordOr tps (genTypar astContext) +> sepCloseT) -and genTypeAndParam astContext typeName tds tcs preferPostfix = - let types openSep closeSep = +and genTypeAndParam astContext typeName (tds: SynTyparDecls option) tcs = + let types openSep tds tcs closeSep = (!-openSep +> coli sepComma @@ -578,23 +555,33 @@ and genTypeAndParam astContext typeName tds tcs preferPostfix = +> colPre (!- " when ") wordAnd tcs (genTypeConstraint astContext) -- closeSep) - if List.isEmpty tds then - !-typeName - elif preferPostfix then - !-typeName +> types "<" ">" - elif List.atMostOne tds then + match tds with + | None -> !-typeName + | Some (SynTyparDecls.PostfixList (tds, tcs, _range)) -> !-typeName +> types "<" tds tcs ">" + | Some (SynTyparDecls.PrefixList (tds, _range)) -> types "(" tds [] ")" -- " " -- typeName + | Some (SynTyparDecls.SinglePrefix (td, _range)) -> genTyparDecl { astContext with IsFirstTypeParam = true } - (List.head tds) + td +> sepSpace -- typeName +> colPre (!- " when ") wordAnd tcs (genTypeConstraint astContext) - else - types "(" ")" -- " " -- typeName -and genTypeParamPostfix astContext tds tcs = - genTypeAndParam astContext "" tds tcs true +and genTypeParamPostfix astContext tds = + match tds with + | Some (SynTyparDecls.PostfixList (tds, tcs, _range)) -> + (!- "<" + +> coli + sepComma + tds + (fun i -> + genTyparDecl + { astContext with + IsFirstTypeParam = i = 0 }) + +> colPre (!- " when ") wordAnd tcs (genTypeConstraint astContext) + -- ">") + | _ -> sepNone and genLetBinding astContext pref b = let genPref = !-pref @@ -608,6 +595,7 @@ and genLetBinding astContext pref b = false px ats + b.AfterAttributesBeforeHeadPattern genPref ao isInline @@ -620,11 +608,48 @@ and genLetBinding astContext pref b = valInfo e | e, PatLongIdent (ao, s, ps, tpso) when (List.isNotEmpty ps) -> - genSynBindingFunction astContext false px ats genPref ao isInline isMutable s p.Range ps tpso e + genSynBindingFunction + astContext + false + px + ats + b.AfterAttributesBeforeHeadPattern + genPref + ao + isInline + isMutable + s + p.Range + ps + tpso + e | TypedExpr (Typed, e, t), pat -> - genSynBindingValue astContext px ats genPref ao isInline isMutable pat (Some t) e + genSynBindingValue + astContext + px + ats + b.AfterAttributesBeforeHeadPattern + genPref + ao + isInline + isMutable + pat + (Some t) + e | _, PatTuple _ -> genLetBindingDestructedTuple astContext px ats pref ao isInline isMutable p e - | _, pat -> genSynBindingValue astContext px ats genPref ao isInline isMutable pat None e + | _, pat -> + genSynBindingValue + astContext + px + ats + b.AfterAttributesBeforeHeadPattern + genPref + ao + isInline + isMutable + pat + None + e | _ -> sepNone | DoBinding (ats, px, e) -> let prefix = @@ -638,7 +663,7 @@ and genLetBinding astContext pref b = +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e) | b -> failwithf "%O isn't a let binding" b - +> leaveNodeFor (synBindingToFsAstType b) b.RangeOfBindingAndRhs + +> leaveNodeFor (synBindingToFsAstType b) b.RangeOfBindingWithRhs and genProperty astContext prefix ao propertyKind ps e = let tuplerize ps = @@ -708,7 +733,7 @@ and genMemberBindingList astContext node = | [] -> finalContinuation [] | mb :: rest -> let expr = genMemberBinding astContext mb - let r = mb.RangeOfBindingAndRhs + let r = mb.RangeOfBindingWithRhs let sepNln = sepNlnConsideringTriviaContentBeforeForMainNode (synBindingToFsAstType mb) r @@ -759,7 +784,7 @@ and genMemberBinding astContext b = | MemberBinding (ats, px, ao, isInline, mf, p, e, synValInfo) -> let prefix = - genMemberFlagsForMemberBinding astContext mf b.RangeOfBindingAndRhs + genMemberFlagsForMemberBinding astContext mf b.RangeOfBindingWithRhs match e, p with | TypedExpr (Typed, e, t), PatLongIdent (ao, s, ps, tpso) when (List.isNotEmpty ps) -> @@ -768,6 +793,7 @@ and genMemberBinding astContext b = true px ats + b.AfterAttributesBeforeHeadPattern prefix ao isInline @@ -780,9 +806,36 @@ and genMemberBinding astContext b = synValInfo e | e, PatLongIdent (ao, s, ps, tpso) when (List.isNotEmpty ps) -> - genSynBindingFunction astContext true px ats prefix ao isInline false s p.Range ps tpso e - | TypedExpr (Typed, e, t), pat -> genSynBindingValue astContext px ats prefix ao isInline false pat (Some t) e - | _, pat -> genSynBindingValue astContext px ats prefix ao isInline false pat None e + genSynBindingFunction + astContext + true + px + ats + b.AfterAttributesBeforeHeadPattern + prefix + ao + isInline + false + s + p.Range + ps + tpso + e + | TypedExpr (Typed, e, t), pat -> + genSynBindingValue + astContext + px + ats + b.AfterAttributesBeforeHeadPattern + prefix + ao + isInline + false + pat + (Some t) + e + | _, pat -> + genSynBindingValue astContext px ats b.AfterAttributesBeforeHeadPattern prefix ao isInline false pat None e | ExplicitCtor (ats, px, ao, p, e, so) -> let prefix = @@ -820,16 +873,16 @@ and genMemberBinding astContext b = +> sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e) | b -> failwithf "%O isn't a member binding" b - |> genTriviaFor (synBindingToFsAstType b) b.RangeOfBindingAndRhs + |> genTriviaFor (synBindingToFsAstType b) b.RangeOfBindingWithRhs -and genMemberFlags astContext (mf: MemberFlags) = +and genMemberFlags astContext (mf: SynMemberFlags) = match mf with | MFMember _ -> !- "member " | MFStaticMember _ -> !- "static member " | MFConstructor _ -> sepNone | MFOverride _ -> ifElse astContext.InterfaceRange.IsSome (!- "member ") (!- "override ") -and genMemberFlagsForMemberBinding astContext (mf: MemberFlags) (rangeOfBindingAndRhs: Range) = +and genMemberFlagsForMemberBinding astContext (mf: SynMemberFlags) (rangeOfBindingAndRhs: Range) = fun ctx -> let keywordFromTrivia = [ yield! (Map.tryFindOrEmptyList SynMemberDefn_Member ctx.TriviaMainNodes) @@ -867,15 +920,8 @@ and genMemberFlagsForMemberBinding astContext (mf: MemberFlags) (rangeOfBindingA |> Option.defaultValue (!- "override ") <| ctx -and genVal astContext (Val (ats, px, ao, s, identRange, t, vi, isInline, _) as node) = - let range, synValTyparDecls = - match node with - | ValSpfn (_, _, synValTyparDecls, _, _, _, _, _, _, _, range) -> range, synValTyparDecls - - let genericParams = - match synValTyparDecls with - | SynValTyparDecls ([], _, _) -> sepNone - | SynValTyparDecls (tpd, _, cst) -> genTypeParamPostfix astContext tpd cst +and genVal astContext (Val (ats, px, ao, s, identRange, t, vi, isInline, tds, range)) = + let typeName = genTypeAndParam astContext s tds [] let (FunType namedArgs) = (t, vi) @@ -884,15 +930,14 @@ and genVal astContext (Val (ats, px, ao, s, identRange, t, vi, isInline, _) as n +> (!- "val " +> onlyIf isInline (!- "inline ") +> opt sepSpace ao genAccess - -- s - +> genericParams + +> typeName |> genTriviaFor Ident_ identRange) +> sepColonWithSpacesFixed +> ifElse (List.isNotEmpty namedArgs) (autoIndentAndNlnIfExpressionExceedsPageWidth (genTypeList astContext namedArgs)) (genConstraints astContext t vi) - |> genTriviaFor ValSpfn_ range + |> genTriviaFor SynValSig_ range and genRecordFieldName astContext (RecordFieldName (s, eo) as node) = let rfn, _, _ = node @@ -1411,7 +1456,7 @@ and genExpr astContext synExpr ctx = let genCompExprStatement astContext ces = match ces with | LetOrUseStatement (prefix, binding) -> - enterNodeFor (synBindingToFsAstType binding) binding.RangeOfBindingAndRhs + enterNodeFor (synBindingToFsAstType binding) binding.RangeOfBindingWithRhs +> genLetBinding astContext prefix binding | LetOrUseBangStatement (isUse, pat, expr, r) -> enterNodeFor SynExpr_LetOrUseBang r // print Trivia before entire LetBang expression @@ -1429,7 +1474,7 @@ and genExpr astContext synExpr ctx = let getRangeOfCompExprStatement ces = match ces with - | LetOrUseStatement (_, binding) -> binding.RangeOfBindingAndRhs + | LetOrUseStatement (_, binding) -> binding.RangeOfBindingWithRhs | LetOrUseBangStatement (_, _, _, r) -> r | AndBangStatement (_, _, r) -> r | OtherStatement expr -> expr.Range @@ -2392,7 +2437,8 @@ and genExpr astContext synExpr ctx = r.EndLine (r.EndColumn + 1) ) - | SynExpr.InterpolatedString (parts, _) -> + | SynExpr.InterpolatedString (parts, _stringKind, _) -> + // TODO: string kind fun (ctx: Context) -> let stringRanges = List.choose @@ -3399,7 +3445,7 @@ and collectMultilineItemForLetOrUses // https://github.com/dotnet/fsharp/issues/10198 let bindingHasInKeyword (binding: SynBinding) : bool = let inRange = - Range.mkRange binding.RangeOfBindingAndRhs.FileName binding.RangeOfBindingAndRhs.End e.Range.Start + Range.mkRange binding.RangeOfBindingWithRhs.FileName binding.RangeOfBindingWithRhs.End e.Range.Start inKeyWordTrivia |> TriviaHelpers.``keyword token after start column and on same line`` inRange @@ -3407,7 +3453,7 @@ and collectMultilineItemForLetOrUses let multilineBinding p x = let expr = - enterNodeFor (synBindingToFsAstType x) x.RangeOfBindingAndRhs + enterNodeFor (synBindingToFsAstType x) x.RangeOfBindingWithRhs +> genLetBinding { astContext with IsFirstChild = p <> "and" } @@ -3415,7 +3461,7 @@ and collectMultilineItemForLetOrUses x +> genInKeyword x e - let range = x.RangeOfBindingAndRhs + let range = x.RangeOfBindingWithRhs let sepNln = sepNlnConsideringTriviaContentBeforeForMainNode (synBindingToFsAstType x) range @@ -3433,7 +3479,7 @@ and collectMultilineItemForLetOrUses // maybe the let binding and expression are short so they form one ColMultilineItem // Something like: let a = 1 in () - let range = b.RangeOfBindingAndRhs + let range = b.RangeOfBindingWithRhs let sepNlnForBinding = sepNlnConsideringTriviaContentBeforeForMainNode (synBindingToFsAstType b) range @@ -3441,7 +3487,7 @@ and collectMultilineItemForLetOrUses if bindingHasInKeyword b then // single multiline item let expr = - enterNodeFor (synBindingToFsAstType b) b.RangeOfBindingAndRhs + enterNodeFor (synBindingToFsAstType b) b.RangeOfBindingWithRhs +> genLetBinding astContext p b +> genInKeyword b e +> expressionFitsOnRestOfLine expr (sepNln +> sepNlnForExpr +> expr) @@ -3454,7 +3500,7 @@ and collectMultilineItemForLetOrUses and genInKeyword (binding: SynBinding) (e: SynExpr) (ctx: Context) = let inKeyWordTrivia (binding: SynBinding) = let inRange = - ctx.MkRange binding.RangeOfBindingAndRhs.End e.Range.Start + ctx.MkRange binding.RangeOfBindingWithRhs.End e.Range.Start Map.tryFindOrEmptyList IN ctx.TriviaTokenNodes |> TriviaHelpers.``keyword token after start column and on same line`` inRange @@ -3488,15 +3534,19 @@ and sepNlnBetweenTypeAndMembers (tdr: SynTypeDefnRepr) (ms: SynMemberDefn list) sepNlnTypeAndMembers tdr.Range.End range mainNodeType | None -> sepNone -and genTypeDefn astContext (TypeDef (ats, px, ao, tds, tcs, tdr, ms, s, preferPostfix) as node) = +and genTypeDefn astContext (TypeDef (ats, px, ao, tds, tcs, tdr, ms, s, _) as node) = let typeName = genPreXmlDoc px +> ifElse astContext.IsFirstChild - (genAttributes astContext ats -- "type ") + (genAttributes astContext ats + +> genAfterAttributesBefore + SynTypeDefn_AfterAttributesBeforeComponentInfo + node.AfterAttributesBeforeComponentInfo + -- "type ") (!- "and " +> genOnelinerAttributes astContext ats) +> opt sepSpace ao genAccess - +> genTypeAndParam astContext s tds tcs preferPostfix + +> genTypeAndParam astContext s tds tcs match tdr with | Simple (TDSREnum ecs) -> @@ -3755,7 +3805,7 @@ and genTypeDefn astContext (TypeDef (ats, px, ao, tds, tcs, tdr, ms, s, preferPo +> unindent | ExceptionRepr (ExceptionDefRepr (ats, px, ao, uc)) -> genExceptionBody astContext ats px ao uc - |> genTriviaFor TypeDefn_ node.Range + |> genTriviaFor SynTypeDefn_ node.Range and genMultilineSimpleRecordTypeDefn tdr ms ao' fs astContext = // the typeName is already printed @@ -3812,7 +3862,7 @@ and sepNlnBetweenSigTypeAndMembers (synTypeDefnRepr: SynTypeDefnSigRepr) (ms: Sy sepNlnTypeAndMembers synTypeDefnRepr.Range.End range mainNodeType | None -> sepNone -and genSigTypeDefn astContext (SigTypeDef (ats, px, ao, tds, tcs, tdr, ms, s, preferPostfix, fullRange)) = +and genSigTypeDefn astContext (SigTypeDef (ats, px, ao, tds, tcs, tdr, ms, s, _, fullRange)) = let genTriviaForOnelinerAttributes f (ctx: Context) = match ats with | [] -> f ctx @@ -3833,7 +3883,7 @@ and genSigTypeDefn astContext (SigTypeDef (ats, px, ao, tds, tcs, tdr, ms, s, pr let typeName = genXmlTypeKeywordAttrsAccess - +> genTypeAndParam astContext s tds tcs preferPostfix + +> genTypeAndParam astContext s tds tcs match tdr with | SigSimple (TDSREnum ecs) -> @@ -3947,13 +3997,13 @@ and genSigTypeDefn astContext (SigTypeDef (ats, px, ao, tds, tcs, tdr, ms, s, pr +> ifElse needsParenthesis sepCloseT sepNone let short = - genTypeAndParam astContext s tds tcs preferPostfix + genTypeAndParam astContext s tds tcs +> sepEq +> sepSpace +> genTypeAbbrev let long = - genTypeAndParam astContext s tds tcs preferPostfix + genTypeAndParam astContext s tds tcs +> sepSpace +> sepEqFixed +> indent @@ -4000,7 +4050,7 @@ and genSigTypeDefn astContext (SigTypeDef (ats, px, ao, tds, tcs, tdr, ms, s, pr +> unindent | SigExceptionRepr (SigExceptionDefRepr (ats, px, ao, uc)) -> genExceptionBody astContext ats px ao uc - |> genTriviaFor TypeDefnSig_ fullRange + |> genTriviaFor SynTypeDefnSig_ fullRange and genSigSimpleRecord tdr ms ao' fs astContext = // the typeName is already printed @@ -4044,7 +4094,7 @@ and genMemberSig astContext node = | SynMemberSig.NestedType (_, r) -> r, SynMemberSig_NestedType match node with - | MSMember (Val (ats, px, ao, s, _, t, vi, isInline, ValTyparDecls (tds, _, tcs)), mf) -> + | MSMember (Val (ats, px, ao, s, _, t, vi, isInline, tds, _), mf) -> let (FunType namedArgs) = (t, vi) let isFunctionProperty = @@ -4061,8 +4111,7 @@ and genMemberSig astContext node = range +> ifElse isInline (!- "inline ") sepNone +> opt sepSpace ao genAccess - +> ifElse (s = "``new``") (!- "new") (!-s) - +> genTypeParamPostfix astContext tds tcs + +> genTypeAndParam astContext (if s = "``new``" then "new" else s) tds [] +> sepColonWithSpacesFixed +> ifElse (List.isNotEmpty namedArgs) @@ -4120,9 +4169,9 @@ and genTypeDefKind node = | TCSimple TCRecord -> sepNone | TCSimple TCUnion -> sepNone | TCSimple TCAbbrev -> sepNone - | TCSimple TCHiddenRepr -> sepNone + | TCSimple TCOpaque -> sepNone | TCSimple TCAugmentation -> sepNone - | TCSimple TCILAssemblyCode -> sepNone + | TCSimple TCIL -> sepNone | TCDelegate _ -> sepNone and genExceptionBody astContext ats px ao uc = @@ -4167,7 +4216,7 @@ and genUnionCase astContext (hasVerticalBar: bool) (UnionCase (ats, px, _, s, Un +> genOnelinerAttributes astContext ats -- s +> onlyIf (List.isNotEmpty fs) (expressionFitsOnRestOfLine shortExpr longExpr) - |> genTriviaFor UnionCase_ node.Range + |> genTriviaFor SynUnionCase_ node.Range and genEnumCase astContext (EnumCase (ats, px, _, (_, _)) as node) = let genCase (ctx: Context) = @@ -4175,7 +4224,7 @@ and genEnumCase astContext (EnumCase (ats, px, _, (_, _)) as node) = match node with | EnumCase (_, _, identInAST, (c, r)) -> let triviaNode = - Map.tryFindOrEmptyList EnumCase_ ctx.TriviaMainNodes + Map.tryFindOrEmptyList SynEnumCase_ ctx.TriviaMainNodes |> List.tryFind (fun tn -> RangeHelpers.rangeEq tn.Range r) match triviaNode with @@ -4204,20 +4253,21 @@ and genEnumCase astContext (EnumCase (ats, px, _, (_, _)) as node) = and genField astContext prefix (Field (ats, px, ao, isStatic, isMutable, t, so) as node) = let range = match node with - | SynField.Field (_, _, _, _, _, _, _, range) -> range + | SynField (_, _, _, _, _, _, _, range) -> range // Being protective on union case declaration let t = genType astContext astContext.IsUnionField t genPreXmlDoc px +> genAttributes astContext ats + +> genAfterAttributesBefore SynField_AfterAttributesBeforeIdentifier node.AfterAttributesBeforeIdentifier +> ifElse isStatic (!- "static ") sepNone -- prefix +> ifElse isMutable (!- "mutable ") sepNone +> opt sepSpace ao genAccess +> opt sepColon so (!-) +> t - |> genTriviaFor Field_ range + |> genTriviaFor SynField_ range and genType astContext outerBracket t = let rec loop current = @@ -4536,7 +4586,7 @@ and genClause astContext hasBar (Clause (p, e, eo) as ce) = genTriviaBeforeClausePipe p.Range +> (onlyIf hasBar sepBar +> patAndBody - |> genTriviaFor SynMatchClause_Clause ce.Range) + |> genTriviaFor SynMatchClause_ ce.Range) and genClauses astContext cs = col sepNln cs (genClause astContext true) @@ -4550,9 +4600,6 @@ and genMemberDefnList astContext nodes = match nodes with | [] -> finalContinuation [] | PropertyWithGetSetMemberDefn (gs, rest) -> - let attrs = - getRangesFromAttributesFromSynBinding (fst gs) - let rangeOfFirstMember = List.head nodes |> fun m -> m.Range let expr = @@ -4560,7 +4607,7 @@ and genMemberDefnList astContext nodes = +> genPropertyWithGetSet astContext gs (Some rangeOfFirstMember) let sepNln = - sepNlnConsideringTriviaContentBeforeWithAttributesFor SynMemberDefn_Member rangeOfFirstMember attrs + sepNlnConsideringTriviaContentBeforeForMainNode SynMemberDefn_Member rangeOfFirstMember collectItems rest @@ -4568,13 +4615,10 @@ and genMemberDefnList astContext nodes = ColMultilineItem(expr, sepNln) :: restItems |> finalContinuation) | m :: rest -> - let attrs = - getRangesFromAttributesFromSynMemberDefinition m - let expr = genMemberDefn astContext m let sepNln = - sepNlnConsideringTriviaContentBeforeWithAttributesFor (synMemberDefnToFsAstType m) m.Range attrs + sepNlnConsideringTriviaContentBeforeForMainNode (synMemberDefnToFsAstType m) m.Range collectItems rest @@ -4706,14 +4750,14 @@ and genMemberDefn astContext node = |> List.map (fun andBinding -> let expr = - enterNodeFor (synBindingToFsAstType b) andBinding.RangeOfBindingAndRhs + enterNodeFor (synBindingToFsAstType b) andBinding.RangeOfBindingWithRhs +> genLetBinding { astContext with IsFirstChild = false } "and " andBinding ColMultilineItem( expr, sepNlnConsideringTriviaContentBeforeForMainNode - NormalBinding_ - andBinding.RangeOfBindingAndRhs + SynBindingKind_Normal + andBinding.RangeOfBindingWithRhs )) ColMultilineItem(genLetBinding { astContext with IsFirstChild = true } prefix b, sepNone) @@ -4759,7 +4803,7 @@ and genMemberDefn astContext node = -- genPropertyKind (not isFunctionProperty) mk ) - | MDAbstractSlot (ats, px, ao, s, t, vi, ValTyparDecls (tds, _, tcs), MFMemberFlags mk) -> + | MDAbstractSlot (ats, px, ao, s, t, vi, ValTyparDecls (tds, _), MFMemberFlags mk) -> let (FunType namedArgs) = (t, vi) let isFunctionProperty = @@ -4788,7 +4832,7 @@ and genMemberDefn astContext node = +> genAttributes astContext ats +> opt sepSpace ao genAccess +> genAbstractMemberKeyword - +> genTypeParamPostfix astContext tds tcs + +> genTypeParamPostfix astContext tds +> sepColonWithSpacesFixed +> autoIndentAndNlnIfExpressionExceedsPageWidth (genTypeList astContext namedArgs) -- genPropertyKind (not isFunctionProperty) mk @@ -4873,17 +4917,18 @@ and genPat astContext pat = +> sepColon +> atCurrentColumnIndent (genType astContext false t)) - | PatNamed (ao, PatNullary PatWild, s) -> + | PatNamed (ao, s) -> opt sepSpace ao genAccess +> infixOperatorFromTrivia pat.Range s - | PatNamed (ao, p, s) -> - opt sepSpace ao genAccess +> genPat astContext p - -- sprintf " as %s" s + | PatAs (p1, p2, r) -> + genPat astContext p1 -- " as " + +> genPat astContext p2 + |> genTriviaFor SynPat_As r | PatLongIdent (ao, s, ps, tpso) -> let aoc = opt sepSpace ao genAccess let tpsoc = - opt sepNone tpso (fun (ValTyparDecls (tds, _, tcs)) -> genTypeParamPostfix astContext tds tcs) + opt sepNone tpso (fun (ValTyparDecls (tds, _)) -> genTypeParamPostfix astContext tds) // Override escaped new keyword let s = if s = "``new``" then "new" else s @@ -5030,8 +5075,9 @@ and genPat astContext pat = and genSynBindingFunction (astContext: ASTContext) (isMemberDefinition: bool) - (px: FSharp.Compiler.XmlDoc.PreXmlDoc) + (px: PreXmlDoc) (ats: SynAttributes) + (afterAttributesBeforeHeadPattern: Range option) (pref: Context -> Context) (ao: SynAccess option) (isInline: bool) @@ -5065,10 +5111,7 @@ and genSynBindingFunction let genFunctionName = getIndentBetweenTicksFromSynPat patRange functionName - +> opt - sepNone - genericTypeParameters - (fun (ValTyparDecls (tds, _, tcs)) -> genTypeParamPostfix astContext tds tcs) + +> opt sepNone genericTypeParameters (fun (ValTyparDecls (tds, _)) -> genTypeParamPostfix astContext tds) let genSignature = let rangeBetweenBindingPatternAndExpression = @@ -5112,7 +5155,8 @@ and genSynBindingFunction +> unindent) ctx - expressionFitsOnRestOfLine short long + genAfterAttributesBefore SynBinding_AfterAttributes_BeforeHeadPattern afterAttributesBeforeHeadPattern + +> expressionFitsOnRestOfLine short long let body (ctx: Context) = genExprKeepIndentInBranch astContext e ctx @@ -5131,8 +5175,9 @@ and genSynBindingFunction and genSynBindingFunctionWithReturnType (astContext: ASTContext) (isMemberDefinition: bool) - (px: FSharp.Compiler.XmlDoc.PreXmlDoc) + (px: PreXmlDoc) (ats: SynAttributes) + (afterAttributesBeforeHeadPattern: Range option) (pref: Context -> Context) (ao: SynAccess option) (isInline: bool) @@ -5168,10 +5213,7 @@ and genSynBindingFunctionWithReturnType let genFunctionName = getIndentBetweenTicksFromSynPat patRange functionName - +> opt - sepNone - genericTypeParameters - (fun (ValTyparDecls (tds, _, tcs)) -> genTypeParamPostfix astContext tds tcs) + +> opt sepNone genericTypeParameters (fun (ValTyparDecls (tds, _)) -> genTypeParamPostfix astContext tds) let genReturnType isFixed = let genMetadataAttributes = @@ -5223,7 +5265,8 @@ and genSynBindingFunctionWithReturnType +> unindent) ctx - expressionFitsOnRestOfLine short long + genAfterAttributesBefore SynBinding_AfterAttributes_BeforeHeadPattern afterAttributesBeforeHeadPattern + +> expressionFitsOnRestOfLine short long let body = genExprKeepIndentInBranch astContext e @@ -5240,7 +5283,7 @@ and genSynBindingFunctionWithReturnType and genLetBindingDestructedTuple (astContext: ASTContext) - (px: FSharp.Compiler.XmlDoc.PreXmlDoc) + (px: PreXmlDoc) (ats: SynAttributes) (pref: string) (ao: SynAccess option) @@ -5288,8 +5331,9 @@ and genLetBindingDestructedTuple and genSynBindingValue (astContext: ASTContext) - (px: FSharp.Compiler.XmlDoc.PreXmlDoc) + (px: PreXmlDoc) (ats: SynAttributes) + (afterAttributesBeforeHeadPattern: Range option) (pref: Context -> Context) (ao: SynAccess option) (isInline: bool) @@ -5348,7 +5392,8 @@ and genSynBindingValue genPreXmlDoc px +> genAttrIsFirstChild +> leadingExpressionIsMultiline - (genPref + (genAfterAttributesBefore SynBinding_AfterAttributes_BeforeHeadPattern afterAttributesBeforeHeadPattern + +> genPref +> afterLetKeyword +> sepSpace +> genValueName @@ -5378,6 +5423,9 @@ and genParenTupleWithIndentAndNewlines (astContext: ASTContext) (ps: SynPat list +> sepCloseT |> genTriviaFor SynPat_Paren pr +and genAfterAttributesBefore (astType: FsAstType) (r: Range option) : Context -> Context = + optSingle (fun r -> genTriviaFor astType r id) r + and collectMultilineItemForSynExprKeepIndent (astContext: ASTContext) (inKeyWordTrivia: TriviaNode list) @@ -5532,15 +5580,15 @@ and genConst (c: SynConst) (r: Range) = | SynConst.UInt64 _ | SynConst.UIntPtr _ | SynConst.UserNum _ -> genConstNumber c r - | SynConst.String (s, r) -> + | SynConst.String (s, _, r) -> + // TODO: take string kind into account fun (ctx: Context) -> let trivia = Map.tryFindOrEmptyList SynConst_String ctx.TriviaMainNodes |> List.tryFind (fun tv -> RangeHelpers.rangeEq tv.Range r) match trivia with - | Some ({ ContentItself = Some (StringContent sc) } as tn) - | Some ({ ContentItself = Some (KeywordString sc) } as tn) -> + | Some ({ ContentItself = Some (StringContent sc) } as tn) -> printContentBefore tn +> !-sc +> printContentAfter tn @@ -5581,26 +5629,21 @@ and genConst (c: SynConst) (r: Range) = !-(sprintf "\'%s\'" escapedChar) expr ctx - | SynConst.Bytes (bytes, r) -> + | SynConst.Bytes (bytes, _, r) -> + // TODO: take kind into account genConstBytes bytes r |> genTriviaFor SynConst_Bytes r - | SynConst.Measure (c, m) -> + | SynConst.Measure (c, numberRange, m) -> let measure = match m with | Measure m -> !-m - let genNumber (ctx: Context) = - match m with - | SynMeasure.Seq (_, mr) -> - let numberRange = - ctx.MkRange r.Start (Pos.mkPos mr.StartLine (mr.StartColumn - 1)) - - genConstNumber c numberRange ctx - | _ -> genConstNumber c r ctx + let genNumber (ctx: Context) = genConstNumber c numberRange ctx genNumber +> measure +> leaveNodeTokenByName r GREATER + | SynConst.SourceIdentifier (c, _, r) -> !-c |> genTriviaFor SynConst_SourceIdentifier r and genConstNumber (c: SynConst) (r: Range) = fun (ctx: Context) -> diff --git a/src/Fantomas/Context.fs b/src/Fantomas/Context.fs index 46333fec70..93f8a1b81b 100644 --- a/src/Fantomas/Context.fs +++ b/src/Fantomas/Context.fs @@ -3,8 +3,8 @@ module Fantomas.Context open System open FSharp.Compiler.Text open FSharp.Compiler.Text.Range -open FSharp.Compiler.Text.Pos -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.Text.Position +open FSharp.Compiler.Syntax open Fantomas open Fantomas.FormatConfig open Fantomas.TriviaTypes @@ -1177,8 +1177,7 @@ let internal printTriviaContent (c: TriviaContent) (ctx: Context) = | IdentOperatorAsWord _ | IdentBetweenTicks _ | CharContent _ - | EmbeddedIL _ - | KeywordString _ -> sepNone // don't print here but somewhere in CodePrinter + | EmbeddedIL _ -> sepNone // don't print here but somewhere in CodePrinter | Directive s | Comment (LineCommentOnSingleLine s) -> (ifElse addNewline sepNlnForTrivia sepNone) @@ -1308,37 +1307,6 @@ let internal sepNlnConsideringTriviaContentBeforeForToken (fsTokenKey: FsTokenTy let internal sepNlnConsideringTriviaContentBeforeForMainNode (mainNode: FsAstType) (range: Range) = sepConsideringTriviaContentBeforeForMainNode sepNln mainNode range -let internal sepNlnConsideringTriviaContentBeforeWithAttributesFor - (mainNode: FsAstType) - (ownRange: Range) - (attributeRanges: Range seq) - (ctx: Context) - = - let triviaNodeBeforeMain = - match Map.tryFind mainNode ctx.TriviaMainNodes with - | Some triviaNodes -> - List.exists - (fun { Range = r; ContentBefore = cb } -> - hasPrintableContent cb - && RangeHelpers.rangeEq r ownRange) - triviaNodes - | None -> false - - let triviaNodeBeforeAttribute = - match Map.tryFind SynAttributeList_ ctx.TriviaMainNodes with - | Some attributeNodes -> - List.exists - (fun { Range = r; ContentBefore = cb } -> - hasPrintableContent cb - && Seq.exists (RangeHelpers.rangeEq r) attributeRanges) - attributeNodes - | None -> false - - if triviaNodeBeforeMain || triviaNodeBeforeAttribute then - ctx - else - sepNln ctx - let internal sepNlnForEmptyModule (mainNode: FsAstType) (moduleRange: Range) (ctx: Context) = match Map.tryFind mainNode ctx.TriviaMainNodes with | Some nodes -> @@ -1366,7 +1334,7 @@ let internal sepNlnForEmptyNamespace (namespaceRange: Range) ctx = | _ -> sepNln ctx let internal sepNlnTypeAndMembers - (lastPositionBeforeMembers: Pos) + (lastPositionBeforeMembers: Position) (firstMemberRange: Range) (mainNodeType: FsAstType) (ctx: Context) diff --git a/src/Fantomas/SourceParser.fs b/src/Fantomas/SourceParser.fs index 1c8579577c..b5e5e6d682 100644 --- a/src/Fantomas/SourceParser.fs +++ b/src/Fantomas/SourceParser.fs @@ -1,13 +1,12 @@ module internal Fantomas.SourceParser open System -open FSharp.Compiler.SourceCodeServices.PrettyNaming -open FSharp.Compiler.SourceCodeServices.FSharpKeywords +open FSharp.Compiler.Syntax +open FSharp.Compiler.Syntax.PrettyNaming +open FSharp.Compiler.Tokenization.FSharpKeywords open FSharp.Compiler.Text -open FSharp.Compiler.SyntaxTree -open FSharp.Compiler.XmlDoc +open FSharp.Compiler.Xml open Fantomas -open Fantomas.AstExtensions open Fantomas.TriviaTypes /// Don't put space before and after these operators @@ -176,12 +175,12 @@ let (|OpNameFull|) (x: Identifier) = // Type params -let inline (|Typar|) (SynTypar.Typar (Ident s, req, _)) = +let inline (|Typar|) (SynTypar.SynTypar (Ident s, req, _)) = match req with - | NoStaticReq -> (s, false) - | HeadTypeStaticReq -> (s, true) + | TyparStaticReq.None -> (s, false) + | TyparStaticReq.HeadType -> (s, true) -let inline (|ValTyparDecls|) (SynValTyparDecls (tds, b, tcs)) = (tds, b, tcs) +let inline (|ValTyparDecls|) (SynValTyparDecls (tds, b)) = (tds, b) // Literals @@ -215,7 +214,7 @@ let (|Measure|) x = let (|String|_|) e = match e with - | SynExpr.Const (SynConst.String (s, _), _) -> Some s + | SynExpr.Const (SynConst.String (s, _, _), _) -> Some s | _ -> None let (|Unit|_|) = @@ -321,11 +320,8 @@ let (|Types|_|) = let (|NestedModule|_|) = function - | SynModuleDecl.NestedModule (SynComponentInfo.ComponentInfo (ats, _, _, LongIdent s, px, _, ao, _), - isRecursive, - xs, - _, - _) -> Some(ats, px, ao, s, isRecursive, xs) + | SynModuleDecl.NestedModule (SynComponentInfo (ats, _, _, LongIdent s, px, _, ao, _), isRecursive, xs, _, _) -> + Some(ats, px, ao, s, isRecursive, xs) | _ -> None let (|Exception|_|) = @@ -372,7 +368,7 @@ let (|SigTypes|_|) = let (|SigNestedModule|_|) = function - | SynModuleSigDecl.NestedModule (SynComponentInfo.ComponentInfo (ats, _, _, LongIdent s, px, _, ao, _), _, xs, _) -> + | SynModuleSigDecl.NestedModule (SynComponentInfo (ats, _, _, LongIdent s, px, _, ao, _), _, xs, _) -> Some(ats, px, ao, s, xs) | _ -> None @@ -397,17 +393,18 @@ let (|SigExceptionDef|) = (ats, px, ao, uc, ms) -let (|UnionCase|) (SynUnionCase.UnionCase (ats, Ident s, uct, px, ao, _)) = (ats, px, ao, s, uct) +let (|UnionCase|) (SynUnionCase (ats, Ident s, uct, px, ao, _)) = (ats, px, ao, s, uct) let (|UnionCaseType|) = function - | SynUnionCaseType.UnionCaseFields fs -> fs - | SynUnionCaseType.UnionCaseFullType _ -> failwith "UnionCaseFullType should be used internally only." + | SynUnionCaseKind.Fields fs -> fs + | SynUnionCaseKind.FullType _ -> failwith "UnionCaseFullType should be used internally only." -let (|Field|) (SynField.Field (ats, isStatic, ido, t, isMutable, px, ao, _)) = +let (|Field|) (SynField (ats, isStatic, ido, t, isMutable, px, ao, _)) = (ats, px, ao, isStatic, isMutable, t, Option.map (|Ident|) ido) -let (|EnumCase|) (SynEnumCase.EnumCase (ats, Ident s, c, px, r)) = (ats, px, s, (c, r)) +// TODO: use added range in CodePrinter +let (|EnumCase|) (SynEnumCase (ats, Ident s, c, _, px, r)) = (ats, px, s, (c, r)) // Member definitions (11 cases) @@ -458,7 +455,7 @@ let (|MDLetBindings|_|) = let (|MDAbstractSlot|_|) = function - | SynMemberDefn.AbstractSlot (ValSpfn (ats, Ident s, tds, t, vi, _, _, px, ao, _, _), mf, _) -> + | SynMemberDefn.AbstractSlot (SynValSig (ats, Ident s, tds, t, vi, _, _, px, ao, _, _), mf, _) -> Some(ats, px, ao, s, t, vi, tds, mf) | _ -> None @@ -475,43 +472,43 @@ let (|MDAutoProperty|_|) = // Interface impl -let (|InterfaceImpl|) (SynInterfaceImpl.InterfaceImpl (t, bs, range)) = (t, bs, range) +let (|InterfaceImpl|) (SynInterfaceImpl (t, bs, range)) = (t, bs, range) // Bindings let (|PropertyGet|_|) = function - | MemberKind.PropertyGet -> Some() + | SynMemberKind.PropertyGet -> Some() | _ -> None let (|PropertySet|_|) = function - | MemberKind.PropertySet -> Some() + | SynMemberKind.PropertySet -> Some() | _ -> None let (|PropertyGetSet|_|) = function - | MemberKind.PropertyGetSet -> Some() + | SynMemberKind.PropertyGetSet -> Some() | _ -> None -let (|MFProperty|_|) (mf: MemberFlags) = +let (|MFProperty|_|) (mf: SynMemberFlags) = match mf.MemberKind with - | MemberKind.PropertyGet - | MemberKind.PropertySet - | MemberKind.PropertyGetSet as mk -> Some mk + | SynMemberKind.PropertyGet + | SynMemberKind.PropertySet + | SynMemberKind.PropertyGetSet as mk -> Some mk | _ -> None -let (|MFMemberFlags|) (mf: MemberFlags) = mf.MemberKind +let (|MFMemberFlags|) (mf: SynMemberFlags) = mf.MemberKind /// This pattern finds out which keyword to use -let (|MFMember|MFStaticMember|MFConstructor|MFOverride|) (mf: MemberFlags) = +let (|MFMember|MFStaticMember|MFConstructor|MFOverride|) (mf: SynMemberFlags) = match mf.MemberKind with - | MemberKind.ClassConstructor - | MemberKind.Constructor -> MFConstructor() - | MemberKind.Member - | MemberKind.PropertyGet - | MemberKind.PropertySet - | MemberKind.PropertyGetSet as mk -> + | SynMemberKind.ClassConstructor + | SynMemberKind.Constructor -> MFConstructor() + | SynMemberKind.Member + | SynMemberKind.PropertyGet + | SynMemberKind.PropertySet + | SynMemberKind.PropertyGetSet as mk -> if mf.IsInstance && mf.IsOverrideOrExplicitImpl then MFOverride mk elif mf.IsInstance then @@ -521,14 +518,14 @@ let (|MFMember|MFStaticMember|MFConstructor|MFOverride|) (mf: MemberFlags) = let (|DoBinding|LetBinding|MemberBinding|PropertyBinding|ExplicitCtor|) = function - | SynBinding.Binding (ao, _, _, _, ats, px, SynValData (Some MFConstructor, _, ido), pat, _, expr, _, _) -> + | SynBinding (ao, _, _, _, ats, px, SynValData (Some MFConstructor, _, ido), pat, _, expr, _, _) -> ExplicitCtor(ats, px, ao, pat, expr, Option.map (|Ident|) ido) - | SynBinding.Binding (ao, _, isInline, _, ats, px, SynValData (Some (MFProperty _ as mf), _, _), pat, _, expr, _, _) -> + | SynBinding (ao, _, isInline, _, ats, px, SynValData (Some (MFProperty _ as mf), _, _), pat, _, expr, _, _) -> PropertyBinding(ats, px, ao, isInline, mf, pat, expr) - | SynBinding.Binding (ao, _, isInline, _, ats, px, SynValData (Some mf, synValInfo, _), pat, _, expr, _, _) -> + | SynBinding (ao, _, isInline, _, ats, px, SynValData (Some mf, synValInfo, _), pat, _, expr, _, _) -> MemberBinding(ats, px, ao, isInline, mf, pat, expr, synValInfo) - | SynBinding.Binding (_, DoBinding, _, _, ats, px, _, _, _, expr, _, _) -> DoBinding(ats, px, expr) - | SynBinding.Binding (ao, _, isInline, isMutable, attrs, px, SynValData (_, valInfo, _), pat, _, expr, _, _) -> + | SynBinding (_, SynBindingKind.Do, _, _, ats, px, _, _, _, expr, _, _) -> DoBinding(ats, px, expr) + | SynBinding (ao, _, isInline, isMutable, attrs, px, SynValData (_, valInfo, _), pat, _, expr, _, _) -> LetBinding(attrs, px, ao, isInline, isMutable, pat, expr, valInfo) // Expressions (55 cases, lacking to handle 11 cases) @@ -639,7 +636,7 @@ let (|TypeApp|_|) = Range.mkRange range.FileName e.Range.End ts.Head.Range.Start let greaterThanRange = - Range.mkRange range.FileName (Pos.mkPos range.EndLine (range.EndColumn - 1)) range.End + Range.mkRange range.FileName (Position.mkPos range.EndLine (range.EndColumn - 1)) range.End Some(e, lessThanRange, ts, greaterThanRange) | _ -> None @@ -1164,9 +1161,14 @@ let (|PatTyped|_|) = | SynPat.Typed (p, t, _) -> Some(p, t) | _ -> None -let (|PatNamed|_|) = +let (|PatNamed|_|) pat = + match pat with + | SynPat.Named (IdentOrKeyword (OpNameFullInPattern (s, _)), _, ao, _) -> Some(ao, s) + | _ -> None + +let (|PatAs|_|) = function - | SynPat.Named (p, IdentOrKeyword (OpNameFullInPattern (s, _)), _, ao, _) -> Some(ao, p, s) + | SynPat.As (p1, p2, r) -> Some(p1, p2, r) | _ -> None let (|PatLongIdent|_|) = @@ -1244,9 +1246,9 @@ let (|SimplePats|SPSTyped|) = let (|RecordField|) = function - | SynField.Field (ats, _, ido, _, _, px, ao, _) -> (ats, px, ao, Option.map (|Ident|) ido) + | SynField (ats, _, ido, _, _, px, ao, _) -> (ats, px, ao, Option.map (|Ident|) ido) -let (|Clause|) (SynMatchClause.Clause (p, eo, e, _, _)) = (p, e, eo) +let (|Clause|) (SynMatchClause (p, eo, e, _, _)) = (p, e, eo) /// Process compiler-generated matches in an appropriate way let rec private skipGeneratedLambdas expr = @@ -1256,7 +1258,7 @@ let rec private skipGeneratedLambdas expr = and skipGeneratedMatch expr = match expr with - | SynExpr.Match (_, _, [ SynMatchClause.Clause (_, _, innerExpr, _, _) as clause ], matchRange) when + | SynExpr.Match (_, _, [ SynMatchClause.SynMatchClause (_, _, innerExpr, _, _) as clause ], matchRange) when matchRange.Start = clause.Range.Start -> skipGeneratedMatch innerExpr @@ -1323,41 +1325,33 @@ type TypeDefnKindSingle = | TCRecord | TCUnion | TCAbbrev - | TCHiddenRepr + | TCOpaque | TCAugmentation - | TCILAssemblyCode + | TCIL let (|TCSimple|TCDelegate|) = function - | TyconUnspecified -> TCSimple TCUnspecified - | TyconClass -> TCSimple TCClass - | TyconInterface -> TCSimple TCInterface - | TyconStruct -> TCSimple TCStruct - | TyconRecord -> TCSimple TCRecord - | TyconUnion -> TCSimple TCUnion - | TyconAbbrev -> TCSimple TCAbbrev - | TyconHiddenRepr -> TCSimple TCHiddenRepr - | TyconAugmentation -> TCSimple TCAugmentation - | TyconILAssemblyCode -> TCSimple TCILAssemblyCode - | TyconDelegate (t, vi) -> TCDelegate(t, vi) - -let (|TypeDef|) - (SynTypeDefn.TypeDefn (SynComponentInfo.ComponentInfo (ats, tds, tcs, LongIdent s, px, preferPostfix, ao, _), - tdr, - ms, - _)) - = + | SynTypeDefnKind.Unspecified -> TCSimple TCUnspecified + | SynTypeDefnKind.Class -> TCSimple TCClass + | SynTypeDefnKind.Interface -> TCSimple TCInterface + | SynTypeDefnKind.Struct -> TCSimple TCStruct + | SynTypeDefnKind.Record -> TCSimple TCRecord + | SynTypeDefnKind.Union -> TCSimple TCUnion + | SynTypeDefnKind.Abbrev -> TCSimple TCAbbrev + | SynTypeDefnKind.Opaque -> TCSimple TCOpaque + | SynTypeDefnKind.Augmentation -> TCSimple TCAugmentation + | SynTypeDefnKind.IL -> TCSimple TCIL + | SynTypeDefnKind.Delegate (t, vi) -> TCDelegate(t, vi) + +let (|TypeDef|) (SynTypeDefn (SynComponentInfo (ats, tds, tcs, LongIdent s, px, preferPostfix, ao, _), tdr, ms, _, _)) = (ats, px, ao, tds, tcs, tdr, ms, s, preferPostfix) let (|SigTypeDef|) - (SynTypeDefnSig.TypeDefnSig (SynComponentInfo.ComponentInfo (ats, tds, tcs, LongIdent s, px, preferPostfix, ao, _), - tdr, - ms, - _) as node) + (SynTypeDefnSig (SynComponentInfo (ats, tds, tcs, LongIdent s, px, preferPostfix, ao, _), tdr, ms, range)) = - (ats, px, ao, tds, tcs, tdr, ms, s, preferPostfix, node.FullRange) + (ats, px, ao, tds, tcs, tdr, ms, s, preferPostfix, range) -let (|TyparDecl|) (SynTyparDecl.TyparDecl (ats, tp)) = (ats, tp) +let (|TyparDecl|) (SynTyparDecl (ats, tp)) = (ats, tp) // Types (15 cases) @@ -1477,15 +1471,15 @@ type SingleTyparConstraintKind = let (|TyparSingle|TyparDefaultsToType|TyparSubtypeOfType|TyparSupportsMember|TyparIsEnum|TyparIsDelegate|) = function - | WhereTyparIsValueType (tp, _) -> TyparSingle(TyparIsValueType, tp) - | WhereTyparIsReferenceType (tp, _) -> TyparSingle(TyparIsReferenceType, tp) - | WhereTyparIsUnmanaged (tp, _) -> TyparSingle(TyparIsUnmanaged, tp) - | WhereTyparSupportsNull (tp, _) -> TyparSingle(TyparSupportsNull, tp) - | WhereTyparIsComparable (tp, _) -> TyparSingle(TyparIsComparable, tp) - | WhereTyparIsEquatable (tp, _) -> TyparSingle(TyparIsEquatable, tp) - | WhereTyparDefaultsToType (tp, t, _) -> TyparDefaultsToType(tp, t) - | WhereTyparSubtypeOfType (tp, t, _) -> TyparSubtypeOfType(tp, t) - | WhereTyparSupportsMember (tps, msg, _) -> + | SynTypeConstraint.WhereTyparIsValueType (tp, _) -> TyparSingle(TyparIsValueType, tp) + | SynTypeConstraint.WhereTyparIsReferenceType (tp, _) -> TyparSingle(TyparIsReferenceType, tp) + | SynTypeConstraint.WhereTyparIsUnmanaged (tp, _) -> TyparSingle(TyparIsUnmanaged, tp) + | SynTypeConstraint.WhereTyparSupportsNull (tp, _) -> TyparSingle(TyparSupportsNull, tp) + | SynTypeConstraint.WhereTyparIsComparable (tp, _) -> TyparSingle(TyparIsComparable, tp) + | SynTypeConstraint.WhereTyparIsEquatable (tp, _) -> TyparSingle(TyparIsEquatable, tp) + | SynTypeConstraint.WhereTyparDefaultsToType (tp, t, _) -> TyparDefaultsToType(tp, t) + | SynTypeConstraint.WhereTyparSubtypeOfType (tp, t, _) -> TyparSubtypeOfType(tp, t) + | SynTypeConstraint.WhereTyparSupportsMember (tps, msg, _) -> TyparSupportsMember( List.choose (function @@ -1494,8 +1488,8 @@ let (|TyparSingle|TyparDefaultsToType|TyparSubtypeOfType|TyparSupportsMember|Typ tps, msg ) - | WhereTyparIsEnum (tp, ts, _) -> TyparIsEnum(tp, ts) - | WhereTyparIsDelegate (tp, ts, _) -> TyparIsDelegate(tp, ts) + | SynTypeConstraint.WhereTyparIsEnum (tp, ts, _) -> TyparIsEnum(tp, ts) + | SynTypeConstraint.WhereTyparIsDelegate (tp, ts, _) -> TyparIsDelegate(tp, ts) let (|MSMember|MSInterface|MSInherit|MSValField|MSNestedType|) = function @@ -1506,9 +1500,19 @@ let (|MSMember|MSInterface|MSInherit|MSValField|MSNestedType|) = | SynMemberSig.NestedType (tds, _) -> MSNestedType tds let (|Val|) - (ValSpfn (ats, (IdentOrKeyword (OpNameFullInPattern (s, _)) as ident), tds, t, vi, isInline, _, px, ao, _, _)) + (SynValSig (ats, + (IdentOrKeyword (OpNameFullInPattern (s, _)) as ident), + SynValTyparDecls (typars, _), + t, + vi, + isInline, + _, + px, + ao, + _, + range)) = - (ats, px, ao, s, ident.idRange, t, vi, isInline, tds) + (ats, px, ao, s, ident.idRange, t, vi, isInline, typars, range) // Misc @@ -1554,55 +1558,6 @@ let (|Extern|_|) = None | _ -> None -let private collectAttributesRanges (a: SynAttributes) = - [ yield! (List.map (fun (al: SynAttributeList) -> al.Range) a) - yield! (List.collect (fun a -> a.Attributes |> List.map (fun a -> a.Range)) a) ] - -let getRangesFromAttributesFromModuleDeclaration (mdl: SynModuleDecl) : Range list = - match mdl with - | SynModuleDecl.Let (_, bindings, _) -> - bindings - |> List.collect (fun (Binding (_, _, _, _, attrs, _, _, _, _, _, _, _)) -> collectAttributesRanges attrs) - | SynModuleDecl.Types (types, _) -> - types - |> List.collect - (fun t -> - match t with - | SynTypeDefn.TypeDefn (SynComponentInfo.ComponentInfo (attrs, _, _, _, _, _, _, _), _, _, _) -> - collectAttributesRanges attrs) - | SynModuleDecl.NestedModule (SynComponentInfo.ComponentInfo (attrs, _, _, _, _, _, _, _), _, _, _, _) -> - collectAttributesRanges attrs - | _ -> List.empty - -let getRangesFromAttributesFromSynModuleSigDeclaration (sdl: SynModuleSigDecl) = - match sdl with - | SynModuleSigDecl.NestedModule (SynComponentInfo.ComponentInfo (attrs, _, _, _, _, _, _, _), _, _, _) - | SynModuleSigDecl.Types (SynTypeDefnSig.TypeDefnSig (SynComponentInfo.ComponentInfo (attrs, _, _, _, _, _, _, _), - _, - _, - _) :: _, - _) -> collectAttributesRanges attrs - | _ -> List.empty - -let getRangesFromAttributesFromSynTypeDefnSig (TypeDefnSig (comp, _, _, _)) = - match comp with - | SynComponentInfo.ComponentInfo (attrs, _, _, _, _, _, _, _) -> collectAttributesRanges attrs - -let getRangesFromAttributesFromSynBinding (sb: SynBinding) = - match sb with - | SynBinding.Binding (_, _, _, _, attrs, _, _, _, _, _, _, _) -> attrs |> List.map (fun a -> a.Range) - -let getRangesFromAttributesFromSynValSig (valSig: SynValSig) = - match valSig with - | SynValSig.ValSpfn (attrs, _, _, _, _, _, _, _, _, _, _) -> attrs |> List.map (fun a -> a.Range) - -let getRangesFromAttributesFromSynMemberDefinition (mdn: SynMemberDefn) = - match mdn with - | SynMemberDefn.Member (mb, _) -> getRangesFromAttributesFromSynBinding mb - | SynMemberDefn.AbstractSlot (valSig, _, _) -> getRangesFromAttributesFromSynValSig valSig - | SynMemberDefn.LetBindings (lb :: _, _, _, _) -> getRangesFromAttributesFromSynBinding lb - | _ -> [] - let rec (|UppercaseSynExpr|LowercaseSynExpr|) (synExpr: SynExpr) = let upperOrLower (v: string) = let isUpper = diff --git a/src/Fantomas/SourceTransformer.fs b/src/Fantomas/SourceTransformer.fs index a36d79e6a9..387ba7bf1c 100644 --- a/src/Fantomas/SourceTransformer.fs +++ b/src/Fantomas/SourceTransformer.fs @@ -1,6 +1,6 @@ module internal Fantomas.SourceTransformer -open FSharp.Compiler.SyntaxTree +open FSharp.Compiler.Syntax open FSharp.Compiler.Text open Fantomas.Context open Fantomas.SourceParser @@ -185,6 +185,7 @@ let synConstToFsAstType = | SynConst.Bytes _ -> SynConst_Bytes | SynConst.UInt16s _ -> SynConst_UInt16s | SynConst.Measure _ -> SynConst_Measure + | SynConst.SourceIdentifier _ -> SynConst_SourceIdentifier let rec synExprToFsAstType (expr: SynExpr) : FsAstType * Range = match expr with @@ -209,11 +210,11 @@ let rec synExprToFsAstType (expr: SynExpr) : FsAstType * Range = | SynExpr.LetOrUse (_, _, bs, e, _) -> match bs with | [] -> synExprToFsAstType e - | SynBinding.Binding (kind = kind) as b :: _ -> + | SynBinding (kind = kind) as b :: _ -> match kind with - | SynBindingKind.StandaloneExpression -> StandaloneExpression_, b.RangeOfBindingAndRhs - | SynBindingKind.NormalBinding -> NormalBinding_, b.RangeOfBindingAndRhs - | SynBindingKind.DoBinding -> DoBinding_, b.RangeOfBindingAndRhs + | SynBindingKind.StandaloneExpression -> SynBindingKind_StandaloneExpression, b.RangeOfBindingWithRhs + | SynBindingKind.Normal -> SynBindingKind_Normal, b.RangeOfBindingWithRhs + | SynBindingKind.Do -> SynBindingKind_Do, b.RangeOfBindingWithRhs | SynExpr.TryWith _ -> SynExpr_TryWith, expr.Range | SynExpr.YieldOrReturnFrom _ -> SynExpr_YieldOrReturnFrom, expr.Range | SynExpr.While _ -> SynExpr_While, expr.Range @@ -261,7 +262,7 @@ let rec synExprToFsAstType (expr: SynExpr) : FsAstType * Range = let synModuleSigDeclToFsAstType = function - | SynModuleSigDecl.Val _ -> ValSpfn_ + | SynModuleSigDecl.Val _ -> SynValSig_ | SynModuleSigDecl.Exception _ -> SynModuleSigDecl_Exception | SynModuleSigDecl.NestedModule _ -> SynModuleSigDecl_NestedModule | SynModuleSigDecl.Types _ -> SynModuleSigDecl_Types @@ -270,8 +271,8 @@ let synModuleSigDeclToFsAstType = | SynModuleSigDecl.NamespaceFragment _ -> SynModuleSigDecl_NamespaceFragment | SynModuleSigDecl.ModuleAbbrev _ -> SynModuleSigDecl_ModuleAbbrev -let synBindingToFsAstType (Binding (_, kind, _, _, _, _, _, _, _, _, _, _)) = +let synBindingToFsAstType (SynBinding (_, kind, _, _, _, _, _, _, _, _, _, _)) = match kind with - | SynBindingKind.StandaloneExpression -> StandaloneExpression_ - | SynBindingKind.NormalBinding -> NormalBinding_ - | SynBindingKind.DoBinding -> DoBinding_ + | SynBindingKind.StandaloneExpression -> SynBindingKind_StandaloneExpression + | SynBindingKind.Normal -> SynBindingKind_Normal + | SynBindingKind.Do -> SynBindingKind_Do diff --git a/src/Fantomas/TokenParser.fs b/src/Fantomas/TokenParser.fs index 660c42688e..82e540a29e 100644 --- a/src/Fantomas/TokenParser.fs +++ b/src/Fantomas/TokenParser.fs @@ -2,16 +2,17 @@ module internal Fantomas.TokenParser open System open System.Text +open FSharp.Compiler.Syntax +open FSharp.Compiler.Tokenization open Fantomas open Fantomas.TokenParserBoolExpr open Fantomas.TriviaTypes -open FSharp.Compiler.SourceCodeServices let private whiteSpaceTag = 4 let private lineCommentTag = 8 let private commentTag = 3 let private greaterTag = 160 -let private identTag = 191 +let private identTag = 192 // workaround for cases where tokenizer dont output "delayed" part of operator after ">." // See https://github.com/fsharp/FSharp.Compiler.Service/issues/874 @@ -793,12 +794,6 @@ let rec private (|HashTokens|_|) (tokens: Token list) = | _ -> Some(head :: tokensFromSameLine, rest) | _ -> None -let private (|KeywordString|_|) (token: Token) = - if token.TokenInfo.Tag = 192 then - Some token - else - None - let private (|BlockCommentTokens|_|) (tokens: Token list) = let rec collectTokens (rest: Token list) (finalContinuation: Token list -> Token list) : Token list * Token list = match rest with @@ -954,15 +949,6 @@ let rec private getTriviaFromTokensThemSelves getTriviaFromTokensThemSelves mkRange lastButOne lastToken rest info - | KeywordString ks :: rest -> - let range = getRangeBetween mkRange ks ks - - let info = - Trivia.Create(KeywordString(ks.Content)) range - |> List.prependItem foundTrivia - - getTriviaFromTokensThemSelves mkRange lastNonWhiteSpaceToken (Some ks) rest info - | KeywordOrOperatorToken koo :: rest -> let range = getRangeBetween mkRange koo koo diff --git a/src/Fantomas/Trivia.fs b/src/Fantomas/Trivia.fs index f99c36133c..10528367ae 100644 --- a/src/Fantomas/Trivia.fs +++ b/src/Fantomas/Trivia.fs @@ -1,12 +1,12 @@ module internal Fantomas.Trivia -open FSharp.Compiler.SourceCodeServices +open FSharp.Compiler.Text +open FSharp.Compiler.Syntax +open FSharp.Compiler.Tokenization open Fantomas open Fantomas.SourceParser open Fantomas.AstTransformer open Fantomas.TriviaTypes -open FSharp.Compiler.Text -open FSharp.Compiler.SyntaxTree let isMainNode (node: TriviaNode) = match node.Type with @@ -152,7 +152,7 @@ let private findConstNumberNodeOnLineAndColumn (nodes: TriviaNodeAssigner list) | MainNode SynConst_UserNum -> constantRange.StartLine = tn.Range.StartLine && constantRange.StartColumn = tn.Range.StartColumn - | MainNode EnumCase_ -> + | MainNode SynEnumCase_ -> tn.Range.EndLine = constantRange.EndLine && tn.Range.EndColumn = constantRange.EndColumn | _ -> false) @@ -224,25 +224,6 @@ let private findParsedHashOnLineAndEndswith (triviaNodes: TriviaNodeAssigner lis && t.Range.EndColumn >= endColumn | _ -> false) -// Only return the attributeList when the trivia is under it and above the AST node of which the attribute is a child node. -// f.ex. -// [] -// #if BAR -// let meh = () -// The trivia '#if BAR' should be linked to the [] attribute -// -// The reason for this is that the range of the attribute is not part of the range of the parent binding. -// This can lead to weird results when used in CodePrinter. -let private triviaBetweenAttributeAndParentBinding (triviaNodes: TriviaNodeAssigner list) line = - triviaNodes - |> List.tryFind - (fun tn -> - match tn.AttributeLinesBetweenParent with - | Some linesBetween -> - linesBetween + tn.Range.EndLine >= line - && line > tn.Range.EndLine - | _ -> false) - let private findASTNodeOfTypeThatContains (nodes: TriviaNodeAssigner list) typeName range = nodes |> List.filter @@ -265,29 +246,21 @@ let private addAllTriviaAsContentAfter (trivia: Trivia list) (singleNode: Trivia ContentAfter = contentAfter } |> List.singleton -let private addTriviaToTriviaNode - triviaBetweenAttributeAndParentBinding - (startOfSourceCode: int) - (triviaNodes: TriviaNodeAssigner list) - trivia - = +let private addTriviaToTriviaNode (startOfSourceCode: int) (triviaNodes: TriviaNodeAssigner list) trivia = match trivia with | { Item = Comment (LineCommentOnSingleLine _ as comment) Range = range } -> - match triviaBetweenAttributeAndParentBinding triviaNodes range.StartLine with - | Some _ as node -> updateTriviaNode (fun tn -> tn.ContentAfter.Add(Comment(comment))) triviaNodes node - | None -> - let nodeAfterLine = - findFirstNodeAfterLine triviaNodes range.StartLine + let nodeAfterLine = + findFirstNodeAfterLine triviaNodes range.StartLine - match nodeAfterLine with - | Some _ -> - nodeAfterLine - |> updateTriviaNode (fun tn -> tn.ContentBefore.Add(Comment(comment))) triviaNodes - | None -> - // try and find a node above - findNodeBeforeLineFromStart triviaNodes range.StartLine - |> updateTriviaNode (fun tn -> tn.ContentAfter.Add(Comment(comment))) triviaNodes + match nodeAfterLine with + | Some _ -> + nodeAfterLine + |> updateTriviaNode (fun tn -> tn.ContentBefore.Add(Comment(comment))) triviaNodes + | None -> + // try and find a node above + findNodeBeforeLineFromStart triviaNodes range.StartLine + |> updateTriviaNode (fun tn -> tn.ContentAfter.Add(Comment(comment))) triviaNodes | { Item = Comment (BlockComment (comment, _, _)) Range = range } -> @@ -331,25 +304,18 @@ let private addTriviaToTriviaNode // Newlines are only relevant if they occur after the first line of source code | { Item = Newline; Range = range } when (range.StartLine > startOfSourceCode) -> - match triviaBetweenAttributeAndParentBinding triviaNodes range.StartLine with - | Some _ as node -> updateTriviaNode (fun tn -> tn.ContentAfter.Add(Newline)) triviaNodes node - | _ -> - let nodeAfterLine = - findFirstNodeAfterLine triviaNodes range.StartLine + let nodeAfterLine = + findFirstNodeAfterLine triviaNodes range.StartLine - match nodeAfterLine with - | Some _ -> - nodeAfterLine - |> updateTriviaNode (fun tn -> tn.ContentBefore.Add(Newline)) triviaNodes - | None -> - // try and find a node above - findNodeBeforeLineFromStart triviaNodes range.StartLine - |> updateTriviaNode (fun tn -> tn.ContentAfter.Add(Newline)) triviaNodes + match nodeAfterLine with + | Some _ -> + nodeAfterLine + |> updateTriviaNode (fun tn -> tn.ContentBefore.Add(Newline)) triviaNodes + | None -> + // try and find a node above + findNodeBeforeLineFromStart triviaNodes range.StartLine + |> updateTriviaNode (fun tn -> tn.ContentAfter.Add(Newline)) triviaNodes - | { Item = KeywordString _ - Range = range } -> - findNodeForKeywordString triviaNodes range - |> updateTriviaNode (fun tn -> tn.ContentItself <- Some trivia.Item) triviaNodes | { Item = Keyword ({ Content = keyword } as kw) Range = range } when (keyword = "override" @@ -421,21 +387,21 @@ let private addTriviaToTriviaNode | { Item = Directive dc as directive Range = range } -> - match triviaBetweenAttributeAndParentBinding triviaNodes range.StartLine with - | Some _ as node -> updateTriviaNode (fun tn -> tn.ContentAfter.Add(directive)) triviaNodes node - | _ -> - match findFirstNodeAfterLine triviaNodes range.StartLine with - | Some _ as node -> updateTriviaNode (fun tn -> tn.ContentBefore.Add(directive)) triviaNodes node - | None -> - let findNode nodes = - findNodeBeforeLineFromStart nodes range.StartLine + let nodeAfterLine = + findFirstNodeAfterLine triviaNodes range.StartLine - findNode triviaNodes - |> updateTriviaNode - (fun tn -> - let directive = Directive dc - tn.ContentAfter.Add(directive)) - triviaNodes + match nodeAfterLine with + | Some _ as node -> updateTriviaNode (fun tn -> tn.ContentBefore.Add(directive)) triviaNodes node + | None -> + let findNode nodes = + findNodeBeforeLineFromStart nodes range.StartLine + + findNode triviaNodes + |> updateTriviaNode + (fun tn -> + let directive = Directive dc + tn.ContentAfter.Add(directive)) + triviaNodes | { Item = StringContent _ as siNode Range = range } -> @@ -506,15 +472,6 @@ let collectTrivia (mkRange: MkRange) tokens (ast: ParsedInput) = | ParsedInput.SigFile (ParsedSigFileInput.ParsedSigFileInput (_, _, _, _, mns)) -> sigAstToNode mns - let hasAnyAttributesWithLinesBetweenParent = - List.exists (fun (tn: TriviaNodeAssigner) -> Option.isSome tn.AttributeLinesBetweenParent) triviaNodesFromAST - - let triviaBetweenAttributeAndParentBinding = - if hasAnyAttributesWithLinesBetweenParent then - triviaBetweenAttributeAndParentBinding - else - (fun _ _ -> None) - let triviaNodesFromTokens = TokenParser.getTriviaNodesFromTokens mkRange tokens @@ -536,10 +493,7 @@ let collectTrivia (mkRange: MkRange) tokens (ast: ParsedInput) = match ast, triviaNodes with | EmptyFile _, h :: _ -> addAllTriviaAsContentAfter trivias h | _ -> - List.fold - (addTriviaToTriviaNode triviaBetweenAttributeAndParentBinding startOfSourceCode) - triviaNodes - trivias + List.fold (addTriviaToTriviaNode startOfSourceCode) triviaNodes trivias |> List.choose (fun tn -> if triviaNodeIsNotEmpty tn then diff --git a/src/Fantomas/TriviaTypes.fs b/src/Fantomas/TriviaTypes.fs index 6040323322..815484d94c 100644 --- a/src/Fantomas/TriviaTypes.fs +++ b/src/Fantomas/TriviaTypes.fs @@ -1,7 +1,7 @@ module Fantomas.TriviaTypes -open FSharp.Compiler.SourceCodeServices open FSharp.Compiler.Text +open FSharp.Compiler.Tokenization type FsTokenType = | AMP @@ -78,7 +78,6 @@ let a = 7 type TriviaContent = | Keyword of Token - | KeywordString of string | Number of string | StringContent of string | IdentOperatorAsWord of string @@ -193,11 +192,12 @@ type FsAstType = | SynMemberSig_NestedType | SynIndexerArg_One | SynIndexerArg_Two - | SynMatchClause_Clause + | SynMatchClause_ | ArgOptions_ - | InterfaceImpl_ - | TypeDefn_ - | TypeDefnSig_ + | SynInterfaceImpl_ + | SynTypeDefn_ + | SynTypeDefn_AfterAttributesBeforeComponentInfo + | SynTypeDefnSig_ // | SynTypeDefnSigRepr_ObjectModel use first nested node | SynTypeDefnSigRepr_Exception | SynMemberDefn_Open @@ -217,17 +217,21 @@ type FsAstType = | SynSimplePat_Attrib | SynSimplePats_SimplePats | SynSimplePats_Typed - | StandaloneExpression_ - | NormalBinding_ - | DoBinding_ + | SynBindingKind_StandaloneExpression + | SynBindingKind_Normal + | SynBindingKind_Do + | SynBinding_AfterAttributes_BeforeHeadPattern | SynBindingReturnInfo_ - | SynValTyparDecls_ - | TyparDecl_ - | Typar_ - | ValSpfn_ + | SynTyparDecls_PostfixList + | SynTyparDecls_SinglePrefix + | SynTyparDecls_PrefixList + | SynTyparDecl_ + // | Typar_ , unused + | SynValSig_ // | SynPat_Const, use SynConst instead | SynPat_Wild | SynPat_Named + | SynPat_As | SynPat_Typed | SynPat_Attrib // | SynPat_Or, use the inner patterns instead @@ -265,23 +269,24 @@ type FsAstType = | SynConst_Bytes | SynConst_UInt16s | SynConst_Measure - | Pats_ - | NamePatPairs_ - | ComponentInfo_ + | SynConst_SourceIdentifier + | SynArgPats_Pats + | SynArgPats_NamePatPairs + | SynComponentInfo_ // | SynTypeDefnRepr_ObjectModel use first nested node // | SynTypeDefnRepr_Simple use first nested node | SynTypeDefnRepr_Exception - | SynTypeDefnKind_TyconUnspecified - | SynTypeDefnKind_TyconClass - | SynTypeDefnKind_TyconInterface - | SynTypeDefnKind_TyconStruct - | SynTypeDefnKind_TyconRecord - | SynTypeDefnKind_TyconUnion - | SynTypeDefnKind_TyconAbbrev - | SynTypeDefnKind_TyconHiddenRepr - | SynTypeDefnKind_TyconAugmentation - | SynTypeDefnKind_TyconILAssemblyCode - | SynTypeDefnKind_TyconDelegate + | SynTypeDefnKind_Unspecified + | SynTypeDefnKind_Class + | SynTypeDefnKind_Interface + | SynTypeDefnKind_Struct + | SynTypeDefnKind_Record + | SynTypeDefnKind_Union + | SynTypeDefnKind_Abbrev + | SynTypeDefnKind_Opaque + | SynTypeDefnKind_Augmentation + | SynTypeDefnKind_IL + | SynTypeDefnKind_Delegate | SynTypeDefnSimpleRepr_None | SynTypeDefnSimpleRepr_Union | SynTypeDefnSimpleRepr_Enum @@ -294,11 +299,12 @@ type FsAstType = | SynExceptionDefnRepr_ | SynAttribute_ | SynAttributeList_ - | UnionCase_ - | UnionCaseFields_ - | UnionCaseFullType_ - | EnumCase_ - | Field_ + | SynUnionCase_ + | SynUnionCaseKind_Fields + | SynUnionCaseKind_FullType + | SynEnumCase_ + | SynField_ + | SynField_AfterAttributesBeforeIdentifier | SynType_LongIdent | SynType_App | SynType_LongIdentApp @@ -320,6 +326,8 @@ type FsAstType = | SynValInfo_ | SynArgInfo_ | ParsedHashDirective_ + | ParsedHashDirectiveArgument_String + | ParsedHashDirectiveArgument_SourceIdentifier // Modules and namespaces cannot really be trusted // Their range can be influenced by non code constructs (like comments) // | SynModuleOrNamespaceSig_AnonModule @@ -352,10 +360,9 @@ type TriviaNode = ContentAfter: TriviaContent list Range: Range } -type TriviaNodeAssigner(nodeType: TriviaNodeType, range: Range, ?linesBetweenParent: int) = +type TriviaNodeAssigner(nodeType: TriviaNodeType, range: Range) = member this.Type = nodeType member this.Range = range - member this.AttributeLinesBetweenParent = linesBetweenParent member val ContentBefore = ResizeArray() with get, set member val ContentItself = Option.None with get, set member val ContentAfter = ResizeArray() with get, set From c1a97df89988d6efca60218788f8f564b3951c39 Mon Sep 17 00:00:00 2001 From: nojaf Date: Wed, 11 Aug 2021 19:29:05 +0200 Subject: [PATCH 02/12] Add release notes for 4.6.0-alpha-001. --- RELEASE_NOTES.md | 4 ++++ .../Fantomas.CoreGlobalTool.Tests.fsproj | 2 +- src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj | 2 +- src/Fantomas.Extras/Fantomas.Extras.fsproj | 2 +- src/Fantomas.Tests/Fantomas.Tests.fsproj | 2 +- src/Fantomas/Fantomas.fsproj | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 8d829117ad..57594a061d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,7 @@ +#### 4.6.0-alpha-001 + +* Update to FCS 40.0.1-preview.21352.5 + #### 4.5.5 - 10/2021 * Improve: Provide more information when string merge failed. [#1904](https://github.com/fsprojects/fantomas/issues/1904) diff --git a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj index 5d005e687c..535d9adbba 100644 --- a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj +++ b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj @@ -4,7 +4,7 @@ net5.0 false false - 4.5.5 + 4.6.0-alpha-001 FS0988 FS0025 diff --git a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj index d2c699c546..c000b3f5a7 100644 --- a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj +++ b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj @@ -8,7 +8,7 @@ Major fantomas True - 4.5.5 + 4.6.0-alpha-001 fantomas-tool FS0025 LICENSE.md diff --git a/src/Fantomas.Extras/Fantomas.Extras.fsproj b/src/Fantomas.Extras/Fantomas.Extras.fsproj index 1b31beec98..122188b03f 100644 --- a/src/Fantomas.Extras/Fantomas.Extras.fsproj +++ b/src/Fantomas.Extras/Fantomas.Extras.fsproj @@ -2,7 +2,7 @@ netstandard2.0 - 4.5.5 + 4.6.0-alpha-001 Utility package for Fantomas FS0025 LICENSE.md diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj index f334d8f901..63375b3dd1 100644 --- a/src/Fantomas.Tests/Fantomas.Tests.fsproj +++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj @@ -1,6 +1,6 @@ - 4.5.5 + 4.6.0-alpha-001 FS0988 net5.0 FS0025 diff --git a/src/Fantomas/Fantomas.fsproj b/src/Fantomas/Fantomas.fsproj index 3bf229c484..7d5d0a55c3 100644 --- a/src/Fantomas/Fantomas.fsproj +++ b/src/Fantomas/Fantomas.fsproj @@ -2,7 +2,7 @@ netstandard2.0 - 4.5.5 + 4.6.0-alpha-001 Source code formatter for F# FS0025 LICENSE.md From daaf40c7c88d5365cc1e60a4c66ce58df58e3606 Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Tue, 7 Sep 2021 15:25:06 +0200 Subject: [PATCH 03/12] Style guide lambda (#1858) * WIP lambda as last argument * Update remaining test according to style proposal. * Add test for multiline non lambda argument. * Print trivia for function keyword from ast range. * multiline non lambda argument, match lambda --- src/Fantomas.Tests/AppTests.fs | 109 +++--- src/Fantomas.Tests/CommentTests.fs | 16 +- src/Fantomas.Tests/CompilerDirectivesTests.fs | 74 ++-- .../ComputationExpressionTests.fs | 67 ++-- src/Fantomas.Tests/ControlStructureTests.fs | 26 +- src/Fantomas.Tests/DisableElmishTests.fs | 27 +- src/Fantomas.Tests/DotGetTests.fs | 14 +- src/Fantomas.Tests/ElmishTests.fs | 87 +++-- src/Fantomas.Tests/IfThenElseTests.fs | 49 ++- src/Fantomas.Tests/KeepIndentInBranchTests.fs | 64 ++-- src/Fantomas.Tests/LambdaTests.fs | 271 ++++++++++----- src/Fantomas.Tests/LetBindingTests.fs | 106 +++--- src/Fantomas.Tests/ListTests.fs | 22 +- .../MultiLineLambdaClosingNewlineTests.fs | 26 ++ src/Fantomas.Tests/OperatorTests.fs | 30 +- src/Fantomas.Tests/PatternMatchingTests.fs | 20 +- src/Fantomas.Tests/RecordTests.fs | 9 +- src/Fantomas.Tests/StringTests.fs | 9 +- src/Fantomas.Tests/SynConstTests.fs | 30 +- src/Fantomas.Tests/SynExprSetTests.fs | 90 +++-- src/Fantomas.Tests/TypeDeclarationTests.fs | 38 +- src/Fantomas/CodePrinter.fs | 329 +++++++++++++----- src/Fantomas/SourceParser.fs | 19 + src/Fantomas/TriviaContext.fs | 22 +- 24 files changed, 893 insertions(+), 661 deletions(-) diff --git a/src/Fantomas.Tests/AppTests.fs b/src/Fantomas.Tests/AppTests.fs index 9a5d70f827..2b73d845aa 100644 --- a/src/Fantomas.Tests/AppTests.fs +++ b/src/Fantomas.Tests/AppTests.fs @@ -6,7 +6,7 @@ open Fantomas.Tests.TestHelper // the current behavior results in a compile error since the |> is merged to the last line [] -let ``no nln before lambda #503`` () = +let ``no nln before lambda, #503`` () = formatSourceString false """ @@ -22,11 +22,10 @@ let a = """ let a = b - |> List.exists - (fun p -> - p.a - && p.b - |> List.exists (fun o -> o.a = "lorem ipsum dolor sit amet")) + |> List.exists (fun p -> + p.a + && p.b + |> List.exists (fun o -> o.a = "lorem ipsum dolor sit amet")) """ // compile error due to expression starting before the beginning of the function expression @@ -127,21 +126,19 @@ module Caching = (address: PublicAddress) (currency: Currency) : NotFresh = - lock - cacheFiles.CachedNetworkData - (fun _ -> - match balance with - | NotAvailable -> NotAvailable - | Cached (balance, time) -> - if compoundBalance < 0.0m then - ReportProblem - compoundBalance - None - currency - address - sessionCachedNetworkData - - ()) + lock cacheFiles.CachedNetworkData (fun _ -> + match balance with + | NotAvailable -> NotAvailable + | Cached (balance, time) -> + if compoundBalance < 0.0m then + ReportProblem + compoundBalance + None + currency + address + sessionCachedNetworkData + + ()) () """ @@ -174,17 +171,15 @@ module Caching = (address: PublicAddress) (currency: Currency) : NotFresh = - lock - cacheFiles.CachedNetworkData - (fun _ -> - match balance with - | NotAvailable -> NotAvailable - | Cached (balance, time) -> - if compoundBalance < 0.0m then - ReportProblem - looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong - - ()) + lock cacheFiles.CachedNetworkData (fun _ -> + match balance with + | NotAvailable -> NotAvailable + | Cached (balance, time) -> + if compoundBalance < 0.0m then + ReportProblem + looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong + + ()) () """ @@ -214,16 +209,14 @@ let ``should not split parameters over multiple lines when they do not exceed pa module Caching = type MainCache() = member __.RetrieveLastCompoundBalance (address: PublicAddress) (currency: Currency) : NotFresh = - lock - cacheFiles.CachedNetworkData - (fun _ -> - match balance with - | NotAvailable -> NotAvailable - | Cached (balance, time) -> - if compoundBalance < 0.0m then - ReportProblem compoundBalance None currency address sessionCachedNetworkData + lock cacheFiles.CachedNetworkData (fun _ -> + match balance with + | NotAvailable -> NotAvailable + | Cached (balance, time) -> + if compoundBalance < 0.0m then + ReportProblem compoundBalance None currency address sessionCachedNetworkData - ()) + ()) () """ @@ -253,16 +246,14 @@ let ``should not split single parameter over multiple lines when it does not exc module Caching = type MainCache() = member __.RetrieveLastCompoundBalance (address: PublicAddress) (currency: Currency) : NotFresh = - lock - cacheFiles.CachedNetworkData - (fun _ -> - match balance with - | NotAvailable -> NotAvailable - | Cached (balance, time) -> - if compoundBalance < 0.0m then - ReportProblem compoundBalance + lock cacheFiles.CachedNetworkData (fun _ -> + match balance with + | NotAvailable -> NotAvailable + | Cached (balance, time) -> + if compoundBalance < 0.0m then + ReportProblem compoundBalance - ()) + ()) () """ @@ -737,16 +728,14 @@ module Foo = let blah = it - |> List.iter - (fun (_, output) -> - thing - |> Map.iter - (fun key value -> - match value with - | Ok (TestResult.Failure f) -> failwith "" - | Error e -> failwith "" - | _ -> () // hi! - )) + |> List.iter (fun (_, output) -> + thing + |> Map.iter (fun key value -> + match value with + | Ok (TestResult.Failure f) -> failwith "" + | Error e -> failwith "" + | _ -> () // hi! + )) """ [] diff --git a/src/Fantomas.Tests/CommentTests.fs b/src/Fantomas.Tests/CommentTests.fs index 6adcdf6954..32eac24436 100644 --- a/src/Fantomas.Tests/CommentTests.fs +++ b/src/Fantomas.Tests/CommentTests.fs @@ -52,11 +52,9 @@ let print_30_permut () = /// declare and initialize let permutation: int array = - Array.init - n - (fun i -> - Console.Write(i + 1) - i) + Array.init n (fun i -> + Console.Write(i + 1) + i) permutation """ @@ -81,11 +79,9 @@ let print_30_permut () = /// declare and initialize let permutation: int array = - Array.init - n - (fun (i, j) -> - Console.Write(i + 1) - i) + Array.init n (fun (i, j) -> + Console.Write(i + 1) + i) permutation """ diff --git a/src/Fantomas.Tests/CompilerDirectivesTests.fs b/src/Fantomas.Tests/CompilerDirectivesTests.fs index f4348c85ae..965f290d94 100644 --- a/src/Fantomas.Tests/CompilerDirectivesTests.fs +++ b/src/Fantomas.Tests/CompilerDirectivesTests.fs @@ -671,11 +671,10 @@ type FunctionComponent = static member inline Lazy(f: 'Props -> ReactElement, fallback: ReactElement) : LazyFunctionComponent<'Props> = #if FABLE_COMPILER let elemType = - ReactBindings.React.``lazy`` - (fun () -> - // React.lazy requires a default export - (importValueDynamic f) - .``then`` (fun x -> createObj [ "default" ==> x ])) + ReactBindings.React.``lazy`` (fun () -> + // React.lazy requires a default export + (importValueDynamic f) + .``then`` (fun x -> createObj [ "default" ==> x ])) fun props -> ReactElementType.create @@ -892,11 +891,10 @@ type FunctionComponent = static member inline Lazy(f: 'Props -> ReactElement, fallback: ReactElement) : LazyFunctionComponent<'Props> = #if FABLE_COMPILER let elemType = - ReactBindings.React.``lazy`` - (fun () -> - // React.lazy requires a default export - (importValueDynamic f) - .``then`` (fun x -> createObj [ "default" ==> x ])) + ReactBindings.React.``lazy`` (fun () -> + // React.lazy requires a default export + (importValueDynamic f) + .``then`` (fun x -> createObj [ "default" ==> x ])) fun props -> ReactElementType.create @@ -1255,13 +1253,12 @@ let ``endif in lambda`` () = |> should equal """ -foo - (fun x -> - () +foo (fun x -> + () #if DEF - () + () #endif - ) +) """ [] @@ -2216,41 +2213,40 @@ let getDefaultProxyFor = equal """ let getDefaultProxyFor = - memoize - (fun (url: string) -> - let uri = Uri url + memoize (fun (url: string) -> + let uri = Uri url - let getDefault () = + let getDefault () = #if CUSTOM_WEBPROXY - let result = - { new IWebProxy with - member __.Credentials = null + let result = + { new IWebProxy with + member __.Credentials = null - member __.Credentials - with set _value = () + member __.Credentials + with set _value = () - member __.GetProxy _ = null - member __.IsBypassed(_host: Uri) = true } + member __.GetProxy _ = null + member __.IsBypassed(_host: Uri) = true } #else - let result = WebRequest.GetSystemWebProxy() + let result = WebRequest.GetSystemWebProxy() #endif #if CUSTOM_WEBPROXY - let proxy = result + let proxy = result #else - let address = result.GetProxy uri + let address = result.GetProxy uri - if address = uri then - null - else - let proxy = WebProxy address - proxy.BypassProxyOnLocal <- true + if address = uri then + null + else + let proxy = WebProxy address + proxy.BypassProxyOnLocal <- true #endif - proxy.Credentials <- CredentialCache.DefaultCredentials - proxy + proxy.Credentials <- CredentialCache.DefaultCredentials + proxy - match calcEnvProxies.Force().TryFind uri.Scheme with - | Some p -> if p.GetProxy uri <> uri then p else getDefault () - | None -> getDefault ()) + match calcEnvProxies.Force().TryFind uri.Scheme with + | Some p -> if p.GetProxy uri <> uri then p else getDefault () + | None -> getDefault ()) """ [] diff --git a/src/Fantomas.Tests/ComputationExpressionTests.fs b/src/Fantomas.Tests/ComputationExpressionTests.fs index 038a587930..8776952142 100644 --- a/src/Fantomas.Tests/ComputationExpressionTests.fs +++ b/src/Fantomas.Tests/ComputationExpressionTests.fs @@ -1668,23 +1668,21 @@ let initDb () = let createSql = readSqlFile "create" - using - (connection ()) - (fun conn -> - task { - do! conn.OpenAsync() - let! _ = conn.ExecuteAsync(createSql) + using (connection ()) (fun conn -> + task { + do! conn.OpenAsync() + let! _ = conn.ExecuteAsync(createSql) #if DEBUG - let! hasClients = hasClients () + let! hasClients = hasClients () - if not (hasClients) then - let seedSql = readSqlFile "seed" - let! _ = conn.ExecuteAsync(seedSql) - () -#else + if not (hasClients) then + let seedSql = readSqlFile "seed" + let! _ = conn.ExecuteAsync(seedSql) () +#else + () #endif - }) + }) """ [] @@ -1763,32 +1761,23 @@ let ``don't add extra newline before do bang`` () = """ let sendPushNotifications = allSubscriptions - |> List.map - (fun (user, subscriptions) -> - subscriptions - |> List.filter (fun s -> s.Origin = origin) - |> List.map - (fun s -> - task { - try - let ps = - PushSubscription(s.Endpoint, s.P256DH, s.Auth) - - do! webPushClient.SendNotificationAsync(ps, payload, vapidDetails) - with - | :? WebPushException as wpex -> - log.LogError(sprintf "Couldn't send notification to %s, %A" user.UserId wpex) - - do! - filterSubscriptionsAndPersist - managementToken - user.UserId - subscriptions - s.Origin - s.Endpoint - } - :> Task) - |> Task.WhenAll) + |> List.map (fun (user, subscriptions) -> + subscriptions + |> List.filter (fun s -> s.Origin = origin) + |> List.map (fun s -> + task { + try + let ps = + PushSubscription(s.Endpoint, s.P256DH, s.Auth) + + do! webPushClient.SendNotificationAsync(ps, payload, vapidDetails) + with + | :? WebPushException as wpex -> + log.LogError(sprintf "Couldn't send notification to %s, %A" user.UserId wpex) + do! filterSubscriptionsAndPersist managementToken user.UserId subscriptions s.Origin s.Endpoint + } + :> Task) + |> Task.WhenAll) """ [] diff --git a/src/Fantomas.Tests/ControlStructureTests.fs b/src/Fantomas.Tests/ControlStructureTests.fs index 13b352f09c..01c9669764 100644 --- a/src/Fantomas.Tests/ControlStructureTests.fs +++ b/src/Fantomas.Tests/ControlStructureTests.fs @@ -866,13 +866,12 @@ things equal """ things -|> Seq.map - (fun a -> - try - Some i - with - | :? Foo - | :? Bar as e when true -> None) +|> Seq.map (fun a -> + try + Some i + with + | :? Foo + | :? Bar as e when true -> None) """ [] @@ -896,13 +895,12 @@ things equal """ things -|> Seq.map - (fun a -> - try - Some i - with - | Foo _ - | Bar _ as e when true -> None) +|> Seq.map (fun a -> + try + Some i + with + | Foo _ + | Bar _ as e when true -> None) """ [] diff --git a/src/Fantomas.Tests/DisableElmishTests.fs b/src/Fantomas.Tests/DisableElmishTests.fs index 98ece6f393..c73b1f5ced 100644 --- a/src/Fantomas.Tests/DisableElmishTests.fs +++ b/src/Fantomas.Tests/DisableElmishTests.fs @@ -201,18 +201,17 @@ let counter = React.functionComponent(fun () -> equal """ let counter = - React.functionComponent - (fun () -> - let (count, setCount) = React.useState (0) - - Html.div - [ Html.button - [ prop.style [ style.marginRight 5 ] - prop.onClick (fun _ -> setCount (count + 1)) - prop.text "Increment" ] - Html.button - [ prop.style [ style.marginLeft 5 ] - prop.onClick (fun _ -> setCount (count - 1)) - prop.text "Decrement" ] - Html.h1 count ]) + React.functionComponent (fun () -> + let (count, setCount) = React.useState (0) + + Html.div + [ Html.button + [ prop.style [ style.marginRight 5 ] + prop.onClick (fun _ -> setCount (count + 1)) + prop.text "Increment" ] + Html.button + [ prop.style [ style.marginLeft 5 ] + prop.onClick (fun _ -> setCount (count - 1)) + prop.text "Decrement" ] + Html.h1 count ]) """ diff --git a/src/Fantomas.Tests/DotGetTests.fs b/src/Fantomas.Tests/DotGetTests.fs index 451db87a40..664a7d653a 100644 --- a/src/Fantomas.Tests/DotGetTests.fs +++ b/src/Fantomas.Tests/DotGetTests.fs @@ -443,17 +443,15 @@ let getColl2 = .ToString() let getColl3 = - GetCollection - (fun _ parser -> - let x = 3 - x) + GetCollection (fun _ parser -> + let x = 3 + x) .Foo let getColl4 = - GetCollection - (fun parser -> - let x = 4 - x) + GetCollection (fun parser -> + let x = 4 + x) .Foo """ diff --git a/src/Fantomas.Tests/ElmishTests.fs b/src/Fantomas.Tests/ElmishTests.fs index 7b9ba3a112..602819ab37 100644 --- a/src/Fantomas.Tests/ElmishTests.fs +++ b/src/Fantomas.Tests/ElmishTests.fs @@ -495,10 +495,9 @@ let viewEntry todo dispatch = valueOrDefault todo.description Name "title" Id("todo-" + (string todo.id)) - OnInput - (fun ev -> - UpdateEntry(todo.id, !!ev.target?value) - |> dispatch) + OnInput (fun ev -> + UpdateEntry(todo.id, !!ev.target?value) + |> dispatch) OnBlur(fun _ -> EditingEntry(todo.id, false) |> dispatch) onEnter (EditingEntry(todo.id, false)) dispatch ] ] @@ -829,25 +828,24 @@ module App open Feliz let counter = - React.functionComponent - (fun () -> - let (count, setCount) = React.useState (0) + React.functionComponent (fun () -> + let (count, setCount) = React.useState (0) - Html.div [ - Html.button [ - prop.style [ style.marginRight 5 ] - prop.onClick (fun _ -> setCount (count + 1)) - prop.text "Increment" - ] + Html.div [ + Html.button [ + prop.style [ style.marginRight 5 ] + prop.onClick (fun _ -> setCount (count + 1)) + prop.text "Increment" + ] - Html.button [ - prop.style [ style.marginLeft 5 ] - prop.onClick (fun _ -> setCount (count - 1)) - prop.text "Decrement" - ] + Html.button [ + prop.style [ style.marginLeft 5 ] + prop.onClick (fun _ -> setCount (count - 1)) + prop.text "Decrement" + ] - Html.h1 count - ]) + Html.h1 count + ]) open Browser.Dom @@ -935,16 +933,15 @@ let drawer = prop.className classes.toolbar ] props.Items - |> List.map - (fun s -> - Mui.listItem [ - listItem.button true - match state with - | Some t when t = s -> listItem.selected true - | _ -> listItem.selected false - prop.text s - prop.onClick (fun _ -> s |> MenuItemClick |> dispatch) - ]) + |> List.map (fun s -> + Mui.listItem [ + listItem.button true + match state with + | Some t when t = s -> listItem.selected true + | _ -> listItem.selected false + prop.text s + prop.onClick (fun _ -> s |> MenuItemClick |> dispatch) + ]) |> Mui.list ] ] @@ -1009,24 +1006,22 @@ let private useLocationDetail (auth0 : Auth0Hook) (roles : RolesHook) id = && not (String.IsNullOrWhiteSpace(location.Creator)) then auth0.getAccessTokenSilently () - |> Promise.bind - (fun authToken -> - let url = - sprintf "%s/users/%s" Common.backendUrl (location.Creator) - - fetch - url - [ requestHeaders [ HttpRequestHeaders.ContentType "application/json" - Common.authHeader authToken - Common.subscriptionHeader ] ]) + |> Promise.bind (fun authToken -> + let url = + sprintf "%s/users/%s" Common.backendUrl (location.Creator) + + fetch + url + [ requestHeaders [ HttpRequestHeaders.ContentType "application/json" + Common.authHeader authToken + Common.subscriptionHeader ] ]) |> Promise.bind (fun res -> res.text ()) - |> Promise.iter - (fun json -> - let usersResult = Decode.fromString nameDecoder json + |> Promise.iter (fun json -> + let usersResult = Decode.fromString nameDecoder json - match usersResult with - | Ok name -> setCreatorName (Some name) - | Error err -> JS.console.log err)), + match usersResult with + | Ok name -> setCreatorName (Some name) + | Error err -> JS.console.log err)), [| box roles.Roles box location.Creator |] ) diff --git a/src/Fantomas.Tests/IfThenElseTests.fs b/src/Fantomas.Tests/IfThenElseTests.fs index 9d80d5f75e..3126e35f44 100644 --- a/src/Fantomas.Tests/IfThenElseTests.fs +++ b/src/Fantomas.Tests/IfThenElseTests.fs @@ -1437,29 +1437,28 @@ let ``nested if/then/else in short mode, 1243`` () = """ let funcs = fse.MembersFunctionsAndValues - |> Seq.sortWith - (fun n1 n2 -> - let modifierScore (f: FSharpMemberOrFunctionOrValue) = - if f.IsProperty then - if f.IsInstanceMember then - if f.IsDispatchSlot then 9 else 1 - else - 8 - elif f.IsMember then - if f.IsInstanceMember then - if f.IsDispatchSlot then 11 else 2 - else - 10 + |> Seq.sortWith (fun n1 n2 -> + let modifierScore (f: FSharpMemberOrFunctionOrValue) = + if f.IsProperty then + if f.IsInstanceMember then + if f.IsDispatchSlot then 9 else 1 + else + 8 + elif f.IsMember then + if f.IsInstanceMember then + if f.IsDispatchSlot then 11 else 2 else - 3 + 10 + else + 3 - let n1Score = modifierScore n1 - let n2Score = modifierScore n2 + let n1Score = modifierScore n1 + let n2Score = modifierScore n2 - if n1Score = n2Score then - n1.DisplayName.CompareTo n2.DisplayName - else - n1Score.CompareTo n2Score) + if n1Score = n2Score then + n1.DisplayName.CompareTo n2.DisplayName + else + n1Score.CompareTo n2Score) """ [] @@ -2054,8 +2053,8 @@ let lessonsForm (f: ValidatedForm) dispatch = yield! [ button.isLoading prop.disabled true ] - prop.onClick - (fun _ -> CreateLessons |> dispatch) ] ] ] ] + prop.onClick (fun _ -> + CreateLessons |> dispatch) ] ] ] ] """ [] @@ -2265,8 +2264,7 @@ if result.LaunchSuccess && result.ExitCode = 0 then else if result.ExitCode = 1 then let stdout, stderr = output - |> List.map - (function + |> List.map (function | StdErr e -> Error e | StdOut l -> Ok l) |> Result.partition @@ -2326,8 +2324,7 @@ if result.LaunchSuccess && result.ExitCode = 0 then elif result.ExitCode = 1 then let stdout, stderr = output - |> List.map - (function + |> List.map (function | StdErr e -> Error e | StdOut l -> Ok l) |> Result.partition diff --git a/src/Fantomas.Tests/KeepIndentInBranchTests.fs b/src/Fantomas.Tests/KeepIndentInBranchTests.fs index deff49ea3f..89bdab1de8 100644 --- a/src/Fantomas.Tests/KeepIndentInBranchTests.fs +++ b/src/Fantomas.Tests/KeepIndentInBranchTests.fs @@ -602,14 +602,13 @@ let foo = """ let foo = bar - |> List.filter - (fun i -> - if false then - false - else + |> List.filter (fun i -> + if false then + false + else - let m = quux - quux.Success && somethingElse) + let m = quux + quux.Success && somethingElse) """ [] @@ -635,14 +634,13 @@ let foo = """ let foo = bar - |> List.filter - (fun { Index = i } -> - if false then - false - else + |> List.filter (fun { Index = i } -> + if false then + false + else - let m = quux - quux.Success && somethingElse) + let m = quux + quux.Success && somethingElse) """ [] @@ -679,29 +677,27 @@ lock lockingObj (fun () -> |> should equal """ -lock - lockingObj - (fun () -> - if not thing then printfn "" +lock lockingObj (fun () -> + if not thing then printfn "" - match error with - | Some error -> - if foo then () - thing () - false - | None -> + match error with + | Some error -> + if foo then () + thing () + false + | None -> - match list1, list2, list3 with - | [], [], [] -> - stuff () - true - | [], [], _ -> - moreStuff () - true - | _ -> + match list1, list2, list3 with + | [], [], [] -> + stuff () + true + | [], [], _ -> + moreStuff () + true + | _ -> - doMoreThings () - false) + doMoreThings () + false) """ [] diff --git a/src/Fantomas.Tests/LambdaTests.fs b/src/Fantomas.Tests/LambdaTests.fs index 17a181ec1e..f83158d177 100644 --- a/src/Fantomas.Tests/LambdaTests.fs +++ b/src/Fantomas.Tests/LambdaTests.fs @@ -18,10 +18,8 @@ let ``keep comment after arrow`` () = |> should equal """ -_Target - "FSharpTypesDotNet" - (fun _ -> // obsolete - ()) +_Target "FSharpTypesDotNet" (fun _ -> // obsolete + ()) """ let ``indent multiline lambda in parenthesis, 523`` () = @@ -118,10 +116,9 @@ let a = """ let a = b - |> List.exists - (fun p -> - x - && someVeryLongIdentifierrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrzzzz___________) + |> List.exists (fun p -> + x + && someVeryLongIdentifierrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrzzzz___________) """ [] @@ -143,15 +140,13 @@ Target.create "Clean" (fun _ -> |> should equal """ -Target.create - "Clean" - (fun _ -> - [ "bin" - "src/Fantomas/bin" - "src/Fantomas/obj" - "src/Fantomas.CoreGlobalTool/bin" - "src/Fantomas.CoreGlobalTool/obj" ] - |> List.iter Shell.cleanDir) +Target.create "Clean" (fun _ -> + [ "bin" + "src/Fantomas/bin" + "src/Fantomas/obj" + "src/Fantomas.CoreGlobalTool/bin" + "src/Fantomas.CoreGlobalTool/obj" ] + |> List.iter Shell.cleanDir) """ [] @@ -170,12 +165,11 @@ List.filter (fun ({ ContentBefore = contentBefore }) -> |> should equal """ -List.filter - (fun ({ ContentBefore = contentBefore }) -> - // some comment - let a = 8 - let b = List.length contentBefore - a + b) +List.filter (fun ({ ContentBefore = contentBefore }) -> + // some comment + let a = 8 + let b = List.length contentBefore + a + b) """ [] @@ -218,10 +212,9 @@ foo (fun a -> |> should equal """ -foo - (fun a -> - let b = 8 - b) +foo (fun a -> + let b = 8 + b) """ [] @@ -239,10 +232,9 @@ let ``short ident in nested let binding`` () = equal """ let a = - foo - (fun a -> - let b = 8 - b) + foo (fun a -> + let b = 8 + b) """ [] @@ -260,10 +252,9 @@ let ``longer ident in nested let binding`` () = equal """ let a = - foobar - (fun a -> - let b = 8 - b) + foobar (fun a -> + let b = 8 + b) """ [] @@ -326,17 +317,16 @@ CloudStorageAccount.SetConfigurationSettingPublisher(fun configName configSettin |> should equal """ -CloudStorageAccount.SetConfigurationSettingPublisher - (fun configName configSettingPublisher -> - let connectionString = - if hostedService then - RoleEnvironment.GetConfigurationSettingValue(configName) - else - ConfigurationManager.ConnectionStrings.[configName] - .ConnectionString +CloudStorageAccount.SetConfigurationSettingPublisher (fun configName configSettingPublisher -> + let connectionString = + if hostedService then + RoleEnvironment.GetConfigurationSettingValue(configName) + else + ConfigurationManager.ConnectionStrings.[configName] + .ConnectionString - configSettingPublisher.Invoke(connectionString) - |> ignore) + configSettingPublisher.Invoke(connectionString) + |> ignore) """ [] @@ -374,15 +364,14 @@ let genMemberFlagsForMemberBinding astContext (mf: MemberFlags) (rangeOfBindingA (fun (ctx: Context) -> // trying to get AST trivia ctx.Trivia - |> List.tryFind - (fun { Type = t; Range = r } -> // trying to get token trivia + |> List.tryFind (fun { Type = t; Range = r } -> // trying to get token trivia - match t with - | MainNode "SynMemberDefn.Member" -> RangeHelpers.``range contains`` r rangeOfBindingAndRhs + match t with + | MainNode "SynMemberDefn.Member" -> RangeHelpers.``range contains`` r rangeOfBindingAndRhs - | Token { TokenInfo = { TokenName = "MEMBER" } } -> r.StartLine = rangeOfBindingAndRhs.StartLine + | Token { TokenInfo = { TokenName = "MEMBER" } } -> r.StartLine = rangeOfBindingAndRhs.StartLine - | _ -> false) + | _ -> false) |> Option.defaultValue (!- "override ") <| ctx) <| ctx @@ -402,10 +391,9 @@ List.tryFind (fun { Type = t; Range = r } -> // foo |> should equal """ -List.tryFind - (fun { Type = t; Range = r } -> // foo - let a = 8 - a + 9) +List.tryFind (fun { Type = t; Range = r } -> // foo + let a = 8 + a + 9) """ [] @@ -493,15 +481,14 @@ let ``don't duplicate new line before LongIdentSet`` () = equal """ let options = - jsOptions - (fun o -> - let layout = - match opts.Layout with - | Graph.Free -> createObj [] - | Graph.HierarchicalLeftRight -> createObj [ "hierarchical" ==> hierOpts "LR" ] - | Graph.HierarchicalUpDown -> createObj [ "hierarchical" ==> hierOpts "UD" ] + jsOptions (fun o -> + let layout = + match opts.Layout with + | Graph.Free -> createObj [] + | Graph.HierarchicalLeftRight -> createObj [ "hierarchical" ==> hierOpts "LR" ] + | Graph.HierarchicalUpDown -> createObj [ "hierarchical" ==> hierOpts "UD" ] - o.layout <- Some layout) + o.layout <- Some layout) """ [] @@ -561,12 +548,9 @@ Target.create "Install" (fun _ -> |> should equal """ -Target.create - "Install" - (fun _ -> - Yarn.install (fun o -> { o with WorkingDirectory = clientDir }) - // Paket restore will already happen when the build.fsx dependencies are restored - ) +Target.create "Install" (fun _ -> Yarn.install (fun o -> { o with WorkingDirectory = clientDir }) +// Paket restore will already happen when the build.fsx dependencies are restored +) """ [] @@ -584,12 +568,9 @@ Target.create "Install" (fun x -> |> should equal """ -Target.create - "Install" - (fun x -> - Yarn.install (fun o -> { o with WorkingDirectory = clientDir }) - // Paket restore will already happen when the build.fsx dependencies are restored - ) +Target.create "Install" (fun x -> Yarn.install (fun o -> { o with WorkingDirectory = clientDir }) +// Paket restore will already happen when the build.fsx dependencies are restored +) """ [] @@ -760,10 +741,9 @@ services.AddHttpsRedirection(Action(fun options -> equal """ services.AddHttpsRedirection( - Action - (fun options -> - // meh - options.HttpsPort <- Nullable(7002)) + Action (fun options -> + // meh + options.HttpsPort <- Nullable(7002)) ) |> ignore """ @@ -956,3 +936,136 @@ module Foo = blah |> Struct.map (fun _ (a, _, _) -> filterBackings a) } """ + +[] +let ``multiline SynExpr.MatchLambda`` () = + formatSourceString + false + """ +module Foo = + let bar = + [] + |> List.choose + (function + | _ -> "") +""" + config + |> prepend newline + |> should + equal + """ +module Foo = + let bar = + [] + |> List.choose (function + | _ -> "") +""" + +[] +let ``long function application ending in with lambda argument`` () = + formatSourceString + false + """ +let foobar = + someFunctionName aFirstLongArgument aSecondLongArgument aThirdLongArgument aFourthLongArgument (fun finallyThatLambdaArgument -> + aFirstLongArgument + aSecondLongArgument - aThirdLongArgument - aFourthLongArgument + finallyThatLambdaArgument) + +let somethingElse = () +""" + config + |> prepend newline + |> should + equal + """ +let foobar = + someFunctionName + aFirstLongArgument + aSecondLongArgument + aThirdLongArgument + aFourthLongArgument + (fun finallyThatLambdaArgument -> + aFirstLongArgument + aSecondLongArgument + - aThirdLongArgument + - aFourthLongArgument + + finallyThatLambdaArgument) + +let somethingElse = () +""" + +[] +let ``multiline non lambda argument`` () = + formatSourceString + false + """ +let argExpr = + col sepNln es (fun e -> + let genLambda + (pats: Context -> Context) + (bodyExpr: SynExpr) + (lpr: Range) + (rpr: Range option) + (arrowRange: Range) + (pr: Range) + : Context -> Context = + leadingExpressionIsMultiline (sepOpenTFor lpr -- "fun " + +> pats + +> genArrowWithTrivia + (genExprKeepIndentInBranch astContext bodyExpr) + arrowRange) (fun isMultiline -> + onlyIf isMultiline sepNln + +> sepCloseTFor rpr e.Range) + |> genTriviaFor SynExpr_Paren pr + () + ) +""" + config + |> prepend newline + |> should + equal + """ +let argExpr = + col sepNln es (fun e -> + let genLambda + (pats: Context -> Context) + (bodyExpr: SynExpr) + (lpr: Range) + (rpr: Range option) + (arrowRange: Range) + (pr: Range) + : Context -> Context = + leadingExpressionIsMultiline + (sepOpenTFor lpr -- "fun " + +> pats + +> genArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) arrowRange) + (fun isMultiline -> + onlyIf isMultiline sepNln + +> sepCloseTFor rpr e.Range) + |> genTriviaFor SynExpr_Paren pr + + ()) +""" + +[] +let ``multiline non lambda argument, match lambda`` () = + formatSourceString + false + """ +leadingExpressionIsMultiline (sepOpenTFor lpr -- "fun " + +> pats + +> genArrowWithTrivia + (genExprKeepIndentInBranch astContext bodyExpr) + arrowRange) (function | Ok _ -> true | Error _ -> false) +""" + config + |> prepend newline + |> should + equal + """ +leadingExpressionIsMultiline + (sepOpenTFor lpr -- "fun " + +> pats + +> genArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) arrowRange) + (function + | Ok _ -> true + | Error _ -> false) +""" diff --git a/src/Fantomas.Tests/LetBindingTests.fs b/src/Fantomas.Tests/LetBindingTests.fs index da53e1ef79..af8566d75e 100644 --- a/src/Fantomas.Tests/LetBindingTests.fs +++ b/src/Fantomas.Tests/LetBindingTests.fs @@ -141,10 +141,9 @@ let x = """ let x = [| 1 .. 2 |] - |> Array.mapi - (fun _ _ -> - let num = "".PadLeft(9) - num) + |> Array.mapi (fun _ _ -> + let num = "".PadLeft(9) + num) """ [] @@ -237,16 +236,14 @@ module Card = let card (props: CardProps seq) (elems: ReactElement seq) : ReactElement = let customProps = props - |> Seq.collect - (function + |> Seq.collect (function | Custom props -> props | _ -> List.empty) |> keyValueList CaseRules.LowerFirst let typeProps = props - |> Seq.choose - (function + |> Seq.choose (function | Custom _ -> None | prop -> Some prop) |> keyValueList CaseRules.LowerFirst @@ -804,25 +801,22 @@ let useEntries month year = let sortMapAndToArray (input: Transaction seq) = input |> Seq.sortBy (fun ai -> ai.Created) - |> Seq.map - (fun ai -> - {| id = ai.Id - name = ai.Name - amount = ai.Amount |}) + |> Seq.map (fun ai -> + {| id = ai.Id + name = ai.Name + amount = ai.Amount |}) |> Seq.toArray let income = events - |> Seq.choose - (function + |> Seq.choose (function | Event.AddIncome (ai) when (filter ai.Created && isNotCancelled ai.Id) -> Some ai | _ -> None) |> sortMapAndToArray let expenses = events - |> Seq.choose - (function + |> Seq.choose (function | Event.AddExpense (ae) when (filter ae.Created && isNotCancelled ae.Id) -> Some ae | _ -> None) |> sortMapAndToArray @@ -967,32 +961,29 @@ let useOverviewPerMonth () = let months = events - |> List.choose - (fun msg -> - match msg with - | Event.AddIncome ({ Created = created }) - | Event.AddExpense ({ Created = created }) -> Some(created.Month, created.Year) - | _ -> None) + |> List.choose (fun msg -> + match msg with + | Event.AddIncome ({ Created = created }) + | Event.AddExpense ({ Created = created }) -> Some(created.Month, created.Year) + | _ -> None) |> List.distinct |> List.sort |> List.groupBy snd - |> List.map - (fun (year, months) -> - let rows = - months - |> List.map - (fun (m, y) -> - {| name = getMonthName m - month = m - balance = Projections.calculateBalance m y events |}) - |> List.toArray - - let balance = - rows |> Array.sumBy (fun mth -> mth.balance) - - {| name = year - months = rows - balance = balance |}) + |> List.map (fun (year, months) -> + let rows = + months + |> List.map (fun (m, y) -> + {| name = getMonthName m + month = m + balance = Projections.calculateBalance m y events |}) + |> List.toArray + + let balance = + rows |> Array.sumBy (fun mth -> mth.balance) + + {| name = year + months = rows + balance = balance |}) |> List.toArray months @@ -1135,17 +1126,16 @@ let merge a b = There is a problem with merging all the code back togheter. Please raise an issue at https://github.com/fsprojects/fantomas/issues.\"\"\" List.zip aChunks bChunks - |> List.map - (fun (a', b') -> - let la = lengthWithoutSpaces a' - let lb = lengthWithoutSpaces b' - - if la <> lb then - if la > lb then a' else b' - else if String.length a' < String.length b' then - a' - else - b') + |> List.map (fun (a', b') -> + let la = lengthWithoutSpaces a' + let lb = lengthWithoutSpaces b' + + if la <> lb then + if la > lb then a' else b' + else if String.length a' < String.length b' then + a' + else + b') |> String.concat Environment.NewLine " @@ -1253,10 +1243,9 @@ let x = | _ -> if tcref.IsILTycon then tcref.ILTyconRawMetadata.CustomAttrs.AsArray - |> Array.exists - (fun attr -> - attr.Method.DeclaringType.TypeSpec.Name = typeof - .FullName) + |> Array.exists (fun attr -> + attr.Method.DeclaringType.TypeSpec.Name = typeof + .FullName) else false """ @@ -1316,10 +1305,9 @@ let x = | _ -> if tcref.IsILTycon then tcref.ILTyconRawMetadata.CustomAttrs.AsArray - |> Array.exists - (fun attr -> - attr.Method.DeclaringType.TypeSpec.Name = typeof - .FullName) + |> Array.exists (fun attr -> + attr.Method.DeclaringType.TypeSpec.Name = typeof + .FullName) else false """ diff --git a/src/Fantomas.Tests/ListTests.fs b/src/Fantomas.Tests/ListTests.fs index bef627f81b..274b622894 100644 --- a/src/Fantomas.Tests/ListTests.fs +++ b/src/Fantomas.Tests/ListTests.fs @@ -2085,18 +2085,16 @@ type FSharpCompilerServiceChecker(backgroundServiceEnabled) = |> Seq.tryFind (fun (k, _) -> k.ToUpperInvariant() = file.ToUpperInvariant()) project - |> Option.map - (fun (_, option) -> - option, - [ yield! - options - |> Seq.map snd - |> Seq.distinctBy (fun o -> o.ProjectFileName) - |> Seq.filter - (fun o -> - o.ReferencedProjects - |> Array.map (fun (_, v) -> Path.GetFullPath v.ProjectFileName) - |> Array.contains option.ProjectFileName) ]) + |> Option.map (fun (_, option) -> + option, + [ yield! + options + |> Seq.map snd + |> Seq.distinctBy (fun o -> o.ProjectFileName) + |> Seq.filter (fun o -> + o.ReferencedProjects + |> Array.map (fun (_, v) -> Path.GetFullPath v.ProjectFileName) + |> Array.contains option.ProjectFileName) ]) """ [] diff --git a/src/Fantomas.Tests/MultiLineLambdaClosingNewlineTests.fs b/src/Fantomas.Tests/MultiLineLambdaClosingNewlineTests.fs index 6d59d93e5d..627b95cebe 100644 --- a/src/Fantomas.Tests/MultiLineLambdaClosingNewlineTests.fs +++ b/src/Fantomas.Tests/MultiLineLambdaClosingNewlineTests.fs @@ -1011,3 +1011,29 @@ configuration .Debug() .WriteTo.Logger(fun x -> x * x) """ + +[] +let ``match lambda with other arguments`` () = + formatSourceString + false + """ +let a = + Something.foo + bar + meh + (function | Ok x -> true | Error err -> false) +""" + config + |> prepend newline + |> should + equal + """ +let a = + Something.foo + bar + meh + (function + | Ok x -> true + | Error err -> false + ) +""" diff --git a/src/Fantomas.Tests/OperatorTests.fs b/src/Fantomas.Tests/OperatorTests.fs index 6b74ba4d87..600c6ffe43 100644 --- a/src/Fantomas.Tests/OperatorTests.fs +++ b/src/Fantomas.Tests/OperatorTests.fs @@ -345,12 +345,10 @@ let watchFiles = use _ = !!(serverPath "*.fs") ++ (serverPath "*.fsproj") // combines fs and fsproj - |> ChangeWatcher.run - (fun changes -> - printfn "FILE CHANGE %A" changes - // stopFunc() - //Async.Start (startFunc()) - ) + |> ChangeWatcher.run (fun changes -> printfn "FILE CHANGE %A" changes + // stopFunc() + //Async.Start (startFunc()) + ) () } @@ -386,12 +384,10 @@ let watchFiles = use _ = !!(serverPath "*.fs") ++ "*.fsproj" // combines fs and fsproj - |> ChangeWatcher.run - (fun changes -> - printfn "FILE CHANGE %A" changes - // stopFunc() - //Async.Start (startFunc()) - ) + |> ChangeWatcher.run (fun changes -> printfn "FILE CHANGE %A" changes + // stopFunc() + //Async.Start (startFunc()) + ) () } @@ -889,10 +885,9 @@ let shouldIncludeRelationship relName = """ let shouldIncludeRelationship relName = req.Includes - |> List.exists - (fun path -> - path.Length >= currentIncludePath.Length + 1 - && path |> List.take (currentIncludePath.Length + 1) = currentIncludePath @ [ relName ]) + |> List.exists (fun path -> + path.Length >= currentIncludePath.Length + 1 + && path |> List.take (currentIncludePath.Length + 1) = currentIncludePath @ [ relName ]) """ [] @@ -959,8 +954,7 @@ let isCustomOperationProjectionParameter i (nm: Ident) = | Some argInfosForOverloads -> let vs = argInfosForOverloads - |> List.map - (function + |> List.map (function | None -> false | Some argInfos -> i < argInfos.Length diff --git a/src/Fantomas.Tests/PatternMatchingTests.fs b/src/Fantomas.Tests/PatternMatchingTests.fs index 8d6f3760bc..ec92b0072d 100644 --- a/src/Fantomas.Tests/PatternMatchingTests.fs +++ b/src/Fantomas.Tests/PatternMatchingTests.fs @@ -902,17 +902,16 @@ List.tryFind(fun { Type = t; Range = r } -> |> should equal """ -List.tryFind - (fun { Type = t; Range = r } -> - match t with - | MainNode SynMemberDefn_Member - | MainNode SynMemberSig_Member -> // trying to get AST trivia - RangeHelpers.``range contains`` r rangeOfBindingAndRhs +List.tryFind (fun { Type = t; Range = r } -> + match t with + | MainNode SynMemberDefn_Member + | MainNode SynMemberSig_Member -> // trying to get AST trivia + RangeHelpers.``range contains`` r rangeOfBindingAndRhs - | Token (MEMBER, _) -> // trying to get token trivia - r.StartLine = rangeOfBindingAndRhs.StartLine + | Token (MEMBER, _) -> // trying to get token trivia + r.StartLine = rangeOfBindingAndRhs.StartLine - | _ -> false) + | _ -> false) """ [] @@ -938,8 +937,7 @@ Seq.takeWhile |> should equal """ -Seq.takeWhile - (function +Seq.takeWhile (function | Write "" // for example: // type Foo = diff --git a/src/Fantomas.Tests/RecordTests.fs b/src/Fantomas.Tests/RecordTests.fs index 8e323953ed..dbef7dc58b 100644 --- a/src/Fantomas.Tests/RecordTests.fs +++ b/src/Fantomas.Tests/RecordTests.fs @@ -427,11 +427,10 @@ let ``meaningful space should be preserved, 353`` () = |> should equal """ -to'.WithCommon - (fun o' -> - { dotnetOptions o' with - WorkingDirectory = Path.getFullName "RegressionTesting/issue29" - Verbosity = Some DotNet.Verbosity.Minimal }) +to'.WithCommon (fun o' -> + { dotnetOptions o' with + WorkingDirectory = Path.getFullName "RegressionTesting/issue29" + Verbosity = Some DotNet.Verbosity.Minimal }) .WithParameters """ diff --git a/src/Fantomas.Tests/StringTests.fs b/src/Fantomas.Tests/StringTests.fs index d82cba2b67..2bb157c73c 100644 --- a/src/Fantomas.Tests/StringTests.fs +++ b/src/Fantomas.Tests/StringTests.fs @@ -285,11 +285,10 @@ let ``newline in string`` () = let triviaNodes = tokenize [] source |> getTriviaFromTokens - |> List.filter - (fun { Item = item } -> - match item with - | StringContent ("\"\n\"") -> true - | _ -> false) + |> List.filter (fun { Item = item } -> + match item with + | StringContent ("\"\n\"") -> true + | _ -> false) List.length triviaNodes == 1 """ diff --git a/src/Fantomas.Tests/SynConstTests.fs b/src/Fantomas.Tests/SynConstTests.fs index 2512f5ffad..bb236fdc5c 100644 --- a/src/Fantomas.Tests/SynConstTests.fs +++ b/src/Fantomas.Tests/SynConstTests.fs @@ -648,25 +648,23 @@ a:hover {color: #ecc;} let kill = body.Elements() - |> Seq.map - (fun x -> - match x.Name.LocalName with - | \"h2\" -> - keep - := (List.tryFind (fun e -> e = String.Concat(x.Nodes())) eliminate) - |> Option.isNone - | \"footer\" -> keep := true - | _ -> () - - if !keep then None else Some x) + |> Seq.map (fun x -> + match x.Name.LocalName with + | \"h2\" -> + keep + := (List.tryFind (fun e -> e = String.Concat(x.Nodes())) eliminate) + |> Option.isNone + | \"footer\" -> keep := true + | _ -> () + + if !keep then None else Some x) |> Seq.toList kill - |> Seq.iter - (fun q -> - match q with - | Some x -> x.Remove() - | _ -> ()) + |> Seq.iter (fun q -> + match q with + | Some x -> x.Remove() + | _ -> ()) let packable = Path.getFullName \"./_Binaries/README.html\" diff --git a/src/Fantomas.Tests/SynExprSetTests.fs b/src/Fantomas.Tests/SynExprSetTests.fs index cf44ac1f55..37caf98aff 100644 --- a/src/Fantomas.Tests/SynExprSetTests.fs +++ b/src/Fantomas.Tests/SynExprSetTests.fs @@ -97,34 +97,33 @@ let ``don't add additional new line after SynExpr.LongIndentSet, 1111`` () = equal """ let options = - jsOptions - (fun o -> - o.autoResize <- Some true - o.edges <- Some(jsOptions (fun e -> e.arrows <- Some <| U2.Case1 "to")) - - o.interaction <- - Some( - createObj [ "hover" ==> true - "zoomView" ==> true - "hoverConnectedEdges" ==> false ] - ) - - o.layout <- Some(createObj [ "randomSeed" ==> 0 ]) - - let hierOpts dir = - createObj [ "enabled" ==> true - "levelSeparation" ==> 170 - "nodeSpacing" ==> 100 - "treeSpacing" ==> 100 - "direction" ==> dir ] - - let layout = - match opts.Layout with - | Graph.Free -> createObj [] - | Graph.HierarchicalLeftRight -> createObj [ "hierarchical" ==> hierOpts "LR" ] - | Graph.HierarchicalUpDown -> createObj [ "hierarchical" ==> hierOpts "UD" ] - - o.layout <- Some layout) + jsOptions (fun o -> + o.autoResize <- Some true + o.edges <- Some(jsOptions (fun e -> e.arrows <- Some <| U2.Case1 "to")) + + o.interaction <- + Some( + createObj [ "hover" ==> true + "zoomView" ==> true + "hoverConnectedEdges" ==> false ] + ) + + o.layout <- Some(createObj [ "randomSeed" ==> 0 ]) + + let hierOpts dir = + createObj [ "enabled" ==> true + "levelSeparation" ==> 170 + "nodeSpacing" ==> 100 + "treeSpacing" ==> 100 + "direction" ==> dir ] + + let layout = + match opts.Layout with + | Graph.Free -> createObj [] + | Graph.HierarchicalLeftRight -> createObj [ "hierarchical" ==> hierOpts "LR" ] + | Graph.HierarchicalUpDown -> createObj [ "hierarchical" ==> hierOpts "UD" ] + + o.layout <- Some layout) """ [] @@ -214,16 +213,15 @@ let ``keep new line before SynExpr.DotIndexedSet, 1314`` () = let fs = warnings - |> List.choose - (fun w -> - w.Warning.Details.SuggestedFix - |> Option.bind - (fun f -> - let f = f.Force() - let range = fcsRangeToLsp w.Warning.Details.Range + |> List.choose (fun w -> + w.Warning.Details.SuggestedFix + |> Option.bind + (fun f -> + let f = f.Force() + let range = fcsRangeToLsp w.Warning.Details.Range - f - |> Option.map (fun f -> range, { Range = range; NewText = f.ToText }))) + f + |> Option.map (fun f -> range, { Range = range; NewText = f.ToText }))) lintFixes.[uri] <- fs """ @@ -241,16 +239,14 @@ match x with let fs = warnings - |> List.choose - (fun w -> - w.Warning.Details.SuggestedFix - |> Option.bind - (fun f -> - let f = f.Force() - let range = fcsRangeToLsp w.Warning.Details.Range - - f - |> Option.map (fun f -> range, { Range = range; NewText = f.ToText }))) + |> List.choose (fun w -> + w.Warning.Details.SuggestedFix + |> Option.bind (fun f -> + let f = f.Force() + let range = fcsRangeToLsp w.Warning.Details.Range + + f + |> Option.map (fun f -> range, { Range = range; NewText = f.ToText }))) lintFixes.[uri] <- fs """ diff --git a/src/Fantomas.Tests/TypeDeclarationTests.fs b/src/Fantomas.Tests/TypeDeclarationTests.fs index 5c3a6c1abb..4ab86693fa 100644 --- a/src/Fantomas.Tests/TypeDeclarationTests.fs +++ b/src/Fantomas.Tests/TypeDeclarationTests.fs @@ -748,17 +748,16 @@ type BlobHelper(Account : CloudStorageAccount) = """ type BlobHelper(Account: CloudStorageAccount) = new(configurationSettingName, hostedService) = - CloudStorageAccount.SetConfigurationSettingPublisher - (fun configName configSettingPublisher -> - let connectionString = - if hostedService then - RoleEnvironment.GetConfigurationSettingValue(configName) - else - ConfigurationManager.ConnectionStrings.[configName] - .ConnectionString - - configSettingPublisher.Invoke(connectionString) - |> ignore) + CloudStorageAccount.SetConfigurationSettingPublisher (fun configName configSettingPublisher -> + let connectionString = + if hostedService then + RoleEnvironment.GetConfigurationSettingValue(configName) + else + ConfigurationManager.ConnectionStrings.[configName] + .ConnectionString + + configSettingPublisher.Invoke(connectionString) + |> ignore) BlobHelper(CloudStorageAccount.FromConfigurationSetting(configurationSettingName)) """ @@ -2228,17 +2227,16 @@ type Auth0User = AppMetaData : AppMetaData } static member Decoder : Decoder = - Decode.object - (fun get -> - let userId = - get.Required.Field "user_id" Decode.string + Decode.object (fun get -> + let userId = + get.Required.Field "user_id" Decode.string - let metaData = - get.Optional.Field "app_metadata" AppMetaData.Decoder - |> Option.defaultValue ({ PushNotificationSubscriptions = [] }) + let metaData = + get.Optional.Field "app_metadata" AppMetaData.Decoder + |> Option.defaultValue ({ PushNotificationSubscriptions = [] }) - { UserId = userId - AppMetaData = metaData }) + { UserId = userId + AppMetaData = metaData }) """ [] diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index bf4549e2fd..a7294c8642 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -1552,10 +1552,6 @@ and genExpr astContext synExpr ctx = List.last pats |> fun lastPat -> ctx.MkRange lastPat.Range.End expr.Range.Start - let hasLineCommentAfterArrow = - findTriviaTokenFromName RARROW arrowRange ctx - |> Option.isSome - let body = genExprKeepIndentInBranch astContext expr @@ -1570,31 +1566,23 @@ and genExpr astContext synExpr ctx = +> triviaOfLambda printContentBefore -- "fun " +> col sepSpace pats (genPat astContext) - +> indent - +> triviaAfterArrow arrowRange +> (fun ctx -> - if ctx.Config.MultiLineLambdaClosingNewline then - (leadingExpressionIsMultiline - (ifElse hasLineCommentAfterArrow body (sepSpaceOrNlnIfExpressionExceedsPageWidth body) - +> triviaOfLambda printContentAfter - +> unindent) - (fun isMultiline -> onlyIf isMultiline sepNln) - +> sepCloseTFor rpr pr) - ctx - else - (ifElse - hasLineCommentAfterArrow + if not ctx.Config.MultiLineLambdaClosingNewline then + genArrowWithTrivia (body +> triviaOfLambda printContentAfter +> sepNlnWhenWriteBeforeNewlineNotEmpty id +> sepCloseTFor rpr pr) - (autoNlnIfExpressionExceedsPageWidth ( - body - +> triviaOfLambda printContentAfter - +> sepNlnWhenWriteBeforeNewlineNotEmpty id - +> sepCloseTFor rpr pr - )) - +> unindent) + arrowRange + ctx + else + leadingExpressionIsMultiline + (genArrowWithTrivia + (body + +> triviaOfLambda printContentAfter + +> sepNlnWhenWriteBeforeNewlineNotEmpty id) + arrowRange) + (fun isMultiline -> onlyIf isMultiline sepNln +> sepCloseTFor rpr pr) ctx) expr ctx @@ -2018,6 +2006,8 @@ and genExpr astContext synExpr ctx = fun ctx -> isShortExpression ctx.Config.MaxDotGetExpressionWidth short long ctx + // (*) (60. * 1.1515 * 1.609344) + // function is wrapped in parenthesis | AppParenArg (Choice1Of2 (Paren _, _, _, _, _, _) as app) | AppParenArg (Choice2Of2 (Paren _, _, _, _, _) as app) -> let short = genAppWithParenthesis app astContext @@ -2046,6 +2036,203 @@ and genExpr astContext synExpr ctx = expressionFitsOnRestOfLine short long + // functionName arg1 arg2 (fun x y z -> ...) + | AppWithLambda (e, es, lpr, lambda, rpr, pr) -> + let sepSpaceAfterFunctionName ctx = + match List.tryHead es with + | Some (SimpleExpr _) -> sepSpace ctx + | _ -> + match e with + | UppercaseSynExpr -> onlyIf ctx.Config.SpaceBeforeUppercaseInvocation sepSpace ctx + | LowercaseSynExpr -> onlyIf ctx.Config.SpaceBeforeLowercaseInvocation sepSpace ctx + + let arrowRange pats (bodyExpr: SynExpr) = + List.last pats + |> fun (lastPat: SynPat) -> ctx.MkRange lastPat.Range.End bodyExpr.Range.Start + + let short = + genExpr astContext e + +> sepSpaceAfterFunctionName + +> col sepSpace es (genExpr astContext) + +> onlyIf (List.isNotEmpty es) sepSpace + +> (sepOpenTFor lpr + +> (match lambda with + | Choice1Of2 (pats, body, lambdaRange) -> + !- "fun " + +> col sepSpace pats (genPat astContext) + +> tokN (arrowRange pats body) RARROW sepArrow + +> genExprKeepIndentInBranch astContext body + |> genTriviaFor SynExpr_Lambda lambdaRange + | Choice2Of2 (keywordRange, cs, range) -> + (!- "function " + |> genTriviaFor SynExpr_MatchLambda_Function keywordRange) + +> indent + +> sepNln + +> genClauses astContext cs + +> unindent + |> genTriviaFor SynExpr_MatchLambda range) + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepNone + +> sepCloseTFor rpr pr + |> genTriviaFor SynExpr_Paren pr) + + let long (ctx: Context) : Context = + if ctx.Config.MultiLineLambdaClosingNewline then + let genArguments = + match es with + | [] -> + match lambda with + | Choice1Of2 (pats, bodyExpr, range) -> + sepOpenTFor lpr + +> (!- "fun " + +> col sepSpace pats (genPat astContext) + +> genArrowWithTrivia + (genExprKeepIndentInBranch astContext bodyExpr) + (arrowRange pats bodyExpr) + |> genTriviaFor SynExpr_Lambda range) + +> sepNln + +> sepCloseTFor rpr pr + |> genTriviaFor SynExpr_Paren pr + | Choice2Of2 (keywordRange, cs, matchLambdaRange) -> + sepOpenTFor lpr + +> indent + +> sepNln + +> ((!- "function " + |> genTriviaFor SynExpr_MatchLambda_Function keywordRange) + +> sepNln + +> genClauses astContext cs + |> genTriviaFor SynExpr_MatchLambda matchLambdaRange) + +> unindent + +> sepNln + +> sepCloseTFor rpr pr + |> genTriviaFor SynExpr_Paren pr + + | es -> + col sepNln es (genExpr astContext) + +> sepNln + +> (match lambda with + | Choice1Of2 (pats, bodyExpr, range) -> + genLambdaMultiLineClosingNewline astContext lpr pats bodyExpr range rpr pr + | Choice2Of2 (keywordRange, cs, matchLambdaRange) -> + (sepOpenTFor lpr + +> ((!- "function " + |> genTriviaFor SynExpr_MatchLambda_Function keywordRange) + +> sepNln + +> genClauses astContext cs + |> genTriviaFor SynExpr_MatchLambda matchLambdaRange) + +> sepNln + +> sepCloseTFor rpr pr) + |> genTriviaFor SynExpr_Paren pr) + +> unindent + + (genExpr astContext e + +> ifElse (List.isEmpty es) sepSpaceAfterFunctionName (indent +> sepNln) + +> genArguments) + ctx + else + match lambda with + | Choice1Of2 (pats, body, lambdaRange) -> + let arrowRange = arrowRange pats body + + let singleLineTestExpr = + genExpr astContext e + +> sepSpaceAfterFunctionName + +> col sepSpace es (genExpr astContext) + +> sepSpace + +> enterNodeFor SynExpr_Paren pr + +> sepOpenTFor lpr + +> enterNodeFor SynExpr_Lambda lambdaRange + +> !- "fun " + +> col sepSpace pats (genPat astContext) + +> tokN arrowRange RARROW sepArrow + + let singleLine = + genExpr astContext e + +> sepSpaceAfterFunctionName + +> col sepSpace es (genExpr astContext) + +> sepSpace + +> (sepOpenTFor lpr + +> (!- "fun " + +> col sepSpace pats (genPat astContext) + +> genArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange + |> genTriviaFor SynExpr_Lambda lambdaRange) + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepNone + +> sepCloseTFor rpr pr + |> genTriviaFor SynExpr_Paren pr) + + let multiLine = + genExpr astContext e + +> indent + +> sepNln + +> col sepNln es (genExpr astContext) + +> sepNln + +> (sepOpenTFor lpr + +> (!- "fun " + +> col sepSpace pats (genPat astContext) + +> genArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange + |> genTriviaFor SynExpr_Lambda lambdaRange) + +> sepCloseTFor rpr pr + |> genTriviaFor SynExpr_Paren pr) + +> unindent + + if futureNlnCheck singleLineTestExpr ctx then + multiLine ctx + else + singleLine ctx + + | Choice2Of2 (keywordRange, cs, matchLambdaRange) -> + let singleLineTestExpr = + genExpr astContext e + +> sepSpaceAfterFunctionName + +> col sepSpace es (genExpr astContext) + +> enterNodeFor SynExpr_Paren pr + +> sepOpenTFor lpr + +> enterNodeFor SynExpr_MatchLambda matchLambdaRange + +> enterNodeFor SynExpr_MatchLambda_Function keywordRange + +> !- "function " + + let singleLine = + genExpr astContext e + +> sepSpaceAfterFunctionName + +> col sepSpace es (genExpr astContext) + +> sepSpace + +> (sepOpenTFor lpr + +> ((!- "function " + |> genTriviaFor SynExpr_MatchLambda_Function keywordRange) + +> indent + +> sepNln + +> genClauses astContext cs + +> unindent + |> genTriviaFor SynExpr_MatchLambda matchLambdaRange) + +> sepNlnWhenWriteBeforeNewlineNotEmpty id + +> unindent + +> sepCloseTFor rpr pr) + |> genTriviaFor SynExpr_Paren pr + + let multiLine = + genExpr astContext e + +> indent + +> sepNln + +> col sepNln es (genExpr astContext) + +> sepNln + +> (sepOpenTFor lpr + +> atCurrentColumn ( + (!- "function " + |> genTriviaFor SynExpr_MatchLambda_Function keywordRange) + +> sepNln + +> genClauses astContext cs + |> genTriviaFor SynExpr_MatchLambda matchLambdaRange + ) + +> sepCloseTFor rpr pr + |> genTriviaFor SynExpr_Paren pr) + +> unindent + + if futureNlnCheck singleLineTestExpr ctx then + multiLine ctx + else + singleLine ctx + + expressionFitsOnRestOfLine short long + // Always spacing in multiple arguments | App (e, es) -> genApp astContext e es | TypeApp (e, lt, ts, gt) -> @@ -2754,11 +2941,7 @@ and genMultilineFunctionApplicationArguments astContext argExpr = (sepOpenTFor lpr +> (!- "fun " +> col sepSpace pats (genPat astContext) - +> triviaAfterArrow arrowRange - +> indent - +> sepNln - +> genExprKeepIndentInBranch astContext body - +> unindent + +> genArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange |> genTriviaFor SynExpr_Lambda range) +> sepNln +> sepCloseTFor rpr pr) @@ -3143,14 +3326,14 @@ and genApp astContext e es ctx = let longExpression = if shouldHaveAlternativeLambdaStyle then - let hasMultipleArguments = (List.length es) > 1 - - let sepSpaceAfterFunctionName ctx = - match e with - | UppercaseSynExpr -> onlyIf ctx.Config.SpaceBeforeUppercaseInvocation sepSpace ctx - | LowercaseSynExpr -> onlyIf ctx.Config.SpaceBeforeLowercaseInvocation sepSpace ctx - - let multipleArguments = + // sample: + // myFunction + // argumentOne + // (fun x -> + // // foo + // x = 12 + // ) + let argExpr = col sepNln es @@ -3166,10 +3349,7 @@ and genApp astContext e es ctx = leadingExpressionIsMultiline (sepOpenTFor lpr -- "fun " +> pats - +> indent - +> triviaAfterArrow arrowRange - +> autoNlnIfExpressionExceedsPageWidth (genExprKeepIndentInBranch astContext bodyExpr) - +> unindent) + +> genArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) arrowRange) (fun isMultiline -> onlyIf isMultiline sepNln +> sepCloseTFor rpr e.Range) @@ -3184,51 +3364,11 @@ and genApp astContext e es ctx = genLambda (col sepSpace pats (genPat astContext)) expr lpr rpr arrowRange pr | _ -> genExpr astContext e) - let singleLambdaArgument = - col - sepSpace - es - (fun e -> - let genLambda pats (bodyExpr: SynExpr) lpr rpr arrowRange lambdaRange = - sepOpenTFor lpr - +> (!- "fun " - +> pats - +> indent - +> triviaAfterArrow arrowRange - +> autoNlnIfExpressionExceedsPageWidth (genExprKeepIndentInBranch astContext bodyExpr) - |> genTriviaFor SynExpr_Lambda lambdaRange) - +> unindent - +> sepNln - +> sepCloseTFor rpr e.Range - - match e with - | Paren (lpr, Lambda (pats, expr, range), rpr, _) -> - let arrowRange = - List.last pats - |> fun lastPat -> ctx.MkRange lastPat.Range.End expr.Range.Start - - genLambda (col sepSpace pats (genPat astContext)) expr lpr rpr arrowRange range - | Paren (lpr, (MatchLambda _ as me), rpr, pr) -> - sepOpenTFor lpr - +> indent - +> sepNln - +> genExpr astContext me - +> unindent - +> sepNln - +> sepCloseTFor rpr e.Range - |> genTriviaFor SynExpr_Paren pr - | _ -> genExpr astContext e) - - let argExpr = - if hasMultipleArguments then - multipleArguments - else - singleLambdaArgument - genExpr astContext e - +> ifElse (not hasMultipleArguments) sepSpaceAfterFunctionName (indent +> sepNln) + +> indent + +> sepNln +> argExpr - +> onlyIf hasMultipleArguments unindent + +> unindent else atCurrentColumn ( genExpr astContext e @@ -3247,6 +3387,27 @@ and genApp astContext e es ctx = else expressionFitsOnRestOfLine shortExpression longExpression ctx +and genLambdaMultiLineClosingNewline + (astContext: ASTContext) + (lpr: Range) + (pats: SynPat list) + (bodyExpr: SynExpr) + (lambdaRange: Range) + (rpr: Range option) + (pr: Range) + : Context -> Context = + let arrowRange (ctx: Context) = + List.last pats + |> fun lastPat -> ctx.MkRange lastPat.Range.End bodyExpr.Range.Start + + leadingExpressionIsMultiline + (sepOpenTFor lpr -- "fun " + +> col sepSpace pats (genPat astContext) + +> (fun ctx -> genArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) (arrowRange ctx) ctx) + |> genTriviaFor SynExpr_Lambda lambdaRange) + (fun isMultiline -> onlyIf isMultiline sepNln +> sepCloseTFor rpr pr) + |> genTriviaFor SynExpr_Paren pr + and genAppWithTupledArgument (e, lpr, ts, tr, rpr, pr) astContext = genExpr astContext e +> sepSpace diff --git a/src/Fantomas/SourceParser.fs b/src/Fantomas/SourceParser.fs index b5e5e6d682..8b6ff786fd 100644 --- a/src/Fantomas/SourceParser.fs +++ b/src/Fantomas/SourceParser.fs @@ -1274,6 +1274,25 @@ let (|Lambda|_|) = Some(pats, getLambdaBodyExpr body, range) | _ -> None +let (|AppWithLambda|_|) (e: SynExpr) = + match e with + | App (e, es) -> + let rec visit (es: SynExpr list) (finalContinuation: SynExpr list -> SynExpr list) = + match es with + | [] -> None + | [ Paren (lpr, Lambda (pats, body, range), rpr, pr) ] -> + Some(e, finalContinuation [], lpr, (Choice1Of2(pats, body, range)), rpr, pr) + | [ Paren (lpr, (MatchLambda (keywordRange, pats) as me), rpr, pr) ] -> + Some(e, finalContinuation [], lpr, (Choice2Of2(keywordRange, pats, me.Range)), rpr, pr) + | h :: tail -> + match h with + | Paren (_, Lambda _, _, _) + | Paren (_, MatchLambda _, _, _) -> None + | _ -> visit tail (fun leadingArguments -> h :: leadingArguments |> finalContinuation) + + visit es id + | _ -> None + // Type definitions let (|TDSREnum|TDSRUnion|TDSRRecord|TDSRNone|TDSRTypeAbbrev|TDSRException|) = diff --git a/src/Fantomas/TriviaContext.fs b/src/Fantomas/TriviaContext.fs index 264bb8fa87..d05d526a9c 100644 --- a/src/Fantomas/TriviaContext.fs +++ b/src/Fantomas/TriviaContext.fs @@ -15,21 +15,13 @@ let sepOpenTFor r = tokN r LPAREN sepOpenT let sepCloseTFor rpr pr = tokN (Option.defaultValue pr rpr) RPAREN sepCloseT -let triviaAfterArrow (range: Range) (ctx: Context) = - let hasCommentAfterArrow = - findTriviaTokenFromName RARROW range ctx - |> Option.bind - (fun t -> - t.ContentAfter - |> List.tryFind - (function - | Comment (LineCommentAfterSourceCode _) -> true - | _ -> false)) - |> Option.isSome - - ((tokN range RARROW sepArrow) - +> ifElse hasCommentAfterArrow sepNln sepNone) - ctx +let genArrowWithTrivia (bodyExpr: Context -> Context) (range: Range) = + (tokN range RARROW sepArrow) + +> (fun ctx -> + if String.isNotNullOrEmpty ctx.WriterModel.WriteBeforeNewline then + (indent +> sepNln +> bodyExpr +> unindent) ctx + else + (autoIndentAndNlnIfExpressionExceedsPageWidth bodyExpr) ctx) let ``else if / elif`` (rangeOfIfThenElse: Range) (ctx: Context) = let keywords = From 2decf2c161c04f16386d80b0ebf4d57977e869f0 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 7 Sep 2021 18:18:02 +0200 Subject: [PATCH 04/12] Add release notes for 4.6.0-alpha-002. --- RELEASE_NOTES.md | 4 ++++ .../Fantomas.CoreGlobalTool.Tests.fsproj | 1 + src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj | 1 + src/Fantomas.Extras/Fantomas.Extras.fsproj | 1 + src/Fantomas.Tests/Fantomas.Tests.fsproj | 1 + src/Fantomas/Fantomas.fsproj | 1 + 6 files changed, 9 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 57594a061d..14f37d8ea1 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,7 @@ +#### 4.6.0-alpha-002 + +* Fix Update style of lambda argument. [#1871](https://github.com/fsprojects/fantomas/issues/1871) + #### 4.6.0-alpha-001 * Update to FCS 40.0.1-preview.21352.5 diff --git a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj index 535d9adbba..f468a537d5 100644 --- a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj +++ b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj @@ -5,6 +5,7 @@ false false 4.6.0-alpha-001 + 4.6.0-alpha-002 FS0988 FS0025 diff --git a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj index c000b3f5a7..b669072752 100644 --- a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj +++ b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj @@ -9,6 +9,7 @@ fantomas True 4.6.0-alpha-001 + 4.6.0-alpha-002 fantomas-tool FS0025 LICENSE.md diff --git a/src/Fantomas.Extras/Fantomas.Extras.fsproj b/src/Fantomas.Extras/Fantomas.Extras.fsproj index 122188b03f..98525676a6 100644 --- a/src/Fantomas.Extras/Fantomas.Extras.fsproj +++ b/src/Fantomas.Extras/Fantomas.Extras.fsproj @@ -3,6 +3,7 @@ netstandard2.0 4.6.0-alpha-001 + 4.6.0-alpha-002 Utility package for Fantomas FS0025 LICENSE.md diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj index 63375b3dd1..3091dc437c 100644 --- a/src/Fantomas.Tests/Fantomas.Tests.fsproj +++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj @@ -1,6 +1,7 @@ 4.6.0-alpha-001 + 4.6.0-alpha-002 FS0988 net5.0 FS0025 diff --git a/src/Fantomas/Fantomas.fsproj b/src/Fantomas/Fantomas.fsproj index 7d5d0a55c3..1bd734c7dc 100644 --- a/src/Fantomas/Fantomas.fsproj +++ b/src/Fantomas/Fantomas.fsproj @@ -3,6 +3,7 @@ netstandard2.0 4.6.0-alpha-001 + 4.6.0-alpha-002 Source code formatter for F# FS0025 LICENSE.md From f46076239dffe834b7b7bd1fd25c526e5c6c9e94 Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Mon, 27 Sep 2021 15:08:57 +0200 Subject: [PATCH 05/12] Update records indent from the curly brace (#1892) * Update records indent from the curly brace. Fixes #1876. * WIP anonymous records * Indent multiline record field expressions from the opening brace. * Restore correct indent after update record expression. * trigger CI --- src/Fantomas.Tests/AppTests.fs | 3 +- src/Fantomas.Tests/CommentTests.fs | 47 ++ src/Fantomas.Tests/CompilerDirectivesTests.fs | 8 +- src/Fantomas.Tests/LambdaTests.fs | 4 +- .../NumberOfItemsRecordTests.fs | 54 +- src/Fantomas.Tests/OperatorTests.fs | 8 +- src/Fantomas.Tests/PatternMatchingTests.fs | 11 +- src/Fantomas.Tests/RecordTests.fs | 502 +++++++++++++++--- src/Fantomas/CodePrinter.fs | 175 +++--- src/Fantomas/Context.fs | 26 +- 10 files changed, 651 insertions(+), 187 deletions(-) diff --git a/src/Fantomas.Tests/AppTests.fs b/src/Fantomas.Tests/AppTests.fs index 2b73d845aa..f6f07d54b6 100644 --- a/src/Fantomas.Tests/AppTests.fs +++ b/src/Fantomas.Tests/AppTests.fs @@ -436,8 +436,7 @@ let ``classes and private implicit constructors`` () = do self.PrintMessage() member this.PrintMessage() = printf \"Creating MyClass2 with Data %d\" data\"\"\" - { config with - MaxFunctionBindingWidth = 120 } + { config with MaxFunctionBindingWidth = 120 } " [] diff --git a/src/Fantomas.Tests/CommentTests.fs b/src/Fantomas.Tests/CommentTests.fs index 32eac24436..e1069dd8df 100644 --- a/src/Fantomas.Tests/CommentTests.fs +++ b/src/Fantomas.Tests/CommentTests.fs @@ -289,6 +289,53 @@ let a = B = 7 } """ +[] +let ``comment alignment above record field`` () = + formatSourceString + false + """ +let a = + { c = 4 + // foo + // bar + B = 7 } +""" + config + |> prepend newline + |> should + equal + """ +let a = + { c = 4 + // foo + // bar + B = 7 } +""" + +[] +let ``comment alignment above record field, fsharp_space_around_delimiter = false`` () = + formatSourceString + false + """ +let a = + { c = 4 + // foo + // bar + B = 7 } +""" + { config with + SpaceAroundDelimiter = false } + |> prepend newline + |> should + equal + """ +let a = + {c = 4 + // foo + // bar + B = 7} +""" + [] let ``shouldn't break on one-line comment`` () = formatSourceString diff --git a/src/Fantomas.Tests/CompilerDirectivesTests.fs b/src/Fantomas.Tests/CompilerDirectivesTests.fs index 965f290d94..e0d126a17d 100644 --- a/src/Fantomas.Tests/CompilerDirectivesTests.fs +++ b/src/Fantomas.Tests/CompilerDirectivesTests.fs @@ -1911,7 +1911,7 @@ let config = #if WATCH #else - "https://fsprojects.github.io/fantomas/" + "https://fsprojects.github.io/fantomas/" #endif } """ @@ -1944,7 +1944,7 @@ let config = theme_variant = Some "red" root_url = #if WATCH - "http://localhost:8080/" + "http://localhost:8080/" #else #endif @@ -1979,9 +1979,9 @@ let config = theme_variant = Some "red" root_url = #if WATCH - "http://localhost:8080/" + "http://localhost:8080/" #else - "https://fsprojects.github.io/fantomas/" + "https://fsprojects.github.io/fantomas/" #endif } """ diff --git a/src/Fantomas.Tests/LambdaTests.fs b/src/Fantomas.Tests/LambdaTests.fs index f83158d177..f47fe6754a 100644 --- a/src/Fantomas.Tests/LambdaTests.fs +++ b/src/Fantomas.Tests/LambdaTests.fs @@ -933,8 +933,8 @@ module Foo = module Foo = let bar () = { Foo = - blah - |> Struct.map (fun _ (a, _, _) -> filterBackings a) } + blah + |> Struct.map (fun _ (a, _, _) -> filterBackings a) } """ [] diff --git a/src/Fantomas.Tests/NumberOfItemsRecordTests.fs b/src/Fantomas.Tests/NumberOfItemsRecordTests.fs index d45a4b1f7e..46f455e8f8 100644 --- a/src/Fantomas.Tests/NumberOfItemsRecordTests.fs +++ b/src/Fantomas.Tests/NumberOfItemsRecordTests.fs @@ -70,8 +70,8 @@ let myRecord = Progress = "foo" Bar = { Zeta = "bar" } Address = - { Street = "Bakerstreet" - ZipCode = "9000" } + { Street = "Bakerstreet" + ZipCode = "9000" } Number = 42 } """ @@ -92,9 +92,9 @@ let ``update record`` () = """ let myRecord = { myOldRecord with - Level = 2 - Bar = "barry" - Progress = "fooey" } + Level = 2 + Bar = "barry" + Progress = "fooey" } """ [] @@ -220,8 +220,8 @@ let ``anonymous record with multiple field update`` () = """ let a = {| foo with - Level = 7 - Square = 9 |} + Level = 7 + Square = 9 |} """ [] @@ -272,12 +272,12 @@ let anonRecord = """ let anonRecord = {| A = - {| A1 = "string" - A2LongerIdentifier = "foo" |} + {| A1 = "string" + A2LongerIdentifier = "foo" |} B = {| B1 = 7 |} C = - { C1 = "foo" - C2LongerIdentifier = "bar" } + { C1 = "foo" + C2LongerIdentifier = "bar" } D = { D1 = "bar" } |} """ @@ -708,8 +708,8 @@ let ``update record with standard indent`` () = """ let expected = { ThisIsAThing.Empty with - TheNewValue = 1 - ThatValue = 2 } + TheNewValue = 1 + ThatValue = 2 } """ [] @@ -797,9 +797,9 @@ let config = theme_variant = Some "red" root_url = #if WATCH - "http://localhost:8080/" + "http://localhost:8080/" #else - "https://fsprojects.github.io/fantomas/" + "https://fsprojects.github.io/fantomas/" #endif } """ @@ -911,9 +911,9 @@ let s = let r' = { r with - a = x - b = y - z = c } + a = x + b = y + z = c } let s' = { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } @@ -929,9 +929,9 @@ g s { AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } f r' { r with - a = x - b = y - z = c } + a = x + b = y + z = c } g s' { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } """ @@ -1036,9 +1036,9 @@ let s = let r' = {| r with - a = x - b = y - z = c |} + a = x + b = y + z = c |} let s' = {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} @@ -1054,9 +1054,9 @@ g s {| AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} f r' {| r with - a = x - b = y - z = c |} + a = x + b = y + z = c |} g s' {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} """ diff --git a/src/Fantomas.Tests/OperatorTests.fs b/src/Fantomas.Tests/OperatorTests.fs index 600c6ffe43..d4db9ca4b0 100644 --- a/src/Fantomas.Tests/OperatorTests.fs +++ b/src/Fantomas.Tests/OperatorTests.fs @@ -766,11 +766,11 @@ Fooey " let r = {| Foo = - a - && // && b - c + a + && // && b + c Bar = - \"\"\" + \"\"\" Fooey \"\"\" |} " diff --git a/src/Fantomas.Tests/PatternMatchingTests.fs b/src/Fantomas.Tests/PatternMatchingTests.fs index ec92b0072d..ee6012abac 100644 --- a/src/Fantomas.Tests/PatternMatchingTests.fs +++ b/src/Fantomas.Tests/PatternMatchingTests.fs @@ -515,8 +515,7 @@ let update msg model = let res = match msg with | AMessage -> - { model with - AFieldWithAVeryVeryVeryLooooooongName = 10 } + { model with AFieldWithAVeryVeryVeryLooooooongName = 10 } .RecalculateTotal() | AnotherMessage -> model @@ -833,8 +832,8 @@ let private update onSubmit msg model = | UpdateCurrency c -> { model with Currency = c }, Cmd.none | UpdateLocation (lat, lng) -> { model with - Latitude = lat - Longitude = lng }, + Latitude = lat + Longitude = lng }, Cmd.none | UpdateIsDraft d -> { model with IsDraft = d }, Cmd.none | UpdateRemark r -> { model with Remark = r }, Cmd.none @@ -982,8 +981,8 @@ let draftToken = DraftToken.Create kind { token with - LeftColumn = token.LeftColumn - 1 - FullMatchedLength = token.FullMatchedLength + 1 } + LeftColumn = token.LeftColumn - 1 + FullMatchedLength = token.FullMatchedLength + 1 } | Some ({ Kind = SymbolKind.ActivePattern } as ap) when token.Tag = FSharpTokenTag.RPAREN -> DraftToken.Create SymbolKind.Ident ap.Token | _ -> diff --git a/src/Fantomas.Tests/RecordTests.fs b/src/Fantomas.Tests/RecordTests.fs index dbef7dc58b..16b22e71b4 100644 --- a/src/Fantomas.Tests/RecordTests.fs +++ b/src/Fantomas.Tests/RecordTests.fs @@ -405,11 +405,11 @@ Fooey " let r = {| Foo = - a - && // && b - c + a + && // && b + c Bar = - \"\"\" + \"\"\" Fooey \"\"\" |} " @@ -429,8 +429,8 @@ let ``meaningful space should be preserved, 353`` () = """ to'.WithCommon (fun o' -> { dotnetOptions o' with - WorkingDirectory = Path.getFullName "RegressionTesting/issue29" - Verbosity = Some DotNet.Verbosity.Minimal }) + WorkingDirectory = Path.getFullName "RegressionTesting/issue29" + Verbosity = Some DotNet.Verbosity.Minimal }) .WithParameters """ @@ -533,22 +533,22 @@ type Database = .defaults( { Version = CurrentVersion Questions = - [| { Id = 0 - AuthorId = 1 - Title = \"What is the average wing speed of an unladen swallow?\" - Description = - \"\"\" + [| { Id = 0 + AuthorId = 1 + Title = \"What is the average wing speed of an unladen swallow?\" + Description = + \"\"\" Hello, yesterday I saw a flight of swallows and was wondering what their **average wing speed** is? If you know the answer please share it. \"\"\" - Answers = - [| { Id = 0 - CreatedAt = DateTime.Parse \"2017-09-14T19:57:33.103Z\" - AuthorId = 0 - Score = 2 - Content = - \"\"\" + Answers = + [| { Id = 0 + CreatedAt = DateTime.Parse \"2017-09-14T19:57:33.103Z\" + AuthorId = 0 + Score = 2 + Content = + \"\"\" > What do you mean, an African or European Swallow? > > Monty Python’s: The Holy Grail @@ -557,12 +557,12 @@ Ok I must admit, I use google to search the question and found a post explaining I thought you were asking it seriously, well done. x\"\"\" } - { Id = 1 - CreatedAt = DateTime.Parse \"2017-09-14T20:07:27.103Z\" - AuthorId = 2 - Score = 1 - Content = - \"\"\" + { Id = 1 + CreatedAt = DateTime.Parse \"2017-09-14T20:07:27.103Z\" + AuthorId = 2 + Score = 1 + Content = + \"\"\" Maxime, I believe you found [this blog post](http://www.saratoga.com/how-should-i-know/2013/07/what-is-the-average-air-speed-velocity-of-a-laden-swallow/). @@ -571,41 +571,76 @@ And so Robin, the conclusion of the post is: > In the end, it’s concluded that the airspeed velocity of a (European) unladen swallow is about 24 miles per hour or 11 meters per second. \"\"\" } |] - CreatedAt = DateTime.Parse \"2017-09-14T17:44:28.103Z\" } - { Id = 1 - AuthorId = 0 - Title = \"Why did you create Fable?\" - Description = - \"\"\" + CreatedAt = DateTime.Parse \"2017-09-14T17:44:28.103Z\" } + { Id = 1 + AuthorId = 0 + Title = \"Why did you create Fable?\" + Description = + \"\"\" Hello Alfonso, I wanted to know why you created Fable. Did you always plan to use F#? Or were you thinking in others languages? \"\"\" - Answers = [||] - CreatedAt = DateTime.Parse \"2017-09-12T09:27:28.103Z\" } |] + Answers = [||] + CreatedAt = DateTime.Parse \"2017-09-12T09:27:28.103Z\" } |] Users = - [| { Id = 0 - Firstname = \"Maxime\" - Surname = \"Mangel\" - Avatar = \"maxime_mangel.png\" } - { Id = 1 - Firstname = \"Robin\" - Surname = \"Munn\" - Avatar = \"robin_munn.png\" } - { Id = 2 - Firstname = \"Alfonso\" - Surname = \"Garciacaro\" - Avatar = \"alfonso_garciacaro.png\" } - { Id = 3 - Firstname = \"Guest\" - Surname = \"\" - Avatar = \"guest.png\" } |] } + [| { Id = 0 + Firstname = \"Maxime\" + Surname = \"Mangel\" + Avatar = \"maxime_mangel.png\" } + { Id = 1 + Firstname = \"Robin\" + Surname = \"Munn\" + Avatar = \"robin_munn.png\" } + { Id = 2 + Firstname = \"Alfonso\" + Surname = \"Garciacaro\" + Avatar = \"alfonso_garciacaro.png\" } + { Id = 3 + Firstname = \"Guest\" + Surname = \"\" + Avatar = \"guest.png\" } |] } ) .write () Logger.debug \"Database restored\" " +[] +let ``multiline string before closing brace`` () = + formatSourceString + false + " +let person = + let y = + let x = + { Story = \"\"\" + foo + bar +\"\"\" + } + () + () +" + config + |> prepend newline + |> should + equal + " +let person = + let y = + let x = + { Story = + \"\"\" + foo + bar +\"\"\" } + + () + + () +" + [] let ``issue 457`` () = formatSourceString @@ -627,8 +662,8 @@ let x = Foo("").Goo() let r = { s with - xxxxxxxxxxxxxxxxxxxxx = 1 - yyyyyyyyyyyyyyyyyyyyy = 2 } + xxxxxxxxxxxxxxxxxxxxx = 1 + yyyyyyyyyyyyyyyyyyyyy = 2 } """ [] @@ -682,18 +717,18 @@ let expect = let expect = Result.Ok { opts = - [ Opts.anyOf ( - [ (Optional, Opt.flagTrue [ "first"; "f" ]) - (Optional, Opt.value [ "second"; "s" ]) ] - ) - Opts.oneOf ( - Optional, - [ Opt.flag [ "third"; "f" ] - Opt.valueWith - "new value" - [ "fourth" - "ssssssssssssssssssssssssssssssssssssssssssssssssssss" ] ] - ) ] + [ Opts.anyOf ( + [ (Optional, Opt.flagTrue [ "first"; "f" ]) + (Optional, Opt.value [ "second"; "s" ]) ] + ) + Opts.oneOf ( + Optional, + [ Opt.flag [ "third"; "f" ] + Opt.valueWith + "new value" + [ "fourth" + "ssssssssssssssssssssssssssssssssssssssssssssssssssss" ] ] + ) ] args = [] commands = [] } """ @@ -761,11 +796,11 @@ open WebSharper.UI module Maintoc = let Page = { MyPage.Create() with - body = - [ Doc.Verbatim - \"\"\" + body = + [ Doc.Verbatim + \"\"\" This is a very long line in a multi-line string, so long in fact that it is longer than that page width to which I am trying to constrain everything, and so it goes bang. -\"\"\" ] } +\"\"\" ] } " [] @@ -1027,7 +1062,7 @@ let ``longer anonymous record with copy expression`` () = """ let foo = {| bar with - AMemberWithALongName = aValueWithAlsoALongName |} + AMemberWithALongName = aValueWithAlsoALongName |} """ [] @@ -1531,3 +1566,336 @@ match entities with Type = Elephant } |] -> () | _ -> () """ + +[] +let ``update record should indent from curly brace, 1876`` () = + formatSourceString + false + """ +let rainbow2 = + { rainbow with Boss = "Jeffrey" ; Lackeys = [ "Zippy"; "George"; "Bungle" ] } +""" + config + |> prepend newline + |> should + equal + """ +let rainbow2 = + { rainbow with + Boss = "Jeffrey" + Lackeys = [ "Zippy"; "George"; "Bungle" ] } +""" + +[] +let ``update record should indent from curly brace, indent size 2`` () = + formatSourceString + false + """ +let rainbow2 = + { rainbow with Boss = "Jeffrey" ; Lackeys = [ "Zippy"; "George"; "Bungle" ] } +""" + { config with IndentSize = 2 } + |> prepend newline + |> should + equal + """ +let rainbow2 = + { rainbow with + Boss = "Jeffrey" + Lackeys = [ "Zippy"; "George"; "Bungle" ] } +""" + +[] +let ``update record should indent from curly brace, indent size 3`` () = + formatSourceString + false + """ +let rainbow2 = + { rainbow with Boss = "Jeffrey" ; Lackeys = [ "Zippy"; "George"; "Bungle" ] } +""" + { config with IndentSize = 3 } + |> prepend newline + |> should + equal + """ +let rainbow2 = + { rainbow with + Boss = "Jeffrey" + Lackeys = [ "Zippy"; "George"; "Bungle" ] } +""" + +[] +let ``record with comments above field`` () = + formatSourceString + false + """ +{ Foo = + // bar + someValue} +""" + config + |> prepend newline + |> should + equal + """ +{ Foo = + // bar + someValue } +""" + +[] +let ``record with comments above field, indent 2`` () = + formatSourceString + false + """ +{ Foo = + // bar + someValue} +""" + { config with IndentSize = 2 } + |> prepend newline + |> should + equal + """ +{ Foo = + // bar + someValue } +""" + +[] +let ``record with comments above field, indent 3`` () = + formatSourceString + false + """ +{ Foo = + // bar + someValue} +""" + { config with IndentSize = 3 } + |> prepend newline + |> should + equal + """ +{ Foo = + // bar + someValue } +""" + +[] +let ``anonymous record with multiline field`` () = + formatSourceString + false + """ +{| Foo = + // meh + someValue |} +""" + config + |> prepend newline + |> should + equal + """ +{| Foo = + // meh + someValue |} +""" + +[] +let ``anonymous record with multiline field, indent 2`` () = + formatSourceString + false + """ +{| Foo = + // meh + someValue |} +""" + { config with IndentSize = 2 } + |> prepend newline + |> should + equal + """ +{| Foo = + // meh + someValue |} +""" + +[] +let ``anonymous record with multiline field, indent 3`` () = + formatSourceString + false + """ +{| Foo = + // meh + someValue |} +""" + { config with IndentSize = 3 } + |> prepend newline + |> should + equal + """ +{| Foo = + // meh + someValue |} +""" + +[] +let ``anonymous record with multiline field, indent 5`` () = + formatSourceString + false + """ +{| Foo = + // meh + someValue |} +""" + { config with IndentSize = 5 } + |> prepend newline + |> should + equal + """ +{| Foo = + // meh + someValue |} +""" + +[] +let ``a foo`` () = + formatSourceString + false + """ +{| Foo = + someValue + // + a |} +""" + { config with IndentSize = 3 } + |> prepend newline + |> should + equal + """ +{| Foo = + someValue + // + a |} +""" + +[] +let ``long record field assigment`` () = + formatSourceString + false + """ +{ A = + // one indent starting from { + someFunctionCall + arg1 + arg2 + B = + // one indent starting from label B + someFunctionCall + arg1 + arg2 } +""" + config + |> prepend newline + |> should + equal + """ +{ A = + // one indent starting from { + someFunctionCall arg1 arg2 + B = + // one indent starting from label B + someFunctionCall arg1 arg2 } +""" + +[] +let ``anonymous update record, indent_size 3`` () = + formatSourceString + false + """ +{| f with Foo = + // meh + someValue |} +""" + { config with IndentSize = 3 } + |> prepend newline + |> should + equal + """ +{| f with + Foo = + // meh + someValue |} +""" + +[] +let ``restore correct indent after update record expression`` () = + formatSourceString + false + """ +let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { FileName = fileName; Source = source } = + let allDefineOptions, defineHashTokens = TokenParser.getDefines source + + allDefineOptions + |> List.map (fun conditionalCompilationDefines -> + async { + let parsingOptionsWithDefines = + { parsingOptions with + ConditionalCompilationDefines = conditionalCompilationDefines + SourceFiles = Array.map safeFileName parsingOptions.SourceFiles } + // Run the first phase (untyped parsing) of the compiler + let sourceText = + FSharp.Compiler.Text.SourceText.ofString source + + let! untypedRes = checker.ParseFile(fileName, sourceText, parsingOptionsWithDefines) + + if untypedRes.ParseHadErrors then + let errors = + untypedRes.Diagnostics + |> Array.filter (fun e -> e.Severity = FSharpDiagnosticSeverity.Error) + + if not <| Array.isEmpty errors then + raise + <| FormatException( + sprintf "Parsing failed with errors: %A\nAnd options: %A" errors parsingOptionsWithDefines + ) + + return (untypedRes.ParseTree, conditionalCompilationDefines, defineHashTokens) + }) + |> Async.Parallel +""" + config + |> prepend newline + |> should + equal + """ +let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { FileName = fileName; Source = source } = + let allDefineOptions, defineHashTokens = TokenParser.getDefines source + + allDefineOptions + |> List.map (fun conditionalCompilationDefines -> + async { + let parsingOptionsWithDefines = + { parsingOptions with + ConditionalCompilationDefines = conditionalCompilationDefines + SourceFiles = Array.map safeFileName parsingOptions.SourceFiles } + // Run the first phase (untyped parsing) of the compiler + let sourceText = + FSharp.Compiler.Text.SourceText.ofString source + + let! untypedRes = checker.ParseFile(fileName, sourceText, parsingOptionsWithDefines) + + if untypedRes.ParseHadErrors then + let errors = + untypedRes.Diagnostics + |> Array.filter (fun e -> e.Severity = FSharpDiagnosticSeverity.Error) + + if not <| Array.isEmpty errors then + raise + <| FormatException( + sprintf "Parsing failed with errors: %A\nAnd options: %A" errors parsingOptionsWithDefines + ) + + return (untypedRes.ParseTree, conditionalCompilationDefines, defineHashTokens) + }) + |> Async.Parallel +""" diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index a7294c8642..9158eedade 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -1372,7 +1372,7 @@ and genExpr astContext synExpr ctx = let longExpression = ifAlignBrackets (genMultilineAnonRecordAlignBrackets isStruct fields copyInfo astContext) - (genMultilineAnonRecord isStruct fields copyInfo astContext) + (genMultilineAnonRecord isStruct fields copyInfo synExpr.Range astContext) fun (ctx: Context) -> let size = getRecordSize ctx fields @@ -2612,7 +2612,7 @@ and genExpr astContext synExpr ctx = genExpr astContext optExpr +> genSynStaticOptimizationConstraint astContext constraints +> sepEq - +> sepSpaceOrNlnIfExpressionExceedsPageWidth (genExpr astContext e) + +> sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e) | UnsupportedExpr r -> raise @@ -2981,56 +2981,76 @@ and genMultilineRecordInstance astContext (ctx: Context) = - let recordExpr = - let fieldsExpr = - col sepSemiNln xs (genRecordFieldName astContext) + let ifIndentLesserThan size lesser greater ctx = + if ctx.Config.IndentSize < size then + lesser ctx + else + greater ctx - match eo with - | Some e -> - genExpr astContext e - +> !- " with" - +> indent - +> sepNln - +> fieldsExpr - +> unindent - | None -> fieldsExpr + let expressionStartColumn = ctx.Column + + let fieldsExpr = + col sepSemiNln xs (genRecordFieldName astContext) let expr = - sepOpenS - +> (fun (ctx: Context) -> - { ctx with - RecordBraceStart = ctx.Column :: ctx.RecordBraceStart }) - +> atCurrentColumnIndent ( - leaveLeftBrace synExpr.Range - +> opt - (if xs.IsEmpty then sepNone else sepNln) - inheritOpt - (fun (typ, expr) -> - !- "inherit " - +> genType astContext false typ - +> addSpaceBeforeClassConstructor expr - +> genExpr astContext expr) - +> recordExpr - ) - +> (fun ctx -> - match ctx.RecordBraceStart with - | rbs :: rest -> - if ctx.Column < rbs then - let offset = - (if ctx.Config.SpaceAroundDelimiter then - 2 - else - 1) - + 1 - - let delta = Math.Max((rbs - ctx.Column) - offset, 0) - (!- System.String.Empty.PadRight(delta)) { ctx with RecordBraceStart = rest } - else - sepNone { ctx with RecordBraceStart = rest } - | [] -> sepNone ctx) - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepNone - +> enterNodeTokenByName synExpr.Range RBRACE - +> ifElseCtx lastWriteEventIsNewline sepCloseSFixed sepCloseS + match inheritOpt with + | Some (t, e) -> + tokN synExpr.Range LBRACE sepOpenS + +> atCurrentColumn ( + !- "inherit " + +> genType astContext false t + +> addSpaceBeforeClassConstructor e + +> genExpr astContext e + +> onlyIf (List.isNotEmpty xs) sepNln + +> fieldsExpr + +> tokN synExpr.Range RBRACE sepCloseS + ) + | None -> + match eo with + | None -> + fun (ctx: Context) -> + // position after `{ ` or `{` + let targetColumn = + ctx.Column + + (if ctx.Config.SpaceAroundDelimiter then + 2 + else + 1) + + atCurrentColumn + (tokN synExpr.Range LBRACE sepOpenS + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepNone // comment after curly brace + +> col + sepSemiNln + xs + (fun e -> + // Add spaces to ensure the record field (incl trivia) starts at the right column. + addFixedSpaces targetColumn + // Lock the start of the record field, however keep potential indentations in relation to the opening curly brace + +> atCurrentColumn (genRecordFieldName astContext e)) + +> tokN + synExpr.Range + RBRACE + (sepNlnWhenWriteBeforeNewlineNotEmpty sepNone // comment after last record field + +> (fun ctx -> + // Edge case scenario to make sure that the closing brace is not before the opening one + // See unit test "multiline string before closing brace" + let delta = expressionStartColumn - ctx.Column + + if delta > 0 then + ((rep delta (!- " ")) +> sepCloseSFixed) ctx + else + ifElseCtx lastWriteEventIsNewline sepCloseSFixed sepCloseS ctx))) + ctx + | Some e -> + tokN synExpr.Range LBRACE sepOpenS + +> genExpr astContext e + +> !- " with" + +> ifIndentLesserThan + 3 + (sepSpaceOrDoubleIndentAndNlnIfExpressionExceedsPageWidth fieldsExpr) + (sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth fieldsExpr) + +> tokN synExpr.Range RBRACE sepCloseS expr ctx @@ -3087,25 +3107,52 @@ and genMultilineRecordInstanceAlignBrackets +> sepCloseSFixed) |> atCurrentColumnIndent -and genMultilineAnonRecord (isStruct: bool) fields copyInfo astContext = +and genMultilineAnonRecord (isStruct: bool) fields copyInfo (range: Range) (astContext: ASTContext) = let recordExpr = - let fieldsExpr = - col sepSemiNln fields (genAnonRecordFieldName astContext) - match copyInfo with | Some e -> - genExpr astContext e - +> (!- " with" - +> indent - +> sepNln - +> fieldsExpr - +> unindent) - | None -> fieldsExpr + (tokN range LBRACK_BAR sepOpenAnonRecd) + +> atCurrentColumn ( + genExpr astContext e + +> (!- " with" + +> indent + +> sepNln + +> col sepSemiNln fields (genAnonRecordFieldName astContext) + +> unindent) + ) + +> (tokN range BAR_RBRACK sepCloseAnonRecd) + | None -> + fun ctx -> + // position after `{| ` or `{|` + let targetColumn = + ctx.Column + + (if ctx.Config.SpaceAroundDelimiter then + 3 + else + 2) + + atCurrentColumn + ((tokN range LBRACK_BAR sepOpenAnonRecd) + +> col + sepSemiNln + fields + (fun (AnonRecordFieldName (s, e)) -> + let expr = + if ctx.Config.IndentSize < 3 then + sepSpaceOrDoubleIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e) + else + sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e) + + // Add enough spaces to start at the right column but indent from the opening curly brace. + // Use a double indent when using a small indent size to avoid offset warnings. + addFixedSpaces targetColumn + +> !-s + +> sepEq + +> expr) + +> (tokN range BAR_RBRACK sepCloseAnonRecd)) + ctx - onlyIf isStruct !- "struct " - +> sepOpenAnonRecd - +> atCurrentColumnIndent recordExpr - +> sepCloseAnonRecd + onlyIf isStruct !- "struct " +> recordExpr and genMultilineAnonRecordAlignBrackets (isStruct: bool) fields copyInfo astContext = let fieldsExpr = diff --git a/src/Fantomas/Context.fs b/src/Fantomas/Context.fs index 93f8a1b81b..99bcf333c0 100644 --- a/src/Fantomas/Context.fs +++ b/src/Fantomas/Context.fs @@ -182,7 +182,6 @@ type internal Context = Content: string TriviaMainNodes: Map TriviaTokenNodes: Map - RecordBraceStart: int list FileName: string } /// Initialize with a string writer and use space as delimiter @@ -195,7 +194,6 @@ type internal Context = Content = "" TriviaMainNodes = Map.empty TriviaTokenNodes = Map.empty - RecordBraceStart = [] FileName = String.Empty } static member Create @@ -676,6 +674,12 @@ let internal sepSpace (ctx: Context) = | None -> ctx | _ -> (!- " ") ctx +// add actual spaces until the target column is reached, regardless of previous content +// use with care +let internal addFixedSpaces (targetColumn: int) (ctx: Context) : Context = + let delta = targetColumn - ctx.Column + onlyIf (delta > 0) (rep delta (!- " ")) ctx + let internal sepNln = !+ "" // Use a different WriteLine event to indicate that the newline was introduces due to trivia @@ -996,20 +1000,20 @@ let internal sepSpaceOrIndentAndNlnIfExpressionExceedsPageWidth expr (ctx: Conte expr ctx -let internal sepSpaceWhenOrIndentAndNlnIfExpressionExceedsPageWidth (addSpace: Context -> bool) expr (ctx: Context) = +let internal sepSpaceOrDoubleIndentAndNlnIfExpressionExceedsPageWidth expr (ctx: Context) = expressionExceedsPageWidth - (ifElseCtx addSpace sepSpace sepNone) + sepSpace sepNone // before and after for short expressions - (indent +> sepNln) - unindent // before and after for long expressions + (indent +> indent +> sepNln) + (unindent +> unindent) // before and after for long expressions expr ctx -let internal sepSpaceOrNlnIfExpressionExceedsPageWidth expr (ctx: Context) = +let internal sepSpaceWhenOrIndentAndNlnIfExpressionExceedsPageWidth (addSpace: Context -> bool) expr (ctx: Context) = expressionExceedsPageWidth - sepSpace + (ifElseCtx addSpace sepSpace sepNone) sepNone // before and after for short expressions - sepNln + (indent +> sepNln) unindent // before and after for long expressions expr ctx @@ -1141,13 +1145,13 @@ let internal ifAlignBrackets f g = ifElseCtx (fun ctx -> ctx.Config.MultilineBlockBracketsOnSameColumn) f g let internal printTriviaContent (c: TriviaContent) (ctx: Context) = - let currentLastLine = lastWriteEventOnLastLine ctx + let currentLastLine = ctx.WriterModel.Lines |> List.tryHead // Some items like #if or Newline should be printed on a newline // It is hard to always get this right in CodePrinter, so we detect it based on the current code. let addNewline = currentLastLine - |> Option.map (fun line -> line.Length > 0) + |> Option.map (fun line -> line.Trim().Length > 0) |> Option.defaultValue false let addSpace = From 3fda5d4b2ba1e6bd56b8ab1ef02d2a54ad50dfe9 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 5 Oct 2021 18:30:04 +0200 Subject: [PATCH 06/12] Add release notes for 4.6.0-alpha-003. --- RELEASE_NOTES.md | 4 ++++ .../Fantomas.CoreGlobalTool.Tests.fsproj | 1 + src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj | 1 + src/Fantomas.Extras/Fantomas.Extras.fsproj | 1 + src/Fantomas.Tests/Fantomas.Tests.fsproj | 1 + src/Fantomas/Fantomas.fsproj | 1 + 6 files changed, 9 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 14f37d8ea1..b270e9b116 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,7 @@ +#### 4.6.0-alpha-003 + +* Fix Update record should indent from the curly brace instead of the identifier. [#1876](https://github.com/fsprojects/fantomas/issues/1876) + #### 4.6.0-alpha-002 * Fix Update style of lambda argument. [#1871](https://github.com/fsprojects/fantomas/issues/1871) diff --git a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj index f468a537d5..88b54749b6 100644 --- a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj +++ b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj @@ -6,6 +6,7 @@ false 4.6.0-alpha-001 4.6.0-alpha-002 + 4.6.0-alpha-003 FS0988 FS0025 diff --git a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj index b669072752..80e6524c64 100644 --- a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj +++ b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj @@ -10,6 +10,7 @@ True 4.6.0-alpha-001 4.6.0-alpha-002 + 4.6.0-alpha-003 fantomas-tool FS0025 LICENSE.md diff --git a/src/Fantomas.Extras/Fantomas.Extras.fsproj b/src/Fantomas.Extras/Fantomas.Extras.fsproj index 98525676a6..ddc7454003 100644 --- a/src/Fantomas.Extras/Fantomas.Extras.fsproj +++ b/src/Fantomas.Extras/Fantomas.Extras.fsproj @@ -4,6 +4,7 @@ netstandard2.0 4.6.0-alpha-001 4.6.0-alpha-002 + 4.6.0-alpha-003 Utility package for Fantomas FS0025 LICENSE.md diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj index 3091dc437c..20be02e349 100644 --- a/src/Fantomas.Tests/Fantomas.Tests.fsproj +++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj @@ -2,6 +2,7 @@ 4.6.0-alpha-001 4.6.0-alpha-002 + 4.6.0-alpha-003 FS0988 net5.0 FS0025 diff --git a/src/Fantomas/Fantomas.fsproj b/src/Fantomas/Fantomas.fsproj index 1bd734c7dc..cc78d7b2af 100644 --- a/src/Fantomas/Fantomas.fsproj +++ b/src/Fantomas/Fantomas.fsproj @@ -4,6 +4,7 @@ netstandard2.0 4.6.0-alpha-001 4.6.0-alpha-002 + 4.6.0-alpha-003 Source code formatter for F# FS0025 LICENSE.md From ad41943308e033e27dfbce191491606f139e5b90 Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Wed, 20 Oct 2021 19:33:13 +0200 Subject: [PATCH 07/12] Format out of process (#1845) * Style guide lambda (#1858) * WIP lambda as last argument * Update remaining test according to style proposal. * Add test for multiline non lambda argument. * Print trivia for function keyword from ast range. * multiline non lambda argument, match lambda * WIP Daemon service contract. * Early working daemon prototype. * Take .editorconfig settings into account. * Fix current build. * Add Fantomas locator. * Found globally installed Fantomas version. * Remove unused function. * Add formatSelection. * Refactor FormatDocumentResponse to DU. * Remove unused LspTypes dependency. * Update FCS in Daemon * Refactored public api of FantomasService. * Don't pass full exception in FormatDocumentResponse. * Use separate versioning for Fantomas.Client. * FantomasService manages multiple daemon versions. * Fully implement FantomasService. * Return configuration as json. * Validate if filePath in request is absolute. * Ignore first three 4.6 alphas as compatible tools. * Find ignore file from current file path. * Remove safeFileName from CodeFormatterImpl.fs. Disable daemon tests. * Add daemon unit tests. * Update help text for daemon mode. * Add documentation for Fantomas daemon mode. * Initial attempt at adding source links. * Set DebugType to embedded. * Bump Fantomas.Client to 0.3.0 --- RELEASE_NOTES.md | 4 + build.fsx | 26 +- docs/Daemon mode.md | 24 + docs/Documentation.md | 9 +- fantomas.sln | 14 + paket.dependencies | 22 +- paket.lock | 1799 +++++++++++++---- src/Fantomas.Benchmarks/Runners.fs | 2 +- src/Fantomas.Client/Contracts.fs | 76 + src/Fantomas.Client/Fantomas.Client.fsproj | 25 + src/Fantomas.Client/FantomasToolLocator.fs | 150 ++ src/Fantomas.Client/LSPFantomasService.fs | 238 +++ .../LSPFantomasServiceTypes.fs | 74 + src/Fantomas.Client/paket.references | 4 + .../DaemonTests.fs | 313 +++ .../Fantomas.CoreGlobalTool.Tests.fsproj | 6 +- .../TestHelpers.fs | 32 +- src/Fantomas.CoreGlobalTool/Daemon.fs | 158 ++ .../Fantomas.CoreGlobalTool.fsproj | 6 +- src/Fantomas.CoreGlobalTool/Program.fs | 12 + src/Fantomas.CoreGlobalTool/paket.references | 7 +- src/Fantomas.Extras/EditorConfig.fs | 10 +- src/Fantomas.Extras/FakeHelpers.fs | 14 +- src/Fantomas.Extras/Fantomas.Extras.fsproj | 7 +- src/Fantomas.Extras/IgnoreFile.fs | 29 +- src/Fantomas.Extras/paket.references | 3 +- src/Fantomas.Tests/CodeFormatterTests.fs | 6 +- src/Fantomas.Tests/Fantomas.Tests.fsproj | 4 +- src/Fantomas.Tests/FormatAstTests.fs | 3 +- src/Fantomas.Tests/ModuleTests.fs | 3 +- src/Fantomas.Tests/TestHelpers.fs | 10 +- src/Fantomas/CodeFormatterImpl.fs | 23 +- src/Fantomas/Fantomas.fsproj | 7 +- src/Fantomas/paket.references | 3 +- 34 files changed, 2635 insertions(+), 488 deletions(-) create mode 100644 docs/Daemon mode.md create mode 100644 src/Fantomas.Client/Contracts.fs create mode 100644 src/Fantomas.Client/Fantomas.Client.fsproj create mode 100644 src/Fantomas.Client/FantomasToolLocator.fs create mode 100644 src/Fantomas.Client/LSPFantomasService.fs create mode 100644 src/Fantomas.Client/LSPFantomasServiceTypes.fs create mode 100644 src/Fantomas.Client/paket.references create mode 100644 src/Fantomas.CoreGlobalTool.Tests/DaemonTests.fs create mode 100644 src/Fantomas.CoreGlobalTool/Daemon.fs diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b270e9b116..01a6b64df1 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,7 @@ +#### 4.6.0-alpha-004 + +* Initial Fantomas.Client release. + #### 4.6.0-alpha-003 * Fix Update record should indent from the curly brace instead of the identifier. [#1876](https://github.com/fsprojects/fantomas/issues/1876) diff --git a/build.fsx b/build.fsx index cc837ed34a..fb918b8da7 100644 --- a/build.fsx +++ b/build.fsx @@ -51,6 +51,8 @@ let owner = "Anh-Dung Phan" let tags = "F# fsharp formatting beautifier indentation indenter" +let fantomasClientVersion = "0.3.0" + // (.sln is built during the building process) let solutionFile = "fantomas" //// Environment.CurrentDirectory <- __SOURCE_DIRECTORY__ @@ -168,7 +170,9 @@ Target.create "src/Fantomas/bin" "src/Fantomas/obj" "src/Fantomas.CoreGlobalTool/bin" - "src/Fantomas.CoreGlobalTool/obj" ] + "src/Fantomas.CoreGlobalTool/obj" + "src/Fantomas.Client/bin" + "src/Fantomas.Client/obj" ] |> List.iter Shell.cleanDir) Target.create @@ -180,13 +184,20 @@ Target.create let file = sprintf "src/%s/%s.fsproj" project project - Xml.poke file "Project/PropertyGroup/Version/text()" version + Xml.poke + file + "Project/PropertyGroup/Version/text()" + (if project = "Fantomas.Client" then + fantomasClientVersion + else + version) setProjectVersion "Fantomas" setProjectVersion "Fantomas.CoreGlobalTool" setProjectVersion "Fantomas.CoreGlobalTool.Tests" setProjectVersion "Fantomas.Tests" - setProjectVersion "Fantomas.Extras") + setProjectVersion "Fantomas.Extras" + setProjectVersion "Fantomas.Client") // -------------------------------------------------------------------------------------- // Build library & test project @@ -241,7 +252,11 @@ Target.create { defaultArgs with Properties = [ "Title", project - "PackageVersion", nugetVersion + "PackageVersion", + (if project = "Fantomas.Client" then + fantomasClientVersion + else + nugetVersion) "Authors", (String.Join(" ", authors)) "Owners", owner "PackageRequireLicenseAcceptance", "false" @@ -263,7 +278,8 @@ Target.create pack "Fantomas" pack "Fantomas.Extras" - pack "Fantomas.CoreGlobalTool") + pack "Fantomas.CoreGlobalTool" + pack "Fantomas.Client") // This takes the list of external projects defined above, does a git checkout of the specified repo and tag, // tries to build the project, then reformats with fantomas and tries to build the project again. If this fails diff --git a/docs/Daemon mode.md b/docs/Daemon mode.md new file mode 100644 index 0000000000..d9918a8737 --- /dev/null +++ b/docs/Daemon mode.md @@ -0,0 +1,24 @@ +# Fantomas Daemon mode + +## Introduction + +As part of the `4.6` release, we've introduced a new feature where end-user can control the version of Fantomas that is being used inside an IDE. +In previous iterations, the editor tooling would typically reference the [Fantomas](https://www.nuget.org/packages/Fantomas) or [Fantomas.Extras](https://www.nuget.org/packages/Fantomas.Extras) nuget package and use the [CodeFormatter](../src/Fantomas/CodeFormatter.fsi) api to handle formatting. +The major drawback of this approach is that shared [FCS](https://www.nuget.org/packages/FSharp.Compiler.Service/) dependency needed to be exactly the same. +So the editor is in control of which version of Fantomas is being used. +Each version of Fantomas theoretically can have a different outcome as the style guides may have changed over time. + +## Solution + +To tackle this problem, we introduce two new concepts: `--daemon` mode for the [fantomas-tool](https://www.nuget.org/packages/fantomas-tool) and [Fantomas.Client](https://www.nuget.org/packages/Fantomas.Client). +`--daemon` would launch the commandline application as a sort of [LSP server](https://microsoft.github.io/language-server-protocol/) and `Fantomas.Client` could connect to this and proxy format requests. +Editor tooling would be able to launch your pinned version of `fantomas-tool` as a daemon service and interact with it outside-of-process. + +## End-user impact + +End-users don't have to worry about `Fantomas.Client` or the `--daemon` flag. They only need to install a compatible version of `fantomas-tool`. +Be it locally or globally. The first compatible version is `4.6.0-alpha-004`, all higher version should work as well. +Local versions have precedence over the global version. + +The nice thing about this approach is that you can upgrade Fantomas at your own pace. +When new versions drop, you can dedicate a separate commit in source control and it won't interfere with your other commits. \ No newline at end of file diff --git a/docs/Documentation.md b/docs/Documentation.md index 20fb22b90b..3232ea3bf3 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -18,7 +18,7 @@ For the overview how to use the tool, you can type the command dotnet fantomas --help ``` -USAGE: dotnet fantomas [--help] [--recurse] [--force] [--profile] [--fsi ] [--stdin] [--stdout] [--out ] [--check] [--version] [...] +USAGE: dotnet fantomas [--help] [--recurse] [--force] [--profile] [--fsi ] [--stdin] [--stdout] [--out ] [--check] [--daemon] [--version] [...] INPUT: @@ -31,9 +31,10 @@ OPTIONS: --profile Print performance profiling information. --fsi Read F# source from stdin as F# signatures. --stdin Read F# source from standard input. - --stdout Write the formatted source code to standard output. + --stdout Write the formatted source code to standard output. --out Give a valid path for files/folders. Files should have .fs, .fsx, .fsi, .ml or .mli extension only. --check Don't format files, just check if they have changed. Exits with 0 if it's formatted correctly, with 1 if some files need formatting and 99 if there was an internal error + --daemon Daemon mode, launches an LSP-like server to can be used by editor tooling. --version, -v Displays the version of Fantomas --help display this list of options. @@ -80,6 +81,10 @@ Or usage with `find` on unix: `find my-project/ -type f -name "*.fs" -not -path "*obj*" | xargs dotnet fantomas --check` +### Daemon mode + +`--daemon` should not be used directly by end-users. Learn more about this feature in the [Daemon mode documentation](./Daemon%20mode.md) + ## Configuration Fantomas ships with a series of format options. diff --git a/fantomas.sln b/fantomas.sln index 54ac9a12f3..6b6c0e6b00 100644 --- a/fantomas.sln +++ b/fantomas.sln @@ -20,6 +20,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Benchmarks", "src\ EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Extras", "src\Fantomas.Extras\Fantomas.Extras.fsproj", "{4088FF76-1DB7-4E68-80FE-E851CE6701AC}" EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Client", "src\Fantomas.Client\Fantomas.Client.fsproj", "{AA895F94-CCF2-4FCF-A9BB-E16987B57535}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -105,6 +107,18 @@ Global {4088FF76-1DB7-4E68-80FE-E851CE6701AC}.Release|x64.Build.0 = Release|Any CPU {4088FF76-1DB7-4E68-80FE-E851CE6701AC}.Release|x86.ActiveCfg = Release|Any CPU {4088FF76-1DB7-4E68-80FE-E851CE6701AC}.Release|x86.Build.0 = Release|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Debug|x64.ActiveCfg = Debug|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Debug|x64.Build.0 = Debug|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Debug|x86.ActiveCfg = Debug|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Debug|x86.Build.0 = Debug|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|Any CPU.Build.0 = Release|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|x64.ActiveCfg = Release|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|x64.Build.0 = Release|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|x86.ActiveCfg = Release|Any CPU + {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution EndGlobalSection diff --git a/paket.dependencies b/paket.dependencies index 08dcfe79a9..a7da0baade 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -15,6 +15,7 @@ nuget Argu nuget BenchmarkDotNet nuget editorconfig nuget MAB.DotIgnore 3.0.2 +nuget Microsoft.SourceLink.GitHub copy_local: true github: fsprojects/fantomas:829faa6ba834f99afed9b4434b3a1680536474b2 src/Fantomas/CodePrinter.fs @@ -23,6 +24,7 @@ group build source https://api.nuget.org/v3/index.json nuget Microsoft.Azure.Cosmos.Table + nuget FSharp.Core ~> 5 nuget Fake.Core.ReleaseNotes nuget Fake.Core.Xml nuget Fake.DotNet.Cli @@ -30,4 +32,22 @@ group build nuget Fake.Tools.Git nuget Fake.Core.Process nuget Fake.Core.Target - nuget MSBuild.StructuredLogger 2.1.500 \ No newline at end of file + nuget MSBuild.StructuredLogger 2.1.500 + +group tool + storage: none + source https://api.nuget.org/v3/index.json + + nuget FSharp.Core 5.0.3-beta.21352.5 + nuget Argu + nuget StreamJsonRpc + nuget Thoth.Json.Net + nuget SerilogTraceListener + +group client + storage: none + source https://api.nuget.org/v3/index.json + + nuget FSharp.Core 5 + nuget StreamJsonRpc + nuget Microsoft.SourceLink.GitHub copy_local: true \ No newline at end of file diff --git a/paket.lock b/paket.lock index 2e54219a9d..5ce47e7299 100644 --- a/paket.lock +++ b/paket.lock @@ -5,14 +5,14 @@ NUGET Argu (6.1.1) FSharp.Core (>= 4.3.2) System.Configuration.ConfigurationManager (>= 4.4) - BenchmarkDotNet (0.12.1) - BenchmarkDotNet.Annotations (>= 0.12.1) + BenchmarkDotNet (0.13.1) + BenchmarkDotNet.Annotations (>= 0.13.1) CommandLineParser (>= 2.4.3) - Iced (>= 1.4) + Iced (>= 1.8) Microsoft.CodeAnalysis.CSharp (>= 2.10) Microsoft.Diagnostics.NETCore.Client (>= 0.2.61701) - Microsoft.Diagnostics.Runtime (>= 1.1.57604) - Microsoft.Diagnostics.Tracing.TraceEvent (>= 2.0.49) + Microsoft.Diagnostics.Runtime (>= 1.1.126102) + Microsoft.Diagnostics.Tracing.TraceEvent (>= 2.0.61) Microsoft.DotNet.PlatformAbstractions (>= 2.1) Microsoft.Win32.Registry (>= 4.5) Perfolizer (>= 0.2.1) @@ -21,10 +21,10 @@ NUGET System.Reflection.Emit.Lightweight (>= 4.3) System.Threading.Tasks.Extensions (>= 4.5.2) System.ValueTuple (>= 4.5) - BenchmarkDotNet.Annotations (0.12.1) + BenchmarkDotNet.Annotations (0.13.1) CommandLineParser (2.8) editorconfig (0.12.2) - FsCheck (2.14.3) + FsCheck (2.16.3) FSharp.Core (>= 4.2.3) FSharp.Compiler.Service (40.0.1-preview.21352.5) FSharp.Core (5.0.3-beta.21352.5) @@ -54,18 +54,20 @@ NUGET System.Threading.Thread (>= 4.3) System.Threading.ThreadPool (>= 4.3) FSharp.Core (5.0.3-beta.21352.5) - FsUnit (4.0.2) + FsUnit (4.0.4) FSharp.Core (>= 4.3.4) NETStandard.Library (>= 2.0.3) - NUnit (>= 3.12 < 4.0) - Iced (1.7) + NUnit (>= 3.13 < 4.0) + Iced (1.15) MAB.DotIgnore (3.0.2) NETStandard.Library (>= 1.6.1) - Microsoft.Build.Framework (16.10) + Microsoft.Bcl.AsyncInterfaces (5.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.1) (< netstandard2.1)) (== netstandard2.0) + Microsoft.Build.Framework (16.11) System.Security.Permissions (>= 4.7) - Microsoft.Build.Tasks.Core (16.10) - Microsoft.Build.Framework (>= 16.10) - Microsoft.Build.Utilities.Core (>= 16.10) + Microsoft.Build.Tasks.Core (16.11) + Microsoft.Build.Framework (>= 16.11) + Microsoft.Build.Utilities.Core (>= 16.11) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.CodeDom (>= 4.4) @@ -76,64 +78,96 @@ NUGET System.Security.Cryptography.Xml (>= 4.7) System.Security.Permissions (>= 4.7) System.Threading.Tasks.Dataflow (>= 4.9) - Microsoft.Build.Utilities.Core (16.10) - Microsoft.Build.Framework (>= 16.10) + Microsoft.Build.Tasks.Git (1.0) - copy_local: true + Microsoft.Build.Utilities.Core (16.11) + Microsoft.Build.Framework (>= 16.11) Microsoft.NET.StringTools (>= 1.0) Microsoft.Win32.Registry (>= 4.3) System.Collections.Immutable (>= 5.0) System.Configuration.ConfigurationManager (>= 4.7) System.Security.Permissions (>= 4.7) System.Text.Encoding.CodePages (>= 4.0.1) - Microsoft.CodeAnalysis.Analyzers (3.0) - Microsoft.CodeAnalysis.Common (3.6) - Microsoft.CodeAnalysis.Analyzers (>= 3.0) - System.Collections.Immutable (>= 1.5) - System.Memory (>= 4.5.3) - System.Reflection.Metadata (>= 1.6) - System.Runtime.CompilerServices.Unsafe (>= 4.7) + Microsoft.CodeAnalysis.Analyzers (3.3.2) + Microsoft.CodeAnalysis.Common (3.11) + Microsoft.CodeAnalysis.Analyzers (>= 3.3.2) + System.Collections.Immutable (>= 5.0) + System.Memory (>= 4.5.4) + System.Reflection.Metadata (>= 5.0) + System.Runtime.CompilerServices.Unsafe (>= 5.0) System.Text.Encoding.CodePages (>= 4.5.1) - System.Threading.Tasks.Extensions (>= 4.5.3) - Microsoft.CodeAnalysis.CSharp (3.6) - Microsoft.CodeAnalysis.Common (3.6) - Microsoft.CodeCoverage (16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0)) - Microsoft.Diagnostics.NETCore.Client (0.2.61701) - Microsoft.Diagnostics.Runtime (1.1.127808) - Microsoft.Diagnostics.Tracing.TraceEvent (2.0.56) + System.Threading.Tasks.Extensions (>= 4.5.4) + Microsoft.CodeAnalysis.CSharp (3.11) + Microsoft.CodeAnalysis.Common (3.11) + Microsoft.CodeCoverage (16.11) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0)) + Microsoft.Diagnostics.NETCore.Client (0.2.248003) + Microsoft.Bcl.AsyncInterfaces (>= 1.1) + Microsoft.Extensions.Logging (>= 2.1.1) + Microsoft.Diagnostics.Runtime (2.0.226801) + Microsoft.Diagnostics.NETCore.Client (>= 0.2.221401) + System.Buffers (>= 4.5.1) + System.Collections.Immutable (>= 5.0) + System.Memory (>= 4.5.4) + System.Reflection.Metadata (>= 5.0) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) + Microsoft.Diagnostics.Tracing.TraceEvent (2.0.73) System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - Microsoft.DotNet.PlatformAbstractions (3.1.4) + Microsoft.DotNet.PlatformAbstractions (3.1.6) + Microsoft.Extensions.DependencyInjection (5.0.2) + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netstandard2.1)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netstandard2.1)) (== netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.1) (< netstandard2.1)) (== netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (5.0) + Microsoft.Extensions.Logging (5.0) + Microsoft.Extensions.DependencyInjection (>= 5.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) + Microsoft.Extensions.Logging.Abstractions (>= 5.0) + Microsoft.Extensions.Options (>= 5.0) + System.Diagnostics.DiagnosticSource (>= 5.0) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netstandard2.1)) (== netcoreapp3.1) (== netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (5.0) + Microsoft.Extensions.Options (5.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0) + Microsoft.Extensions.Primitives (>= 5.0) + Microsoft.Extensions.Primitives (5.0.1) + System.Buffers (>= 4.5.1) - restriction: || (&& (== net5.0) (>= monoandroid) (< netstandard2.0)) (&& (== net5.0) (>= monotouch)) (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netstandard2.0) (>= xamarintvos)) (&& (== net5.0) (< netstandard2.0) (>= xamarinwatchos)) (&& (== netcoreapp3.1) (>= monoandroid) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netstandard2.0) (>= xamarintvos)) (&& (== netcoreapp3.1) (< netstandard2.0) (>= xamarinwatchos)) (== netstandard2.0) + System.Memory (>= 4.5.4) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (>= uap10.1)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (== net5.0) (>= monoandroid) (< netstandard2.0)) (&& (== net5.0) (>= monotouch)) (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (< netcoreapp3.0)) (&& (== net5.0) (< netstandard2.0) (>= xamarintvos)) (&& (== net5.0) (< netstandard2.0) (>= xamarinwatchos)) (&& (== net5.0) (>= uap10.1)) (== netcoreapp3.1) (== netstandard2.0) Microsoft.NET.StringTools (1.0) System.Memory (>= 4.5.4) System.Runtime.CompilerServices.Unsafe (>= 5.0) Microsoft.NET.Test.Sdk (16.9.1) Microsoft.CodeCoverage (>= 16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0)) Microsoft.TestPlatform.TestHost (>= 16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) - Microsoft.NETCore.Platforms (3.1) - Microsoft.NETCore.Targets (3.1) - Microsoft.TestPlatform.ObjectModel (16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) + Microsoft.NETCore.Platforms (5.0.4) + Microsoft.NETCore.Targets (5.0) + Microsoft.SourceLink.Common (1.0) - copy_local: true + Microsoft.SourceLink.GitHub (1.0) - copy_local: true + Microsoft.Build.Tasks.Git (>= 1.0) + Microsoft.SourceLink.Common (>= 1.0) + Microsoft.TestPlatform.ObjectModel (16.11) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) NuGet.Frameworks (>= 5.0) System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) - Microsoft.TestPlatform.ObjectModel (>= 16.9.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= uap10.0)) + Microsoft.TestPlatform.TestHost (16.11) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) + Microsoft.TestPlatform.ObjectModel (>= 16.11) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= uap10.0)) Newtonsoft.Json (>= 9.0.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= uap10.0)) Microsoft.Win32.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - Microsoft.Win32.Registry (4.7) - System.Buffers (>= 4.5) - restriction: || (&& (== net5.0) (>= monotouch)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (>= xamarinios)) (&& (== net5.0) (>= xamarinmac)) (&& (== net5.0) (>= xamarintvos)) (&& (== net5.0) (>= xamarinwatchos)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (&& (== netcoreapp3.1) (>= xamarinmac)) (&& (== netcoreapp3.1) (>= xamarintvos)) (&& (== netcoreapp3.1) (>= xamarinwatchos)) (== netstandard2.0) - System.Memory (>= 4.5.3) - restriction: || (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (>= uap10.1)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) - System.Security.AccessControl (>= 4.7) - System.Security.Principal.Windows (>= 4.7) - Microsoft.Win32.SystemEvents (4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) + Microsoft.Win32.Registry (5.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (== net5.0) (>= monoandroid) (< netstandard1.3)) (&& (== net5.0) (>= monotouch)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (>= xamarinios)) (&& (== net5.0) (>= xamarinmac)) (&& (== net5.0) (>= xamarintvos)) (&& (== net5.0) (>= xamarinwatchos)) (&& (== netcoreapp3.1) (>= monoandroid) (< netstandard1.3)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (&& (== netcoreapp3.1) (>= xamarinmac)) (&& (== netcoreapp3.1) (>= xamarintvos)) (&& (== netcoreapp3.1) (>= xamarinwatchos)) (== netstandard2.0) + System.Memory (>= 4.5.4) - restriction: || (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (>= uap10.1)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) + System.Security.AccessControl (>= 5.0) + System.Security.Principal.Windows (>= 5.0) + Microsoft.Win32.SystemEvents (5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) - Newtonsoft.Json (12.0.3) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) - NuGet.Frameworks (5.4) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) + Newtonsoft.Json (13.0.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) + NuGet.Frameworks (5.11) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= netcoreapp2.1)) NUnit (3.13.1) NETStandard.Library (>= 2.0) NUnit3TestAdapter (4.0.0-beta.1) - NunitXml.TestLogger (2.1.80) + NunitXml.TestLogger (3.0.107) Perfolizer (0.2.1) System.Memory (>= 4.5.3) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) @@ -180,7 +214,7 @@ NUGET runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) System.Buffers (4.5.1) - System.CodeDom (4.7) + System.CodeDom (5.0) System.Collections (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -198,15 +232,16 @@ NUGET System.Threading.Tasks (>= 4.3) System.Collections.Immutable (5.0) System.Memory (>= 4.5.4) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (< netstandard2.0)) (&& (== net5.0) (>= uap10.1)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) - System.Configuration.ConfigurationManager (4.7) - System.Security.Cryptography.ProtectedData (>= 4.7) - System.Security.Permissions (>= 4.7) + System.Configuration.ConfigurationManager (5.0) + System.Security.Cryptography.ProtectedData (>= 5.0) + System.Security.Permissions (>= 5.0) System.Diagnostics.Debug (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Diagnostics.DiagnosticSource (4.7.1) + System.Diagnostics.DiagnosticSource (5.0.1) System.Memory (>= 4.5.4) - restriction: || (&& (== net5.0) (>= net45) (< netstandard1.3)) (&& (== net5.0) (>= net46)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (< netstandard2.0)) (&& (== net5.0) (>= uap10.1)) (&& (== netcoreapp3.1) (>= net45) (< netstandard1.3)) (&& (== netcoreapp3.1) (>= net46)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (== net5.0) (>= monoandroid) (< netstandard1.1)) (&& (== net5.0) (>= monotouch)) (&& (== net5.0) (>= net45) (< netstandard1.3)) (&& (== net5.0) (>= net46)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (< netcoreapp3.0)) (&& (== net5.0) (< netstandard2.0)) (&& (== net5.0) (>= uap10.1)) (&& (== netcoreapp3.1) (>= monoandroid) (< netstandard1.1)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (>= net45) (< netstandard1.3)) (&& (== netcoreapp3.1) (>= net46)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netcoreapp3.0)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= uap10.1)) (== netstandard2.0) System.Diagnostics.Process (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.Win32.Primitives (>= 4.3) @@ -243,9 +278,8 @@ NUGET Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Drawing.Common (4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) (&& (== netstandard2.0) (>= netcoreapp3.0)) - Microsoft.Win32.SystemEvents (>= 4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) (&& (== netstandard2.0) (>= netcoreapp3.0)) + System.Drawing.Common (5.0.2) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) + Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) (&& (== netstandard2.0) (>= netcoreapp3.0)) System.Formats.Asn1 (5.0) System.Globalization (4.3) Microsoft.NETCore.Platforms (>= 1.1) @@ -313,10 +347,10 @@ NUGET System.Reflection.Extensions (>= 4.3) System.Resources.ResourceManager (>= 4.3) System.Runtime (>= 4.3) - System.Management (4.7) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) - Microsoft.Win32.Registry (>= 4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) - System.CodeDom (>= 4.7) + System.Management (5.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) + Microsoft.Win32.Registry (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) + System.CodeDom (>= 5.0) System.Memory (4.5.4) System.Buffers (>= 4.5.1) - restriction: || (&& (== net5.0) (>= monotouch)) (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netstandard1.1)) (&& (== net5.0) (< netstandard2.0)) (&& (== net5.0) (>= xamarinios)) (&& (== net5.0) (>= xamarinmac)) (&& (== net5.0) (>= xamarintvos)) (&& (== net5.0) (>= xamarinwatchos)) (&& (== netcoreapp3.1) (>= monotouch)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netstandard1.1)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= xamarinios)) (&& (== netcoreapp3.1) (>= xamarinmac)) (&& (== netcoreapp3.1) (>= xamarintvos)) (&& (== netcoreapp3.1) (>= xamarinwatchos)) (== netstandard2.0) System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net5.0) (< netcoreapp2.0)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (== netstandard2.0) @@ -467,9 +501,9 @@ NUGET System.Resources.ResourceManager (>= 4.3) System.Runtime (>= 4.3) System.Runtime.Extensions (>= 4.3) - System.Security.AccessControl (4.7) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) - System.Security.Principal.Windows (>= 4.7) + System.Security.AccessControl (5.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) + System.Security.Principal.Windows (>= 5.0) System.Security.Claims (4.3) System.Collections (>= 4.3) System.Globalization (>= 4.3) @@ -537,8 +571,8 @@ NUGET System.Runtime (>= 4.3) System.Threading (>= 4.3) System.Threading.Tasks (>= 4.3) - System.Security.Cryptography.ProtectedData (4.7) - System.Memory (>= 4.5.3) - restriction: || (&& (== net5.0) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) + System.Security.Cryptography.ProtectedData (5.0) + System.Memory (>= 4.5.4) - restriction: || (&& (== net5.0) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) System.Security.Cryptography.X509Certificates (4.3.2) Microsoft.NETCore.Platforms (>= 1.1) runtime.native.System (>= 4.3) @@ -565,22 +599,23 @@ NUGET System.Security.Cryptography.Primitives (>= 4.3) System.Text.Encoding (>= 4.3) System.Threading (>= 4.3) - System.Security.Cryptography.Xml (4.7) - System.Security.Cryptography.Pkcs (>= 4.7) - System.Security.Permissions (>= 4.7) - System.Security.Permissions (4.7) - System.Security.AccessControl (>= 4.7) - System.Windows.Extensions (>= 4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) + System.Security.Cryptography.Xml (5.0) + System.Memory (>= 4.5.4) - restriction: || (&& (== net5.0) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (== netstandard2.0) + System.Security.Cryptography.Pkcs (>= 5.0) + System.Security.Permissions (>= 5.0) + System.Security.Permissions (5.0) + System.Security.AccessControl (>= 5.0) + System.Windows.Extensions (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) System.Security.Principal (4.3) System.Runtime (>= 4.3) - System.Security.Principal.Windows (4.7) + System.Security.Principal.Windows (5.0) System.Text.Encoding (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (4.7) - Microsoft.NETCore.Platforms (>= 3.1) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp2.0)) (&& (== netstandard2.0) (>= netcoreapp3.1)) - System.Runtime.CompilerServices.Unsafe (>= 4.7) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.0)) (&& (== net5.0) (< netcoreapp3.1)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.0)) (== netstandard2.0) + System.Text.Encoding.CodePages (5.0) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= net5.0)) (&& (== netstandard2.0) (>= netcoreapp2.0)) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.0)) (== netcoreapp3.1) (== netstandard2.0) System.Text.Encoding.Extensions (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -594,8 +629,8 @@ NUGET Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) System.Threading.Tasks.Dataflow (5.0) - System.Threading.Tasks.Extensions (4.5.3) - System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - restriction: || (&& (== net5.0) (>= net45)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (< netstandard1.0)) (&& (== net5.0) (< netstandard2.0)) (&& (== net5.0) (>= wp8)) (&& (== netcoreapp3.1) (>= net45)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard1.0)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= wp8)) (== netstandard2.0) + System.Threading.Tasks.Extensions (4.5.4) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net5.0) (>= net461)) (&& (== net5.0) (< netcoreapp2.1)) (&& (== net5.0) (< netstandard1.0)) (&& (== net5.0) (< netstandard2.0)) (&& (== net5.0) (>= wp8)) (&& (== netcoreapp3.1) (>= net461)) (&& (== netcoreapp3.1) (< netcoreapp2.1)) (&& (== netcoreapp3.1) (< netstandard1.0)) (&& (== netcoreapp3.1) (< netstandard2.0)) (&& (== netcoreapp3.1) (>= wp8)) (== netstandard2.0) System.Threading.Tasks.Parallel (4.3) System.Collections.Concurrent (>= 4.3) System.Diagnostics.Debug (>= 4.3) @@ -611,8 +646,8 @@ NUGET System.Runtime (>= 4.3) System.Runtime.Handles (>= 4.3) System.ValueTuple (4.5) - System.Windows.Extensions (4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Drawing.Common (>= 4.7) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) + System.Windows.Extensions (5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) + System.Drawing.Common (>= 5.0) - restriction: || (== net5.0) (== netcoreapp3.1) (&& (== netstandard2.0) (>= netcoreapp3.0)) GITHUB remote: fsprojects/fantomas src/Fantomas/CodePrinter.fs (829faa6ba834f99afed9b4434b3a1680536474b2) @@ -624,7 +659,7 @@ NUGET FSharp.Core (>= 4.0.0.1) - restriction: >= net45 FSharp.Core (>= 4.2.3) - restriction: && (< net45) (>= netstandard2.0) Microsoft.Win32.Registry (>= 4.7) - restriction: && (< net45) (>= netstandard2.0) - Fake.Core.CommandLineParsing (5.20.3) - restriction: >= netstandard2.0 + Fake.Core.CommandLineParsing (5.20.4) - restriction: >= netstandard2.0 FParsec (>= 1.1.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Fake.Core.Context (5.20.4) - restriction: >= netstandard2.0 @@ -642,22 +677,22 @@ NUGET Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 System.Collections.Immutable (>= 1.7.1) - restriction: >= netstandard2.0 - Fake.Core.ReleaseNotes (5.20.3) - Fake.Core.SemVer (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.3) - restriction: >= netstandard2.0 + Fake.Core.ReleaseNotes (5.20.4) + Fake.Core.SemVer (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Fake.Core.SemVer (5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Fake.Core.String (5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Target (5.20.3) - Fake.Core.CommandLineParsing (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.3) - restriction: >= netstandard2.0 + Fake.Core.Target (5.20.4) + Fake.Core.CommandLineParsing (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Context (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.FakeVar (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 FSharp.Control.Reactive (>= 4.4.2) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Fake.Core.Tasks (5.20.4) - restriction: >= netstandard2.0 @@ -703,12 +738,12 @@ NUGET FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 12.0.3) - restriction: >= netstandard2.0 NuGet.Protocol (>= 5.6) - restriction: >= netstandard2.0 - Fake.DotNet.Paket (5.20.3) - Fake.Core.Process (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.3) - restriction: >= netstandard2.0 + Fake.DotNet.Paket (5.20.4) + Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.DotNet.Cli (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 Fake.IO.FileSystem (5.20.4) - restriction: >= netstandard2.0 Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 @@ -716,26 +751,26 @@ NUGET Fake.Net.Http (5.20.4) - restriction: >= netstandard2.0 Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Tools.Git (5.20.3) - Fake.Core.Environment (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.String (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 5.20.3) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 5.20.3) - restriction: >= netstandard2.0 + Fake.Tools.Git (5.20.4) + Fake.Core.Environment (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Process (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.SemVer (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.String (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.Core.Trace (>= 5.20.4) - restriction: >= netstandard2.0 + Fake.IO.FileSystem (>= 5.20.4) - restriction: >= netstandard2.0 FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 FParsec (1.1.1) - restriction: >= netstandard2.0 FSharp.Core (>= 4.3.4) - restriction: || (>= net45) (>= netstandard2.0) System.ValueTuple (>= 4.4) - restriction: >= net45 - FSharp.Control.Reactive (4.5) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: || (>= net46) (>= netstandard2.0) - System.Reactive (>= 4.4.1) - restriction: || (>= net46) (>= netstandard2.0) - FSharp.Core (5.0) - restriction: >= netstandard2.0 + FSharp.Control.Reactive (5.0.2) - restriction: >= netstandard2.0 + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + System.Reactive (>= 5.0) - restriction: >= netstandard2.0 + FSharp.Core (5.0.2) Microsoft.Azure.Cosmos.Table (1.0.8) Microsoft.Azure.DocumentDB.Core (>= 2.11.2) - restriction: >= netstandard2.0 Microsoft.OData.Core (>= 7.6.4) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 10.0.2) - restriction: >= netstandard2.0 - Microsoft.Azure.DocumentDB.Core (2.13.1) - restriction: >= netstandard2.0 + Microsoft.Azure.DocumentDB.Core (2.16.1) - restriction: >= netstandard2.0 NETStandard.Library (>= 1.6) - restriction: >= netstandard1.5 Newtonsoft.Json (>= 9.0.1) - restriction: >= netstandard1.5 System.Collections.Immutable (>= 1.3) - restriction: >= netstandard1.5 @@ -752,62 +787,70 @@ NUGET System.Net.WebHeaderCollection (>= 4.0.1) - restriction: >= netstandard1.6 System.Runtime.Serialization.Primitives (>= 4.1.1) - restriction: >= netstandard1.6 System.Security.SecureString (>= 4.0) - restriction: >= netstandard1.5 - System.Threading.Tasks.Extensions (>= 4.5.2) - restriction: >= netstandard1.5 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard1.5 System.ValueTuple (>= 4.5) - restriction: >= netstandard1.5 - Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) + Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= monoandroid) (>= net5.0) (< netstandard2.0)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net5.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= net5.0)) (&& (>= net461) (>= net5.0)) (>= net472) (&& (>= net5.0) (< netcoreapp2.0) (>= xamarinios)) (&& (>= net5.0) (< netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net5.0) (< netcoreapp2.0) (>= xamarinmac)) (&& (>= net5.0) (< netstandard2.0) (>= xamarintvos)) (&& (>= net5.0) (< netstandard2.0) (>= xamarinwatchos)) (&& (>= net5.0) (>= uap10.1)) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build (16.8) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.8) - restriction: || (>= net472) (>= netcoreapp2.1) + Microsoft.Build (16.11) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.11) - restriction: || (>= net472) (>= net5.0) + Microsoft.NET.StringTools (>= 1.0) - restriction: || (>= net472) (>= net5.0) Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 - Microsoft.Win32.Registry (>= 4.3) - restriction: >= netcoreapp2.1 - System.Collections.Immutable (>= 1.5) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Memory (>= 4.5.3) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Reflection.Metadata (>= 1.6) - restriction: >= netcoreapp2.1 - System.Security.Principal.Windows (>= 4.7) - restriction: >= netcoreapp2.1 - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= netcoreapp2.1 - System.Text.Json (>= 4.7) - restriction: || (>= net472) (>= netcoreapp2.1) - System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= netcoreapp2.1) - Microsoft.Build.Framework (16.8) - restriction: >= netstandard2.0 + Microsoft.Win32.Registry (>= 4.3) - restriction: >= net5.0 + System.Collections.Immutable (>= 5.0) - restriction: || (>= net472) (>= net5.0) + System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (>= net472) (>= net5.0) + System.Memory (>= 4.5.4) - restriction: >= net472 + System.Reflection.Metadata (>= 1.6) - restriction: >= net5.0 + System.Security.Principal.Windows (>= 4.7) - restriction: >= net5.0 + System.Text.Encoding.CodePages (>= 4.0.1) - restriction: >= net5.0 + System.Text.Json (>= 4.7) - restriction: || (>= net472) (>= net5.0) + System.Threading.Tasks.Dataflow (>= 4.9) - restriction: || (>= net472) (>= net5.0) + Microsoft.Build.Framework (16.11) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.Build.Tasks.Core (16.8) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.8) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 16.8) - restriction: >= netstandard2.0 + Microsoft.Build.Tasks.Core (16.11) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (>= 16.11) - restriction: >= netstandard2.0 + Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) System.CodeDom (>= 4.4) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 System.Reflection.Metadata (>= 1.6) - restriction: && (< net472) (>= netstandard2.0) - System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net472) (>= netstandard2.0) System.Resources.Extensions (>= 4.6) - restriction: >= netstandard2.0 - System.Runtime.InteropServices (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) System.Security.Cryptography.Pkcs (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Security.Cryptography.Xml (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Threading.Tasks.Dataflow (>= 4.9) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (16.8) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 16.8) - restriction: >= netstandard2.0 + Microsoft.Build.Utilities.Core (16.11) - restriction: >= netstandard2.0 + Microsoft.Build.Framework (>= 16.11) - restriction: >= netstandard2.0 + Microsoft.NET.StringTools (>= 1.0) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (>= 1.16.30) - restriction: >= net472 Microsoft.Win32.Registry (>= 4.3) - restriction: && (< net472) (>= netstandard2.0) - System.Collections.Immutable (>= 1.5) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Configuration.ConfigurationManager (>= 4.7) - restriction: >= netstandard2.0 System.Security.Permissions (>= 4.7) - restriction: && (< net472) (>= netstandard2.0) System.Text.Encoding.CodePages (>= 4.0.1) - restriction: && (< net472) (>= netstandard2.0) - Microsoft.NETCore.Platforms (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= net45) (< netstandard1.3) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp2.0) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.0) (>= netstandard2.0) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (< netstandard1.3) (>= netstandard2.0) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= netstandard2.0) (>= uap10.0)) (&& (>= netstandard2.0) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= wp8)) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.OData.Core (7.8.1) - restriction: >= netstandard2.0 - Microsoft.OData.Edm (7.8.1) - Microsoft.Spatial (7.8.1) - Microsoft.OData.Edm (7.8.1) - restriction: >= netstandard2.0 + Microsoft.NET.StringTools (1.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (5.0.4) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.1) (>= netcoreapp3.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.0) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.0) (>= netstandard2.0) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.0) (>= netstandard2.0) (< win8)) (&& (< netstandard1.3) (>= netstandard2.0) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= netstandard2.0) (>= uap10.0)) (&& (>= netstandard2.0) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= wp8)) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.OData.Core (7.9.3) - restriction: >= netstandard2.0 + Microsoft.OData.Edm (7.9.3) + Microsoft.Spatial (7.9.3) + Microsoft.OData.Edm (7.9.3) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 4.6) - restriction: >= netstandard2.0 + System.Text.Encodings.Web (>= 4.7.2) - restriction: >= netstandard2.0 System.Text.Json (>= 4.6) - restriction: >= netstandard2.0 - Microsoft.Spatial (7.8.1) - restriction: >= netstandard2.0 + Microsoft.Spatial (7.9.3) - restriction: >= netstandard2.0 Microsoft.VisualStudio.Setup.Configuration.Interop (1.16.30) - restriction: >= net472 - Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= monotouch) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.Registry (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 @@ -818,40 +861,40 @@ NUGET Microsoft.Build.Utilities.Core (>= 16.4) - restriction: >= netstandard2.0 NETStandard.Library (2.0.3) - restriction: >= netstandard2.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) - Newtonsoft.Json (12.0.3) - restriction: >= netstandard2.0 - NuGet.Common (5.8.1) - restriction: >= netstandard2.0 - NuGet.Frameworks (>= 5.8.1) - restriction: || (>= net45) (>= netstandard2.0) - NuGet.Configuration (5.8.1) - restriction: >= netstandard2.0 - NuGet.Common (>= 5.8.1) - restriction: || (>= net45) (>= netstandard2.0) + Newtonsoft.Json (13.0.1) - restriction: >= netstandard2.0 + NuGet.Common (5.11) - restriction: >= netstandard2.0 + NuGet.Frameworks (>= 5.11) - restriction: || (>= net45) (>= netstandard2.0) + NuGet.Configuration (5.11) - restriction: >= netstandard2.0 + NuGet.Common (>= 5.11) - restriction: || (>= net45) (>= netstandard2.0) System.Security.Cryptography.ProtectedData (>= 4.4) - restriction: && (< net45) (>= netstandard2.0) - NuGet.Frameworks (5.8.1) - restriction: >= netstandard2.0 - NuGet.Packaging (5.8.1) - restriction: >= netstandard2.0 + NuGet.Frameworks (5.11) - restriction: >= netstandard2.0 + NuGet.Packaging (5.11) - restriction: >= netstandard2.0 Newtonsoft.Json (>= 9.0.1) - restriction: >= netstandard2.0 - NuGet.Configuration (>= 5.8.1) - restriction: >= netstandard2.0 - NuGet.Versioning (>= 5.8.1) - restriction: >= netstandard2.0 + NuGet.Configuration (>= 5.11) - restriction: >= netstandard2.0 + NuGet.Versioning (>= 5.11) - restriction: >= netstandard2.0 System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) - NuGet.Protocol (5.8.1) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 5.8.1) - restriction: >= netstandard2.0 - NuGet.Versioning (5.8.1) - restriction: >= netstandard2.0 - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (4.3.1) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + NuGet.Protocol (5.11) - restriction: >= netstandard2.0 + NuGet.Packaging (>= 5.11) - restriction: >= netstandard2.0 + NuGet.Versioning (5.11) - restriction: >= netstandard2.0 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Http (4.3.1) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Security (4.3.1) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Security (4.3.1) - restriction: && (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) @@ -867,23 +910,23 @@ NUGET runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= monoandroid) (< netcoreapp2.0) (>= netcoreapp3.0)) (&& (>= monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp3.0)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp3.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp3.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.1)) (>= net472) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (>= xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (>= xamarintvos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp3.0) (>= xamarintvos)) (&& (>= netcoreapp3.0) (>= xamarinwatchos)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (>= net5.0) (< netstandard1.3)) (&& (>= monoandroid) (>= net5.0) (< netstandard2.0)) (&& (>= monoandroid) (>= netcoreapp3.0) (< netstandard2.0)) (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (>= monoandroid) (< netstandard2.0) (>= netstandard2.1)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (>= monotouch) (>= net5.0)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp3.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.1)) (&& (< net46) (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= net5.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp3.0)) (&& (>= net461) (>= netstandard2.1)) (>= net472) (&& (>= net5.0) (< netcoreapp2.0)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (>= xamarinwatchos)) (&& (< netcoreapp2.0) (>= netcoreapp3.0)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= netcoreapp3.0) (>= xamarintvos)) (&& (>= netcoreapp3.0) (>= xamarinwatchos)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) System.CodeDom (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -894,8 +937,8 @@ NUGET System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Collections.Immutable (5.0) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (&& (< net5.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netstandard1.1)) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) + System.Collections.Immutable (5.0) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) System.Collections.NonGeneric (4.3) - restriction: >= netstandard2.0 System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -911,13 +954,16 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 + System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Diagnostics.DiagnosticSource (5.0.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3)) (>= net46) (>= uap10.1) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.1)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (>= net46) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Diagnostics.DiagnosticSource (5.0.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) System.Diagnostics.TraceSource (4.3) - restriction: >= netstandard2.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -928,11 +974,11 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Drawing.Common (5.0) - restriction: >= netcoreapp3.0 + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Dynamic.Runtime (4.3) - restriction: >= netstandard2.0 System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -949,32 +995,32 @@ NUGET System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1)) (&& (>= monotouch) (>= netstandard2.0)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0)) (>= monotouch) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Formats.Asn1 (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Extensions (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.IO.FileSystem (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -983,32 +1029,32 @@ NUGET System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (>= netstandard2.0)) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Linq.Queryable (4.3) - restriction: >= netstandard2.0 System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1018,38 +1064,37 @@ NUGET System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Numerics.Vectors (>= 4.4) - restriction: && (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Memory (4.5.4) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.1) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp3.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.1)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (>= net472) (>= net5.0) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.1) (>= uap10.1)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Numerics.Vectors (>= 4.5) - restriction: >= net461 - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Net.Http (4.3.4) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Net.NameResolution (4.3) - restriction: >= netstandard2.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1089,7 +1134,7 @@ NUGET System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) @@ -1109,34 +1154,34 @@ NUGET System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) System.Net.Security (4.3.2) - restriction: >= netstandard2.0 - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (>= net46) - System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) - System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Security (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Principal (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.ThreadPool (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Net.Sockets (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1149,7 +1194,7 @@ NUGET System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Numerics.Vectors (4.5) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (>= net472) (&& (>= netstandard2.0) (>= uap10.1)) + System.Numerics.Vectors (4.5) - restriction: || (&& (>= net461) (>= net5.0)) (>= net472) (&& (>= net5.0) (< netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1159,59 +1204,58 @@ NUGET System.Reactive (5.0) - restriction: >= netstandard2.0 System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< netcoreapp3.1) (>= netstandard2.0)) (>= uap10.1) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Reflection.Emit (4.7) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= netstandard2.0) (>= uap10.1) (< win8) (< wpa81)) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) + System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= netstandard2.0) (>= uap10.1) (< win8) (< wpa81)) System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) System.Reflection.Extensions (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Metadata (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) - System.Collections.Immutable (>= 5.0) - restriction: || (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (&& (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (>= net461) (&& (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Metadata (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.TypeExtensions (4.7) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) + System.Reflection.TypeExtensions (4.7) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.Extensions (5.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Memory (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= net462) (< net472) (>= netstandard2.0)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (>= net472) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.6) (>= netstandard2.0) (>= xamarintvos)) (&& (< netstandard1.6) (>= netstandard2.0) (>= xamarinwatchos)) (&& (< netstandard1.6) (>= xamarinios)) (&& (< netstandard1.6) (>= xamarinmac)) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= uap10.1) (>= xamarinios)) (&& (>= uap10.1) (>= xamarinmac)) - System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard1.6)) (&& (< netstandard1.6) (>= xamarinios)) (&& (< netstandard1.6) (>= xamarinmac)) (>= netstandard2.0) + System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: && (< net472) (< netcoreapp3.1) (>= netstandard2.0) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) @@ -1219,10 +1263,10 @@ NUGET System.Runtime.Serialization.Primitives (4.3) - restriction: >= netstandard2.0 System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Security.AccessControl (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + System.Security.AccessControl (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) - System.Security.Claims (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Claims (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1230,25 +1274,25 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net472) (>= netstandard2.0)) (>= net5.0) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1262,7 +1306,7 @@ NUGET System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1275,15 +1319,15 @@ NUGET System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.OpenSsl (5.0) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (5.0) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Formats.Asn1 (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (< netstandard2.1)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1)) (>= monotouch) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Security.Cryptography.Primitives (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Pkcs (5.0.1) - restriction: || (&& (>= monotouch) (>= netstandard2.0)) (&& (< net461) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Buffers (>= 4.5.1) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) + System.Formats.Asn1 (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.1)) (>= netcoreapp3.0) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) + System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= netstandard2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1291,45 +1335,43 @@ NUGET System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.ProtectedData (5.0) - restriction: && (< net45) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= netstandard2.0)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Calendars (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.ProtectedData (5.0) - restriction: || (&& (< net45) (>= netstandard2.0)) (&& (< net461) (>= net472)) (&& (>= net5.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Calendars (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Security.Cryptography.Xml (5.0) - restriction: && (< net472) (>= netstandard2.0) - System.Memory (>= 4.5.4) - restriction: && (< monoandroid) (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: && (< net461) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Pkcs (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (&& (< net461) (>= netstandard2.0)) (>= netcoreapp2.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Permissions (5.0) - restriction: || (&& (>= monoandroid) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net472) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + System.Security.Permissions (5.0) - restriction: >= netstandard2.0 System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 - System.Security.Principal (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Principal (4.3) - restriction: || (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Principal.Windows (5.0) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netcoreapp2.1) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) + System.Security.Principal.Windows (5.0) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net5.0) System.Security.SecureString (4.3) - restriction: >= netstandard2.0 Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1339,25 +1381,25 @@ NUGET System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Text.Encoding.CodePages (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= netcoreapp2.1) + System.Text.Encoding.CodePages (5.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net5.0) Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net5.0) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (< monoandroid) (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net5.0) (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) - System.Text.Encodings.Web (5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.1)) (>= net472) (&& (>= netcoreapp2.1) (>= uap10.1)) (&& (>= netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.1) (>= xamarinwatchos)) - System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (>= uap10.1) - System.Text.Json (5.0.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0)) (>= monotouch) (>= net461) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0)) (>= monotouch) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) - System.Numerics.Vectors (>= 4.5) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0)) (>= monotouch) (>= net461) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Text.Encodings.Web (>= 5.0) - restriction: || (&& (>= monoandroid) (< netcoreapp2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0)) (>= monotouch) (>= net461) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) + System.Text.Encodings.Web (5.0.1) - restriction: || (&& (>= monoandroid) (>= net5.0)) (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= net5.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= net5.0)) (&& (>= net461) (>= net5.0)) (&& (>= net5.0) (< netcoreapp2.0) (>= xamarinios)) (&& (>= net5.0) (< netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net5.0) (< netcoreapp2.0) (>= xamarinmac)) (&& (>= net5.0) (>= uap10.1)) (&& (>= net5.0) (>= xamarintvos)) (&& (>= net5.0) (>= xamarinwatchos)) (>= netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) + System.Memory (>= 4.5.4) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1)) (>= net461) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1)) (>= uap10.1) + System.Text.Json (5.0.2) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) + System.Numerics.Vectors (>= 4.5) - restriction: || (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Text.Encodings.Web (>= 5.0.1) - restriction: || (&& (>= monoandroid) (< netstandard2.0)) (&& (< monoandroid) (< net5.0) (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netcoreapp2.0) (>= xamarinios)) (&& (< netcoreapp2.0) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) System.ValueTuple (>= 4.5) - restriction: >= net461 - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Threading.Overlapped (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) @@ -1365,18 +1407,981 @@ NUGET System.Resources.ResourceManager (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) System.Runtime (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) System.Runtime.Handles (>= 4.3) - restriction: && (< net46) (>= netstandard1.3) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) System.Threading.Tasks.Dataflow (5.0) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (< monoandroid) (< netcoreapp2.0) (>= netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (>= uap10.1)) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (< monoandroid) (>= net5.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= net5.0)) (&& (>= net5.0) (< netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net5.0) (>= uap10.1)) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) System.Threading.Thread (4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.ThreadPool (4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (< netstandard1.6) (>= netstandard2.0)) (&& (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ValueTuple (4.5) - restriction: || (&& (>= net461) (>= netcoreapp2.1)) (>= netstandard2.0) + System.ValueTuple (4.5) - restriction: || (&& (>= net461) (>= net5.0)) (>= netstandard2.0) System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 + +GROUP client +STORAGE: NONE +NUGET + remote: https://api.nuget.org/v3/index.json + FSharp.Core (5.0) + MessagePack (2.3.85) - restriction: >= netstandard2.0 + MessagePack.Annotations (>= 2.3.85) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 1.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Collections.Immutable (>= 1.5) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Memory (>= 4.5.3) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Reflection.Emit (>= 4.6) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Reflection.Emit.Lightweight (>= 4.6) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.5.3) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + MessagePack.Annotations (2.3.85) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Build.Tasks.Git (1.0) - copy_local: true + Microsoft.NETCore.Platforms (5.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (>= netcoreapp2.1) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.SourceLink.Common (1.0) - copy_local: true + Microsoft.SourceLink.GitHub (1.0) - copy_local: true + Microsoft.Build.Tasks.Git (>= 1.0) + Microsoft.SourceLink.Common (>= 1.0) + Microsoft.VisualStudio.Threading (17.0.63) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading.Analyzers (>= 17.0.63) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Validation (>= 16.10.35) - restriction: >= netstandard2.0 + Microsoft.Win32.Registry (>= 5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading.Analyzers (17.0.63) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Validation (17.0.34) - restriction: >= netstandard2.0 + Microsoft.Win32.Primitives (4.3) - restriction: && (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (5.0) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) + System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Nerdbank.Streams (2.8.46) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading (>= 16.10.56) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Validation (>= 16.10.26) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 5.0.1) - restriction: >= netstandard2.0 + System.Net.WebSockets (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 + Newtonsoft.Json (13.0.1) - restriction: >= netstandard2.0 + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Net.Http (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + StreamJsonRpc (2.8.28) + MessagePack (>= 2.2.85) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading (>= 16.9.60) - restriction: >= netstandard2.0 + Nerdbank.Streams (>= 2.6.81) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 12.0.2) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Diagnostics.DiagnosticSource (>= 5.0.1) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 5.0.1) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Net.Http (>= 4.3.4) - restriction: >= netstandard2.0 + System.Net.WebSockets (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 + System.Threading.Tasks.Dataflow (>= 5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Collections.Immutable (5.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Diagnostics.DiagnosticSource (5.0.1) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Formats.Asn1 (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Extensions (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Pipelines (5.0.1) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) + System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Numerics.Vectors (>= 4.4) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (>= 4.5) - restriction: >= net461 + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Net.Http (4.3.4) - restriction: >= netstandard2.0 + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.WebSockets (4.3) - restriction: >= netstandard2.0 + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Emit (4.7) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) + System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard2.0) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (< netcoreapp1.1) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (>= netstandard2.0) + System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp1.1) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Numerics (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.AccessControl (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= net46) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos) + System.Formats.Asn1 (>= 5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (5.0) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= netstandard2.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Calendars (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks.Dataflow (5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + +GROUP tool +STORAGE: NONE +NUGET + remote: https://api.nuget.org/v3/index.json + Argu (6.1.1) + FSharp.Core (>= 4.3.2) - restriction: >= netstandard2.0 + System.Configuration.ConfigurationManager (>= 4.4) - restriction: >= netstandard2.0 + Fable.Core (3.4) - restriction: && (< net46) (>= netstandard2.0) + FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 + FSharp.Core (5.0.3-beta.21352.5) + MessagePack (2.3.85) - restriction: >= netstandard2.0 + MessagePack.Annotations (>= 2.3.85) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 1.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Collections.Immutable (>= 1.5) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Memory (>= 4.5.3) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Reflection.Emit (>= 4.6) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Reflection.Emit.Lightweight (>= 4.6) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + System.Threading.Tasks.Extensions (>= 4.5.3) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) + MessagePack.Annotations (2.3.85) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (5.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net461) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + Microsoft.NETCore.Platforms (5.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard2.0)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (>= netcoreapp2.0) (>= xamarinios)) (&& (>= netcoreapp2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.0) (>= xamarinmac)) (&& (>= netcoreapp2.0) (>= xamarintvos)) (&& (>= netcoreapp2.0) (>= xamarinwatchos)) (>= netcoreapp2.1) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.3) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.2) (>= uap10.0) (< win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (>= netstandard1.3) (>= wp8)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) + Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (< netstandard1.2) (>= uap10.0) (< win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.VisualStudio.Threading (17.0.63) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading.Analyzers (>= 17.0.63) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Validation (>= 16.10.35) - restriction: >= netstandard2.0 + Microsoft.Win32.Registry (>= 5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading.Analyzers (17.0.63) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Validation (17.0.34) - restriction: >= netstandard2.0 + Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (5.0) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) + System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.SystemEvents (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + Nerdbank.Streams (2.8.46) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading (>= 16.10.56) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Validation (>= 16.10.26) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 5.0.1) - restriction: >= netstandard2.0 + System.Net.WebSockets (>= 4.3) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: >= netstandard2.0 + NETStandard.Library (2.0.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0)) (>= uap10.1) (>= wp8) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.AppContext (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Console (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Linq (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Http (>= 4.3.2) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Net.Sockets (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.ObjectModel (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8) (< win8)) (&& (< netstandard1.0) (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard1.3) (< win8) (>= wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Threading.Timer (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Xml.XDocument (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81) (< wp8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Newtonsoft.Json (13.0.1) - restriction: || (>= net46) (>= netstandard2.0) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.IO.Compression (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Net.Http (4.3.1) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1.1) + Microsoft.NETCore.Targets (>= 1.1.3) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Serilog (2.10) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net46) + NETStandard.Library (>= 1.6.1) - restriction: || (&& (< net45) (>= netstandard1.0) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) + System.Collections.NonGeneric (>= 4.3) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) + SerilogTraceListener (3.2) + NETStandard.Library (>= 1.6.1) - restriction: && (< net45) (>= netstandard1.3) (< netstandard2.0) + Serilog (>= 2.8) - restriction: || (&& (>= net45) (< netstandard1.3)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (>= net46) + System.Diagnostics.TraceSource (>= 4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (>= net46) + StreamJsonRpc (2.8.28) + MessagePack (>= 2.2.85) - restriction: >= netstandard2.0 + Microsoft.Bcl.AsyncInterfaces (>= 5.0) - restriction: >= netstandard2.0 + Microsoft.VisualStudio.Threading (>= 16.9.60) - restriction: >= netstandard2.0 + Nerdbank.Streams (>= 2.6.81) - restriction: >= netstandard2.0 + Newtonsoft.Json (>= 12.0.2) - restriction: >= netstandard2.0 + System.Collections.Immutable (>= 5.0) - restriction: >= netstandard2.0 + System.Diagnostics.DiagnosticSource (>= 5.0.1) - restriction: >= netstandard2.0 + System.IO.Pipelines (>= 5.0.1) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: >= netstandard2.0 + System.Net.Http (>= 4.3.4) - restriction: >= netstandard2.0 + System.Net.WebSockets (>= 4.3) - restriction: >= netstandard2.0 + System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 + System.Threading.Tasks.Dataflow (>= 5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 + System.AppContext (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Buffers (4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Collections.Concurrent (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Collections.Immutable (5.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (>= net461) (>= uap10.1) + System.Collections.NonGeneric (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Configuration.ConfigurationManager (5.0) - restriction: >= netstandard2.0 + System.Security.Cryptography.ProtectedData (>= 5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Permissions (>= 5.0) - restriction: || (>= monoandroid) (>= monotouch) (>= net461) (>= netstandard2.0) (>= xamarintvos) (>= xamarinwatchos) + System.Console (4.3.1) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Diagnostics.DiagnosticSource (5.0.1) - restriction: >= netstandard2.0 + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (>= uap10.1) + System.Runtime.CompilerServices.Unsafe (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= monotouch) (&& (>= net45) (< netstandard1.3)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (&& (< netstandard2.0) (>= xamarintvos)) (&& (< netstandard2.0) (>= xamarinwatchos)) (>= uap10.1) + System.Diagnostics.Tools (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.TraceSource (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard2.0)) (>= net46) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Drawing.Common (5.0.2) - restriction: >= netcoreapp3.0 + Microsoft.Win32.SystemEvents (>= 5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Formats.Asn1 (5.0) - restriction: && (>= netcoreapp3.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Globalization.Calendars (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Extensions (4.3) - restriction: && (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.5)) (&& (< net45) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.6)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net463) (< netstandard1.5) (>= uap10.0)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.Compression (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Compression.ZipFile (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Pipelines (5.0.1) - restriction: >= netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (>= uap10.1) + System.Linq (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq.Expressions (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Emit (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Memory (4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (>= netstandard2.0) + System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (< uap10.1) (>= wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Numerics.Vectors (>= 4.4) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (>= 4.5) - restriction: >= net461 + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (>= monoandroid) (< netstandard1.1)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (>= monotouch) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Net.Http (4.3.4) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (>= netstandard2.0) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Net.Primitives (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Sockets (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.WebSockets (4.3) - restriction: >= netstandard2.0 + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Numerics.Vectors (4.5) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (>= netstandard2.0)) + System.ObjectModel (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Emit (4.7) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netstandard2.0) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) + System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Reflection.Emit.Lightweight (4.7) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wp8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard2.0) (>= wpa81)) (&& (>= portable-net45+win8+wp8+wpa81) (< portable-net45+wp8) (< win8)) (&& (< portable-net45+wp8) (>= win8)) (>= uap10.1) + System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net45+win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.TypeExtensions (4.7) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5) (< uap10.1)) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.4) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.5) (< win8)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard1.6) (< win8)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.1) (>= uap10.0) (< win8)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.CompilerServices.Unsafe (5.0) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (< monoandroid) (>= netcoreapp2.1) (< netcoreapp3.0) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= xamarinios)) (&& (< netcoreapp2.1) (>= xamarinmac)) (>= netstandard2.0) + System.Runtime.Extensions (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< netstandard1.2)) (&& (>= netcoreapp1.1) (< netstandard1.4)) (&& (>= netcoreapp1.1) (< netstandard1.5)) (&& (>= netcoreapp1.1) (< netstandard1.6)) (&& (>= netcoreapp1.1) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.4) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net462) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.0) (>= netstandard1.3) (< portable-net45+win8)) (&& (< netstandard1.0) (>= netstandard1.3) (>= win8)) (&& (< netstandard1.0) (>= netstandard1.3) (< win8)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.AccessControl (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0) (< uap10.1)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net461) (< netstandard1.5)) (&& (< net45) (>= net461) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net462) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (>= net462) (< netstandard1.5) (>= netstandard1.6)) (&& (< net45) (>= net47) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (>= net47) (< netstandard1.5) (>= netstandard1.6)) (&& (< net45) (>= net47) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Cng (5.0) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Security.Cryptography.Algorithms (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< net462) (< netstandard1.6)) (&& (>= net462) (< netstandard1.6)) (>= net47) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) (&& (>= net46) (< netstandard1.4)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6) (< uap10.1)) + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net461) (< netstandard1.5)) (&& (< net45) (>= net461) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.5)) (&& (< net45) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.6)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (< netstandard1.5) (>= uap10.0)) (&& (>= net463) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (5.0) - restriction: || (&& (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4) (>= netstandard1.6)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: && (>= netcoreapp2.0) (< netcoreapp2.1) + System.Formats.Asn1 (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= net461) (< netstandard1.4)) (&& (< net45) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= net461) (< netstandard1.5)) (&& (< net45) (>= net463) (< netstandard1.4)) (&& (< net45) (>= net463) (< netstandard1.5)) (&& (< net45) (>= net463) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= net463) (< netstandard1.6)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net461) (< netstandard1.5) (>= uap10.0)) (&& (>= net463) (< netstandard1.5) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.ProtectedData (5.0) - restriction: && (< net461) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Memory (>= 4.5.4) - restriction: && (< net46) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (>= netstandard2.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Calendars (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Permissions (5.0) - restriction: >= netstandard2.0 + System.Security.AccessControl (>= 5.0) - restriction: || (>= net461) (>= netstandard2.0) + System.Windows.Extensions (>= 5.0) - restriction: >= netcoreapp3.0 + System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) + Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.3)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Text.RegularExpressions (4.3.1) - restriction: || (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + System.Collections (>= 4.3) - restriction: && (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netcoreapp1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + System.Runtime.Extensions (>= 4.3.1) - restriction: && (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< netstandard2.0) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.6) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= netstandard1.6) (>= uap10.0)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.6) (< portable-net45+win8+wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.5) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.6) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net46) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (< netstandard1.2) (>= netstandard1.5) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (< netstandard1.4) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< net45) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks.Dataflow (5.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< win8)) (&& (>= net45) (< netstandard2.0)) (&& (< net45) (< netcoreapp2.1) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net461) (&& (< netstandard1.0) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= wp8) + System.Threading.Timer (4.3) - restriction: || (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Windows.Extensions (5.0) - restriction: >= netcoreapp3.0 + System.Drawing.Common (>= 5.0) - restriction: >= netcoreapp3.0 + System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= net46) (< netstandard1.4)) (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.3) (>= uap10.0) (< win8) (< wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) (&& (< netstandard1.5) (>= uap10.0) (< win8) (< wpa81)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.RegularExpressions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Threading.Tasks.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.XDocument (4.3) - restriction: || (&& (< net45) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0) (< win8) (< wpa81)) (&& (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< netstandard1.5) (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tools (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) + Thoth.Json.Net (7.1) + Fable.Core (>= 3.0 < 4.0) - restriction: && (< net46) (>= netstandard2.0) + FSharp.Core (>= 4.7.2) - restriction: || (>= net46) (>= netstandard2.0) + Newtonsoft.Json (>= 11.0.2) - restriction: || (>= net46) (>= netstandard2.0) diff --git a/src/Fantomas.Benchmarks/Runners.fs b/src/Fantomas.Benchmarks/Runners.fs index b7201dc0eb..93d866f40c 100644 --- a/src/Fantomas.Benchmarks/Runners.fs +++ b/src/Fantomas.Benchmarks/Runners.fs @@ -21,7 +21,7 @@ type CodePrinterTest() = let fileName = Path.GetFileName(path) let parsingOptions = - FakeHelpers.createParsingOptionsFromFile fileName + CodeFormatterImpl.createParsingOptionsFromFile fileName let content = File.ReadAllText(path) diff --git a/src/Fantomas.Client/Contracts.fs b/src/Fantomas.Client/Contracts.fs new file mode 100644 index 0000000000..bb313bc3da --- /dev/null +++ b/src/Fantomas.Client/Contracts.fs @@ -0,0 +1,76 @@ +module Fantomas.Client.Contracts + +open System +open System.Collections.Generic +open System.Threading +open System.Threading.Tasks + +[] +module Methods = + [] + let Version = "fantomas/version" + + [] + let FormatDocument = "fantomas/formatDocument" + + [] + let FormatSelection = "fantomas/formatSelection" + + [] + let Configuration = "fantomas/configuration" + +type FormatDocumentRequest = + { SourceCode: string + /// File path will be used to identify the .editorconfig options + /// Unless the configuration is passed + FilePath: string + /// Overrides the found .editorconfig. + Config: IReadOnlyDictionary option } + +type FantomasResponse = + { Code: int + FilePath: string + Content: string option } + +type FormatSelectionRequest = + { SourceCode: string + /// File path will be used to identify the .editorconfig options + /// Unless the configuration is passed + FilePath: string + /// Overrides the found .editorconfig. + Config: IReadOnlyDictionary option + /// Range follows the same semantics of the FSharp Compiler Range type. + Range: FormatSelectionRange } + +and FormatSelectionRange = + struct + val StartLine: int + val StartColumn: int + val EndLine: int + val EndColumn: int + + new(startLine: int, startColumn: int, endLine: int, endColumn: int) = + { StartLine = startLine + StartColumn = startColumn + EndLine = endLine + EndColumn = endColumn } + end + +type FantomasService = + interface + inherit IDisposable + + abstract member VersionAsync : + filePath: string * ?cancellationToken: CancellationToken -> Task + + abstract member FormatDocumentAsync : + FormatDocumentRequest * ?cancellationToken: CancellationToken -> Task + + abstract member FormatSelectionAsync : + FormatSelectionRequest * ?cancellationToken: CancellationToken -> Task + + abstract member ConfigurationAsync : + filePath: string * ?cancellationToken: CancellationToken -> Task + + abstract member ClearCache : unit -> unit + end diff --git a/src/Fantomas.Client/Fantomas.Client.fsproj b/src/Fantomas.Client/Fantomas.Client.fsproj new file mode 100644 index 0000000000..e15c2d325d --- /dev/null +++ b/src/Fantomas.Client/Fantomas.Client.fsproj @@ -0,0 +1,25 @@ + + + netstandard2.0 + 0.3.0 + Companion library to format using fantomas tool. + true + 3390;$(WarnOn) + FS0025 + LICENSE.md + fantomas_logo.png + true + true + embedded + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Fantomas.Client/FantomasToolLocator.fs b/src/Fantomas.Client/FantomasToolLocator.fs new file mode 100644 index 0000000000..559d22ff3e --- /dev/null +++ b/src/Fantomas.Client/FantomasToolLocator.fs @@ -0,0 +1,150 @@ +module Fantomas.Client.FantomasToolLocator + +open System +open System.Diagnostics +open System.IO +open System.Text.RegularExpressions +open Fantomas.Client.LSPFantomasServiceTypes +open StreamJsonRpc + +let private alphaLowerThanFour version = + version = "4.6.0-alpha-001" + || version = "4.6.0-alpha-002" + || version = "4.6.0-alpha-003" + +let private (|CompatibleVersion|_|) (version: string) = + let stripAlphaBeta = version.Split('-').[0] + + match Version.TryParse stripAlphaBeta with + | true, parsedVersion -> + if parsedVersion.Major = 4 + && parsedVersion.Minor = 6 + && alphaLowerThanFour version then + // Only 4.6.0-alpha-004 has daemon capabilities + None + elif parsedVersion.Major >= 4 + && parsedVersion.Minor >= 6 then + Some version + else + None + | _ -> None + +// In the future, fantomas-tool will be renamed to fantomas. +let private (|CompatibleToolName|_|) toolName = + if toolName = "fantomas-tool" + || toolName = "fantomas" then + Some toolName + else + None + +let private readOutputStreamAsLines (outputStream: StreamReader) : string list = + let rec readLines (outputStream: StreamReader) (continuation: string list -> string list) = + let nextLine = outputStream.ReadLine() + + if isNull nextLine then + continuation [] + else + readLines outputStream (fun lines -> nextLine :: lines |> continuation) + + readLines outputStream id + +let private runToolListCmd (Folder workingDir) (globalFlag: bool) = + let ps = ProcessStartInfo("dotnet") + ps.WorkingDirectory <- workingDir + + ps.Arguments <- + if globalFlag then + "tool list -g" + else + "tool list" + + ps.RedirectStandardOutput <- true + ps.RedirectStandardError <- true + ps.UseShellExecute <- false + use p = Process.Start ps + p.WaitForExit() + let exitCode = p.ExitCode + + if exitCode = 0 then + let output = readOutputStreamAsLines p.StandardOutput + Ok output + else + let error = p.StandardError.ReadToEnd() + Error(exitCode, error) + +let private (|CompatibleTool|_|) lines = + let (|HeaderLine|_|) line = + if Regex.IsMatch(line, @"^Package\sId\s+Version.+$") then + Some() + else + None + + let (|Dashes|_|) line = + if String.forall ((=) '-') line then + Some() + else + None + + let (|Tools|_|) lines = + let tools = + lines + |> List.choose + (fun (line: string) -> + let parts = + line.Split([| ' ' |], StringSplitOptions.RemoveEmptyEntries) + + if parts.Length > 2 then + Some(parts.[0], parts.[1]) + else + None) + + if List.isEmpty tools then + None + else + Some tools + + match lines with + | HeaderLine :: Dashes :: Tools tools -> + let tool = + List.tryFind + (fun (packageId, version) -> + match packageId, version with + | CompatibleToolName _, CompatibleVersion _ -> true + | _ -> false) + tools + + Option.map (snd >> FantomasVersion) tool + | _ -> None + +let findFantomasTool (workingDir: Folder) : FantomasToolResult = + let localTools = runToolListCmd workingDir false + + match localTools with + | Ok (CompatibleTool version) -> FoundLocalTool(workingDir, version) + | _ -> + let globalTools = runToolListCmd workingDir true + + match globalTools with + | Ok (CompatibleTool version) -> FoundGlobalTool(workingDir, version) + | _ -> NoCompatibleVersionFound + +let createForWorkingDirectory (Folder workingDirectory) (isGlobal: bool) : JsonRpc = + let processStart = + if isGlobal then + ProcessStartInfo("fantomas") + else + ProcessStartInfo("dotnet") + + processStart.UseShellExecute <- false + processStart.Arguments <- sprintf "fantomas --daemon" + processStart.WorkingDirectory <- workingDirectory + processStart.RedirectStandardInput <- true + processStart.RedirectStandardOutput <- true + processStart.RedirectStandardError <- true + let daemonProcess = Process.Start processStart + + let client = + new JsonRpc(daemonProcess.StandardInput.BaseStream, daemonProcess.StandardOutput.BaseStream) + + do client.StartListening() + client diff --git a/src/Fantomas.Client/LSPFantomasService.fs b/src/Fantomas.Client/LSPFantomasService.fs new file mode 100644 index 0000000000..54d78a0b48 --- /dev/null +++ b/src/Fantomas.Client/LSPFantomasService.fs @@ -0,0 +1,238 @@ +module Fantomas.Client.LSPFantomasService + +open System +open System.IO +open System.Threading +open System.Threading.Tasks +open StreamJsonRpc +open Fantomas.Client.Contracts +open Fantomas.Client.LSPFantomasServiceTypes +open Fantomas.Client.FantomasToolLocator + +let private orDefaultCancellationToken = + Option.defaultValue CancellationToken.None + +type Msg = + | GetDaemon of Folder * AsyncReplyChannel + | Reset + +let private createAgent (ct: CancellationToken) = + MailboxProcessor.Start( + (fun inbox -> + let rec messageLoop (state: ServiceState) = + async { + let! msg = inbox.Receive() + + let nextState = + match msg with + | GetDaemon (folder, replyChannel) -> + // get the version of that folder + // look in the cache first + let versionFromCache = Map.tryFind folder state.FolderToVersion + + match versionFromCache with + | Some version -> + let daemon = Map.tryFind version state.Daemons + + match daemon with + | Some _ -> + replyChannel.Reply daemon + + { state with + FolderToVersion = Map.add folder version state.FolderToVersion } + | None -> + // This is a strange situation, we know what version is linked to that folder but there is no daemon + // The moment a version is added, is also the moment a daemon is re-used or created + replyChannel.Reply None + state + | None -> + let version = findFantomasTool folder + + match version with + | FantomasToolResult.NoCompatibleVersionFound -> + // No compatible version was found + replyChannel.Reply None + state + + | FantomasToolResult.FoundLocalTool (_, version) -> + match Map.tryFind version state.Daemons with + | Some daemon -> + replyChannel.Reply(Some daemon) + state + | None -> + let daemon = createForWorkingDirectory folder false + replyChannel.Reply(Some daemon) + + { state with + Daemons = Map.add version daemon state.Daemons + FolderToVersion = Map.add folder version state.FolderToVersion } + + | FantomasToolResult.FoundGlobalTool (_, version) -> + match Map.tryFind version state.Daemons with + | Some daemon -> + replyChannel.Reply(Some daemon) + state + | None -> + let daemon = createForWorkingDirectory folder true + replyChannel.Reply(Some daemon) + + { state with + Daemons = Map.add version daemon state.Daemons + FolderToVersion = Map.add folder version state.FolderToVersion } + + + | Reset -> + Map.toList state.Daemons + |> List.iter (fun (_, daemon) -> daemon.Dispose()) + + ServiceState.Empty + + return! messageLoop nextState + } + + messageLoop ServiceState.Empty), + cancellationToken = ct + ) + +type FantomasServiceError = + | DaemonNotFound + | FileDoesNotExist + | FilePathIsNotAbsolute + +let isPathAbsolute (path: string) : bool = + if + String.IsNullOrWhiteSpace path + || path.IndexOfAny(Path.GetInvalidPathChars()) <> -1 + || not (Path.IsPathRooted path) + then + false + else + let pathRoot = Path.GetPathRoot path + // Accepts X:\ and \\UNC\PATH, rejects empty string, \ and X:, but accepts / to support Linux + if pathRoot.Length <= 2 && pathRoot <> "/" then + false + else if pathRoot.[0] <> '\\' || pathRoot.[1] <> '\\' then + true + else + pathRoot.Trim('\\').IndexOf('\\') <> -1 // A UNC server name without a share name (e.g "\\NAME" or "\\NAME\") is invalid + +let private getFolderFor (filePath: string) : Result = + if not (isPathAbsolute filePath) then + Error FantomasServiceError.FilePathIsNotAbsolute + elif not (File.Exists filePath) then + Error FantomasServiceError.FileDoesNotExist + else + Path.GetDirectoryName filePath |> Folder |> Ok + +let private getDaemon (agent: MailboxProcessor) (folder: Folder) : Result = + let daemon = + agent.PostAndReply(fun replyChannel -> GetDaemon(folder, replyChannel)) + + match daemon with + | Some daemon -> Ok daemon + | None -> Error FantomasServiceError.DaemonNotFound + +let private fileNotFoundResponse filePath : Task = + { Code = int FantomasResponseCode.FileNotFound + FilePath = filePath + Content = Some(sprintf "File \"%s\" does not exist" filePath) } + |> Task.FromResult + +let private fileNotAbsoluteResponse filePath : Task = + { Code = int FantomasResponseCode.FilePathIsNotAbsolute + FilePath = filePath + Content = Some(sprintf "\"%s\" is not an absolute file path. Relative paths are not supported" filePath) } + |> Task.FromResult + +let private daemonNotFoundResponse filePath : Task = + { Code = int FantomasResponseCode.ToolNotFound + FilePath = filePath + Content = Some(sprintf "No fantomas tool was found for \"%s\"" filePath) } + |> Task.FromResult + +let mapResultToResponse (filePath: string) (result: Result, FantomasServiceError>) = + match result with + | Ok t -> t + | Error FantomasServiceError.FileDoesNotExist -> fileNotFoundResponse filePath + | Error FantomasServiceError.FilePathIsNotAbsolute -> fileNotAbsoluteResponse filePath + | Error FantomasServiceError.DaemonNotFound -> daemonNotFoundResponse filePath + +type LSPFantomasService() = + let cts = new CancellationTokenSource() + let agent = createAgent cts.Token + + interface FantomasService with + member this.Dispose() = + agent.Post Reset + cts.Cancel() + + member _.VersionAsync(filePath, ?cancellationToken: CancellationToken) : Task = + getFolderFor filePath + |> Result.bind (getDaemon agent) + |> Result.map + (fun client -> + client + .InvokeWithCancellationAsync( + Methods.Version, + cancellationToken = orDefaultCancellationToken cancellationToken + ) + .ContinueWith(fun (t: Task) -> + { Code = int FantomasResponseCode.Version + Content = Some t.Result + FilePath = filePath })) + |> mapResultToResponse filePath + + member _.FormatDocumentAsync + ( + formatDocumentOptions: FormatDocumentRequest, + ?cancellationToken: CancellationToken + ) : Task = + getFolderFor formatDocumentOptions.FilePath + |> Result.bind (getDaemon agent) + |> Result.map + (fun client -> + client + .InvokeWithParameterObjectAsync( + Methods.FormatDocument, + argument = formatDocumentOptions, + cancellationToken = orDefaultCancellationToken cancellationToken + ) + .ContinueWith(fun (t: Task) -> t.Result.AsFormatResponse())) + |> mapResultToResponse formatDocumentOptions.FilePath + + member _.FormatSelectionAsync + ( + formatSelectionRequest: FormatSelectionRequest, + ?cancellationToken: CancellationToken + ) = + getFolderFor formatSelectionRequest.FilePath + |> Result.bind (getDaemon agent) + |> Result.map + (fun client -> + client + .InvokeWithParameterObjectAsync( + Methods.FormatSelection, + argument = formatSelectionRequest, + cancellationToken = orDefaultCancellationToken cancellationToken + ) + .ContinueWith(fun (t: Task) -> t.Result.AsFormatResponse())) + |> mapResultToResponse formatSelectionRequest.FilePath + + member _.ConfigurationAsync(filePath, ?cancellationToken: CancellationToken) : Task = + getFolderFor filePath + |> Result.bind (getDaemon agent) + |> Result.map + (fun client -> + client + .InvokeWithCancellationAsync( + Methods.Configuration, + cancellationToken = orDefaultCancellationToken cancellationToken + ) + .ContinueWith(fun (t: Task) -> + + { Code = int FantomasResponseCode.Configuration + FilePath = filePath + Content = Some t.Result })) + |> mapResultToResponse filePath + + member _.ClearCache() = agent.Post Reset diff --git a/src/Fantomas.Client/LSPFantomasServiceTypes.fs b/src/Fantomas.Client/LSPFantomasServiceTypes.fs new file mode 100644 index 0000000000..e1692f3941 --- /dev/null +++ b/src/Fantomas.Client/LSPFantomasServiceTypes.fs @@ -0,0 +1,74 @@ +module Fantomas.Client.LSPFantomasServiceTypes + +open StreamJsonRpc +open Fantomas.Client.Contracts + +type FantomasResponseCode = + | Formatted = 1 + | UnChanged = 2 + | Error = 3 + | Ignored = 4 + | Version = 5 + | ToolNotFound = 6 + | FileNotFound = 7 + | Configuration = 8 + | FilePathIsNotAbsolute = 9 + +[] +type FormatSelectionResponse = + | Formatted of filename: string * formattedContent: string + | Error of filename: string * formattingError: string + + member this.AsFormatResponse() = + match this with + | FormatSelectionResponse.Formatted (name, content) -> + { Code = int FantomasResponseCode.Formatted + FilePath = name + Content = Some content } + | FormatSelectionResponse.Error (name, ex) -> + { Code = int FantomasResponseCode.Error + FilePath = name + Content = Some ex } + +[] +type FormatDocumentResponse = + | Formatted of filename: string * formattedContent: string + | Unchanged of filename: string + | Error of filename: string * formattingError: string + | IgnoredFile of filename: string + + member this.AsFormatResponse() = + match this with + | FormatDocumentResponse.Formatted (name, content) -> + { Code = int FantomasResponseCode.Formatted + FilePath = name + Content = Some content } + | FormatDocumentResponse.Unchanged name -> + { Code = int FantomasResponseCode.UnChanged + FilePath = name + Content = None } + | FormatDocumentResponse.Error (name, err) -> + { Code = int FantomasResponseCode.Error + FilePath = name + Content = Some(err) } + | FormatDocumentResponse.IgnoredFile name -> + { Code = int FantomasResponseCode.Ignored + FilePath = name + Content = None } + +type FantomasVersion = FantomasVersion of string + +type Folder = Folder of path: string + +type ServiceState = + { Daemons: Map + FolderToVersion: Map } + + static member Empty: ServiceState = + { Daemons = Map.empty + FolderToVersion = Map.empty } + +type FantomasToolResult = + | FoundLocalTool of (Folder * FantomasVersion) + | FoundGlobalTool of (Folder * FantomasVersion) + | NoCompatibleVersionFound diff --git a/src/Fantomas.Client/paket.references b/src/Fantomas.Client/paket.references new file mode 100644 index 0000000000..78b417ee52 --- /dev/null +++ b/src/Fantomas.Client/paket.references @@ -0,0 +1,4 @@ +group client +FSharp.Core +StreamJsonRpc +Microsoft.SourceLink.GitHub \ No newline at end of file diff --git a/src/Fantomas.CoreGlobalTool.Tests/DaemonTests.fs b/src/Fantomas.CoreGlobalTool.Tests/DaemonTests.fs new file mode 100644 index 0000000000..49ad4be099 --- /dev/null +++ b/src/Fantomas.CoreGlobalTool.Tests/DaemonTests.fs @@ -0,0 +1,313 @@ +module Fantomas.CoreGlobalTool.Tests.DaemonTests + +open System +open Fantomas.Client.LSPFantomasServiceTypes +open Fantomas.CoreGlobalTool.Daemon +open NUnit.Framework +open FsUnit +open Fantomas.CoreGlobalTool.Tests.TestHelpers +open Fantomas +open Fantomas.Client.Contracts +open Nerdbank.Streams +open StreamJsonRpc + +let private assertFormatted (actual: string) (expected: string) : unit = + String.normalizeNewLine actual + |> should equal (String.normalizeNewLine expected) + +let private runWithDaemon (fn: JsonRpc -> Async) = + async { + let struct (serverStream, clientStream) = FullDuplexStream.CreatePair() + + let daemon = + new FantomasDaemon(serverStream, serverStream) + + let client = new JsonRpc(clientStream, clientStream) + client.StartListening() + do! fn client + client.Dispose() + (daemon :> IDisposable).Dispose() + } + +[] +let ``version request`` () = + runWithDaemon + (fun client -> + async { + let! version = + client.InvokeAsync(Methods.Version) + |> Async.AwaitTask + + version + |> should equal (CodeFormatter.GetVersion()) + }) + +[] +let ``config request`` () = + runWithDaemon + (fun client -> + async { + let! config = + client.InvokeAsync(Methods.Configuration) + |> Async.AwaitTask + + FormatConfig.FormatConfig.Default + |> Fantomas.Extras.EditorConfig.configToEditorConfig + |> fun s -> s.Split('\n') + |> Seq.map (fun line -> line.Split('=').[0]) + |> Seq.iter (fun setting -> Assert.True(config.Contains(setting))) + }) + +[] +let ``format implementation file`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "module Foobar" + use codeFile = new TemporaryFileCodeSample(sourceCode) + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.Formatted (_, formatted) -> + assertFormatted + formatted + "module Foobar +" + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``format implementation file, unchanged`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "module Foobar\n" + use codeFile = new TemporaryFileCodeSample(sourceCode) + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = Some(readOnlyDict [ "end_of_line", "lf" ]) } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.Unchanged _ -> Assert.Pass() + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``format implementation file, error`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "let foo =" + use codeFile = new TemporaryFileCodeSample(sourceCode) + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.Error _ -> Assert.Pass() + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``format implementation file, ignored file`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "let foo = 4" + use codeFile = new TemporaryFileCodeSample(sourceCode) + use _ignoreFixture = new FantomasIgnoreFile("*.fs") + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.IgnoredFile _ -> Assert.Pass() + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``format signature file`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "module Foobar\n\nval meh : int" + + use codeFile = + new TemporaryFileCodeSample(sourceCode, extension = "fsi") + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.Formatted (_, formatted) -> + assertFormatted + formatted + "module Foobar + +val meh : int +" + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``format document respecting .editorconfig file`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "module Foo\n\nlet a = //\n 4" + use codeFile = new TemporaryFileCodeSample(sourceCode) + + use _config = + new ConfigurationFile("[*.fs]\nindent_size=2") + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.Formatted (_, formatted) -> + assertFormatted + formatted + "module Foo + +let a = // + 4 +" + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``custom configuration has precedence over .editorconfig file`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = "module Foo\n\nlet a = //\n 4" + use codeFile = new TemporaryFileCodeSample(sourceCode) + + use _config = + new ConfigurationFile("[*.fs]\nindent_size=2") + + let request = + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = Some(readOnlyDict [ "indent_size", "4" ]) } + + let! response = + client.InvokeAsync(Methods.FormatDocument, request) + |> Async.AwaitTask + + match response with + | FormatDocumentResponse.Formatted (_, formatted) -> + assertFormatted + formatted + "module Foo + +let a = // + 4 +" + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +[] +let ``format selection`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = + """module Foo + +let x = 4 +let y = 5 + """ + + use codeFile = new TemporaryFileCodeSample(sourceCode) + + let request: FormatSelectionRequest = + let range = FormatSelectionRange(3, 0, 3, 16) + + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None + Range = range } + + let! response = + client.InvokeAsync(Methods.FormatSelection, request) + |> Async.AwaitTask + + match response with + | FormatSelectionResponse.Formatted (fileName, formatted) -> + fileName |> should equal codeFile.Filename + assertFormatted formatted "let x = 4\n" + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) + +// I don't know if formatting selection for signature files has ever worked. +// There is no way of getting valid AST of the substring as far as I know. +[] +let ``format selection, fsi`` () = + runWithDaemon + (fun client -> + async { + let sourceCode = + """module Foo + +val x : int +val y : string + """ + + use codeFile = + new TemporaryFileCodeSample(sourceCode, extension = "fsi") + + let request: FormatSelectionRequest = + let range = FormatSelectionRange(3, 0, 3, 18) + + { SourceCode = sourceCode + FilePath = codeFile.Filename + Config = None + Range = range } + + let! response = + client.InvokeAsync(Methods.FormatSelection, request) + |> Async.AwaitTask + + match response with + | FormatSelectionResponse.Error _ -> Assert.Pass() + | otherResponse -> Assert.Fail $"Unexpected response %A{otherResponse}" + }) diff --git a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj index 88b54749b6..87aa6917c7 100644 --- a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj +++ b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj @@ -4,13 +4,12 @@ net5.0 false false - 4.6.0-alpha-001 - 4.6.0-alpha-002 - 4.6.0-alpha-003 + 4.6.0-alpha-004 FS0988 FS0025 + @@ -22,6 +21,7 @@ + \ No newline at end of file diff --git a/src/Fantomas.CoreGlobalTool.Tests/TestHelpers.fs b/src/Fantomas.CoreGlobalTool.Tests/TestHelpers.fs index fc89712c13..6b93b6f7fe 100644 --- a/src/Fantomas.CoreGlobalTool.Tests/TestHelpers.fs +++ b/src/Fantomas.CoreGlobalTool.Tests/TestHelpers.fs @@ -13,7 +13,8 @@ type TemporaryFileCodeSample ?hasByteOrderMark: bool, ?fileName: string, ?subFolder: string, - ?subFolders: string array + ?subFolders: string array, + ?extension: string ) = let hasByteOrderMark = defaultArg hasByteOrderMark false @@ -31,6 +32,8 @@ type TemporaryFileCodeSample | Some fn -> fn | None -> Guid.NewGuid().ToString() + let extension = Option.defaultValue "fs" extension + match internalSubFolders with | Some sf -> let tempFolder = @@ -39,8 +42,8 @@ type TemporaryFileCodeSample if not (Directory.Exists(tempFolder)) then Directory.CreateDirectory(tempFolder) |> ignore - Path.Join(tempFolder, sprintf "%s.fs" name) - | None -> Path.Join(Path.GetTempPath(), sprintf "%s.fs" name) + Path.Join(tempFolder, sprintf "%s.%s" name extension) + | None -> Path.Join(Path.GetTempPath(), sprintf "%s.%s" name extension) do (if hasByteOrderMark then @@ -100,7 +103,7 @@ type FantomasToolResult = Output: string Error: string } -let runFantomasTool arguments : FantomasToolResult = +let getFantomasToolStartInfo arguments : ProcessStartInfo = let pwd = Path.GetDirectoryName(typeof.Assembly.Location) @@ -125,14 +128,19 @@ let runFantomasTool arguments : FantomasToolResult = "fantomas-tool.dll" ) - use p = new Process() - p.StartInfo.UseShellExecute <- false - p.StartInfo.FileName <- @"dotnet" - p.StartInfo.Arguments <- sprintf "%s %s" fantomasDll arguments - p.StartInfo.WorkingDirectory <- Path.GetTempPath() - p.StartInfo.RedirectStandardOutput <- true - p.StartInfo.RedirectStandardError <- true - p.Start() |> ignore + let startInfo = ProcessStartInfo("dotnet") + startInfo.UseShellExecute <- false + startInfo.Arguments <- sprintf "%s %s" fantomasDll arguments + startInfo.WorkingDirectory <- Path.GetTempPath() + startInfo.RedirectStandardOutput <- true + startInfo.RedirectStandardError <- true + startInfo + +let runFantomasTool arguments : FantomasToolResult = + use p = + getFantomasToolStartInfo arguments + |> Process.Start + let output = p.StandardOutput.ReadToEnd() let error = p.StandardError.ReadToEnd() p.WaitForExit() diff --git a/src/Fantomas.CoreGlobalTool/Daemon.fs b/src/Fantomas.CoreGlobalTool/Daemon.fs new file mode 100644 index 0000000000..07cc30870e --- /dev/null +++ b/src/Fantomas.CoreGlobalTool/Daemon.fs @@ -0,0 +1,158 @@ +module Fantomas.CoreGlobalTool.Daemon + +open System +open System.Diagnostics +open System.IO +open System.Threading +open System.Threading.Tasks +open FSharp.Compiler.CodeAnalysis +open FSharp.Compiler.Text.Range +open FSharp.Compiler.Text.Position +open StreamJsonRpc +open Thoth.Json.Net +open Fantomas.Client.Contracts +open Fantomas.Client.LSPFantomasServiceTypes +open Fantomas +open Fantomas.SourceOrigin +open Fantomas.FormatConfig +open Fantomas.Extras.EditorConfig + +let private createParsingOptionsFromFile (fileName: string) : FSharpParsingOptions = + { FSharpParsingOptions.Default with + SourceFiles = [| fileName |] + IsExe = true } + +type FantomasDaemon(sender: Stream, reader: Stream) as this = + let rpc: JsonRpc = JsonRpc.Attach(sender, reader, this) + + do + // hook up request/response logging for debugging + rpc.TraceSource <- TraceSource(typeof.Name, SourceLevels.Verbose) + + rpc.TraceSource.Listeners.Add(new SerilogTraceListener.SerilogTraceListener(typeof.Name)) + |> ignore + + let disconnectEvent = new ManualResetEvent(false) + + let exit () = disconnectEvent.Set() |> ignore + + do rpc.Disconnected.Add(fun _ -> exit ()) + + interface IDisposable with + member this.Dispose() = disconnectEvent.Dispose() + + /// returns a hot task that resolves when the stream has terminated + member this.WaitForClose = rpc.Completion + + [] + member _.Version() : string = CodeFormatter.GetVersion() + + [] + member _.FormatDocumentAsync(request: FormatDocumentRequest) : Task = + async { + if Fantomas.Extras.IgnoreFile.isIgnoredFile request.FilePath then + return FormatDocumentResponse.IgnoredFile request.FilePath + else + let config = + match request.Config with + | Some configProperties -> parseOptionsFromEditorConfig configProperties + | None -> readConfiguration request.FilePath + + try + let! formatted = + CodeFormatter.FormatDocumentAsync( + request.FilePath, + SourceString request.SourceCode, + config, + createParsingOptionsFromFile request.FilePath, + CodeFormatterImpl.sharedChecker.Value + ) + + if formatted = request.SourceCode then + return FormatDocumentResponse.Unchanged request.FilePath + else + return FormatDocumentResponse.Formatted(request.FilePath, formatted) + with + | ex -> return FormatDocumentResponse.Error(request.FilePath, ex.Message) + } + |> Async.StartAsTask + + [] + member _.FormatSelectionAsync(request: FormatSelectionRequest) : Task = + async { + let config = + match request.Config with + | Some configProperties -> parseOptionsFromEditorConfig configProperties + | None -> readConfiguration request.FilePath + + let range = + let r = request.Range + mkRange request.FilePath (mkPos r.StartLine r.StartColumn) (mkPos r.EndLine r.EndColumn) + + try + let! formatted = + CodeFormatter.FormatSelectionAsync( + request.FilePath, + range, + SourceString request.SourceCode, + config, + CodeFormatterImpl.createParsingOptionsFromFile request.FilePath, + CodeFormatterImpl.sharedChecker.Value + ) + + return FormatSelectionResponse.Formatted(request.FilePath, formatted) + with + | ex -> return FormatSelectionResponse.Error(request.FilePath, ex.Message) + } + |> Async.StartAsTask + + [] + member _.Configuration() : string = + let settings = + Reflection.getRecordFields FormatConfig.FormatConfig.Default + |> Array.toList + |> List.choose + (fun (name, defaultValue) -> + let type' = + match defaultValue with + | :? bool as b -> + Some( + Encode.object [ "type", Encode.string "boolean" + "defaultValue", Encode.string (if b then "true" else "false") ] + ) + | :? int as i -> + Some( + Encode.object [ "type", Encode.string "number" + "defaultValue", Encode.string (string i) ] + ) + | :? MultilineFormatterType as m -> + Some( + Encode.object [ "type", Encode.string "multilineFormatterType" + "defaultValue", Encode.string (MultilineFormatterType.ToConfigString m) ] + ) + | :? EndOfLineStyle as e -> + Some( + Encode.object [ "type", Encode.string "endOfLineStyle" + "defaultValue", Encode.string (EndOfLineStyle.ToConfigString e) ] + ) + | _ -> None + + type' + |> Option.map (fun t -> toEditorConfigName name, t)) + |> Encode.object + + let enumOptions = + Encode.object [ "multilineFormatterType", + Encode.list [ (MultilineFormatterType.ToConfigString MultilineFormatterType.CharacterWidth + |> Encode.string) + (MultilineFormatterType.ToConfigString MultilineFormatterType.NumberOfItems + |> Encode.string) ] + "endOfLineStyle", + Encode.list [ (EndOfLineStyle.ToConfigString EndOfLineStyle.LF + |> Encode.string) + (EndOfLineStyle.ToConfigString EndOfLineStyle.CRLF + |> Encode.string) ] ] + + Encode.object [ "settings", settings + "enumOptions", enumOptions ] + |> Encode.toString 4 diff --git a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj index 80e6524c64..084d76302a 100644 --- a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj +++ b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj @@ -8,15 +8,14 @@ Major fantomas True - 4.6.0-alpha-001 - 4.6.0-alpha-002 - 4.6.0-alpha-003 + 4.6.0-alpha-004 fantomas-tool FS0025 LICENSE.md fantomas_logo.png + @@ -24,6 +23,7 @@ + diff --git a/src/Fantomas.CoreGlobalTool/Program.fs b/src/Fantomas.CoreGlobalTool/Program.fs index 78c15f654c..4d630f9b61 100644 --- a/src/Fantomas.CoreGlobalTool/Program.fs +++ b/src/Fantomas.CoreGlobalTool/Program.fs @@ -1,6 +1,7 @@ open System open System.IO open Fantomas +open Fantomas.CoreGlobalTool.Daemon open Fantomas.FormatConfig open Fantomas.Extras open Argu @@ -22,6 +23,7 @@ type Arguments = | [] Stdout | [] Out of string | [] Check + | [] Daemon | [] Version | [] Input of string list interface IArgParserTemplate with @@ -37,6 +39,7 @@ type Arguments = | Stdout -> "Write the formatted source code to standard output." | Check -> "Don't format files, just check if they have changed. Exits with 0 if it's formatted correctly, with 1 if some files need formatting and 99 if there was an internal error" + | Daemon -> "Daemon mode, launches an LSP-like server to can be used by editor tooling." | Version -> "Displays the version of Fantomas" | Input _ -> sprintf @@ -432,10 +435,19 @@ let main argv = |> List.iter (fun folder -> processFolder folder folder) let check = results.Contains <@ Arguments.Check @> + let isDaemon = results.Contains <@ Arguments.Daemon @> if Option.isSome version then let version = CodeFormatter.GetVersion() printfn "Fantomas v%s" version + elif isDaemon then + let daemon = + new FantomasDaemon((Console.OpenStandardOutput()), (Console.OpenStandardInput())) + + AppDomain.CurrentDomain.ProcessExit.Add(fun _ -> (daemon :> IDisposable).Dispose()) + + daemon.WaitForClose.GetAwaiter().GetResult() + exit 0 elif check then inputPath |> runCheckCommand recurse |> exit else diff --git a/src/Fantomas.CoreGlobalTool/paket.references b/src/Fantomas.CoreGlobalTool/paket.references index f69707d3be..e0452bea03 100644 --- a/src/Fantomas.CoreGlobalTool/paket.references +++ b/src/Fantomas.CoreGlobalTool/paket.references @@ -1,3 +1,6 @@ +group tool FSharp.Core -FSharp.Compiler.Service -Argu \ No newline at end of file +Argu +StreamJsonRpc +Thoth.Json.Net +SerilogTraceListener \ No newline at end of file diff --git a/src/Fantomas.Extras/EditorConfig.fs b/src/Fantomas.Extras/EditorConfig.fs index 4418152bd7..709dc20dee 100644 --- a/src/Fantomas.Extras/EditorConfig.fs +++ b/src/Fantomas.Extras/EditorConfig.fs @@ -1,5 +1,6 @@ module Fantomas.Extras.EditorConfig +open System.Collections.Generic open Fantomas.FormatConfig module Reflection = @@ -18,7 +19,7 @@ let supportedProperties = "indent_size" "end_of_line" ] -let private toEditorConfigName value = +let toEditorConfigName value = value |> Seq.map (fun c -> @@ -56,11 +57,11 @@ let private (|Boolean|_|) b = elif b = "false" then Some(box false) else None -let private parseOptionsFromEditorConfig (editorConfig: EditorConfig.Core.FileConfiguration) = +let parseOptionsFromEditorConfig (editorConfigProperties: IReadOnlyDictionary) : FormatConfig = fantomasFields |> Array.map (fun (ecn, dv) -> - match editorConfig.Properties.TryGetValue(ecn) with + match editorConfigProperties.TryGetValue(ecn) with | true, Number n -> n | true, Boolean b -> b | true, MultilineFormatterType mft -> mft @@ -94,8 +95,7 @@ let tryReadConfiguration (fsharpFile: string) : FormatConfig option = if editorConfigSettings.Properties.Count = 0 then None else - Some - <| parseOptionsFromEditorConfig editorConfigSettings + Some(parseOptionsFromEditorConfig editorConfigSettings.Properties) let readConfiguration (fsharpFile: string) : FormatConfig = tryReadConfiguration fsharpFile diff --git a/src/Fantomas.Extras/FakeHelpers.fs b/src/Fantomas.Extras/FakeHelpers.fs index 6a902eb831..1f12f4cd94 100644 --- a/src/Fantomas.Extras/FakeHelpers.fs +++ b/src/Fantomas.Extras/FakeHelpers.fs @@ -7,9 +7,6 @@ open Fantomas open Fantomas.FormatConfig open Fantomas.Extras -// Share an F# checker instance across formatting calls -let sharedChecker = lazy (FSharpChecker.Create()) - exception CodeFormatException of (string * Option) array with override x.ToString() = let errors = @@ -43,9 +40,6 @@ type FormatResult = | Error of filename: string * formattingError: Exception | IgnoredFile of filename: string -let createParsingOptionsFromFile fileName = - { FSharpParsingOptions.Default with - SourceFiles = [| fileName |] } let private formatContentInternalAsync (compareWithoutLineEndings: bool) @@ -69,8 +63,8 @@ let private formatContentInternalAsync fileName, SourceOrigin.SourceString originalContent, config, - createParsingOptionsFromFile fileName, - sharedChecker.Value + CodeFormatterImpl.createParsingOptionsFromFile fileName, + CodeFormatterImpl.sharedChecker.Value ) let contentChanged = @@ -88,8 +82,8 @@ let private formatContentInternalAsync CodeFormatter.IsValidFSharpCodeAsync( fileName, (SourceOrigin.SourceString(formattedContent)), - createParsingOptionsFromFile fileName, - sharedChecker.Value + CodeFormatterImpl.createParsingOptionsFromFile fileName, + CodeFormatterImpl.sharedChecker.Value ) if not isValid then diff --git a/src/Fantomas.Extras/Fantomas.Extras.fsproj b/src/Fantomas.Extras/Fantomas.Extras.fsproj index ddc7454003..e968162231 100644 --- a/src/Fantomas.Extras/Fantomas.Extras.fsproj +++ b/src/Fantomas.Extras/Fantomas.Extras.fsproj @@ -2,13 +2,14 @@ netstandard2.0 - 4.6.0-alpha-001 - 4.6.0-alpha-002 - 4.6.0-alpha-003 + 4.6.0-alpha-004 Utility package for Fantomas FS0025 LICENSE.md fantomas_logo.png + true + true + embedded diff --git a/src/Fantomas.Extras/IgnoreFile.fs b/src/Fantomas.Extras/IgnoreFile.fs index 29569cbf7f..f65c42c4d9 100644 --- a/src/Fantomas.Extras/IgnoreFile.fs +++ b/src/Fantomas.Extras/IgnoreFile.fs @@ -9,14 +9,19 @@ module IgnoreFile = [] let IgnoreFileName = ".fantomasignore" - let private getIgnoreFilePath () = - Path.Combine(Directory.GetCurrentDirectory(), IgnoreFileName) + let rec private findIgnoreFile (filePath: string) : string option = + let allParents = + let rec addParent (di: DirectoryInfo) (finalContinuation: string list -> string list) = + if isNull di.Parent then + finalContinuation [ di.FullName ] + else + addParent di.Parent (fun parents -> di.FullName :: parents |> finalContinuation) - let ignores = lazy (IgnoreList(getIgnoreFilePath ())) + addParent (Directory.GetParent filePath) id - let private hasNoIgnoreFile () = - let path = getIgnoreFilePath () - File.Exists path |> not + allParents + |> List.tryFind (fun p -> Path.Combine(p, IgnoreFileName) |> File.Exists) + |> Option.map (fun p -> Path.Combine(p, IgnoreFileName)) let private relativePathPrefix = sprintf ".%c" Path.DirectorySeparatorChar @@ -28,12 +33,16 @@ module IgnoreFile = path let isIgnoredFile (file: string) = - if hasNoIgnoreFile () then - false - else + let fullPath = Path.GetFullPath(file) + + match findIgnoreFile fullPath with + | None -> false + | Some ignoreFile -> + let ignores = IgnoreList(ignoreFile) + try let path = removeRelativePathPrefix file - ignores.Value.IsIgnored(path, false) + ignores.IsIgnored(path, false) with | ex -> printfn "%A" ex diff --git a/src/Fantomas.Extras/paket.references b/src/Fantomas.Extras/paket.references index 5478e90f97..38c01d246c 100644 --- a/src/Fantomas.Extras/paket.references +++ b/src/Fantomas.Extras/paket.references @@ -1,3 +1,4 @@ FSharp.Core editorconfig -MAB.DotIgnore \ No newline at end of file +MAB.DotIgnore +Microsoft.SourceLink.GitHub \ No newline at end of file diff --git a/src/Fantomas.Tests/CodeFormatterTests.fs b/src/Fantomas.Tests/CodeFormatterTests.fs index f0b93d7758..847106323b 100644 --- a/src/Fantomas.Tests/CodeFormatterTests.fs +++ b/src/Fantomas.Tests/CodeFormatterTests.fs @@ -1,10 +1,8 @@ module Fantomas.Tests.CodeFormatterTests open NUnit.Framework -open FsUnit open Fantomas.Tests.TestHelper open Fantomas -open Fantomas.Extras [] let ``sanitize filename if Program.fs`` () = @@ -21,7 +19,7 @@ let main argv _ = """ let parsingOptions = - FakeHelpers.createParsingOptionsFromFile fileName + CodeFormatterImpl.createParsingOptionsFromFile fileName CodeFormatter.FormatDocumentAsync( fileName, @@ -49,7 +47,7 @@ let main _ = """ let parsingOptions = - FakeHelpers.createParsingOptionsFromFile fileName + CodeFormatterImpl.createParsingOptionsFromFile fileName CodeFormatter.FormatDocumentAsync( fileName, diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj index 20be02e349..e22fb32ba0 100644 --- a/src/Fantomas.Tests/Fantomas.Tests.fsproj +++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj @@ -1,8 +1,6 @@ - 4.6.0-alpha-001 - 4.6.0-alpha-002 - 4.6.0-alpha-003 + 4.6.0-alpha-004 FS0988 net5.0 FS0025 diff --git a/src/Fantomas.Tests/FormatAstTests.fs b/src/Fantomas.Tests/FormatAstTests.fs index 0dfcb5dd51..94434ead85 100644 --- a/src/Fantomas.Tests/FormatAstTests.fs +++ b/src/Fantomas.Tests/FormatAstTests.fs @@ -3,7 +3,6 @@ module Fantomas.Tests.FormatAstTests open Fantomas open NUnit.Framework open FsUnit -open Fantomas.Extras open Fantomas.Tests.TestHelper let parseAndFormat sourceCode originSource = @@ -14,7 +13,7 @@ let parseAndFormat sourceCode originSource = CodeFormatter.ParseAsync( fileName, sourceCode, - FakeHelpers.createParsingOptionsFromFile fileName, + CodeFormatterImpl.createParsingOptionsFromFile fileName, sharedChecker.Value ) |> Async.RunSynchronously diff --git a/src/Fantomas.Tests/ModuleTests.fs b/src/Fantomas.Tests/ModuleTests.fs index 62242dca49..65a0b49b23 100644 --- a/src/Fantomas.Tests/ModuleTests.fs +++ b/src/Fantomas.Tests/ModuleTests.fs @@ -4,7 +4,6 @@ open Fantomas open NUnit.Framework open FsUnit open Fantomas.Tests.TestHelper -open Fantomas.Extras [] let ``module abbreviation`` () = @@ -397,7 +396,7 @@ type T() = fileName, SourceOrigin.SourceString sourceCode, config, - FakeHelpers.createParsingOptionsFromFile fileName, + CodeFormatterImpl.createParsingOptionsFromFile fileName, sharedChecker.Value ) |> Async.RunSynchronously diff --git a/src/Fantomas.Tests/TestHelpers.fs b/src/Fantomas.Tests/TestHelpers.fs index c20c1a5fba..1b4562f9bc 100644 --- a/src/Fantomas.Tests/TestHelpers.fs +++ b/src/Fantomas.Tests/TestHelpers.fs @@ -61,7 +61,7 @@ let formatSourceString isFsiFile (s: string) config = "/src.fsx" let parsingOptions = - FakeHelpers.createParsingOptionsFromFile fileName + CodeFormatterImpl.createParsingOptionsFromFile fileName async { let! formatted = @@ -92,7 +92,7 @@ let formatSourceStringWithDefines defines (s: string) config = CodeFormatterImpl.createFormatContext fileName (SourceOrigin.SourceString s) let parsingOptions = - FakeHelpers.createParsingOptionsFromFile fileName + CodeFormatterImpl.createParsingOptionsFromFile fileName |> fun p -> { p with ConditionalCompilationDefines = defines } @@ -133,7 +133,7 @@ let formatSelectionOnly isFsiFile r (s: string) config = r, SourceOrigin.SourceString s, config, - FakeHelpers.createParsingOptionsFromFile fileName, + CodeFormatterImpl.createParsingOptionsFromFile fileName, sharedChecker.Value ) |> Async.RunSynchronously @@ -149,7 +149,7 @@ let isValidFSharpCode isFsiFile s = CodeFormatter.IsValidFSharpCodeAsync( fileName, SourceOrigin.SourceString s, - FakeHelpers.createParsingOptionsFromFile fileName, + CodeFormatterImpl.createParsingOptionsFromFile fileName, sharedChecker.Value ) |> Async.RunSynchronously @@ -162,7 +162,7 @@ let parse isFsiFile s = "/tmp.fsx" CodeFormatterImpl.createFormatContext fileName (SourceOrigin.SourceString s) - |> CodeFormatterImpl.parse sharedChecker.Value (FakeHelpers.createParsingOptionsFromFile fileName) + |> CodeFormatterImpl.parse sharedChecker.Value (CodeFormatterImpl.createParsingOptionsFromFile fileName) |> Async.RunSynchronously let formatAST a s c = diff --git a/src/Fantomas/CodeFormatterImpl.fs b/src/Fantomas/CodeFormatterImpl.fs index bdf97631c7..568073a8da 100644 --- a/src/Fantomas/CodeFormatterImpl.fs +++ b/src/Fantomas/CodeFormatterImpl.fs @@ -17,6 +17,14 @@ open Fantomas.SourceOrigin open Fantomas.SourceParser open Fantomas.CodePrinter +// Share an F# checker instance across formatting calls +let sharedChecker = lazy (FSharpChecker.Create()) + +let createParsingOptionsFromFile fileName = + { FSharpParsingOptions.Default with + SourceFiles = [| fileName |] + IsExe = true } + let private getSourceString (source: SourceOrigin) = match source with | SourceString s -> String.normalizeNewLine s @@ -40,20 +48,10 @@ type FormatContext = Source: string SourceText: ISourceText } -// Some file names have a special meaning for the F# compiler and the AST cannot be parsed. -let safeFileName (file: string) = - let fileName = - file.Split([| '\\'; '/' |]) |> Array.last - - if fileName = "Program.fs" then - "tmp.fsx" - else - file - let createFormatContext fileName (source: SourceOrigin) = let sourceText, sourceCode = getSourceTextAndCode source - { FileName = safeFileName fileName + { FileName = fileName Source = sourceCode SourceText = sourceText } @@ -66,8 +64,7 @@ let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { File async { let parsingOptionsWithDefines = { parsingOptions with - ConditionalCompilationDefines = conditionalCompilationDefines - SourceFiles = Array.map safeFileName parsingOptions.SourceFiles } + ConditionalCompilationDefines = conditionalCompilationDefines } // Run the first phase (untyped parsing) of the compiler let sourceText = FSharp.Compiler.Text.SourceText.ofString source diff --git a/src/Fantomas/Fantomas.fsproj b/src/Fantomas/Fantomas.fsproj index cc78d7b2af..163229d1e0 100644 --- a/src/Fantomas/Fantomas.fsproj +++ b/src/Fantomas/Fantomas.fsproj @@ -2,13 +2,14 @@ netstandard2.0 - 4.6.0-alpha-001 - 4.6.0-alpha-002 - 4.6.0-alpha-003 + 4.6.0-alpha-004 Source code formatter for F# FS0025 LICENSE.md fantomas_logo.png + true + true + embedded diff --git a/src/Fantomas/paket.references b/src/Fantomas/paket.references index 925ffd2d59..f9c17f8bce 100644 --- a/src/Fantomas/paket.references +++ b/src/Fantomas/paket.references @@ -1,2 +1,3 @@ FSharp.Compiler.Service -FSharp.Core \ No newline at end of file +FSharp.Core +Microsoft.SourceLink.GitHub \ No newline at end of file From b7de99117ac687c9b5b089c815dac8a29f6df32b Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Fri, 22 Oct 2021 11:56:11 +0200 Subject: [PATCH 08/12] Don't add a newline if there are no additional arguments before lambda. (#1923) Fixes #1922. --- src/Fantomas.Tests/LambdaTests.fs | 23 +++++++++++++++++++++++ src/Fantomas/CodePrinter.fs | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Fantomas.Tests/LambdaTests.fs b/src/Fantomas.Tests/LambdaTests.fs index f47fe6754a..5f96a03b4a 100644 --- a/src/Fantomas.Tests/LambdaTests.fs +++ b/src/Fantomas.Tests/LambdaTests.fs @@ -1069,3 +1069,26 @@ leadingExpressionIsMultiline | Ok _ -> true | Error _ -> false) """ + +[] +let ``multiline lambda argument, 1922`` () = + formatSourceString + false + """ +let g = + Array.groupBy + (fun { partNumber = p + revisionNumber = r + processName = pn } -> p, r, pn) +""" + config + |> prepend newline + |> should + equal + """ +let g = + Array.groupBy + (fun { partNumber = p + revisionNumber = r + processName = pn } -> p, r, pn) +""" diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index 9158eedade..af858b551a 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -2164,7 +2164,7 @@ and genExpr astContext synExpr ctx = +> indent +> sepNln +> col sepNln es (genExpr astContext) - +> sepNln + +> onlyIfNot (List.isEmpty es) sepNln +> (sepOpenTFor lpr +> (!- "fun " +> col sepSpace pats (genPat astContext) From 33ed99817d9174c93f49d49e434f041c468a9ffb Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Sun, 24 Oct 2021 16:33:49 +0200 Subject: [PATCH 09/12] Set DOTNET_CLI_UI_LANGUAGE to en-us when running dotnet tool command. (#1925) * Set DOTNET_CLI_UI_LANGUAGE to en-us when running dotnet tool command. * Add RepositoryUrl. * Bump Fantomas.Client version to 0.3.1 --- build.fsx | 2 +- src/Fantomas.Client/Fantomas.Client.fsproj | 3 ++- src/Fantomas.Client/FantomasToolLocator.fs | 1 + src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj | 1 + src/Fantomas.Extras/Fantomas.Extras.fsproj | 1 + src/Fantomas/Fantomas.fsproj | 1 + 6 files changed, 7 insertions(+), 2 deletions(-) diff --git a/build.fsx b/build.fsx index fb918b8da7..72af1fc684 100644 --- a/build.fsx +++ b/build.fsx @@ -51,7 +51,7 @@ let owner = "Anh-Dung Phan" let tags = "F# fsharp formatting beautifier indentation indenter" -let fantomasClientVersion = "0.3.0" +let fantomasClientVersion = "0.3.1" // (.sln is built during the building process) let solutionFile = "fantomas" diff --git a/src/Fantomas.Client/Fantomas.Client.fsproj b/src/Fantomas.Client/Fantomas.Client.fsproj index e15c2d325d..c3cf26c00a 100644 --- a/src/Fantomas.Client/Fantomas.Client.fsproj +++ b/src/Fantomas.Client/Fantomas.Client.fsproj @@ -1,7 +1,7 @@ netstandard2.0 - 0.3.0 + 0.3.1 Companion library to format using fantomas tool. true 3390;$(WarnOn) @@ -11,6 +11,7 @@ true true embedded + https://github.com/fsprojects/fantomas diff --git a/src/Fantomas.Client/FantomasToolLocator.fs b/src/Fantomas.Client/FantomasToolLocator.fs index 559d22ff3e..68ec16cf7f 100644 --- a/src/Fantomas.Client/FantomasToolLocator.fs +++ b/src/Fantomas.Client/FantomasToolLocator.fs @@ -51,6 +51,7 @@ let private readOutputStreamAsLines (outputStream: StreamReader) : string list = let private runToolListCmd (Folder workingDir) (globalFlag: bool) = let ps = ProcessStartInfo("dotnet") ps.WorkingDirectory <- workingDir + ps.EnvironmentVariables.Add("DOTNET_CLI_UI_LANGUAGE", "en-us") ps.Arguments <- if globalFlag then diff --git a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj index 084d76302a..35d2afe97a 100644 --- a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj +++ b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj @@ -13,6 +13,7 @@ FS0025 LICENSE.md fantomas_logo.png + https://github.com/fsprojects/fantomas diff --git a/src/Fantomas.Extras/Fantomas.Extras.fsproj b/src/Fantomas.Extras/Fantomas.Extras.fsproj index e968162231..c56fe36682 100644 --- a/src/Fantomas.Extras/Fantomas.Extras.fsproj +++ b/src/Fantomas.Extras/Fantomas.Extras.fsproj @@ -10,6 +10,7 @@ true true embedded + https://github.com/fsprojects/fantomas diff --git a/src/Fantomas/Fantomas.fsproj b/src/Fantomas/Fantomas.fsproj index 163229d1e0..58446356fa 100644 --- a/src/Fantomas/Fantomas.fsproj +++ b/src/Fantomas/Fantomas.fsproj @@ -10,6 +10,7 @@ true true embedded + https://github.com/fsprojects/fantomas From 8f00ea8708adb1f665edeb42e0efcddfa5a11adc Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Wed, 27 Oct 2021 11:45:49 +0200 Subject: [PATCH 10/12] Update FCS to 41.0.0-preview.21472.3 (#1927) * Update FCS to 41.0.0-preview.21472.3 * If, elif, then and else keyword are present in AST. * Use arrow range from SyntaxTree instead of trivia tokens. * Processed change of FCS 40.0.1-preview.21423.4. * Support expr[idx] as index/slice syntax. * Remove ArrayOrListComputedExpr active pattern. * Apply style guide rules for SynExpr.IndexRange. * Always use LangVersionText preview. * Remove Verbose tests. * Change QuoteIdentifierIfNeeded to AddBackticksToIdentifierIfNeeded. --- paket.dependencies | 6 +- paket.lock | 10 +- src/Fantomas.Tests/AttributeTests.fs | 2 +- ...nkLinesAroundNestedMultilineExpressions.fs | 2 +- src/Fantomas.Tests/ClassTests.fs | 4 +- .../ComputationExpressionTests.fs | 18 +- src/Fantomas.Tests/ControlStructureTests.fs | 4 +- src/Fantomas.Tests/DisableElmishTests.fs | 6 +- src/Fantomas.Tests/ElmishTests.fs | 8 +- src/Fantomas.Tests/Fantomas.Tests.fsproj | 2 +- src/Fantomas.Tests/FormatAstTests.fs | 4 +- src/Fantomas.Tests/IfThenElseTests.fs | 2 +- src/Fantomas.Tests/IndexSyntaxTests.fs | 101 +++ src/Fantomas.Tests/InterpolatedStringTests.fs | 2 +- src/Fantomas.Tests/KeepIndentInBranchTests.fs | 2 +- src/Fantomas.Tests/LetBindingTests.fs | 2 +- src/Fantomas.Tests/ListTests.fs | 51 +- ...ockBracketsOnSameColumnArrayOrListTests.fs | 4 +- .../NumberOfItemsListOrArrayTests.fs | 12 +- src/Fantomas.Tests/OperatorTests.fs | 11 +- src/Fantomas.Tests/PatternMatchingTests.fs | 4 + src/Fantomas.Tests/RecordTests.fs | 4 +- src/Fantomas.Tests/TokenParserTests.fs | 15 - src/Fantomas.Tests/TriviaTests.fs | 34 +- src/Fantomas.Tests/TypeDeclarationTests.fs | 2 +- src/Fantomas.Tests/UnionTests.fs | 2 +- src/Fantomas.Tests/ValidationTests.fs | 4 +- .../VerboseSyntaxConversionTests.fs | 32 - src/Fantomas/AstTransformer.fs | 92 ++- src/Fantomas/CodeFormatterImpl.fs | 44 +- src/Fantomas/CodePrinter.fs | 754 ++++++++---------- src/Fantomas/SourceParser.fs | 162 ++-- src/Fantomas/SourceTransformer.fs | 6 +- src/Fantomas/TokenParser.fs | 12 +- src/Fantomas/TriviaContext.fs | 42 - src/Fantomas/TriviaTypes.fs | 13 +- 36 files changed, 734 insertions(+), 741 deletions(-) create mode 100644 src/Fantomas.Tests/IndexSyntaxTests.fs delete mode 100644 src/Fantomas.Tests/VerboseSyntaxConversionTests.fs diff --git a/paket.dependencies b/paket.dependencies index a7da0baade..1141c0c0a6 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -3,8 +3,8 @@ source https://api.nuget.org/v3/index.json framework: netstandard2.0, net5.0, netcoreapp3.1 storage: none -nuget FSharp.Core 5.0.3-beta.21352.5 -nuget FSharp.Compiler.Service 40.0.1-preview.21352.5 +nuget FSharp.Core 6.0.0-beta.21472.3 +nuget FSharp.Compiler.Service 41.0.0-preview.21472.3 nuget FsUnit nuget FsCheck nuget Microsoft.NET.Test.Sdk 16.9.1 @@ -38,7 +38,7 @@ group tool storage: none source https://api.nuget.org/v3/index.json - nuget FSharp.Core 5.0.3-beta.21352.5 + nuget FSharp.Core 6.0.0-beta.21472.3 nuget Argu nuget StreamJsonRpc nuget Thoth.Json.Net diff --git a/paket.lock b/paket.lock index 5ce47e7299..e4f039db5b 100644 --- a/paket.lock +++ b/paket.lock @@ -26,8 +26,8 @@ NUGET editorconfig (0.12.2) FsCheck (2.16.3) FSharp.Core (>= 4.2.3) - FSharp.Compiler.Service (40.0.1-preview.21352.5) - FSharp.Core (5.0.3-beta.21352.5) + FSharp.Compiler.Service (41.0.0-preview.21472.3) + FSharp.Core (6.0.0-beta.21472.3) Microsoft.Build.Framework (>= 16.9) Microsoft.Build.Tasks.Core (>= 16.9) Microsoft.Build.Utilities.Core (>= 16.9) @@ -39,7 +39,7 @@ NUGET System.Linq.Queryable (>= 4.3) System.Memory (>= 4.5.4) System.Net.Requests (>= 4.3) - System.Net.Security (>= 4.3) + System.Net.Security (>= 4.3.1) System.Reflection.Emit (>= 4.3) System.Reflection.Metadata (>= 5.0) System.Reflection.TypeExtensions (>= 4.3) @@ -53,7 +53,7 @@ NUGET System.Threading.Tasks.Parallel (>= 4.3) System.Threading.Thread (>= 4.3) System.Threading.ThreadPool (>= 4.3) - FSharp.Core (5.0.3-beta.21352.5) + FSharp.Core (6.0.0-beta.21472.3) FsUnit (4.0.4) FSharp.Core (>= 4.3.4) NETStandard.Library (>= 2.0.3) @@ -1799,7 +1799,7 @@ NUGET System.Configuration.ConfigurationManager (>= 4.4) - restriction: >= netstandard2.0 Fable.Core (3.4) - restriction: && (< net46) (>= netstandard2.0) FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - FSharp.Core (5.0.3-beta.21352.5) + FSharp.Core (6.0.0-beta.21472.3) MessagePack (2.3.85) - restriction: >= netstandard2.0 MessagePack.Annotations (>= 2.3.85) - restriction: >= netstandard2.0 Microsoft.Bcl.AsyncInterfaces (>= 1.0) - restriction: || (&& (>= netcoreapp2.1) (< netcoreapp3.1)) (&& (< netcoreapp2.1) (>= netstandard2.0)) diff --git a/src/Fantomas.Tests/AttributeTests.fs b/src/Fantomas.Tests/AttributeTests.fs index 352358c69c..90a3d67e34 100644 --- a/src/Fantomas.Tests/AttributeTests.fs +++ b/src/Fantomas.Tests/AttributeTests.fs @@ -724,7 +724,7 @@ type RoleAdminImportController(akkaService: AkkaService) = importer.ApiMaster ] diff --git a/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs b/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs index 9b2f3f628a..a39eacfbc6 100644 --- a/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs +++ b/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs @@ -239,7 +239,7 @@ let comp = """ let comp = eventually { - for x in 1 .. 2 do + for x in 1..2 do printfn " x = %d" x return 3 + 4 } diff --git a/src/Fantomas.Tests/ClassTests.fs b/src/Fantomas.Tests/ClassTests.fs index 150e63f4c1..c30f7d81db 100644 --- a/src/Fantomas.Tests/ClassTests.fs +++ b/src/Fantomas.Tests/ClassTests.fs @@ -294,14 +294,14 @@ type MyClassBase2(x: int) = let mutable z = x * x do - for i in 1 .. z do + for i in 1..z do printf "%d " i type MyClassDerived2(y: int) = inherit MyClassBase2(y * 2) do - for i in 1 .. y do + for i in 1..y do printf "%d " i """ diff --git a/src/Fantomas.Tests/ComputationExpressionTests.fs b/src/Fantomas.Tests/ComputationExpressionTests.fs index 8776952142..5a5e1d9caf 100644 --- a/src/Fantomas.Tests/ComputationExpressionTests.fs +++ b/src/Fantomas.Tests/ComputationExpressionTests.fs @@ -55,7 +55,7 @@ let comp = """ let comp = eventually { - for x in 1 .. 2 do + for x in 1..2 do printfn " x = %d" x return 3 + 4 @@ -84,8 +84,8 @@ let rec inorder tree = |> should equal """ -let s1 = seq { for i in 1 .. 10 -> i * i } -let s2 = seq { 0 .. 10 .. 100 } +let s1 = seq { for i in 1..10 -> i * i } +let s2 = seq { 0..10..100 } let rec inorder tree = seq { @@ -152,8 +152,8 @@ let y = async { |> should equal """ -let x = { 3 .. 7 } -let y = async { return { 0 .. 1 } } +let x = { 3..7 } +let y = async { return { 0..1 } } """ [] @@ -185,7 +185,7 @@ let ``multiple and! is supported`` () = false """ // Reads the values of x, y and z concurrently, then applies f to them -parallel { +``parallel`` { let! x = slowRequestX() and! y = slowRequestY() and! z = slowRequestZ() @@ -1109,9 +1109,9 @@ let squaresAndCubes = |> should equal """ -let squares = seq { for i in 1 .. 3 -> i * i } +let squares = seq { for i in 1..3 -> i * i } -let cubes = seq { for i in 1 .. 3 -> i * i * i } +let cubes = seq { for i in 1..3 -> i * i * i } let squaresAndCubes = seq { @@ -1623,7 +1623,7 @@ let rec loop () = newEvents |> function | Ok events -> eventStore.Append events - | Error err -> async { return Error err} + | Error err -> async {return Error err} do reply.Reply result diff --git a/src/Fantomas.Tests/ControlStructureTests.fs b/src/Fantomas.Tests/ControlStructureTests.fs index 01c9669764..bcc0977bc5 100644 --- a/src/Fantomas.Tests/ControlStructureTests.fs +++ b/src/Fantomas.Tests/ControlStructureTests.fs @@ -196,7 +196,7 @@ let ``range expressions`` () = equal """ let function2 () = - for i in 1 .. 2 .. 10 do + for i in 1..2..10 do printf "%d " i printfn "" @@ -557,7 +557,7 @@ for _ in 1..10 do () |> should equal """ -for _ in 1 .. 10 do +for _ in 1..10 do () """ diff --git a/src/Fantomas.Tests/DisableElmishTests.fs b/src/Fantomas.Tests/DisableElmishTests.fs index c73b1f5ced..65acc2751b 100644 --- a/src/Fantomas.Tests/DisableElmishTests.fs +++ b/src/Fantomas.Tests/DisableElmishTests.fs @@ -206,9 +206,9 @@ let counter = Html.div [ Html.button - [ prop.style [ style.marginRight 5 ] - prop.onClick (fun _ -> setCount (count + 1)) - prop.text "Increment" ] + [ prop.style [ style.marginRight 5 ] + prop.onClick (fun _ -> setCount (count + 1)) + prop.text "Increment" ] Html.button [ prop.style [ style.marginLeft 5 ] prop.onClick (fun _ -> setCount (count - 1)) diff --git a/src/Fantomas.Tests/ElmishTests.fs b/src/Fantomas.Tests/ElmishTests.fs index 602819ab37..a9b377616e 100644 --- a/src/Fantomas.Tests/ElmishTests.fs +++ b/src/Fantomas.Tests/ElmishTests.fs @@ -115,10 +115,10 @@ let loginPage = View.StackLayout( children = [ View.Entry( - placeholder = "User name", - isEnabled = (not model.IsSigningIn), - textChanged = - (fun args -> (dispatch (UserNameChanged args.NewTextValue))) + placeholder = "User name", + isEnabled = (not model.IsSigningIn), + textChanged = + (fun args -> (dispatch (UserNameChanged args.NewTextValue))) ) View.Entry( placeholder = "Password", diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj index e22fb32ba0..7eb4630a05 100644 --- a/src/Fantomas.Tests/Fantomas.Tests.fsproj +++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj @@ -38,7 +38,6 @@ - @@ -90,6 +89,7 @@ + diff --git a/src/Fantomas.Tests/FormatAstTests.fs b/src/Fantomas.Tests/FormatAstTests.fs index 94434ead85..fe7d504b11 100644 --- a/src/Fantomas.Tests/FormatAstTests.fs +++ b/src/Fantomas.Tests/FormatAstTests.fs @@ -48,7 +48,7 @@ let ``let in should not be used`` () = ()""" [] -let ``elif keyword is not present in raw AST`` () = +let ``elif keyword is present in raw AST`` () = let source = """ if a then () @@ -59,7 +59,7 @@ let ``elif keyword is not present in raw AST`` () = |> should equal """if a then () -else if b then () +elif b then () else ()""" /// There is no dead code in this test diff --git a/src/Fantomas.Tests/IfThenElseTests.fs b/src/Fantomas.Tests/IfThenElseTests.fs index 3126e35f44..846c305731 100644 --- a/src/Fantomas.Tests/IfThenElseTests.fs +++ b/src/Fantomas.Tests/IfThenElseTests.fs @@ -1367,7 +1367,7 @@ let a = elif trimmed.StartsWith("#endif") then defines.Add(processLine "#endif" trimmed lineNumber offset) - for idx in [ 0 .. lastIndex ] do + for idx in [ 0..lastIndex ] do let zero = sourceCode.[idx] let plusOne = sourceCode.[idx + 1] let plusTwo = sourceCode.[idx + 2] diff --git a/src/Fantomas.Tests/IndexSyntaxTests.fs b/src/Fantomas.Tests/IndexSyntaxTests.fs new file mode 100644 index 0000000000..c2ce62da4b --- /dev/null +++ b/src/Fantomas.Tests/IndexSyntaxTests.fs @@ -0,0 +1,101 @@ +module Fantomas.Tests.IndexSyntaxTests + +open NUnit.Framework +open FsUnit +open Fantomas.Tests.TestHelper + +[] +let ``don't convert index syntax without dot to application`` () = + formatSourceString + false + """ +expr1[expr2] +""" + config + |> prepend newline + |> should + equal + """ +expr1[expr2] +""" + +[] +let ``slicing examples`` () = + formatSourceString + false + """ +let arr = [| 1;2;3 |] +arr[0] <- 2 +arr[0] +arr[0..1] +arr[..1] +arr[0..] +""" + config + |> prepend newline + |> should + equal + """ +let arr = [| 1; 2; 3 |] +arr[0] <- 2 +arr[0] +arr[0..1] +arr[..1] +arr[0..] +""" + +[] +let ``higher-dimensional arrays`` () = + formatSourceString + false + """ +let arr = Array4D.create 3 4 5 6 0 +arr[0,2,3,4] <- 2 +arr[0,2,3,4] +""" + config + |> prepend newline + |> should + equal + """ +let arr = Array4D.create 3 4 5 6 0 +arr[0, 2, 3, 4] <- 2 +arr[0, 2, 3, 4] +""" + +[] +let ``only add spaces when expressions are atomic`` () = + formatSourceString + false + """ +let a = [ 2 .. 7 ] // integers +let b = [ one .. two ] // identifiers +let c = [ .. 9 ] // also when there is only one expression +let d = [ 0.7 .. 9.2 ] // doubles +let e = [ 2L .. number / 2L ] // complex expression +let f = [| A.B .. C.D |] // identifiers with dots +let g = [ .. (39 - 3) ] // complex expression +let h = [| 1 .. MyModule.SomeConst |] // not all expressions are atomic +for x in 1 .. 2 do + printfn " x = %d" x +let s = seq { 0..10..100 } +""" + config + |> prepend newline + |> should + equal + """ +let a = [ 2..7 ] // integers +let b = [ one..two ] // identifiers +let c = [ ..9 ] // also when there is only one expression +let d = [ 0.7 .. 9.2 ] // doubles +let e = [ 2L .. number / 2L ] // complex expression +let f = [| A.B .. C.D |] // identifiers with dots +let g = [ .. (39 - 3) ] // complex expression +let h = [| 1 .. MyModule.SomeConst |] // not all expressions are atomic + +for x in 1..2 do + printfn " x = %d" x + +let s = seq { 0..10..100 } +""" diff --git a/src/Fantomas.Tests/InterpolatedStringTests.fs b/src/Fantomas.Tests/InterpolatedStringTests.fs index 29f04da691..ca3970cb6b 100644 --- a/src/Fantomas.Tests/InterpolatedStringTests.fs +++ b/src/Fantomas.Tests/InterpolatedStringTests.fs @@ -104,7 +104,7 @@ let str = {let square x = x * x let isOdd x = x % 2 <> 0 let oddSquares = List.filter isOdd >> List.map square - oddSquares [ 1 .. 0 ]}\"\"\" + oddSquares [ 1..0 ]}\"\"\" " [] diff --git a/src/Fantomas.Tests/KeepIndentInBranchTests.fs b/src/Fantomas.Tests/KeepIndentInBranchTests.fs index 89bdab1de8..b7f798ef34 100644 --- a/src/Fantomas.Tests/KeepIndentInBranchTests.fs +++ b/src/Fantomas.Tests/KeepIndentInBranchTests.fs @@ -2072,7 +2072,7 @@ module Foo = let assertConsistent () : unit = if veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong then () - elif foo = bar then + else if foo = bar then () else diff --git a/src/Fantomas.Tests/LetBindingTests.fs b/src/Fantomas.Tests/LetBindingTests.fs index af8566d75e..5c58cf37c3 100644 --- a/src/Fantomas.Tests/LetBindingTests.fs +++ b/src/Fantomas.Tests/LetBindingTests.fs @@ -140,7 +140,7 @@ let x = equal """ let x = - [| 1 .. 2 |] + [| 1..2 |] |> Array.mapi (fun _ _ -> let num = "".PadLeft(9) num) diff --git a/src/Fantomas.Tests/ListTests.fs b/src/Fantomas.Tests/ListTests.fs index 274b622894..3c44e72c28 100644 --- a/src/Fantomas.Tests/ListTests.fs +++ b/src/Fantomas.Tests/ListTests.fs @@ -27,6 +27,21 @@ array2.[..3, ..1] array1.[1] <- 3 """ +[] +let ``index range`` () = + formatSourceString + false + """ +let v = 1 .. 2 +""" + config + |> prepend newline + |> should + equal + """ +let v = 1..2 +""" + [] let ``array values`` () = formatSourceString @@ -147,8 +162,8 @@ let list0to3 = [0 .. 3]""" |> should equal """ -let listOfSquares = [ for i in 1 .. 10 -> i * i ] -let list0to3 = [ 0 .. 3 ] +let listOfSquares = [ for i in 1..10 -> i * i ] +let list0to3 = [ 0..3 ] """ [] @@ -164,11 +179,11 @@ let a3 = [| for n in 1 .. 100 do if isPrime n then yield n |]""" |> should equal """ -let a1 = [| for i in 1 .. 10 -> i * i |] -let a2 = [| 0 .. 99 |] +let a1 = [| for i in 1..10 -> i * i |] +let a2 = [| 0..99 |] let a3 = - [| for n in 1 .. 100 do + [| for n in 1..100 do if isPrime n then yield n |] """ @@ -385,8 +400,8 @@ let ``line comment inside list`` () = equal """ [7 -// foo -] + // foo + ] """ [] @@ -403,8 +418,8 @@ let ``line comment inside array`` () = equal """ [| 7 -// foo - |] + // foo + |] """ #if RELEASE @@ -1778,21 +1793,21 @@ let emptyString = s.[-2..(-1)] |> should equal """ -let l = [ 1 .. 10 ] -let a = [| 1 .. 10 |] +let l = [ 1..10 ] +let a = [| 1..10 |] let s = "hello!" // Before: would return empty list // F# 5: same -let emptyList = l.[-2..(-1)] +let emptyList = l.[-2 .. (-1)] // Before: would throw exception // F# 5: returns empty array -let emptyArray = a.[-2..(-1)] +let emptyArray = a.[-2 .. (-1)] // Before: would throw exception // F# 5: returns empty string -let emptyString = s.[-2..(-1)] +let emptyString = s.[-2 .. (-1)] """ [] @@ -2246,8 +2261,8 @@ let fns = let fns = [ { x = "long enough to not go to one line" y = 5 } - // { name = fn "String" "endsWith" 0 - // deprecated = NotDeprecated } - // I think the space at the start of the lines above matter - ] + // { name = fn "String" "endsWith" 0 + // deprecated = NotDeprecated } + // I think the space at the start of the lines above matter + ] """ diff --git a/src/Fantomas.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs b/src/Fantomas.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs index 24ebf84686..4b99e5ec4e 100644 --- a/src/Fantomas.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs +++ b/src/Fantomas.Tests/MultilineBlockBracketsOnSameColumnArrayOrListTests.fs @@ -110,11 +110,11 @@ let a2 = [| for n in 1 .. 100 do if isPrime n then yield n |]""" |> should equal """ -let a1 = [| 0 .. 99 |] +let a1 = [| 0..99 |] let a2 = [| - for n in 1 .. 100 do + for n in 1..100 do if isPrime n then yield n |] """ diff --git a/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs b/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs index b4ee1230da..88125cb462 100644 --- a/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs +++ b/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs @@ -135,9 +135,7 @@ let xs = ] let ys = - [ - AReallyLongExpressionThatIsMuchLongerThan50Characters - ] + [ AReallyLongExpressionThatIsMuchLongerThan50Characters ] f xs @@ -180,9 +178,7 @@ let xs = |] let ys = - [| - AReallyLongExpressionThatIsMuchLongerThan50Characters - |] + [| AReallyLongExpressionThatIsMuchLongerThan50Characters |] f xs @@ -226,9 +222,7 @@ f [ z ] -g [ - longValueThatIsALotOfCharactersSoooooLong - ] [ +g [ longValueThatIsALotOfCharactersSoooooLong ] [ longValueThatIsALotOfCharactersSoooooLong ] diff --git a/src/Fantomas.Tests/OperatorTests.fs b/src/Fantomas.Tests/OperatorTests.fs index d4db9ca4b0..e3f561e626 100644 --- a/src/Fantomas.Tests/OperatorTests.fs +++ b/src/Fantomas.Tests/OperatorTests.fs @@ -298,20 +298,20 @@ let ``should not add newline before = operator after |>`` () = """ [] -let ``should add space around .. operator`` () = +let ``should not add space around .. operator`` () = formatSourceString false """[1..10]""" config |> should equal - """[ 1 .. 10 ] + """[ 1..10 ] """ [] -let ``should add space around .. .. operators`` () = +let ``should not add space around .. .. operators`` () = formatSourceString false """[10 .. -1 .. 1]""" config |> should equal - """[ 10 .. -1 .. 1 ] + """[ 10..-1..1 ] """ [] @@ -1185,8 +1185,7 @@ let ``list concat chain using operators, 1188`` () = |> should equal """ -[ 1 .. 86 ] -@ [ 89 .. 699 ] @ [ 901 .. 912 ] @ [ 988 ] +[ 1..86 ] @ [ 89..699 ] @ [ 901..912 ] @ [ 988 ] """ [] diff --git a/src/Fantomas.Tests/PatternMatchingTests.fs b/src/Fantomas.Tests/PatternMatchingTests.fs index ee6012abac..5cefe0d6b6 100644 --- a/src/Fantomas.Tests/PatternMatchingTests.fs +++ b/src/Fantomas.Tests/PatternMatchingTests.fs @@ -1273,6 +1273,7 @@ let private formatResponse<'options> () = } """ +[] [] let ``match inside match expression, 1400`` () = formatSourceString @@ -1303,6 +1304,7 @@ match | _ -> failwith "" """ +[] [] let ``match bang inside match expression`` () = formatSourceString @@ -1333,6 +1335,7 @@ match | _ -> failwith "" """ +[] [] let ``match inside match bang expression`` () = formatSourceString @@ -1363,6 +1366,7 @@ match! | _ -> failwith "" """ +[] [] let ``match bang inside match bang expression`` () = formatSourceString diff --git a/src/Fantomas.Tests/RecordTests.fs b/src/Fantomas.Tests/RecordTests.fs index 16b22e71b4..7a8ba5781f 100644 --- a/src/Fantomas.Tests/RecordTests.fs +++ b/src/Fantomas.Tests/RecordTests.fs @@ -718,8 +718,8 @@ let expect = Result.Ok { opts = [ Opts.anyOf ( - [ (Optional, Opt.flagTrue [ "first"; "f" ]) - (Optional, Opt.value [ "second"; "s" ]) ] + [ (Optional, Opt.flagTrue [ "first"; "f" ]) + (Optional, Opt.value [ "second"; "s" ]) ] ) Opts.oneOf ( Optional, diff --git a/src/Fantomas.Tests/TokenParserTests.fs b/src/Fantomas.Tests/TokenParserTests.fs index f5c718e55a..e3fdd6144f 100644 --- a/src/Fantomas.Tests/TokenParserTests.fs +++ b/src/Fantomas.Tests/TokenParserTests.fs @@ -294,21 +294,6 @@ type T() = | [ { Item = Newline; Range = rAbove } ] -> rAbove.StartLine == 1 | _ -> fail () -[] -let ``if keyword should be found in tokens`` () = - let source = - """if true then () -elif true then ()""" - - let triviaNodes = tokenize source |> getTriviaFromTokens - - match triviaNodes with - | [ { Item = Keyword { Content = "if" } } - { Item = Keyword { Content = "then" } } - { Item = Keyword { Content = "elif" } } - { Item = Keyword { Content = "then" } } ] -> pass () - | _ -> fail () - [] let ``directives are found in tokens`` () = let source = diff --git a/src/Fantomas.Tests/TriviaTests.fs b/src/Fantomas.Tests/TriviaTests.fs index 5ec4ad4ac3..c394bf519a 100644 --- a/src/Fantomas.Tests/TriviaTests.fs +++ b/src/Fantomas.Tests/TriviaTests.fs @@ -281,25 +281,6 @@ MEH | [ { ContentBefore = [ Comment (BlockComment (c, _, true)) ] } ] -> c == (String.normalizeNewLine comment) | _ -> failwith "Expected block comment" -[] -let ``if keyword before SynExpr.IfThenElse`` () = - let source = - """if true then () -elif true then ()""" - - let triviaNodes = toTrivia source |> List.head - - match triviaNodes with - | [ { Type = Token (IF, _) - ContentItself = Some (Keyword { Content = "if" }) } - { Type = Token (THEN, _) - ContentItself = Some (Keyword { Content = "then" }) } - { Type = Token (ELIF, _) - ContentItself = Some (Keyword { Content = "elif" }) } - { Type = Token (THEN, _) - ContentItself = Some (Keyword { Content = "then" }) } ] -> pass () - | _ -> fail () - [] let ``directives before and after are linked to let binding`` () = let source = @@ -403,19 +384,6 @@ let foo = 42 ContentAfter = [ Directive "#if SOMETHING\n\n#endif" ] } ] -> pass () | _ -> fail () - -[] -let ``if keyword should be keyword itself`` () = - let source = "if meh then ()" - let trivia = toTrivia source |> List.head - - match trivia with - | [ { ContentItself = Some (Keyword { TokenInfo = { TokenName = "IF" } }) - Type = TriviaNodeType.Token (IF, _) } - { ContentItself = Some (Keyword { TokenInfo = { TokenName = "THEN" } }) - Type = TriviaNodeType.Token (THEN, _) } ] -> pass () - | _ -> fail () - [] let ``string constant with blank lines`` () = let multilineString = @@ -463,7 +431,7 @@ let ``char content`` () = match trivia with | [ { ContentItself = Some (CharContent "\'\\u0000\'") Type = TriviaNodeType.MainNode SynConst_Char } ] -> pass () - | _ -> fail () + | _ -> Assert.Fail(sprintf "Unexpected trivia: %A" trivia) [] let ``leading newlines should not be captured as trivia`` () = diff --git a/src/Fantomas.Tests/TypeDeclarationTests.fs b/src/Fantomas.Tests/TypeDeclarationTests.fs index 4ab86693fa..ecab1dd4c5 100644 --- a/src/Fantomas.Tests/TypeDeclarationTests.fs +++ b/src/Fantomas.Tests/TypeDeclarationTests.fs @@ -500,7 +500,7 @@ type SparseMatrix() = let matrix1 = new SparseMatrix() -for i in 1 .. 1000 do +for i in 1..1000 do matrix1.[i, i] <- float i * float i """ diff --git a/src/Fantomas.Tests/UnionTests.fs b/src/Fantomas.Tests/UnionTests.fs index 8ee8d52a97..819253bbc0 100644 --- a/src/Fantomas.Tests/UnionTests.fs +++ b/src/Fantomas.Tests/UnionTests.fs @@ -702,7 +702,7 @@ type CardValue = | King static member allWithKnight = [ - for n in 1 .. 10 do + for n in 1..10 do yield Basic n yield Jack yield Knight diff --git a/src/Fantomas.Tests/ValidationTests.fs b/src/Fantomas.Tests/ValidationTests.fs index 061a2f1f1a..028c1506de 100644 --- a/src/Fantomas.Tests/ValidationTests.fs +++ b/src/Fantomas.Tests/ValidationTests.fs @@ -5,13 +5,13 @@ open FsUnit open Fantomas.Tests.TestHelper [] -let ``naked ranges are invalid outside for..in.do`` () = +let ``naked ranges are valid outside for..in.do`` () = isValidFSharpCode false """ let factors number = 2L..number / 2L |> Seq.filter (fun x -> number % x = 0L)""" - |> should equal false + |> should equal true [] let ``misplaced comments should give parser errors`` () = diff --git a/src/Fantomas.Tests/VerboseSyntaxConversionTests.fs b/src/Fantomas.Tests/VerboseSyntaxConversionTests.fs deleted file mode 100644 index bf3f74daf9..0000000000 --- a/src/Fantomas.Tests/VerboseSyntaxConversionTests.fs +++ /dev/null @@ -1,32 +0,0 @@ -module Fantomas.Tests.VerboseSyntaxConversionTests - -open NUnit.Framework -open FsUnit -open Fantomas.Tests.TestHelper - -[] -let ``verbose syntax`` () = - formatSourceString - false - """ - #light "off" - - let div2 = 2;; - - let f x = - let r = x % div2 in - if r = 1 then - begin "Odd" end - else - begin "Even" end - """ - config - |> prepend newline - |> should - equal - """ -let div2 = 2 - -let f x = - let r = x % div2 in if r = 1 then ("Odd") else ("Even") -""" diff --git a/src/Fantomas/AstTransformer.fs b/src/Fantomas/AstTransformer.fs index 12a00e4cab..aa70095ca0 100644 --- a/src/Fantomas/AstTransformer.fs +++ b/src/Fantomas/AstTransformer.fs @@ -192,19 +192,22 @@ module private Ast = |> finalContinuation Continuation.sequence continuations finalContinuation - | SynExpr.ArrayOrListOfSeqExpr (_, expr, range) -> + | SynExpr.ArrayOrListComputed (_, expr, range) -> visit expr (fun nodes -> - mkNode SynExpr_ArrayOrListOfSeqExpr range :: nodes + mkNode SynExpr_ArrayOrListComputed range :: nodes |> finalContinuation) - | SynExpr.CompExpr (_, _, expr, _) -> visit expr finalContinuation - | SynExpr.Lambda (_, _, args, body, _parsedData, range) -> + | SynExpr.ComputationExpr (_, expr, _) -> visit expr finalContinuation + | SynExpr.Lambda (_, _, args, arrowRange, body, _parsedData, range) -> visit body (fun nodes -> [ yield mkNode SynExpr_Lambda range yield! visitSynSimplePats args + yield! + (Option.toList arrowRange + |> List.map (mkNode SynExpr_Lambda_Arrow)) yield! nodes ] |> finalContinuation) | SynExpr.MatchLambda (_, keywordRange, matchClauses, _, range) -> @@ -297,10 +300,12 @@ module private Ast = Continuation.sequence continuations finalContinuation // don't collect nested elif expression as nodes. // the ranges are often incorrect and using the else if or elif token is more reliable. - | SourceParser.ElIf ((ifExpr, thenExpr, _, range, _) :: es, elseExpr) -> + | SourceParser.ElIf ((_leadingElseKw, ifKw, isElif, ifExpr, thenKw, thenExpr) :: es, + (elseKw, elseExpr), + range) -> let elifs = es - |> List.collect (fun (e1, e2, _, _, _) -> [ visit e1; visit e2 ]) + |> List.collect (fun (_, _, _, e1, _, e2) -> [ visit e1; visit e2 ]) let continuations: ((TriviaNodeAssigner list -> TriviaNodeAssigner list) -> TriviaNodeAssigner list) list = [ yield visit ifExpr @@ -309,21 +314,60 @@ module private Ast = yield! (Option.toList elseExpr |> List.map visit) ] let finalContinuation (nodes: TriviaNodeAssigner list list) : TriviaNodeAssigner list = - mkNode SynExpr_IfThenElse range - :: (List.collect id nodes) + let elseNode elseKw = + Option.map (mkNode SynExpr_IfThenElse_Else) elseKw + |> Option.toList + + let elifKeywords = + es + |> List.collect + (fun (elseKw, ifKw, isElif, _, thenKw, _) -> + [ yield! elseNode elseKw + yield + mkNode + (if isElif then + SynExpr_IfThenElse_Elif + else + SynExpr_IfThenElse_If) + ifKw + yield mkNode SynExpr_IfThenElse_Then thenKw ]) + + [ yield mkNode SynExpr_IfThenElse range + yield + mkNode + (if isElif then + SynExpr_IfThenElse_Elif + else + SynExpr_IfThenElse_If) + ifKw + yield mkNode SynExpr_IfThenElse_Then thenKw + yield! elifKeywords + yield! elseNode elseKw + yield! (List.collect id nodes) ] |> finalContinuation Continuation.sequence continuations finalContinuation - | SynExpr.IfThenElse (ifExpr, thenExpr, elseExpr, _, _, _, range) -> + | SynExpr.IfThenElse (ifKw, isElif, ifExpr, thenKw, thenExpr, elseKw, elseExpr, _, _, _, range) -> let continuations: ((TriviaNodeAssigner list -> TriviaNodeAssigner list) -> TriviaNodeAssigner list) list = [ yield visit ifExpr yield visit thenExpr yield! (Option.toList elseExpr |> List.map visit) ] let finalContinuation (nodes: TriviaNodeAssigner list list) : TriviaNodeAssigner list = - mkNode SynExpr_IfThenElse range - :: (List.collect id nodes) + [ yield mkNode SynExpr_IfThenElse range + yield + mkNode + (if isElif then + SynExpr_IfThenElse_Elif + else + SynExpr_IfThenElse_If) + ifKw + yield mkNode SynExpr_IfThenElse_Then thenKw + yield! + (Option.map (mkNode SynExpr_IfThenElse_Else) elseKw + |> Option.toList) + yield! (List.collect id nodes) ] |> finalContinuation Continuation.sequence continuations finalContinuation @@ -370,22 +414,22 @@ module private Ast = |> finalContinuation Continuation.sequence continuations finalContinuation - | SynExpr.DotIndexedGet (objectExpr, indexExprs, _, range) -> + | SynExpr.DotIndexedGet (objectExpr, indexArgs, _, range) -> visit objectExpr (fun nodes -> [ yield mkNode SynExpr_DotIndexedGet range yield! nodes - yield! indexExprs |> List.collect visitSynIndexerArg ] + yield! visitSynExpr indexArgs ] |> finalContinuation) - | SynExpr.DotIndexedSet (objectExpr, indexExprs, valueExpr, _, _, range) -> + | SynExpr.DotIndexedSet (objectExpr, indexArgs, valueExpr, _, _, range) -> let continuations: ((TriviaNodeAssigner list -> TriviaNodeAssigner list) -> TriviaNodeAssigner list) list = [ visit objectExpr; visit valueExpr ] let finalContinuation (nodes: TriviaNodeAssigner list list) : TriviaNodeAssigner list = [ yield mkNode SynExpr_DotIndexedSet range yield! (List.collect id nodes) - yield! indexExprs |> List.collect visitSynIndexerArg ] + yield! visitSynExpr indexArgs ] |> finalContinuation Continuation.sequence continuations finalContinuation @@ -571,6 +615,14 @@ module private Ast = mkNode SynExpr_InterpolatedString range :: (List.collect visitSynInterpolatedStringPart parts) |> finalContinuation + | SynExpr.IndexRange (e1, _, e2, _, _, range) -> + [ yield mkNode SynExpr_IndexRange range + yield! (e1 |> Option.toList |> List.collect visitSynExpr) + yield! (e2 |> Option.toList |> List.collect visitSynExpr) ] + |> finalContinuation + | SynExpr.IndexFromEnd (e, range) -> + [ yield mkNode SynExpr_IndexFromEnd range + yield! visitSynExpr e ] visit synExpr id @@ -611,18 +663,16 @@ module private Ast = mkNode SynMemberSig_NestedType range :: (visitSynTypeDefnSig typedef) - and visitSynIndexerArg (ia: SynIndexerArg) : TriviaNodeAssigner list = - match ia with - | SynIndexerArg.One (e, _fromEnd, _) -> visitSynExpr e - | SynIndexerArg.Two (e1, _fromEnd1, e2, _fromEnd2, _, _) -> visitSynExpr e1 @ visitSynExpr e2 - and visitSynMatchClause (mc: SynMatchClause) : TriviaNodeAssigner list = match mc with - | SynMatchClause (pat, e1, e2, _range, _) -> + | SynMatchClause (pat, e1, arrowRange, e2, _range, _) -> mkNode SynMatchClause_ mc.Range // _range is the same range as pat, see https://github.com/dotnet/fsharp/issues/10877 :: [ yield! visitSynPat pat if e1.IsSome then yield! visitSynExpr e1.Value + yield! + (Option.toList arrowRange + |> List.map (mkNode SynMatchClause_Arrow)) yield! visitSynExpr e2 ] and visitArgsOption (expr: SynExpr, _: Ident option) = visitSynExpr expr diff --git a/src/Fantomas/CodeFormatterImpl.fs b/src/Fantomas/CodeFormatterImpl.fs index 568073a8da..a0b92ab7b7 100644 --- a/src/Fantomas/CodeFormatterImpl.fs +++ b/src/Fantomas/CodeFormatterImpl.fs @@ -23,7 +23,8 @@ let sharedChecker = lazy (FSharpChecker.Create()) let createParsingOptionsFromFile fileName = { FSharpParsingOptions.Default with SourceFiles = [| fileName |] - IsExe = true } + IsExe = true + LangVersionText = "preview" } let private getSourceString (source: SourceOrigin) = match source with @@ -88,13 +89,6 @@ let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { File /// Check whether an AST consists of parsing errors let isValidAST ast = - let (|IndexerArg|) = - function - | SynIndexerArg.Two (e1, _, e2, _, _, _) -> [ e1; e2 ] - | SynIndexerArg.One (e, _, _) -> [ e ] - - let (|IndexerArgList|) xs = List.collect (|IndexerArg|) xs - let rec validateImplFileInput (SourceParser.ParsedImplFileInput (_, moduleOrNamespaceList)) = List.forall validateModuleOrNamespace moduleOrNamespaceList @@ -175,7 +169,7 @@ let isValidAST ast = = validateExpr expr && validatePattern headPat - and validateClause (Clause (pat, expr, exprOpt)) = + and validateClause (Clause (pat, exprOpt, _, expr)) = validatePattern pat && validateExpr expr && defaultArg (Option.map validateExpr exprOpt) true @@ -209,9 +203,9 @@ let isValidAST ast = | SynExpr.For (_sequencePointInfoForForLoop, _ident, synExpr1, _, synExpr2, synExpr3, _range) -> List.forall validateExpr [ synExpr1; synExpr2; synExpr3 ] - | SynExpr.ArrayOrListOfSeqExpr (_, synExpr, _range) -> validateExpr synExpr - | SynExpr.CompExpr (_, _, synExpr, _range) -> validateExpr synExpr - | SynExpr.Lambda (_, _, _synSimplePats, synExpr, _parsedData, _range) -> validateExpr synExpr + | SynExpr.ArrayOrListComputed (_, synExpr, _range) -> validateExpr synExpr + | SynExpr.ComputationExpr (_, synExpr, _range) -> validateExpr synExpr + | SynExpr.Lambda (_, _, _synSimplePats, _arrow, synExpr, _parsedData, _range) -> validateExpr synExpr | SynExpr.MatchLambda (_isExnMatch, _argm, synMatchClauseList, _spBind, _wholem) -> List.forall validateClause synMatchClauseList @@ -250,7 +244,17 @@ let isValidAST ast = | SynExpr.SequentialOrImplicitYield (_sequencePointInfoForSeq, synExpr1, synExpr2, _, _range) -> List.forall validateExpr [ synExpr1; synExpr2 ] - | SynExpr.IfThenElse (synExpr1, synExpr2, synExprOpt, _sequencePointInfoForBinding, _isRecovery, _range, _range2) -> + | SynExpr.IfThenElse (_, + _, + synExpr1, + _, + synExpr2, + _, + synExprOpt, + _sequencePointInfoForBinding, + _isRecovery, + _range, + _range2) -> match synExprOpt with | Some synExpr3 -> List.forall validateExpr [ synExpr1; synExpr2; synExpr3 ] | None -> List.forall validateExpr [ synExpr1; synExpr2 ] @@ -264,14 +268,10 @@ let isValidAST ast = | SynExpr.DotSet (synExpr1, _, synExpr2, _) | SynExpr.Set (synExpr1, synExpr2, _) -> List.forall validateExpr [ synExpr1; synExpr2 ] - | SynExpr.DotIndexedGet (synExpr, IndexerArgList synExprList, _range, _range2) -> - validateExpr synExpr - && List.forall validateExpr synExprList + | SynExpr.DotIndexedGet (synExpr, indexArgs, _range, _range2) -> validateExpr synExpr && validateExpr indexArgs - | SynExpr.DotIndexedSet (synExpr1, IndexerArgList synExprList, synExpr2, _, _range, _range2) -> - [ yield synExpr1 - yield! synExprList - yield synExpr2 ] + | SynExpr.DotIndexedSet (synExpr1, indexArgs, synExpr2, _, _range, _range2) -> + [ synExpr1; indexArgs; synExpr2 ] |> List.forall validateExpr | SynExpr.JoinIn (synExpr1, _range, synExpr2, _range2) -> List.forall validateExpr [ synExpr1; synExpr2 ] @@ -319,6 +319,10 @@ let isValidAST ast = (function | SynInterpolatedStringPart.String _ -> true | SynInterpolatedStringPart.FillExpr (e, _) -> validateExpr e) + | SynExpr.IndexRange (e1, _, e2, _, _, _) -> + defaultArg (Option.map validateExpr e1) true + && defaultArg (Option.map validateExpr e2) true + | SynExpr.IndexFromEnd (e, _) -> validateExpr e and validatePattern = function diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index af858b551a..512caccae5 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -1284,7 +1284,7 @@ and genExpr astContext synExpr ctx = +> sepOpenT +> genTuple astContext es +> sepCloseT - | ArrayOrList (isArray, [], _) -> + | ArrayOrList (isArray, []) -> ifElse isArray (enterNodeTokenByName synExpr.Range LBRACK_BAR @@ -1299,7 +1299,7 @@ and genExpr astContext synExpr ctx = +> enterNodeTokenByName synExpr.Range RBRACK +> sepCloseLFixed +> leaveNodeTokenByName synExpr.Range RBRACK) - | ArrayOrList (isArray, xs, _) as alNode -> + | ArrayOrList (isArray, xs) as alNode -> let tokenSize = if isArray then 2 else 1 let openingTokenRange = @@ -1433,24 +1433,54 @@ and genExpr astContext synExpr ctx = +> unindent) ) - | CompExpr (isArrayOrList, e) -> - ifElse - isArrayOrList - (genExpr astContext e) - // The opening { of the CompExpr is being added at the App(_,_,Ident(_),CompExr(_)) level + | NamedComputationExpr (nameExpr, bodyExpr, bodyRange) -> + fun ctx -> + let openingBrace = + ctx.MkRangeWith + (bodyRange.StartLine, bodyRange.StartColumn) + (bodyRange.StartLine, bodyRange.StartColumn + 1) + + let closingBrace = + ctx.MkRangeWith(bodyRange.EndLine, bodyRange.EndColumn - 1) (bodyRange.EndLine, bodyRange.EndColumn) + + let short = + genExpr astContext nameExpr + +> sepSpace + +> tokN openingBrace LBRACE sepOpenS + +> genExpr astContext bodyExpr + +> tokN closingBrace RBRACE sepCloseS + + let long = + genExpr astContext nameExpr + +> sepSpace + +> tokN openingBrace LBRACE sepOpenS + +> indent + +> sepNln + +> genExpr astContext bodyExpr + +> unindent + +> sepNln + +> tokN closingBrace RBRACE sepCloseSFixed + + expressionFitsOnRestOfLine short long ctx + | ComputationExpr (e, bodyRange) -> + fun ctx -> + let openingBrace = + ctx.MkRangeWith + (bodyRange.StartLine, bodyRange.StartColumn) + (bodyRange.StartLine, bodyRange.StartColumn + 1) + + let closingBrace = + ctx.MkRangeWith(bodyRange.EndLine, bodyRange.EndColumn - 1) (bodyRange.EndLine, bodyRange.EndColumn) + (expressionFitsOnRestOfLine - (genExpr astContext e +> sepCloseS) - (genExpr astContext e + (tokN openingBrace LBRACE sepOpenS + +> genExpr astContext e + +> tokN closingBrace RBRACE sepCloseS) + (tokN openingBrace LBRACE sepOpenS + +> genExpr astContext e +> unindent - +> (fun ctx -> - let closingBraceRange = - ctx.MkRangeWith - (synExpr.Range.EndLine, synExpr.Range.EndColumn - 1) - (synExpr.Range.EndLine, synExpr.Range.EndColumn) - - enterNodeTokenByName closingBraceRange RBRACE ctx) - +> sepNlnUnlessLastEventIsNewline - +> sepCloseSFixed)) + +> tokN closingBrace RBRACE (sepNlnUnlessLastEventIsNewline +> sepCloseSFixed))) + ctx | CompExprBody statements -> let genCompExprStatement astContext ces = @@ -1498,60 +1528,11 @@ and genExpr astContext synExpr ctx = ColMultilineItem(expr, sepNln)) |> colWithNlnWhenItemIsMultilineUsingConfig - | ArrayOrListOfSeqExpr (isArray, e) as alNode -> - let astContext = { astContext with IsNakedRange = true } - let tokenSize = if isArray then 2 else 1 - - let openingTokenRange = - ctx.MkRangeWith - (alNode.Range.Start.Line, alNode.Range.Start.Column) - (alNode.Range.Start.Line, (alNode.Range.Start.Column + tokenSize)) - - let closingTokenRange = - ctx.MkRangeWith - (alNode.Range.End.Line, (alNode.Range.End.Column - tokenSize)) - (alNode.Range.End.Line, alNode.Range.End.Column) - - - let shortExpression = - ifElse - isArray - ((tokN openingTokenRange LBRACK_BAR sepOpenA) - +> atCurrentColumnIndent (genExpr astContext e) - +> (tokN closingTokenRange BAR_RBRACK sepCloseA)) - ((tokN openingTokenRange LBRACK sepOpenL) - +> atCurrentColumnIndent (genExpr astContext e) - +> (tokN closingTokenRange RBRACK sepCloseL)) - - let bracketsOnSameColumn = - ifElse - isArray - (tokN openingTokenRange LBRACK_BAR sepOpenAFixed) - (tokN openingTokenRange LBRACK sepOpenLFixed) - +> indent - +> sepNln - +> genExpr astContext e - +> unindent - +> sepNln - +> ifElse - isArray - (tokN closingTokenRange BAR_RBRACK sepCloseAFixed) - (tokN closingTokenRange RBRACK sepCloseLFixed) - - let multilineExpression = - ifAlignBrackets bracketsOnSameColumn shortExpression - - fun ctx -> isShortExpression ctx.Config.MaxArrayOrListWidth shortExpression multilineExpression ctx - | JoinIn (e1, e2) -> genExpr astContext e1 -- " in " +> genExpr astContext e2 - | Paren (lpr, Lambda (pats, expr, lambdaRange), rpr, pr) -> + | Paren (lpr, Lambda (pats, arrowRange, expr, lambdaRange), rpr, pr) -> fun (ctx: Context) -> - let arrowRange = - List.last pats - |> fun lastPat -> ctx.MkRange lastPat.Range.End expr.Range.Start - let body = genExprKeepIndentInBranch astContext expr @@ -1568,7 +1549,7 @@ and genExpr astContext synExpr ctx = +> col sepSpace pats (genPat astContext) +> (fun ctx -> if not ctx.Config.MultiLineLambdaClosingNewline then - genArrowWithTrivia + genLambdaArrowWithTrivia (body +> triviaOfLambda printContentAfter +> sepNlnWhenWriteBeforeNewlineNotEmpty id @@ -1577,7 +1558,7 @@ and genExpr astContext synExpr ctx = ctx else leadingExpressionIsMultiline - (genArrowWithTrivia + (genLambdaArrowWithTrivia (body +> triviaOfLambda printContentAfter +> sepNlnWhenWriteBeforeNewlineNotEmpty id) @@ -1588,11 +1569,15 @@ and genExpr astContext synExpr ctx = expr ctx // When there are parentheses, most likely lambda will appear in function application - | Lambda (pats, expr, _range) -> + | Lambda (pats, arrowRange, expr, _range) -> atCurrentColumn ( !- "fun " +> col sepSpace pats (genPat astContext) - +> sepArrow + +> optSingle + (fun arrowRange -> + sepArrow + |> genTriviaFor SynExpr_Lambda_Arrow arrowRange) + arrowRange +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext expr) ) | MatchLambda (keywordRange, cs) -> @@ -2046,10 +2031,6 @@ and genExpr astContext synExpr ctx = | UppercaseSynExpr -> onlyIf ctx.Config.SpaceBeforeUppercaseInvocation sepSpace ctx | LowercaseSynExpr -> onlyIf ctx.Config.SpaceBeforeLowercaseInvocation sepSpace ctx - let arrowRange pats (bodyExpr: SynExpr) = - List.last pats - |> fun (lastPat: SynPat) -> ctx.MkRange lastPat.Range.End bodyExpr.Range.Start - let short = genExpr astContext e +> sepSpaceAfterFunctionName @@ -2057,10 +2038,14 @@ and genExpr astContext synExpr ctx = +> onlyIf (List.isNotEmpty es) sepSpace +> (sepOpenTFor lpr +> (match lambda with - | Choice1Of2 (pats, body, lambdaRange) -> + | Choice1Of2 (pats, arrowRange, body, lambdaRange) -> !- "fun " +> col sepSpace pats (genPat astContext) - +> tokN (arrowRange pats body) RARROW sepArrow + +> optSingle + (fun arrowRange -> + sepArrow + |> genTriviaFor SynExpr_Lambda_Arrow arrowRange) + arrowRange +> genExprKeepIndentInBranch astContext body |> genTriviaFor SynExpr_Lambda lambdaRange | Choice2Of2 (keywordRange, cs, range) -> @@ -2081,13 +2066,13 @@ and genExpr astContext synExpr ctx = match es with | [] -> match lambda with - | Choice1Of2 (pats, bodyExpr, range) -> + | Choice1Of2 (pats, arrowRange, bodyExpr, range) -> sepOpenTFor lpr +> (!- "fun " +> col sepSpace pats (genPat astContext) - +> genArrowWithTrivia + +> genLambdaArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) - (arrowRange pats bodyExpr) + arrowRange |> genTriviaFor SynExpr_Lambda range) +> sepNln +> sepCloseTFor rpr pr @@ -2110,8 +2095,16 @@ and genExpr astContext synExpr ctx = col sepNln es (genExpr astContext) +> sepNln +> (match lambda with - | Choice1Of2 (pats, bodyExpr, range) -> - genLambdaMultiLineClosingNewline astContext lpr pats bodyExpr range rpr pr + | Choice1Of2 (pats, arrowRange, bodyExpr, range) -> + genLambdaMultiLineClosingNewline + astContext + lpr + pats + arrowRange + bodyExpr + range + rpr + pr | Choice2Of2 (keywordRange, cs, matchLambdaRange) -> (sepOpenTFor lpr +> ((!- "function " @@ -2130,9 +2123,7 @@ and genExpr astContext synExpr ctx = ctx else match lambda with - | Choice1Of2 (pats, body, lambdaRange) -> - let arrowRange = arrowRange pats body - + | Choice1Of2 (pats, arrowRange, body, lambdaRange) -> let singleLineTestExpr = genExpr astContext e +> sepSpaceAfterFunctionName @@ -2143,7 +2134,11 @@ and genExpr astContext synExpr ctx = +> enterNodeFor SynExpr_Lambda lambdaRange +> !- "fun " +> col sepSpace pats (genPat astContext) - +> tokN arrowRange RARROW sepArrow + +> optSingle + (fun arrowRange -> + sepArrow + |> genTriviaFor SynExpr_Lambda_Arrow arrowRange) + arrowRange let singleLine = genExpr astContext e @@ -2153,7 +2148,7 @@ and genExpr astContext synExpr ctx = +> (sepOpenTFor lpr +> (!- "fun " +> col sepSpace pats (genPat astContext) - +> genArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange + +> genLambdaArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange |> genTriviaFor SynExpr_Lambda lambdaRange) +> sepNlnWhenWriteBeforeNewlineNotEmpty sepNone +> sepCloseTFor rpr pr @@ -2168,7 +2163,7 @@ and genExpr astContext synExpr ctx = +> (sepOpenTFor lpr +> (!- "fun " +> col sepSpace pats (genPat astContext) - +> genArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange + +> genLambdaArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange |> genTriviaFor SynExpr_Lambda lambdaRange) +> sepCloseTFor rpr pr |> genTriviaFor SynExpr_Paren pr) @@ -2233,6 +2228,12 @@ and genExpr astContext synExpr ctx = expressionFitsOnRestOfLine short long + | IndexWithoutDotExpr (identifierExpr, indexExpr) -> + genExpr astContext identifierExpr + +> sepOpenLFixed + +> genExpr astContext indexExpr + +> sepCloseLFixed + // Always spacing in multiple arguments | App (e, es) -> genApp astContext e es | TypeApp (e, lt, ts, gt) -> @@ -2281,7 +2282,6 @@ and genExpr astContext synExpr ctx = +> unindent ) - | SequentialSimple es | Sequentials es -> fun ctx -> let inKeywords = @@ -2292,187 +2292,154 @@ and genExpr astContext synExpr ctx = atCurrentColumn (colWithNlnWhenItemIsMultilineUsingConfig items) ctx // A generalization of IfThenElse - | ElIf ((e1, e2, _, _, _) :: es, enOpt) -> + | ElIf ((_, ifKw, isElif, e1, thenKw, e2) :: es, (elseKw, elseOpt), _) -> // https://docs.microsoft.com/en-us/dotnet/fsharp/style-guide/formatting#formatting-if-expressions - fun ctx -> - let elfis = - es - |> List.mapi - (fun idx (condition, body, _, _, fullIfThenElseExpr) -> - let endOfPreviousBranch = - if idx = 0 then - e2.Range.End - else - let _, e2, _, _, _ = es.[idx - 1] - e2.Range.End - - let maxRangeBetween = - ctx.MkRange endOfPreviousBranch body.Range.End - - let elifKeyword = - [ yield! Map.tryFindOrEmptyList ELSE ctx.TriviaTokenNodes - yield! Map.tryFindOrEmptyList ELIF ctx.TriviaTokenNodes ] - |> List.filter (fun tn -> RangeHelpers.``range contains`` maxRangeBetween tn.Range) - |> List.sortBy (fun tn -> tn.Range.StartLine, tn.Range.EndLine) - |> List.tryHead - - // This range spans from the elif keyword to the end of the body expression - let correctedRange = - match elifKeyword with - | Some { Range = range } -> ctx.MkRange range.Start body.Range.End - | _ -> fullIfThenElseExpr.Range - - let elifKeywordRange = - ctx.MkRange correctedRange.Start body.Range.Start - - let thenKeywordRange = - ctx.MkRange condition.Range.End body.Range.Start + let hasElfis = not (List.isEmpty es) + let hasElse = Option.isSome elseOpt + + let genIf ifKeywordRange isElif = + (ifElse isElif (!- "elif ") (!- "if ") + |> genTriviaFor + (if isElif then + SynExpr_IfThenElse_Elif + else + SynExpr_IfThenElse_If) + ifKeywordRange) + +> sepSpace - condition, body, elifKeywordRange, thenKeywordRange) + let genThen thenRange = + !- "then " + |> genTriviaFor SynExpr_IfThenElse_Then thenRange - let hasElfis = not (List.isEmpty elfis) - let hasElse = Option.isSome enOpt + let genElse elseRange = + !- "else " + |> genTriviaFor SynExpr_IfThenElse_Else elseRange - let genIf ifElseRange = - tokN ifElseRange IF (!- "if ") +> sepSpace + let genElifOneliner (elseKw, ifKw, isElif, e1, thenKw, e2) = + optSingle genElse elseKw + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genIf ifKw isElif + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genExpr astContext e1 + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genThen thenKw + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genExpr astContext e2 - let genThen ifElseRange = tokN ifElseRange THEN (!- "then ") - let genElse ifElseRange = tokN ifElseRange ELSE (!- "else ") + let genElifMultiLine (elseKw, ifKw, isElif, e1, thenKw, e2) = + optSingle genElse elseKw + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genIf ifKw isElif + +> autoIndentAndNlnWhenWriteBeforeNewlineNotEmpty (genExprInIfOrMatch astContext e1) + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genThen thenKw + +> indent + +> sepNln + +> genExpr astContext e2 + +> unindent - let genElifOneliner (elf1: SynExpr, elf2: SynExpr, elifKeywordRange, thenKeywordRange) = - TriviaContext.``else if / elif`` elifKeywordRange - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - +> genExpr astContext elf1 - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - +> genThen thenKeywordRange - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - +> genExpr astContext elf2 + let genShortElse e elseRange = + optSingle + (fun e -> + sepSpace + +> optSingle genElse elseRange + +> genExpr astContext e) + e - let genElifMultiLine (elf1: SynExpr, elf2, elifKeywordRange, thenKeywordRange) = - (TriviaContext.``else if / elif`` elifKeywordRange) - +> autoIndentAndNlnWhenWriteBeforeNewlineNotEmpty (genExprInIfOrMatch astContext elf1) - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - +> genThen thenKeywordRange - +> indent - +> sepNln - +> genExpr astContext elf2 - +> unindent + let genOneliner elseOpt = + genIf ifKw isElif + +> genExpr astContext e1 + +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace + +> genThen thenKw + +> genExpr astContext e2 + +> genShortElse elseOpt elseKw - let genShortElse e elseRange = - optSingle - (fun e -> - sepSpace - +> genElse elseRange - +> genExpr astContext e) - e + let isIfThenElse = + function + | SynExpr.IfThenElse _ -> true + | _ -> false - let genOneliner enOpt = - genIf synExpr.Range - +> genExpr astContext e1 + let longIfThenElse = + genIf ifKw isElif + // f.ex. if // meh + // x + // bool expr x should be indented + +> autoIndentAndNlnWhenWriteBeforeNewlineNotEmpty ( + genExprInIfOrMatch astContext e1 +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - +> genThen synExpr.Range - +> genExpr astContext e2 - +> genShortElse enOpt synExpr.Range - - let isIfThenElse = - function - | SynExpr.IfThenElse _ -> true - | _ -> false - - let longIfThenElse = - genIf synExpr.Range - // f.ex. if // meh - // x - // bool expr x should be indented - +> autoIndentAndNlnWhenWriteBeforeNewlineNotEmpty ( - genExprInIfOrMatch astContext e1 - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - ) - +> genThen synExpr.Range - +> indent - +> sepNln - +> genExpr astContext e2 - +> unindent - +> onlyIf (hasElfis || hasElse) sepNln - +> col sepNln elfis genElifMultiLine - +> opt - id - enOpt - (fun e4 -> - let correctedElseRange = - match List.tryLast elfis with - | Some (_, te, _, _) -> ctx.MkRange te.Range.End synExpr.Range.End - | None -> synExpr.Range - - onlyIf (List.isNotEmpty elfis) sepNln - +> genElse correctedElseRange - +> indent - +> sepNln - +> genExpr astContext e4 - +> unindent) - - let shortIfThenElif (ctx: Context) = - // Try and format if each conditional follow the one-liner rules - // Abort if something is too long - let shortCtx, isShort = - let elseExpr = - let elseRange = - List.last elfis - |> fun (_, b, _, _) -> ctx.MkRange b.Range.End synExpr.Range.End - - enOpt - |> Option.map (fun _ -> genShortElse enOpt elseRange) - |> Option.toList - - let exprs = - [ genOneliner None - yield! (List.map genElifOneliner elfis) - yield! elseExpr ] - - let lastIndex = List.length exprs - 1 - - exprs - |> List.indexed - |> List.fold - (fun (acc, allLinesShort) (idx, expr) -> - if allLinesShort then - let lastLine, lastColumn = - acc.WriterModel.Lines.Length, acc.Column - - let nextCtx = expr acc - - let currentLine, currentColumn = - nextCtx.WriterModel.Lines.Length, nextCtx.Column - - let isStillShort = - lastLine = currentLine - && (currentColumn - lastColumn - <= acc.Config.MaxIfThenElseShortWidth) - - (ifElse (lastIndex > idx) sepNln sepNone nextCtx, isStillShort) - else - ctx, false) - (ctx, true) - - if isShort then - shortCtx - else - longIfThenElse ctx + ) + +> genThen thenKw + +> indent + +> sepNln + +> genExpr astContext e2 + +> unindent + +> onlyIf (hasElfis || hasElse) sepNln + +> col sepNln es genElifMultiLine + +> opt + id + elseOpt + (fun e4 -> + onlyIf (List.isNotEmpty es) sepNln + +> optSingle genElse elseKw + +> indent + +> sepNln + +> genExpr astContext e4 + +> unindent) + + let shortIfThenElif (ctx: Context) = + // Try and format if each conditional follow the one-liner rules + // Abort if something is too long + let shortCtx, isShort = + let exprs = + [ yield genOneliner None + yield! (List.map genElifOneliner es) + yield! + (Option.map (fun _ -> genShortElse elseOpt elseKw) elseOpt + |> Option.toList) ] + + let lastIndex = List.length exprs - 1 + + exprs + |> List.indexed + |> List.fold + (fun (acc, allLinesShort) (idx, expr) -> + if allLinesShort then + let lastLine, lastColumn = + acc.WriterModel.Lines.Length, acc.Column + + let nextCtx = expr acc + + let currentLine, currentColumn = + nextCtx.WriterModel.Lines.Length, nextCtx.Column + + let isStillShort = + lastLine = currentLine + && (currentColumn - lastColumn + <= acc.Config.MaxIfThenElseShortWidth) + + (ifElse (lastIndex > idx) sepNln sepNone nextCtx, isStillShort) + else + ctx, false) + (ctx, true) - let expr = - if hasElfis && not (isIfThenElse e2) then - shortIfThenElif - elif isIfThenElse e2 then - // If branch expression is an if/then/else expressions. - // Always go with long version in this case - longIfThenElse - else - let shortExpression = genOneliner enOpt - let longExpression = longIfThenElse + if isShort then + shortCtx + else + longIfThenElse ctx - isShortExpression ctx.Config.MaxIfThenElseShortWidth shortExpression longExpression + let expr = + if hasElfis && not (isIfThenElse e2) then + shortIfThenElif + elif isIfThenElse e2 then + // If branch expression is an if/then/else expressions. + // Always go with long version in this case + longIfThenElse + else + let shortExpression = genOneliner elseOpt + let longExpression = longIfThenElse + (fun ctx -> isShortExpression ctx.Config.MaxIfThenElseShortWidth shortExpression longExpression ctx) - atCurrentColumnIndent expr ctx + atCurrentColumnIndent expr // At this stage, all symbolic operators have been handled. | OptVar (s, isOpt, ranges) -> @@ -2490,15 +2457,15 @@ and genExpr astContext synExpr ctx = | LongIdentSet (s, e, _) -> !-(sprintf "%s <- " s) +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e) - | DotIndexedGet (App (e, [ ConstExpr (SynConst.Unit, _) as ux ]), es) -> + | DotIndexedGet (App (e, [ ConstExpr (SynConst.Unit, _) as ux ]), indexArgs) -> genExpr astContext e +> genExpr astContext ux +> !- "." +> sepOpenLFixed - +> genIndexers astContext es + +> genExpr astContext indexArgs +> sepCloseLFixed +> leaveNodeTokenByName synExpr.Range RBRACK - | DotIndexedGet (AppSingleParenArg (e, px), es) -> + | DotIndexedGet (AppSingleParenArg (e, px), indexArgs) -> let short = genExpr astContext e +> genExpr astContext px @@ -2509,35 +2476,36 @@ and genExpr astContext synExpr ctx = let idx = !- "." +> sepOpenLFixed - +> genIndexers astContext es + +> genExpr astContext indexArgs +> sepCloseLFixed +> leaveNodeTokenByName synExpr.Range RBRACK expressionFitsOnRestOfLine (short +> idx) (long +> idx) - | DotIndexedGet (e, es) -> - addParenIfAutoNln e (genExpr astContext) -- "." + | DotIndexedGet (objectExpr, indexArgs) -> + addParenIfAutoNln objectExpr (genExpr astContext) + -- "." +> sepOpenLFixed - +> genIndexers astContext es + +> genExpr astContext indexArgs +> sepCloseLFixed +> leaveNodeTokenByName synExpr.Range RBRACK - | DotIndexedSet (App (e, [ ConstExpr (SynConst.Unit, _) as ux ]), es, e2) -> + | DotIndexedSet (App (e, [ ConstExpr (SynConst.Unit, _) as ux ]), indexArgs, valueExpr) -> let appExpr = genExpr astContext e +> genExpr astContext ux let idx = !- "." +> sepOpenLFixed - +> genIndexers astContext es + +> genExpr astContext indexArgs +> sepCloseLFixed +> leaveNodeTokenByName synExpr.Range RBRACK +> sepArrowRev expressionFitsOnRestOfLine - (appExpr +> idx +> genExpr astContext e2) + (appExpr +> idx +> genExpr astContext valueExpr) (appExpr +> idx - +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e2)) - | DotIndexedSet (AppSingleParenArg (a, px), es, e2) -> + +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext valueExpr)) + | DotIndexedSet (AppSingleParenArg (a, px), indexArgs, valueExpr) -> let short = genExpr astContext a +> genExpr astContext px @@ -2548,22 +2516,23 @@ and genExpr astContext synExpr ctx = let idx = !- "." +> sepOpenLFixed - +> genIndexers astContext es + +> genExpr astContext indexArgs +> sepCloseLFixed +> leaveNodeTokenByName synExpr.Range RBRACK +> sepArrowRev expressionFitsOnRestOfLine - (short +> idx +> genExpr astContext e2) + (short +> idx +> genExpr astContext valueExpr) (long +> idx - +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e2)) + +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext valueExpr)) - | DotIndexedSet (e1, es, e2) -> - addParenIfAutoNln e1 (genExpr astContext) -- ".[" - +> genIndexers astContext es + | DotIndexedSet (objectExpr, indexArgs, valueExpr) -> + addParenIfAutoNln objectExpr (genExpr astContext) + -- ".[" + +> genExpr astContext indexArgs -- "] <- " - +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e2) + +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext valueExpr) | NamedIndexedPropertySet (ident, e1, e2) -> !-ident +> genExpr astContext e1 -- " <- " +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e2) @@ -2624,7 +2593,7 @@ and genExpr astContext synExpr ctx = r.EndLine (r.EndColumn + 1) ) - | SynExpr.InterpolatedString (parts, _stringKind, _) -> + | InterpolatedStringExpr (parts, _stringKind) -> // TODO: string kind fun (ctx: Context) -> let stringRanges = @@ -2701,6 +2670,27 @@ and genExpr astContext synExpr ctx = +> !- "\"" expr ctx + | IndexRangeExpr (None, None) -> !- "*" + | IndexRangeExpr (e1, e2) -> + let hasSpaces = + let rec (|AtomicExpr|_|) e = + match e with + | SynExpr.Ident _ + | SynExpr.Const (SynConst.Int32 _, _) + | IndexRangeExpr (Some (AtomicExpr _), Some (AtomicExpr _)) + | IndexFromEndExpr (AtomicExpr _) -> Some e + | _ -> None + + match e1, e2 with + | Some (AtomicExpr _), None + | None, Some (AtomicExpr _) + | Some (AtomicExpr _), Some (AtomicExpr _) -> false + | _ -> true + + optSingle (fun e -> genExpr astContext e +> onlyIf hasSpaces sepSpace) e1 + +> !- ".." + +> optSingle (fun e -> onlyIf hasSpaces sepSpace +> genExpr astContext e) e2 + | IndexFromEndExpr e -> !- "^" +> genExpr astContext e | e -> failwithf "Unexpected expression: %O" e |> (match synExpr with | SynExpr.App _ -> genTriviaFor SynExpr_App synExpr.Range @@ -2718,7 +2708,7 @@ and genExpr astContext synExpr ctx = | SynExpr.TryFinally _ -> genTriviaFor SynExpr_TryFinally synExpr.Range | SynExpr.LongIdentSet _ -> genTriviaFor SynExpr_LongIdentSet synExpr.Range | SynExpr.ArrayOrList _ -> genTriviaFor SynExpr_ArrayOrList synExpr.Range - | SynExpr.ArrayOrListOfSeqExpr _ -> genTriviaFor SynExpr_ArrayOrListOfSeqExpr synExpr.Range + | SynExpr.ArrayOrListComputed _ -> genTriviaFor SynExpr_ArrayOrListComputed synExpr.Range | SynExpr.Paren _ -> genTriviaFor SynExpr_Paren synExpr.Range | SynExpr.InterpolatedString _ -> genTriviaFor SynExpr_InterpolatedString synExpr.Range | SynExpr.Tuple _ -> genTriviaFor SynExpr_Tuple synExpr.Range @@ -2762,12 +2752,14 @@ and genExpr astContext synExpr ctx = | SynExpr.LibraryOnlyUnionCaseFieldSet _ -> genTriviaFor SynExpr_LibraryOnlyUnionCaseFieldSet synExpr.Range | SynExpr.SequentialOrImplicitYield _ -> genTriviaFor SynExpr_SequentialOrImplicitYield synExpr.Range | SynExpr.TypeTest _ -> genTriviaFor SynExpr_TypeTest synExpr.Range + | SynExpr.IndexRange _ -> genTriviaFor SynExpr_IndexRange synExpr.Range + | SynExpr.IndexFromEnd _ -> genTriviaFor SynExpr_IndexFromEnd synExpr.Range | SynExpr.Const _ -> // SynConst has trivia attached to it id | SynExpr.LetOrUse _ | SynExpr.Sequential _ - | SynExpr.CompExpr _ -> + | SynExpr.ComputationExpr _ -> // first and last nested node has trivia attached to it id | SynExpr.LetOrUseBang _ -> @@ -2931,17 +2923,13 @@ and genMultilineFunctionApplicationArguments astContext argExpr = | _ -> genExpr astContext e match argExpr with - | Paren (lpr, Lambda (pats, body, range), rpr, pr) -> + | Paren (lpr, Lambda (pats, arrowRange, body, range), rpr, pr) -> fun ctx -> if ctx.Config.MultiLineLambdaClosingNewline then - let arrowRange = - List.last pats - |> fun lastPat -> ctx.MkRange lastPat.Range.End body.Range.Start - (sepOpenTFor lpr +> (!- "fun " +> col sepSpace pats (genPat astContext) - +> genArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange + +> genLambdaArrowWithTrivia (genExprKeepIndentInBranch astContext body) arrowRange |> genTriviaFor SynExpr_Lambda range) +> sepNln +> sepCloseTFor rpr pr) @@ -3238,7 +3226,7 @@ and genMultiLineArrayOrList = if isArray then (tokN openingTokenRange LBRACK_BAR sepOpenA - +> atCurrentColumn ( + +> atCurrentColumnIndent ( sepNlnWhenWriteBeforeNewlineNotEmpty sepNone +> col sepSemiNln xs (genExpr astContext) +> tokN closingTokenRange BAR_RBRACK (ifElseCtx lastWriteEventIsNewline sepCloseAFixed sepCloseA) @@ -3246,7 +3234,7 @@ and genMultiLineArrayOrList ctx else (tokN openingTokenRange LBRACK sepOpenL - +> atCurrentColumn ( + +> atCurrentColumnIndent ( sepNlnWhenWriteBeforeNewlineNotEmpty sepNone +> col sepSemiNln xs (genExpr astContext) +> tokN closingTokenRange RBRACK (ifElseCtx lastWriteEventIsNewline sepCloseLFixed sepCloseL) @@ -3254,81 +3242,22 @@ and genMultiLineArrayOrList ctx and genMultiLineArrayOrListAlignBrackets (isArray: bool) xs openingTokenRange closingTokenRange astContext = - let isLastItem (x: SynExpr) = - List.tryLast xs - |> Option.map (fun i -> RangeHelpers.rangeEq i.Range x.Range) - |> Option.defaultValue false - - fun ctx -> - let innerExpr = - xs - |> List.fold - (fun acc e (ctx: Context) -> - let isLastItem = isLastItem e - - (acc - +> genExpr astContext e - +> ifElse isLastItem sepNone sepSemiNln) - ctx) - sepNone - |> atCurrentColumn - - let expr = - if isArray then - tokN openingTokenRange LBRACK_BAR sepOpenAFixed - +> indent - +> sepNlnUnlessLastEventIsNewline - +> innerExpr - +> unindent - +> sepNlnUnlessLastEventIsNewline - +> tokN closingTokenRange BAR_RBRACK sepCloseAFixed - else - tokN openingTokenRange LBRACK sepOpenLFixed - +> indent - +> sepNlnUnlessLastEventIsNewline - +> innerExpr - +> unindent - +> sepNlnUnlessLastEventIsNewline - +> tokN closingTokenRange RBRACK sepCloseLFixed - - expr ctx - -/// Use in indexed set and get only -and genIndexers astContext node = - // helper to generate the remaining indexer expressions - // (pulled out due to duplication) - let inline genRest astContext (es: _ list) = - ifElse es.IsEmpty sepNone (sepComma +> genIndexers astContext es) - - // helper to generate a single indexer expression with support for the from-end slice marker - let inline genSingle astContext (isFromEnd: bool) (e: SynExpr) = - ifElse isFromEnd (!- "^") sepNone - +> genExpr astContext e - - match node with - // list.[*] - | Indexer (Pair ((IndexedVar None, _), (IndexedVar None, _))) :: es -> !- "*" +> genRest astContext es - // list.[(fromEnd)..] - | Indexer (Pair ((IndexedVar (Some e01), e1FromEnd), (IndexedVar None, _))) :: es -> - genSingle astContext e1FromEnd e01 -- ".." - +> genRest astContext es - // list.[..(fromEnd)] - | Indexer (Pair ((IndexedVar None, _), (IndexedVar (Some e2), e2FromEnd))) :: es -> - !- ".." - +> genSingle astContext e2FromEnd e2 - +> genRest astContext es - // list.[(fromEnd)..(fromEnd)] - | Indexer (Pair ((IndexedVar (Some e01), e1FromEnd), (IndexedVar (Some eo2), e2FromEnd))) :: es -> - genSingle astContext e1FromEnd e01 -- ".." - +> genSingle astContext e2FromEnd eo2 - +> genRest astContext es - // list.[*] - | Indexer (Single (IndexedVar None, _)) :: es -> !- "*" +> genRest astContext es - // list.[(fromEnd)] - | Indexer (Single (eo, fromEnd)) :: es -> - genSingle astContext fromEnd eo - +> genRest astContext es - | _ -> sepNone + if isArray then + tokN openingTokenRange LBRACK_BAR sepOpenAFixed + +> indent + +> sepNlnUnlessLastEventIsNewline + +> col sepNln xs (genExpr astContext) + +> unindent + +> sepNlnUnlessLastEventIsNewline + +> tokN closingTokenRange BAR_RBRACK sepCloseAFixed + else + tokN openingTokenRange LBRACK sepOpenLFixed + +> indent + +> sepNlnUnlessLastEventIsNewline + +> col sepNln xs (genExpr astContext) + +> unindent + +> sepNlnUnlessLastEventIsNewline + +> tokN closingTokenRange RBRACK sepCloseLFixed and genApp astContext e es ctx = let shortExpression = @@ -3342,21 +3271,10 @@ and genApp astContext e es ctx = sepSpace sepNone - let genEx e = - if isCompExpr e then - sepSpace - +> sepOpenSFixed - +> sepSpace - +> indent - +> autoNlnIfExpressionExceedsPageWidth (genExpr astContext e) - +> unindent - else - genExpr astContext e - atCurrentColumn ( genExpr astContext e +> addFirstSpace - +> col sepSpace es genEx + +> col sepSpace es (genExpr astContext) ) let isParenLambda = @@ -3390,24 +3308,20 @@ and genApp astContext e es ctx = (bodyExpr: SynExpr) (lpr: Range) (rpr: Range option) - (arrowRange: Range) + (arrowRange: Range option) (pr: Range) : Context -> Context = leadingExpressionIsMultiline (sepOpenTFor lpr -- "fun " +> pats - +> genArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) arrowRange) + +> genLambdaArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) arrowRange) (fun isMultiline -> onlyIf isMultiline sepNln +> sepCloseTFor rpr e.Range) |> genTriviaFor SynExpr_Paren pr match e with - | Paren (lpr, Lambda (pats, expr, _range), rpr, pr) -> - let arrowRange = - List.last pats - |> fun lastPat -> ctx.MkRange lastPat.Range.End expr.Range.Start - + | Paren (lpr, Lambda (pats, arrowRange, expr, _range), rpr, pr) -> genLambda (col sepSpace pats (genPat astContext)) expr lpr rpr arrowRange pr | _ -> genExpr astContext e) @@ -3427,7 +3341,7 @@ and genApp astContext e es ctx = if List.exists (function - | CompExpr _ -> true + | ComputationExpr _ -> true | _ -> false) es then shortExpression ctx @@ -3438,19 +3352,16 @@ and genLambdaMultiLineClosingNewline (astContext: ASTContext) (lpr: Range) (pats: SynPat list) + (arrowRange: Range option) (bodyExpr: SynExpr) (lambdaRange: Range) (rpr: Range option) (pr: Range) : Context -> Context = - let arrowRange (ctx: Context) = - List.last pats - |> fun lastPat -> ctx.MkRange lastPat.Range.End bodyExpr.Range.Start - leadingExpressionIsMultiline (sepOpenTFor lpr -- "fun " +> col sepSpace pats (genPat astContext) - +> (fun ctx -> genArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) (arrowRange ctx) ctx) + +> genLambdaArrowWithTrivia (genExprKeepIndentInBranch astContext bodyExpr) arrowRange |> genTriviaFor SynExpr_Lambda lambdaRange) (fun isMultiline -> onlyIf isMultiline sepNln +> sepCloseTFor rpr pr) |> genTriviaFor SynExpr_Paren pr @@ -4747,9 +4658,7 @@ and genInterfaceImpl astContext (InterfaceImpl (t, bs, range)) = bs +> unindent -and genClause astContext hasBar (Clause (p, e, eo) as ce) = - let arrowRange (ctx: Context) = ctx.MkRange p.Range.End e.Range.Start - +and genClause astContext hasBar (Clause (p, eo, arrowRange, e) as ce) = let astCtx = { astContext with IsInsideMatchClausePattern = true } @@ -4782,13 +4691,21 @@ and genClause astContext hasBar (Clause (p, e, eo) as ce) = if isMultiline then (indent +> sepNln - +> tokN (arrowRange ctx) RARROW sepArrowFixed + +> optSingle + (fun arrowRange -> + sepArrowFixed + |> genTriviaFor SynMatchClause_Arrow arrowRange) + arrowRange +> sepNln +> genExpr astContext e +> unindent) ctx else - (tokN (arrowRange ctx) RARROW sepArrow + (optSingle + (fun arrowRange -> + sepArrow + |> genTriviaFor SynMatchClause_Arrow arrowRange) + arrowRange +> autoIndentAndNlnIfExpressionExceedsPageWidth (genExpr astContext e)) ctx) @@ -5709,38 +5626,53 @@ and genKeepIndentMatch genLastClauseKeepIdent astContext) |> genTriviaFor triviaType matchRange -and genLastClauseKeepIdent (astContext: ASTContext) (Clause (pat, expr, whenExpr)) = +and genLastClauseKeepIdent (astContext: ASTContext) (Clause (pat, whenExpr, arrowRange, expr)) = sepBar +> genPat astContext pat +> sepSpace +> optSingle (genExpr astContext) whenExpr - +> (fun ctx -> - let arrowRange = - ctx.MkRange pat.Range.End expr.Range.Start - - tokN arrowRange FsTokenType.RARROW sepArrowFixed ctx) + +> optSingle + (fun arrowRange -> + sepArrowFixed + |> genTriviaFor SynMatchClause_Arrow arrowRange) + arrowRange +> sepNln +> (let t, r = synExprToFsAstType expr in sepNlnConsideringTriviaContentBeforeForMainNode t r) +> genExprKeepIndentInBranch astContext expr and genKeepIdentIf (astContext: ASTContext) - (branches: (SynExpr * SynExpr * Range * Range * SynExpr) list) + (branches: (range option * range * bool * SynExpr * range * SynExpr) list) (elseExpr: SynExpr) (ifElseRange: Range) = - coli + col sepNln branches - (fun idx (ifExpr, thenExpr, _r, _fullRange, _node) -> + (fun (elseKw, ifKw, isElif, ifExpr, thenKw, thenExpr) -> let genIf = + let genKeywordStart = + optSingle + (fun r -> + !- "else " + |> genTriviaFor SynExpr_IfThenElse_Else r) + elseKw + +> (ifElse isElif (!- "elif ") (!- "if ") + |> genTriviaFor + (if isElif then + SynExpr_IfThenElse_Elif + else + SynExpr_IfThenElse_If) + ifKw) + let short = - ifElse (idx = 0) (!- "if ") (!- "elif ") + genKeywordStart +> genExpr astContext ifExpr - +> !- " then" + +> (!- " then" + |> genTriviaFor SynExpr_IfThenElse_Then thenKw) let long = - ifElse (idx = 0) (!- "if ") (!- "elif ") + genKeywordStart +> genExprInIfOrMatch astContext ifExpr +> sepSpace +> !- "then" @@ -5929,6 +5861,18 @@ and genTriviaFor (mainNodeName: FsAstType) (range: Range) f ctx = +> leaveNodeFor mainNodeName range) ctx +and genLambdaArrowWithTrivia (bodyExpr: Context -> Context) (arrowRange: Range option) = + optSingle + (fun arrowRange -> + sepArrow + |> genTriviaFor SynExpr_Lambda_Arrow arrowRange) + arrowRange + +> (fun ctx -> + if String.isNotNullOrEmpty ctx.WriterModel.WriteBeforeNewline then + (indent +> sepNln +> bodyExpr +> unindent) ctx + else + (autoIndentAndNlnIfExpressionExceedsPageWidth bodyExpr) ctx) + and infixOperatorFromTrivia range fallback (ctx: Context) = // by specs, section 3.4 https://fsharp.org/specs/language-spec/4.1/FSharpSpec-4.1-latest.pdf#page=24&zoom=auto,-137,312 let validIdentRegex = diff --git a/src/Fantomas/SourceParser.fs b/src/Fantomas/SourceParser.fs index 8b6ff786fd..22ae860276 100644 --- a/src/Fantomas/SourceParser.fs +++ b/src/Fantomas/SourceParser.fs @@ -33,8 +33,10 @@ let (|Ident|) (s: Ident) = match ident with | "`global`" -> "global" - | "_" -> "_" // workaround for https://github.com/dotnet/fsharp/issues/7681 - | _ -> QuoteIdentifierIfNeeded ident + | "not" -> "not" + | "params" -> "``params``" + | "parallel" -> "``parallel``" + | _ -> PrettyNaming.AddBackticksToIdentifierIfNeeded ident let (|LongIdent|) (li: LongIdent) = li @@ -670,34 +672,28 @@ let (|SimpleExpr|_|) = | SynExpr.Const _ as e -> Some e | _ -> None -/// Only recognize numbers; strings are ignored -let rec (|SequentialSimple|_|) = +let (|ComputationExpr|_|) = function - | Sequential (SimpleExpr e, SequentialSimple es, true) -> Some(e :: es) - | Sequential (SimpleExpr e1, SimpleExpr e2, true) -> Some [ e1; e2 ] + | SynExpr.ComputationExpr (_, expr, range) -> Some(expr, range) | _ -> None -let (|CompExpr|_|) = +// seq { expr } +let (|NamedComputationExpr|_|) = function - | SynExpr.CompExpr (isArray, _, expr, _) -> Some(isArray, expr) - | _ -> None - -let isCompExpr = - function - | CompExpr _ -> true - | _ -> false - -let (|ArrayOrListOfSeqExpr|_|) = - function - | SynExpr.ArrayOrListOfSeqExpr (isArray, expr, _) -> Some(isArray, expr) + | SynExpr.App (ExprAtomicFlag.NonAtomic, + false, + (SynExpr.App _ as nameExpr + | SimpleExpr nameExpr), + ComputationExpr (compExpr, bodyRange), + _) -> Some(nameExpr, compExpr, bodyRange) | _ -> None -/// This pattern only includes arrays and lists in computation expressions +/// Combines all ArrayOrList patterns let (|ArrayOrList|_|) = function - | ArrayOrListOfSeqExpr (isArray, CompExpr (_, SequentialSimple xs)) -> Some(isArray, xs, true) - | SynExpr.ArrayOrList (isArray, xs, _) - | ArrayOrListOfSeqExpr (isArray, CompExpr (_, Sequentials xs)) -> Some(isArray, xs, false) + | SynExpr.ArrayOrListComputed (isArray, Sequentials xs, _) -> Some(isArray, xs) + | SynExpr.ArrayOrListComputed (isArray, singleExpr, _) -> Some(isArray, [ singleExpr ]) + | SynExpr.ArrayOrList (isArray, xs, _) -> Some(isArray, xs) | _ -> None let (|Tuple|_|) = @@ -718,10 +714,20 @@ let (|IndexedVar|_|) = | SynExpr.LongIdent (_, LongIdentWithDots "Microsoft.FSharp.Core.None", _, _) -> Some None | _ -> None -let (|Indexer|) = +let (|InterpolatedStringExpr|_|) = + function + | SynExpr.InterpolatedString (parts, stringKind, _) -> Some(parts, stringKind) + | _ -> None + +let (|IndexRangeExpr|_|) = + function + | SynExpr.IndexRange (expr1, _, expr2, _, _, _) -> Some(expr1, expr2) + | _ -> None + +let (|IndexFromEndExpr|_|) = function - | SynIndexerArg.Two (e1, e1FromEnd, e2, e2FromEnd, _, _) -> Pair((e1, e1FromEnd), (e2, e2FromEnd)) - | SynIndexerArg.One (e, fromEnd, _) -> Single(e, fromEnd) + | SynExpr.IndexFromEnd (e, _r) -> Some e + | _ -> None let (|OptVar|_|) = function @@ -849,6 +855,14 @@ let (|TernaryApp|_|) = | SynExpr.App (_, _, SynExpr.App (_, _, SynExpr.App (_, true, Var "?<-", e1, _), e2, _), e3, _) -> Some(e1, e2, e3) | _ -> None +// expr1[expr2] +// ref: https://github.com/fsharp/fslang-design/blob/main/FSharp-6.0/FS-1110-index-syntax.md +let (|IndexWithoutDotExpr|_|) = + function + | SynExpr.App (ExprAtomicFlag.Atomic, false, identifierExpr, SynExpr.ArrayOrListComputed (false, indexExpr, _), _) -> + Some(identifierExpr, indexExpr) + | _ -> None + let (|MatchLambda|_|) = function | SynExpr.MatchLambda (_, keywordRange, pats, _, _) -> Some(keywordRange, pats) @@ -966,7 +980,7 @@ let (|ForEach|_|) = let (|DotIndexedSet|_|) = function - | SynExpr.DotIndexedSet (e1, es, e2, _, _, _) -> Some(e1, es, e2) + | SynExpr.DotIndexedSet (objectExpr, indexArgs, valueExpr, _, _, _) -> Some(objectExpr, indexArgs, valueExpr) | _ -> None let (|NamedIndexedPropertySet|_|) = @@ -981,7 +995,7 @@ let (|DotNamedIndexedPropertySet|_|) = let (|DotIndexedGet|_|) = function - | SynExpr.DotIndexedGet (e1, es, _, _) -> Some(e1, es) + | SynExpr.DotIndexedGet (objectExpr, indexArgs, _, _) -> Some(objectExpr, indexArgs) | _ -> None let (|DotGet|_|) = @@ -1029,14 +1043,32 @@ let (|DotSet|_|) = let (|IfThenElse|_|) = function - | SynExpr.IfThenElse (e1, e2, e3, _, _, mIfToThen, _) -> Some(e1, e2, e3, mIfToThen) + | SynExpr.IfThenElse _ as e -> Some e | _ -> None let rec (|ElIf|_|) = function - | SynExpr.IfThenElse (e1, e2, Some (ElIf (es, e3)), _, _, r, fullRange) as node -> - Some((e1, e2, r, fullRange, node) :: es, e3) - | SynExpr.IfThenElse (e1, e2, e3, _, _, r, fullRange) as node -> Some([ (e1, e2, r, fullRange, node) ], e3) + | SynExpr.IfThenElse (ifKw, + isElif, + e1, + thenKw, + e2, + elseKw, + Some (ElIf ((_, eshIfKw, eshIsElif, eshE1, eshThenKw, eshE2) :: es, elseInfo, _)), + _, + _, + _, + range) -> + Some( + ((None, ifKw, isElif, e1, thenKw, e2) + :: (elseKw, eshIfKw, eshIsElif, eshE1, eshThenKw, eshE2) + :: es), + elseInfo, + range + ) + + | SynExpr.IfThenElse (ifKw, isElif, e1, thenKw, e2, elseKw, e3, _, _, _, range) -> + Some([ (None, ifKw, isElif, e1, thenKw, e2) ], (elseKw, e3), range) | _ -> None let (|Record|_|) = @@ -1248,17 +1280,17 @@ let (|RecordField|) = function | SynField (ats, _, ido, _, _, px, ao, _) -> (ats, px, ao, Option.map (|Ident|) ido) -let (|Clause|) (SynMatchClause (p, eo, e, _, _)) = (p, e, eo) +let (|Clause|) (SynMatchClause (p, eo, arrowRange, e, _, _)) = (p, eo, arrowRange, e) /// Process compiler-generated matches in an appropriate way let rec private skipGeneratedLambdas expr = match expr with - | SynExpr.Lambda (_, true, _, bodyExpr, _, _) -> skipGeneratedLambdas bodyExpr + | SynExpr.Lambda (_, true, _, _, bodyExpr, _, _) -> skipGeneratedLambdas bodyExpr | _ -> expr and skipGeneratedMatch expr = match expr with - | SynExpr.Match (_, _, [ SynMatchClause.SynMatchClause (_, _, innerExpr, _, _) as clause ], matchRange) when + | SynExpr.Match (_, _, [ SynMatchClause.SynMatchClause (_, _, _, innerExpr, _, _) as clause ], matchRange) when matchRange.Start = clause.Range.Start -> skipGeneratedMatch innerExpr @@ -1266,12 +1298,12 @@ and skipGeneratedMatch expr = let (|Lambda|_|) = function - | SynExpr.Lambda (_, _, _, _, Some (pats, body), range) -> + | SynExpr.Lambda (_, _, _, arrowRange, _, Some (pats, body), range) -> let inline getLambdaBodyExpr expr = let skippedLambdas = skipGeneratedLambdas expr skipGeneratedMatch skippedLambdas - Some(pats, getLambdaBodyExpr body, range) + Some(pats, arrowRange, getLambdaBodyExpr body, range) | _ -> None let (|AppWithLambda|_|) (e: SynExpr) = @@ -1280,8 +1312,8 @@ let (|AppWithLambda|_|) (e: SynExpr) = let rec visit (es: SynExpr list) (finalContinuation: SynExpr list -> SynExpr list) = match es with | [] -> None - | [ Paren (lpr, Lambda (pats, body, range), rpr, pr) ] -> - Some(e, finalContinuation [], lpr, (Choice1Of2(pats, body, range)), rpr, pr) + | [ Paren (lpr, Lambda (pats, arrowRange, body, range), rpr, pr) ] -> + Some(e, finalContinuation [], lpr, (Choice1Of2(pats, arrowRange, body, range)), rpr, pr) | [ Paren (lpr, (MatchLambda (keywordRange, pats) as me), rpr, pr) ] -> Some(e, finalContinuation [], lpr, (Choice2Of2(keywordRange, pats, me.Range)), rpr, pr) | h :: tail -> @@ -1630,17 +1662,9 @@ let isFunctionBinding (p: SynPat) = let (|ElmishReactWithoutChildren|_|) e = match e with - | SynExpr.App (_, - false, - OptVar (ident, _, _), - (ArrayOrList (isArray, children, _) - | ArrayOrListOfSeqExpr (isArray, CompExpr (_, Sequentials children)) as aolEx), - _) -> Some(ident, isArray, children, aolEx.Range) - | SynExpr.App (_, - false, - OptVar (ident, _, _), - (ArrayOrListOfSeqExpr (isArray, CompExpr (_, singleChild)) as aolEx), - _) -> Some(ident, isArray, [ singleChild ], aolEx.Range) + | IndexWithoutDotExpr _ -> None + | SynExpr.App (_, false, OptVar (ident, _, _), (ArrayOrList (isArray, children) as aolEx), _) -> + Some(ident, isArray, children, aolEx.Range) | _ -> None let (|ElmishReactWithChildren|_|) (e: SynExpr) = @@ -1648,36 +1672,16 @@ let (|ElmishReactWithChildren|_|) (e: SynExpr) = | SynExpr.App (_, false, SynExpr.App (_, false, OptVar ident, (ArrayOrList _ as attributes), _), - (ArrayOrList (isArray, children, _) as childrenNode), + (ArrayOrList (isArray, children) as childrenNode), _) -> Some(ident, attributes, (isArray, children, childrenNode.Range)) - | SynExpr.App (_, - false, - SynExpr.App (_, false, OptVar ident, (ArrayOrListOfSeqExpr _ as attributes), _), - (ArrayOrListOfSeqExpr (isArray, CompExpr (_, Sequentials children)) as childrenNode), - _) -> Some(ident, attributes, (isArray, children, childrenNode.Range)) - | SynExpr.App (_, - false, - SynExpr.App (_, - false, - OptVar ident, - ((ArrayOrListOfSeqExpr _ - | ArrayOrList _) as attributes), - _), - (ArrayOrListOfSeqExpr (isArray, CompExpr (_, singleChild)) as childrenNode), - _) -> Some(ident, attributes, (isArray, [ singleChild ], childrenNode.Range)) - | SynExpr.App (_, - false, - SynExpr.App (_, false, OptVar ident, (ArrayOrListOfSeqExpr _ as attributes), _), - (ArrayOrList (isArray, [], _) as childrenNode), - _) -> Some(ident, attributes, (isArray, [], childrenNode.Range)) | _ -> None let isIfThenElseWithYieldReturn e = match e with - | SynExpr.IfThenElse (_, SynExpr.YieldOrReturn _, None, _, _, _, _) - | SynExpr.IfThenElse (_, SynExpr.YieldOrReturn _, Some (SynExpr.YieldOrReturn _), _, _, _, _) - | SynExpr.IfThenElse (_, SynExpr.YieldOrReturnFrom _, None, _, _, _, _) - | SynExpr.IfThenElse (_, SynExpr.YieldOrReturn _, Some (SynExpr.YieldOrReturnFrom _), _, _, _, _) -> true + | SynExpr.IfThenElse (thenExpr = SynExpr.YieldOrReturn _; elseExpr = None) + | SynExpr.IfThenElse (thenExpr = SynExpr.YieldOrReturn _; elseExpr = Some (SynExpr.YieldOrReturn _)) + | SynExpr.IfThenElse (thenExpr = SynExpr.YieldOrReturnFrom _; elseExpr = None) + | SynExpr.IfThenElse (thenExpr = SynExpr.YieldOrReturn _; elseExpr = Some (SynExpr.YieldOrReturnFrom _)) -> true | _ -> false let isSynExprLambda = @@ -1728,7 +1732,7 @@ let (|KeepIndentMatch|_|) (e: SynExpr) = let mapClauses matchExpr clauses range t = match clauses with | [] -> None - | [ (Clause (_, lastClause, _)) ] -> + | [ (Clause (_, _, _, lastClause)) ] -> if shouldNotIndentBranch lastClause [] then Some(matchExpr, clauses, range, t) else @@ -1737,9 +1741,9 @@ let (|KeepIndentMatch|_|) (e: SynExpr) = let firstClauses = clauses |> List.take (clauses.Length - 1) - |> List.map (fun (Clause (_, expr, _)) -> expr) + |> List.map (fun (Clause (_, _, _, expr)) -> expr) - let (Clause (_, lastClause, _)) = List.last clauses + let (Clause (_, _, _, lastClause)) = List.last clauses if shouldNotIndentBranch lastClause firstClauses then Some(matchExpr, clauses, range, t) @@ -1753,9 +1757,9 @@ let (|KeepIndentMatch|_|) (e: SynExpr) = let (|KeepIndentIfThenElse|_|) (e: SynExpr) = match e with - | ElIf (branches, Some elseExpr) -> + | ElIf (branches, (_, Some elseExpr), _) -> let branchBodies = - branches |> List.map (fun (_, e, _, _, _) -> e) + branches |> List.map (fun (_, _, _, e, _, _) -> e) if shouldNotIndentBranch elseExpr branchBodies then Some(branches, elseExpr, e.Range) diff --git a/src/Fantomas/SourceTransformer.fs b/src/Fantomas/SourceTransformer.fs index 387ba7bf1c..752d9a8dc4 100644 --- a/src/Fantomas/SourceTransformer.fs +++ b/src/Fantomas/SourceTransformer.fs @@ -202,7 +202,7 @@ let rec synExprToFsAstType (expr: SynExpr) : FsAstType * Range = | SynExpr.DoBang _ -> SynExpr_DoBang, expr.Range | SynExpr.Paren _ -> SynExpr_Paren, expr.Range | SynExpr.AnonRecd _ -> SynExpr_AnonRecd, expr.Range - | SynExpr.ArrayOrListOfSeqExpr _ -> SynExpr_ArrayOrListOfSeqExpr, expr.Range + | SynExpr.ArrayOrListComputed _ -> SynExpr_ArrayOrListComputed, expr.Range | SynExpr.LongIdentSet _ -> SynExpr_LongIdentSet, expr.Range | SynExpr.New _ -> SynExpr_New, expr.Range | SynExpr.Quote _ -> SynExpr_Quote, expr.Range @@ -226,7 +226,7 @@ let rec synExprToFsAstType (expr: SynExpr) : FsAstType * Range = | SynExpr.ObjExpr _ -> SynExpr_ObjExpr, expr.Range | SynExpr.For _ -> SynExpr_For, expr.Range | SynExpr.ForEach _ -> SynExpr_ForEach, expr.Range - | SynExpr.CompExpr (_, _, e, _) -> synExprToFsAstType e + | SynExpr.ComputationExpr (_, e, _) -> synExprToFsAstType e | SynExpr.MatchLambda _ -> SynExpr_MatchLambda, expr.Range | SynExpr.Assert _ -> SynExpr_Assert, expr.Range | SynExpr.TypeApp _ -> SynExpr_TypeApp, expr.Range @@ -259,6 +259,8 @@ let rec synExprToFsAstType (expr: SynExpr) : FsAstType * Range = | SynExpr.Fixed _ -> SynExpr_Fixed, expr.Range | SynExpr.InterpolatedString _ -> SynExpr_InterpolatedString, expr.Range | SynExpr.Sequential (_, _, e, _, _) -> synExprToFsAstType e + | SynExpr.IndexRange _ -> SynExpr_IndexRange, expr.Range + | SynExpr.IndexFromEnd _ -> SynExpr_IndexFromEnd, expr.Range let synModuleSigDeclToFsAstType = function diff --git a/src/Fantomas/TokenParser.fs b/src/Fantomas/TokenParser.fs index 82e540a29e..3a63ef1f88 100644 --- a/src/Fantomas/TokenParser.fs +++ b/src/Fantomas/TokenParser.fs @@ -475,11 +475,7 @@ let private getContentFromTokens tokens = |> String.concat String.Empty let private keywordTrivia = - [ "IF" - "ELIF" - "ELSE" - "THEN" - "OVERRIDE" + [ "OVERRIDE" "MEMBER" "DEFAULT" "ABSTRACT" @@ -1175,12 +1171,7 @@ let private tokenNames = "LBRACK_BAR" "BAR_RBRACK" "EQUALS" - "IF" - "THEN" - "ELSE" - "ELIF" "BAR" - "RARROW" "TRY" "FINALLY" "WITH" @@ -1234,7 +1225,6 @@ let internal getFsToken tokenName = | "PREFIX_OP" -> PREFIX_OP | "QMARK" -> QMARK | "QMARK_QMARK" -> QMARK_QMARK - | "RARROW" -> RARROW | "RBRACE" -> RBRACE | "RBRACK" -> RBRACK | "RPAREN" -> RPAREN diff --git a/src/Fantomas/TriviaContext.fs b/src/Fantomas/TriviaContext.fs index d05d526a9c..0acd71bdac 100644 --- a/src/Fantomas/TriviaContext.fs +++ b/src/Fantomas/TriviaContext.fs @@ -15,48 +15,6 @@ let sepOpenTFor r = tokN r LPAREN sepOpenT let sepCloseTFor rpr pr = tokN (Option.defaultValue pr rpr) RPAREN sepCloseT -let genArrowWithTrivia (bodyExpr: Context -> Context) (range: Range) = - (tokN range RARROW sepArrow) - +> (fun ctx -> - if String.isNotNullOrEmpty ctx.WriterModel.WriteBeforeNewline then - (indent +> sepNln +> bodyExpr +> unindent) ctx - else - (autoIndentAndNlnIfExpressionExceedsPageWidth bodyExpr) ctx) - -let ``else if / elif`` (rangeOfIfThenElse: Range) (ctx: Context) = - let keywords = - [ yield! (Map.tryFindOrEmptyList ELSE ctx.TriviaTokenNodes) - yield! (Map.tryFindOrEmptyList IF ctx.TriviaTokenNodes) - yield! (Map.tryFindOrEmptyList ELIF ctx.TriviaTokenNodes) ] - |> List.sortBy (fun tn -> tn.Range.StartLine, tn.Range.StartColumn) - |> TriviaHelpers.``keyword token inside range`` rangeOfIfThenElse - |> List.map (fun (tok, t) -> (TokenParser.getFsToken tok.TokenInfo.TokenName, t)) - - let resultExpr = - match keywords with - | (ELSE, elseTrivia) :: (IF, ifTrivia) :: _ -> - printContentBefore elseTrivia - +> (!- "else") - +> printContentAfter elseTrivia - +> sepNlnWhenWriteBeforeNewlineNotEmpty sepSpace - +> printContentBefore ifTrivia - +> (!- "if ") - +> printContentAfter ifTrivia - | (ELIF, elifTok) :: _ - | [ (ELIF, elifTok) ] -> - printContentBefore elifTok - +> (!- "elif ") - +> printContentAfter elifTok - | [] -> - // formatting from AST - !- "else if " - | _ -> - failwithf - "Unexpected scenario when formatting else if / elif (near %A), please open an issue via https://fsprojects.github.io/fantomas-tools/#/fantomas/preview" - rangeOfIfThenElse - - resultExpr ctx - let getIndentBetweenTicksFromSynPat patRange fallback ctx = TriviaHelpers.getNodesForTypes [ SynPat_LongIdent; SynPat_Named ] ctx.TriviaMainNodes |> List.choose diff --git a/src/Fantomas/TriviaTypes.fs b/src/Fantomas/TriviaTypes.fs index 815484d94c..b4ef4445f7 100644 --- a/src/Fantomas/TriviaTypes.fs +++ b/src/Fantomas/TriviaTypes.fs @@ -46,7 +46,6 @@ type FsTokenType = | PREFIX_OP | QMARK | QMARK_QMARK - | RARROW | RBRACE | RBRACK | RPAREN @@ -128,10 +127,11 @@ type FsAstType = | SynExpr_While | SynExpr_For | SynExpr_ForEach - | SynExpr_ArrayOrListOfSeqExpr + | SynExpr_ArrayOrListComputed | SynExpr_ArrayOrList - // | SynExpr_CompExpr use first nested SynExpr + // | SynExpr_ComputationExpr use first nested SynExpr | SynExpr_Lambda + | SynExpr_Lambda_Arrow | SynExpr_MatchLambda | SynExpr_MatchLambda_Function | SynExpr_Match @@ -146,6 +146,10 @@ type FsAstType = // | SynExpr_Sequential use first nested SynExpr | SynExpr_SequentialOrImplicitYield | SynExpr_IfThenElse + | SynExpr_IfThenElse_If + | SynExpr_IfThenElse_Elif + | SynExpr_IfThenElse_Then + | SynExpr_IfThenElse_Else | SynExpr_Ident | SynExpr_LongIdent | SynExpr_LongIdentSet @@ -180,6 +184,8 @@ type FsAstType = | SynExpr_DiscardAfterMissingQualificationAfterDot | SynExpr_Fixed | SynExpr_InterpolatedString + | SynExpr_IndexRange + | SynExpr_IndexFromEnd | SynInterpolatedStringPart_String | SynInterpolatedStringPart_FillExpr | RecordField_ @@ -193,6 +199,7 @@ type FsAstType = | SynIndexerArg_One | SynIndexerArg_Two | SynMatchClause_ + | SynMatchClause_Arrow | ArgOptions_ | SynInterfaceImpl_ | SynTypeDefn_ From e4a18aa21c5ca96053c720770e55cfd6f185b649 Mon Sep 17 00:00:00 2001 From: nojaf Date: Wed, 27 Oct 2021 22:40:05 +0200 Subject: [PATCH 11/12] Add release notes for 4.6.0-alpha-005. --- RELEASE_NOTES.md | 5 +++ build.fsx | 38 +++++++++++-------- .../Fantomas.CoreGlobalTool.Tests.fsproj | 2 +- .../Fantomas.CoreGlobalTool.fsproj | 2 +- src/Fantomas.Extras/Fantomas.Extras.fsproj | 2 +- src/Fantomas.Tests/Fantomas.Tests.fsproj | 2 +- src/Fantomas/Fantomas.fsproj | 2 +- 7 files changed, 32 insertions(+), 21 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 01a6b64df1..75338d13f7 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,8 @@ +#### 4.6.0-alpha-005 + +* Fix Idempotency problem when destructing a record inside a lambda argument. [#1922](https://github.com/fsprojects/fantomas/issues/1922) +* Update FCS to 41.0.0-preview.21472.3 [#1927](https://github.com/fsprojects/fantomas/pull/1927) + #### 4.6.0-alpha-004 * Initial Fantomas.Client release. diff --git a/build.fsx b/build.fsx index 72af1fc684..4cf22aa748 100644 --- a/build.fsx +++ b/build.fsx @@ -365,25 +365,31 @@ Target.create "TestExternalProjects" (fun _ -> testExternalProjects externalProj Target.create "TestExternalProjectsFailing" (fun _ -> testExternalProjects externalProjectsToTestFailing) // Workaround for https://github.com/fsharp/FAKE/issues/2242 -let pushPackage additionalArguments = - Directory.EnumerateFiles("bin", "*.nupkg", SearchOption.TopDirectoryOnly) - |> Seq.iter - (fun nupkg -> - let args = - [ yield "push" - yield! additionalArguments - yield nupkg ] +let pushPackage nupkg = + let args = [ yield "push"; yield nupkg ] + + CreateProcess.fromRawCommand "dotnet" ("paket" :: args) + |> CreateProcess.disableTraceCommand + |> CreateProcess.redirectOutput + |> CreateProcess.withOutputEventsNotNull Trace.trace Trace.traceError + |> CreateProcess.ensureExitCode + |> Proc.run + |> ignore - CreateProcess.fromRawCommand "dotnet" ("paket" :: args) - |> CreateProcess.disableTraceCommand - |> CreateProcess.redirectOutput - |> CreateProcess.withOutputEventsNotNull Trace.trace Trace.traceError - |> CreateProcess.ensureExitCode - |> Proc.run - |> ignore) +Target.create + "Push" + (fun _ -> + Directory.EnumerateFiles("bin", "*.nupkg", SearchOption.TopDirectoryOnly) + |> Seq.filter (fun nupkg -> not (nupkg.Contains("Fantomas.Client"))) + |> Seq.iter pushPackage) -Target.create "Push" (fun _ -> pushPackage []) +Target.create + "PushClient" + (fun _ -> + Directory.EnumerateFiles("bin", "Fantomas.Client.*.nupkg", SearchOption.TopDirectoryOnly) + |> Seq.tryExactlyOne + |> Option.iter pushPackage) let git command = CreateProcess.fromRawCommandLine "git" command diff --git a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj index 87aa6917c7..6824090ab6 100644 --- a/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj +++ b/src/Fantomas.CoreGlobalTool.Tests/Fantomas.CoreGlobalTool.Tests.fsproj @@ -4,7 +4,7 @@ net5.0 false false - 4.6.0-alpha-004 + 4.6.0-alpha-005 FS0988 FS0025 diff --git a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj index 35d2afe97a..5a5ff5d517 100644 --- a/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj +++ b/src/Fantomas.CoreGlobalTool/Fantomas.CoreGlobalTool.fsproj @@ -8,7 +8,7 @@ Major fantomas True - 4.6.0-alpha-004 + 4.6.0-alpha-005 fantomas-tool FS0025 LICENSE.md diff --git a/src/Fantomas.Extras/Fantomas.Extras.fsproj b/src/Fantomas.Extras/Fantomas.Extras.fsproj index c56fe36682..eaff754391 100644 --- a/src/Fantomas.Extras/Fantomas.Extras.fsproj +++ b/src/Fantomas.Extras/Fantomas.Extras.fsproj @@ -2,7 +2,7 @@ netstandard2.0 - 4.6.0-alpha-004 + 4.6.0-alpha-005 Utility package for Fantomas FS0025 LICENSE.md diff --git a/src/Fantomas.Tests/Fantomas.Tests.fsproj b/src/Fantomas.Tests/Fantomas.Tests.fsproj index 7eb4630a05..81a2fa3851 100644 --- a/src/Fantomas.Tests/Fantomas.Tests.fsproj +++ b/src/Fantomas.Tests/Fantomas.Tests.fsproj @@ -1,6 +1,6 @@ - 4.6.0-alpha-004 + 4.6.0-alpha-005 FS0988 net5.0 FS0025 diff --git a/src/Fantomas/Fantomas.fsproj b/src/Fantomas/Fantomas.fsproj index 58446356fa..9728a52f9a 100644 --- a/src/Fantomas/Fantomas.fsproj +++ b/src/Fantomas/Fantomas.fsproj @@ -2,7 +2,7 @@ netstandard2.0 - 4.6.0-alpha-004 + 4.6.0-alpha-005 Source code formatter for F# FS0025 LICENSE.md From d460b53492f968fbb30e7197811aaab78ea40006 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Sun, 31 Oct 2021 20:59:42 +0000 Subject: [PATCH 12/12] integrate to 4.6! --- docs/Documentation.md | 9 ++- fantomas.sln | 33 +++++--- ...nkLinesAroundNestedMultilineExpressions.fs | 6 +- src/Fantomas.Tests/CastTests.fs | 10 +-- src/Fantomas.Tests/ClassTests.fs | 10 +-- src/Fantomas.Tests/CompilerDirectivesTests.fs | 4 +- .../ComputationExpressionTests.fs | 36 ++++----- src/Fantomas.Tests/ControlStructureTests.fs | 13 +-- src/Fantomas.Tests/DisableElmishTests.fs | 3 +- src/Fantomas.Tests/DotGetTests.fs | 3 +- src/Fantomas.Tests/ElmishTests.fs | 6 +- src/Fantomas.Tests/FunctionDefinitionTests.fs | 20 ++--- src/Fantomas.Tests/InterpolatedStringTests.fs | 3 +- src/Fantomas.Tests/KeepIndentInBranchTests.fs | 20 ++--- src/Fantomas.Tests/LambdaTests.fs | 11 +-- src/Fantomas.Tests/LetBindingTests.fs | 37 +++------ .../MaxValueBindingWidthTests.fs | 20 ++++- ...ApplicationsInConditionExpressionsTests.fs | 3 +- .../NumberOfItemsListOrArrayTests.fs | 17 ++-- .../NumberOfItemsRecordTests.fs | 24 ++---- src/Fantomas.Tests/OperatorTests.fs | 3 +- src/Fantomas.Tests/PatternMatchingTests.fs | 13 +-- src/Fantomas.Tests/RecordTests.fs | 3 +- src/Fantomas.Tests/StringTests.fs | 6 +- src/Fantomas.Tests/SynConstTests.fs | 4 +- src/Fantomas.Tests/TupleTests.fs | 3 +- src/Fantomas.Tests/TypeDeclarationTests.fs | 13 +-- src/Fantomas.Tests/UnionTests.fs | 6 +- src/Fantomas/CodePrinter.fs | 79 ++++++++++--------- src/Fantomas/FormatConfig.fs | 2 +- 30 files changed, 190 insertions(+), 230 deletions(-) diff --git a/docs/Documentation.md b/docs/Documentation.md index 3232ea3bf3..4b7d7b8120 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -115,7 +115,7 @@ fsharp_record_multiline_formatter=character_width fsharp_max_array_or_list_width=40 fsharp_max_array_or_list_number_of_items=1 fsharp_array_or_list_multiline_formatter=character_width -fsharp_max_value_binding_width=40 +fsharp_max_value_binding_width=80 fsharp_max_function_binding_width=40 fsharp_max_dot_get_expression_width=50 fsharp_multiline_block_brackets_on_same_column=false @@ -704,8 +704,9 @@ let myArray = ### fsharp_max_value_binding_width -Control the maximum width for which let and member value bindings should be in one line. -Default = 40. +Control the maximum expression width for which let and member value/property bindings should be in one line. +The width is that of the pattern for the binding plus the implementating expression but not the keywords (e.g. "let"). +Default = 80. `defaultConfig` @@ -729,7 +730,7 @@ type MyType() = ### fsharp_max_function_binding_width -Control the maximum width for which let and member function bindings should be in one line. +Control the maximum width for which function and member bindings should be in one line. Default = 40. `defaultConfig` diff --git a/fantomas.sln b/fantomas.sln index 6b6c0e6b00..6bd611d2eb 100644 --- a/fantomas.sln +++ b/fantomas.sln @@ -1,24 +1,32 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31825.309 MinimumVisualStudioVersion = 15.0.26124.0 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{B570C54C-2FEA-4A94-A8C5-FD4157A94DE7}" ProjectSection(SolutionItems) = preProject paket.dependencies = paket.dependencies EndProjectSection EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas", "src\Fantomas\Fantomas.fsproj", "{7EA16279-A5F1-4781-A343-4375A04BCE6F}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fantomas", "src\Fantomas\Fantomas.fsproj", "{7EA16279-A5F1-4781-A343-4375A04BCE6F}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Tests", "src\Fantomas.Tests\Fantomas.Tests.fsproj", "{DED76E41-B89F-47BA-84C5-3AB0BECFA767}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fantomas.Tests", "src\Fantomas.Tests\Fantomas.Tests.fsproj", "{DED76E41-B89F-47BA-84C5-3AB0BECFA767}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.CoreGlobalTool", "src\Fantomas.CoreGlobalTool\Fantomas.CoreGlobalTool.fsproj", "{DC08805B-C6E2-43F3-B381-E60EE88A079D}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fantomas.CoreGlobalTool", "src\Fantomas.CoreGlobalTool\Fantomas.CoreGlobalTool.fsproj", "{DC08805B-C6E2-43F3-B381-E60EE88A079D}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.CoreGlobalTool.Tests", "src\Fantomas.CoreGlobalTool.Tests\Fantomas.CoreGlobalTool.Tests.fsproj", "{DEDE6968-0BE8-4415-9262-8355B82AF2C0}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fantomas.CoreGlobalTool.Tests", "src\Fantomas.CoreGlobalTool.Tests\Fantomas.CoreGlobalTool.Tests.fsproj", "{DEDE6968-0BE8-4415-9262-8355B82AF2C0}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Benchmarks", "src\Fantomas.Benchmarks\Fantomas.Benchmarks.fsproj", "{B6BC63D5-410D-4DBB-9D45-5638F20BD09B}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fantomas.Benchmarks", "src\Fantomas.Benchmarks\Fantomas.Benchmarks.fsproj", "{B6BC63D5-410D-4DBB-9D45-5638F20BD09B}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Extras", "src\Fantomas.Extras\Fantomas.Extras.fsproj", "{4088FF76-1DB7-4E68-80FE-E851CE6701AC}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fantomas.Extras", "src\Fantomas.Extras\Fantomas.Extras.fsproj", "{4088FF76-1DB7-4E68-80FE-E851CE6701AC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{29F22904-C9E0-40AA-B971-9AE377C17F59}" + ProjectSection(SolutionItems) = preProject + docs\Documentation.md = docs\Documentation.md + docs\Formatting-Elmish-code.md = docs\Formatting-Elmish-code.md + docs\FormattingConventions.md = docs\FormattingConventions.md + docs\index.html = docs\index.html + EndProjectSection EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fantomas.Client", "src\Fantomas.Client\Fantomas.Client.fsproj", "{AA895F94-CCF2-4FCF-A9BB-E16987B57535}" EndProject @@ -31,9 +39,6 @@ Global Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {7EA16279-A5F1-4781-A343-4375A04BCE6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7EA16279-A5F1-4781-A343-4375A04BCE6F}.Debug|Any CPU.Build.0 = Debug|Any CPU @@ -120,6 +125,10 @@ Global {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|x86.ActiveCfg = Release|Any CPU {AA895F94-CCF2-4FCF-A9BB-E16987B57535}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection - GlobalSection(NestedProjects) = preSolution + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DEBFC920-A647-4859-890D-B59793D27594} EndGlobalSection EndGlobal diff --git a/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs b/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs index a39eacfbc6..1e593e9f78 100644 --- a/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs +++ b/src/Fantomas.Tests/BlankLinesAroundNestedMultilineExpressions.fs @@ -166,11 +166,9 @@ type MNIST ?targetTransform: Tensor -> Tensor ) = inherit Dataset() - let path = - Path.Combine(path, "mnist") |> Path.GetFullPath + let path = Path.Combine(path, "mnist") |> Path.GetFullPath let train = defaultArg train true - let transform = - defaultArg transform (fun t -> (t - 0.1307) / 0.3081) + let transform = defaultArg transform (fun t -> (t - 0.1307) / 0.3081) let targetTransform = defaultArg targetTransform id let urls = List.ofSeq diff --git a/src/Fantomas.Tests/CastTests.fs b/src/Fantomas.Tests/CastTests.fs index 535b5f0583..5e08392651 100644 --- a/src/Fantomas.Tests/CastTests.fs +++ b/src/Fantomas.Tests/CastTests.fs @@ -92,14 +92,11 @@ open System.Threading.Tasks open Amazon.Runtime let waitAndUpcast (x: Task<'t>) = - let t = - x |> Async.AwaitTask |> Async.RunSynchronously - + let t = x |> Async.AwaitTask |> Async.RunSynchronously x.Result :> AmazonWebServiceResponse let waitAndUpcast (x: Task<'t>) = - let t = - x |> Async.AwaitTask |> Async.RunSynchronously + let t = x |> Async.AwaitTask |> Async.RunSynchronously x.Result :> AmazonWebServiceResponse """ @@ -131,8 +128,7 @@ open System.Threading.Tasks open Amazon.Runtime let waitAndUpcast (x: Task<'t>) = - let t = - x |> Async.AwaitTask |> Async.RunSynchronously + let t = x |> Async.AwaitTask |> Async.RunSynchronously x.Result :?> AmazonWebServiceResponse """ diff --git a/src/Fantomas.Tests/ClassTests.fs b/src/Fantomas.Tests/ClassTests.fs index c30f7d81db..6bd64b43e5 100644 --- a/src/Fantomas.Tests/ClassTests.fs +++ b/src/Fantomas.Tests/ClassTests.fs @@ -339,8 +339,7 @@ let ``should keep parens in class inheritance in the right place`` () = class inherit DGMLClass() - let functions = - System.Collections.Generic.Dictionary() + let functions = System.Collections.Generic.Dictionary() end """ @@ -461,7 +460,9 @@ type T() = member __.Property = "hello" let longNamedFunlongNamedFunlongNamedFunlongNamedFunlongNamedFun (x: T) = x -let longNamedClasslongNamedClasslongNamedClasslongNamedClasslongNamedClasslongNamedClass = T() + +let longNamedClasslongNamedClasslongNamedClasslongNamedClasslongNamedClasslongNamedClass = + T() System.String.Concat( "a", @@ -751,8 +752,7 @@ indent_size=2 output |> should startWith (sprintf \"Processing %s\" fileFixture.Filename) - let result = - System.IO.File.ReadAllText(fileFixture.Filename) + let result = System.IO.File.ReadAllText(fileFixture.Filename) result |> should diff --git a/src/Fantomas.Tests/CompilerDirectivesTests.fs b/src/Fantomas.Tests/CompilerDirectivesTests.fs index e0d126a17d..ec548a080d 100644 --- a/src/Fantomas.Tests/CompilerDirectivesTests.fs +++ b/src/Fantomas.Tests/CompilerDirectivesTests.fs @@ -2336,9 +2336,7 @@ module ReactHookExtensions = type React with [] static member useDeferred(operation: Async<'T>, dependencies: obj array) = - let (deferred, setDeferred) = - React.useState (Deferred.HasNotStartedYet) - + let (deferred, setDeferred) = React.useState (Deferred.HasNotStartedYet) let token = React.useCancellationToken () let executeOperation = diff --git a/src/Fantomas.Tests/ComputationExpressionTests.fs b/src/Fantomas.Tests/ComputationExpressionTests.fs index 5a5e1d9caf..9fb8146540 100644 --- a/src/Fantomas.Tests/ComputationExpressionTests.fs +++ b/src/Fantomas.Tests/ComputationExpressionTests.fs @@ -338,8 +338,7 @@ let tests = equal """ [] -let tests = - testList "tests" [ test "test" { Expect.equal true true "unexpected" } ] +let tests = testList "tests" [ test "test" { Expect.equal true true "unexpected" } ] """ [] @@ -1020,10 +1019,7 @@ let ``let bang + let + return in ce`` () = let getEvents () = task { let! cosmoEvents = eventStore.GetEvents EventStream AllEvents - - let events = - List.map (fun (ce: EventRead) -> ce.Data) cosmoEvents - + let events = List.map (fun (ce: EventRead) -> ce.Data) cosmoEvents return events } """ @@ -1052,10 +1048,7 @@ task { .ConfigureAwait(false) parameters.IssuerSigningKeys <- config.SigningKeys - - let user, _ = - handler.ValidateToken((token: string), parameters) - + let user, _ = handler.ValidateToken((token: string), parameters) return Ok(user.Identity.Name, collectClaims user) } """ @@ -1271,8 +1264,7 @@ let helloMachine = handleOk sayHello } let root = - freyaRouter { - resource "/hello{/name}" helloMachine } + freyaRouter { resource "/hello{/name}" helloMachine } """ config |> prepend newline @@ -1310,8 +1302,7 @@ let helloMachine = handleOk sayHello } -let root = - freyaRouter { resource "/hello{/name}" helloMachine } +let root = freyaRouter { resource "/hello{/name}" helloMachine } """ [] @@ -1332,8 +1323,7 @@ promise { |> should equal """ -let resource = - promise { return new DisposableAction(fun () -> isDisposed := true) } +let resource = promise { return new DisposableAction(fun () -> isDisposed := true) } promise { use! r = resource @@ -1745,7 +1735,7 @@ let ``don't add extra newline before do bang`` () = do! webPushClient.SendNotificationAsync(ps, payload, vapidDetails) with :? WebPushException as wpex -> log.LogError(sprintf "Couldn't send notification to %s, %A" user.UserId wpex) - do! filterSubscriptionsAndPersist + do! filterSubscriptionsAndPersistLongLongLongLongLongLongLongLongLong managementToken user.UserId subscriptions @@ -1767,14 +1757,20 @@ let sendPushNotifications = |> List.map (fun s -> task { try - let ps = - PushSubscription(s.Endpoint, s.P256DH, s.Auth) + let ps = PushSubscription(s.Endpoint, s.P256DH, s.Auth) do! webPushClient.SendNotificationAsync(ps, payload, vapidDetails) with | :? WebPushException as wpex -> log.LogError(sprintf "Couldn't send notification to %s, %A" user.UserId wpex) - do! filterSubscriptionsAndPersist managementToken user.UserId subscriptions s.Origin s.Endpoint + + do! + filterSubscriptionsAndPersistLongLongLongLongLongLongLongLongLong + managementToken + user.UserId + subscriptions + s.Origin + s.Endpoint } :> Task) |> Task.WhenAll) diff --git a/src/Fantomas.Tests/ControlStructureTests.fs b/src/Fantomas.Tests/ControlStructureTests.fs index bcc0977bc5..5692152600 100644 --- a/src/Fantomas.Tests/ControlStructureTests.fs +++ b/src/Fantomas.Tests/ControlStructureTests.fs @@ -731,8 +731,7 @@ let foldi (folder: 'State -> int -> 'T -> 'State) (state: 'State) (array: 'T []) if array.Length = 0 then state else - let folder = - OptimizedClosures.FSharpFunc<_, _, _, _>.Adapt folder + let folder = OptimizedClosures.FSharpFunc<_, _, _, _>.Adapt folder let mutable state: 'State = state let len = array.Length @@ -921,9 +920,7 @@ with equal """ try - let defaultTime = - (DateTime.FromFileTimeUtc 0L).ToLocalTime() - + let defaultTime = (DateTime.FromFileTimeUtc 0L).ToLocalTime() foo.CreationTime <> defaultTime with // hmm @@ -950,8 +947,7 @@ with equal """ try - let defaultTime = - (DateTime.FromFileTimeUtc 0L).ToLocalTime() + let defaultTime = (DateTime.FromFileTimeUtc 0L).ToLocalTime() foo.CreationTime <> defaultTime with @@ -1087,8 +1083,7 @@ module Foo = // blah let exists = try - let defaultTime = - (DateTime.FromFileTimeUtc 0L).ToLocalTime () + let defaultTime = (DateTime.FromFileTimeUtc 0L).ToLocalTime () foo.CreationTime <> defaultTime with diff --git a/src/Fantomas.Tests/DisableElmishTests.fs b/src/Fantomas.Tests/DisableElmishTests.fs index 65acc2751b..904e089ff4 100644 --- a/src/Fantomas.Tests/DisableElmishTests.fs +++ b/src/Fantomas.Tests/DisableElmishTests.fs @@ -22,8 +22,7 @@ let v = |> should equal """ -let v = - someFunctionHere [ parameters ] [ yetMoreParameters ] :?> _ +let v = someFunctionHere [ parameters ] [ yetMoreParameters ] :?> _ """ [] diff --git a/src/Fantomas.Tests/DotGetTests.fs b/src/Fantomas.Tests/DotGetTests.fs index 664a7d653a..0697a88f07 100644 --- a/src/Fantomas.Tests/DotGetTests.fs +++ b/src/Fantomas.Tests/DotGetTests.fs @@ -167,8 +167,7 @@ module Services = ) .Resolve | Storage.EventStore (gateway, cache) -> - let accessStrategy = - Equinox.EventStore.AccessStrategy.RollingSnapshots snapshot + let accessStrategy = Equinox.EventStore.AccessStrategy.RollingSnapshots snapshot let cacheStrategy = Equinox.EventStore.CachingStrategy.SlidingWindow(cache, TimeSpan.FromMinutes 20.) diff --git a/src/Fantomas.Tests/ElmishTests.fs b/src/Fantomas.Tests/ElmishTests.fs index a9b377616e..5cde346cd4 100644 --- a/src/Fantomas.Tests/ElmishTests.fs +++ b/src/Fantomas.Tests/ElmishTests.fs @@ -365,8 +365,7 @@ let ``div with long children but a long setting`` () = |> should equal """ -let d = - div [] [ p [] [ str "fooooooooo" ]; p [] [ str "baaaaaaaar" ] ] +let d = div [] [ p [] [ str "fooooooooo" ]; p [] [ str "baaaaaaaar" ] ] """ // here the p is 38 characters @@ -1007,8 +1006,7 @@ let private useLocationDetail (auth0 : Auth0Hook) (roles : RolesHook) id = then auth0.getAccessTokenSilently () |> Promise.bind (fun authToken -> - let url = - sprintf "%s/users/%s" Common.backendUrl (location.Creator) + let url = sprintf "%s/users/%s" Common.backendUrl (location.Creator) fetch url diff --git a/src/Fantomas.Tests/FunctionDefinitionTests.fs b/src/Fantomas.Tests/FunctionDefinitionTests.fs index a2e590df65..1b549e86dc 100644 --- a/src/Fantomas.Tests/FunctionDefinitionTests.fs +++ b/src/Fantomas.Tests/FunctionDefinitionTests.fs @@ -627,12 +627,8 @@ module FormatCode = module FormatCode = let private format filename code config = - let checker = - Fantomas.FakeHelpers.sharedChecker.Force() - - let options = - Fantomas.FakeHelpers.createParsingOptionsFromFile filename - + let checker = Fantomas.FakeHelpers.sharedChecker.Force() + let options = Fantomas.FakeHelpers.createParsingOptionsFromFile filename let source = SourceOrigin.SourceString code CodeFormatter.FormatDocumentAsync("tmp.fsx", source, config, options, checker) @@ -668,12 +664,8 @@ module FormatCode = module FormatCode = let private format filename code config = - let checker = - Fantomas.FakeHelpers.sharedChecker.Force() - - let options = - Fantomas.FakeHelpers.createParsingOptionsFromFile filename - + let checker = Fantomas.FakeHelpers.sharedChecker.Force() + let options = Fantomas.FakeHelpers.createParsingOptionsFromFile filename let source = SourceOrigin.SourceString code CodeFormatter.FormatDocumentAsync("tmp.fsx", source, config, options, checker) @@ -978,9 +970,7 @@ module Infrastructure = #if DEBUG failwith message #else - let sentryEvent = - SentryEvent(SentryMessage message, Level = errorLevel) - + let sentryEvent = SentryEvent(SentryMessage message, Level = errorLevel) () #endif """ diff --git a/src/Fantomas.Tests/InterpolatedStringTests.fs b/src/Fantomas.Tests/InterpolatedStringTests.fs index ca3970cb6b..abcba5e9a0 100644 --- a/src/Fantomas.Tests/InterpolatedStringTests.fs +++ b/src/Fantomas.Tests/InterpolatedStringTests.fs @@ -41,8 +41,7 @@ let x = 1 let pi = 3.1414 let text = "cats" -let s = - $"I say {x} is one and %0.2f{pi} is pi and %10s{text} are dogs" +let s = $"I say {x} is one and %0.2f{pi} is pi and %10s{text} are dogs" """ [] diff --git a/src/Fantomas.Tests/KeepIndentInBranchTests.fs b/src/Fantomas.Tests/KeepIndentInBranchTests.fs index b7f798ef34..6f7eb0ca98 100644 --- a/src/Fantomas.Tests/KeepIndentInBranchTests.fs +++ b/src/Fantomas.Tests/KeepIndentInBranchTests.fs @@ -35,9 +35,7 @@ let foo () = 0 else - let config = - Configuration.Read "/myfolder/myfile.xml" - + let config = Configuration.Read "/myfolder/myfile.xml" let result = Process.main config otherArg if result.IsOk then 0 else -1 """ @@ -1153,8 +1151,7 @@ and [] Bar<'context, 'a> = let (bf, bv) = b if typeof<'bb> = typeof<'cb> then - let bv = - unbox> bv + let bv = unbox> bv this.InnerEquals av @@ -1443,9 +1440,7 @@ module Foo = module Foo = let main (args: _) = let fs = FileSystem() - - let ab = - ThingOne.make fs (ThingFour.defaultFoo args.Args.ThingOne) + let ab = ThingOne.make fs (ThingFour.defaultFoo args.Args.ThingOne) let thingFive = ThingFive.thingFive fs ab @@ -1456,8 +1451,7 @@ module Foo = log.LogDebug("Command line options used: {CommandLine}", args) log.LogInformation("Thing One: {ThingOne}", ThingOne.getFoo ab) - let thing, cd = - args.Thing |> Args.render loggerFactory thingFive + let thing, cd = args.Thing |> Args.render loggerFactory thingFive let skipBehaviour = if defaultArg args.Skip then @@ -1811,11 +1805,9 @@ let private parseModel (modelSrc: string) : Result = let graph = new QueryableGraph() graph.LoadFromFile(modelSrc, TurtleParser()) - let xsdPath = - Path.Combine(Directory.GetCurrentDirectory(), "Some.xsd") + let xsdPath = Path.Combine(Directory.GetCurrentDirectory(), "Some.xsd") - let ontologyPath = - Path.Combine(Directory.GetCurrentDirectory(), "Some.ttl") + let ontologyPath = Path.Combine(Directory.GetCurrentDirectory(), "Some.ttl") let ontoGraph = new OntologyGraph() FileLoader.Load(ontoGraph, ontologyPath) diff --git a/src/Fantomas.Tests/LambdaTests.fs b/src/Fantomas.Tests/LambdaTests.fs index 5f96a03b4a..f0288aa0ed 100644 --- a/src/Fantomas.Tests/LambdaTests.fs +++ b/src/Fantomas.Tests/LambdaTests.fs @@ -519,15 +519,10 @@ let private tokenizeLines (sourceTokenizer: FSharpSourceTokenizer) allLines stat |> List.mapi (fun index line -> line, (index + 1)) // line number is needed in tokenizeLine |> List.fold (fun (state, tokens) (line, lineNumber) -> - let tokenizer = - sourceTokenizer.CreateLineTokenizer(line) - - let nextState, tokensOfLine = - tokenizeLine tokenizer allLines state lineNumber [] - - let allTokens = - List.append tokens (List.rev tokensOfLine) // tokens of line are add in reversed order + let tokenizer = sourceTokenizer.CreateLineTokenizer(line) + let nextState, tokensOfLine = tokenizeLine tokenizer allLines state lineNumber [] + let allTokens = List.append tokens (List.rev tokensOfLine) // tokens of line are add in reversed order (nextState, allTokens)) (state, []) // empty tokens to start with |> snd // ignore the state diff --git a/src/Fantomas.Tests/LetBindingTests.fs b/src/Fantomas.Tests/LetBindingTests.fs index 5c58cf37c3..609ca567ae 100644 --- a/src/Fantomas.Tests/LetBindingTests.fs +++ b/src/Fantomas.Tests/LetBindingTests.fs @@ -248,9 +248,7 @@ module Card = | prop -> Some prop) |> keyValueList CaseRules.LowerFirst - let props = - JS.Object.assign (createEmpty, customProps, typeProps) - + let props = JS.Object.assign (createEmpty, customProps, typeProps) ofImport "Card" "reactstrap" props elems """ @@ -599,8 +597,7 @@ let genSigModuleDeclList astContext node = let sepXsAndYs = match List.tryHead ys with | Some hs -> - let attrs = - getRangesFromAttributesFromSynModuleSigDeclaration hs + let attrs = getRangesFromAttributesFromSynModuleSigDeclaration hs sepNln +> sepNlnConsideringTriviaContentBeforeWithAttributes hs.Range attrs @@ -793,8 +790,7 @@ let useEntries month year = let useEntries month year = let { Events = events } = useModel () - let isNotCancelled = - Projections.isNotCancelledEventChecker events + let isNotCancelled = Projections.isNotCancelledEventChecker events let filter = Projections.isInMonth month year @@ -852,8 +848,7 @@ let private authenticateRequest (logger: ILogger) header = let! config = manager.GetConfigurationAsync().ConfigureAwait(false) parameters.IssuerSigningKeys <- config.SigningKeys - let user, _ = - handler.ValidateToken((token: string), parameters) + let user, _ = handler.ValidateToken((token: string), parameters) if user.HasPermission("use:application") then return Some user.Identity.Name @@ -899,8 +894,7 @@ let private authenticateRequest (logger: ILogger) header = parameters.IssuerSigningKeys <- config.SigningKeys - let user, _ = - handler.ValidateToken((token: string), parameters) + let user, _ = handler.ValidateToken((token: string), parameters) if user.HasPermission("use:application") then return Some user.Identity.Name @@ -978,8 +972,7 @@ let useOverviewPerMonth () = balance = Projections.calculateBalance m y events |}) |> List.toArray - let balance = - rows |> Array.sumBy (fun mth -> mth.balance) + let balance = rows |> Array.sumBy (fun mth -> mth.balance) {| name = year months = rows @@ -1039,7 +1032,8 @@ let ``preserve new line new instance of class, 1034`` () = equal """ let notFound () = - let json = Encode.string "Not found" |> Encode.toString 4 + let json = + Encode.string "Not found" |> Encode.toString 4 new HttpResponseMessage( HttpStatusCode.NotFound, @@ -1189,8 +1183,7 @@ let x = List.singleton <| |> should equal """ -let x = - List.singleton <| let item = "text" in item +let x = List.singleton <| let item = "text" in item """ [] @@ -1662,14 +1655,12 @@ stepLog.LogInformation ( """ stepLog.LogInformation ( "Thing thing thing {Foo} thing", - (let (DuCase a) = - ThingThingThing.go options |> BlahBlah foo in a) + (let (DuCase a) = ThingThingThing.go options |> BlahBlah foo in a) ) stepLog.LogInformation ( "Thing thing thing {Foo} thing", - (let (DuCase a) = - ThingThingThing.go options |> BlahBlah foo in a) + (let (DuCase a) = ThingThingThing.go options |> BlahBlah foo in a) ) """ @@ -1720,8 +1711,7 @@ module Foo = let f1 = () let runTest () = - let (Thing f) = - [ a ; b ] |> Blah.tryConcat |> Option.get in f () |> ignore + let (Thing f) = [ a ; b ] |> Blah.tryConcat |> Option.get in f () |> ignore Assert.Throws runTest |> ignore @@ -1730,8 +1720,7 @@ module Foo = let f1 = () let runTest () = - let (Thing f) = - [ a ; b ] |> Blah.tryConcat |> Option.get in f () |> ignore + let (Thing f) = [ a ; b ] |> Blah.tryConcat |> Option.get in f () |> ignore Assert.Throws runTest |> ignore """ diff --git a/src/Fantomas.Tests/MaxValueBindingWidthTests.fs b/src/Fantomas.Tests/MaxValueBindingWidthTests.fs index 3cae7c6143..c52fd27e5d 100644 --- a/src/Fantomas.Tests/MaxValueBindingWidthTests.fs +++ b/src/Fantomas.Tests/MaxValueBindingWidthTests.fs @@ -64,7 +64,7 @@ let ``should apply to typed member value definition`` () = """ [] -let ``should not apply to short member value definition`` () = +let ``should not apply to short member property definition`` () = formatSourceString false """type T = @@ -72,7 +72,23 @@ let ``should not apply to short member value definition`` () = member this.c = d + 2 """ { config with - MaxFunctionBindingWidth = 30 } + MaxFunctionBindingWidth = 10 } + |> should + equal + """type T = + let a = b + 1 + member this.c = d + 2 +""" + +[] +let ``let with short member property definition`` () = + formatSourceString + false + """type T = + let a = b + 1 + member this.c = d + 2 + """ + config |> should equal """type T = diff --git a/src/Fantomas.Tests/MultilineFunctionApplicationsInConditionExpressionsTests.fs b/src/Fantomas.Tests/MultilineFunctionApplicationsInConditionExpressionsTests.fs index 01f2ef08e4..df1d0c793b 100644 --- a/src/Fantomas.Tests/MultilineFunctionApplicationsInConditionExpressionsTests.fs +++ b/src/Fantomas.Tests/MultilineFunctionApplicationsInConditionExpressionsTests.fs @@ -244,8 +244,7 @@ module Web3ServerSeedList = """ module Web3ServerSeedList = let MaybeRethrow (ex: Exception) : unit = - let rpcResponseExOpt = - FSharpUtil.FindException ex + let rpcResponseExOpt = FSharpUtil.FindException ex match rpcResponseExOpt with | Some rpcResponseEx -> diff --git a/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs b/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs index 88125cb462..0254fd5c71 100644 --- a/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs +++ b/src/Fantomas.Tests/NumberOfItemsListOrArrayTests.fs @@ -11,7 +11,7 @@ let ``number of items sized lists are formatted properly`` () = false """ let xs = [ a; b; c ] -let ys = [ AReallyLongExpressionThatIsMuchLongerThan50Characters ] +let ys = [ AReallyLongExpressionThatIsMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerThan100Characters ] f xs [ x; y; z ] List.map (fun x -> x * x) [1;2;] """ @@ -27,7 +27,7 @@ let xs = c ] let ys = - [ AReallyLongExpressionThatIsMuchLongerThan50Characters ] + [ AReallyLongExpressionThatIsMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerThan100Characters ] f xs @@ -47,7 +47,7 @@ let ``number of items sized arrays are formatted properly`` () = false """ let xs = [| a; b; c |] -let ys = [| AReallyLongExpressionThatIsMuchLongerThan50Characters |] +let ys = [| AReallyLongExpressionThatIsMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerThan100Characters |] f xs [| x; y; z |] List.map (fun x -> x * x) [|1;2;|] """ @@ -63,7 +63,7 @@ let xs = c |] let ys = - [| AReallyLongExpressionThatIsMuchLongerThan50Characters |] + [| AReallyLongExpressionThatIsMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerMuchLongerThan100Characters |] f xs @@ -134,8 +134,7 @@ let xs = c ] -let ys = - [ AReallyLongExpressionThatIsMuchLongerThan50Characters ] +let ys = [ AReallyLongExpressionThatIsMuchLongerThan50Characters ] f xs @@ -177,8 +176,7 @@ let xs = c |] -let ys = - [| AReallyLongExpressionThatIsMuchLongerThan50Characters |] +let ys = [| AReallyLongExpressionThatIsMuchLongerThan50Characters |] f xs @@ -339,6 +337,5 @@ let y = [ longValueThatIsALotOfCharactersSoooooLong longValueThatIsALotOfCharactersSoooooLong ] -let z = - [ longValueThatIsALotOfCharactersSoooooLong; 100; 123 ] +let z = [ longValueThatIsALotOfCharactersSoooooLong; 100; 123 ] """ diff --git a/src/Fantomas.Tests/NumberOfItemsRecordTests.fs b/src/Fantomas.Tests/NumberOfItemsRecordTests.fs index 46f455e8f8..df892f1759 100644 --- a/src/Fantomas.Tests/NumberOfItemsRecordTests.fs +++ b/src/Fantomas.Tests/NumberOfItemsRecordTests.fs @@ -906,8 +906,7 @@ let r = b = y z = c } -let s = - { AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } +let s = { AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } let r' = { r with @@ -915,8 +914,7 @@ let r' = b = y z = c } -let s' = - { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } +let s' = { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } f r @@ -969,8 +967,7 @@ let r = z = c } -let s = - { AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } +let s = { AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } let r' = { r with @@ -979,8 +976,7 @@ let r' = z = c } -let s' = - { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } +let s' = { s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 } f r @@ -1031,8 +1027,7 @@ let r = b = y z = c |} -let s = - {| AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} +let s = {| AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} let r' = {| r with @@ -1040,8 +1035,7 @@ let r' = b = y z = c |} -let s' = - {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} +let s' = {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} f r @@ -1094,8 +1088,7 @@ let r = z = c |} -let s = - {| AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} +let s = {| AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} let r' = {| r with @@ -1104,8 +1097,7 @@ let r' = z = c |} -let s' = - {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} +let s' = {| s with AReallyLongExpressionThatIsMuchLongerThan50Characters = 1 |} f r diff --git a/src/Fantomas.Tests/OperatorTests.fs b/src/Fantomas.Tests/OperatorTests.fs index e3f561e626..18781485ef 100644 --- a/src/Fantomas.Tests/OperatorTests.fs +++ b/src/Fantomas.Tests/OperatorTests.fs @@ -1011,7 +1011,8 @@ let MethInfosEquivByNameAndSig erasureFlag ignoreFinal g amap m minfo minfo2 = let MethInfosEquivByNameAndSig erasureFlag ignoreFinal g amap m minfo minfo2 = MethInfosEquivByNameAndPartialSig erasureFlag ignoreFinal g amap m minfo minfo2 && let (CompiledSig (_, retTy, formalMethTypars, _)) = CompiledSigOfMeth g amap m minfo in - let (CompiledSig (_, retTy2, formalMethTypars2, _)) = CompiledSigOfMeth g amap m minfo2 in + let (CompiledSig (_, retTy2, formalMethTypars2, _)) = + CompiledSigOfMeth g amap m minfo2 in match retTy, retTy2 with | None, None -> true diff --git a/src/Fantomas.Tests/PatternMatchingTests.fs b/src/Fantomas.Tests/PatternMatchingTests.fs index 5cefe0d6b6..c95eaedc99 100644 --- a/src/Fantomas.Tests/PatternMatchingTests.fs +++ b/src/Fantomas.Tests/PatternMatchingTests.fs @@ -782,11 +782,9 @@ let private userNameDecoder (get : Decode.IGetters) = equal """ let private userNameDecoder (get : Decode.IGetters) = - let givenName = - get.Optional.Field "given_name" Decode.string + let givenName = get.Optional.Field "given_name" Decode.string - let familyName = - get.Optional.Field "family_name" Decode.string + let familyName = get.Optional.Field "family_name" Decode.string match givenName, familyName with | Some g, Some f -> sprintf "%s %c" g f.[0] @@ -1123,8 +1121,7 @@ match foo with (isOperatorOrKeyword headToken && List.exists (fun k -> headToken.TokenInfo.TokenName = k) keywordTrivia) -> - let range = - getRangeBetween "keyword" headToken headToken + let range = getRangeBetween "keyword" headToken headToken let info = Trivia.Create(Keyword(headToken)) range @@ -1677,9 +1674,7 @@ let GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = | _ -> false)) | None -> false -> - let (kind, mark) = - ListAssoc.find g.valRefEq v eenv.innerVals // already checked above in when guard - + let (kind, mark) = ListAssoc.find g.valRefEq v eenv.innerVals // already checked above in when guard () """ diff --git a/src/Fantomas.Tests/RecordTests.fs b/src/Fantomas.Tests/RecordTests.fs index 7a8ba5781f..4592b654da 100644 --- a/src/Fantomas.Tests/RecordTests.fs +++ b/src/Fantomas.Tests/RecordTests.fs @@ -1879,8 +1879,7 @@ let parse (checker: FSharpChecker) (parsingOptions: FSharpParsingOptions) { File ConditionalCompilationDefines = conditionalCompilationDefines SourceFiles = Array.map safeFileName parsingOptions.SourceFiles } // Run the first phase (untyped parsing) of the compiler - let sourceText = - FSharp.Compiler.Text.SourceText.ofString source + let sourceText = FSharp.Compiler.Text.SourceText.ofString source let! untypedRes = checker.ParseFile(fileName, sourceText, parsingOptionsWithDefines) diff --git a/src/Fantomas.Tests/StringTests.fs b/src/Fantomas.Tests/StringTests.fs index 2bb157c73c..0aa6140bf8 100644 --- a/src/Fantomas.Tests/StringTests.fs +++ b/src/Fantomas.Tests/StringTests.fs @@ -10,7 +10,7 @@ let ``triple-quoted strings`` () = false "let xmlFragment2 = \"\"\"\"\"\"" { config with - MaxValueBindingWidth = 60 } + MaxValueBindingWidth = 80 } |> should equal "let xmlFragment2 = \"\"\"\"\"\" @@ -30,7 +30,9 @@ let str1 = "abc" |> should equal """ -let xmlFragment1 = @"" +let xmlFragment1 = + @"" + let str1 = "abc" """ diff --git a/src/Fantomas.Tests/SynConstTests.fs b/src/Fantomas.Tests/SynConstTests.fs index bb236fdc5c..cb6fc582bc 100644 --- a/src/Fantomas.Tests/SynConstTests.fs +++ b/src/Fantomas.Tests/SynConstTests.fs @@ -666,8 +666,6 @@ a:hover {color: #ecc;} | Some x -> x.Remove() | _ -> ()) - let packable = - Path.getFullName \"./_Binaries/README.html\" - + let packable = Path.getFullName \"./_Binaries/README.html\" xmlform.Save packable " diff --git a/src/Fantomas.Tests/TupleTests.fs b/src/Fantomas.Tests/TupleTests.fs index 12b807d5e7..62925801bb 100644 --- a/src/Fantomas.Tests/TupleTests.fs +++ b/src/Fantomas.Tests/TupleTests.fs @@ -19,7 +19,8 @@ let private carouselSample = MaxValueBindingWidth = 75 } |> should equal - """let private carouselSample = FunctionComponent.Of((fun _ -> fragment [] []), "CarouselSample") + """let private carouselSample = + FunctionComponent.Of((fun _ -> fragment [] []), "CarouselSample") """ [] diff --git a/src/Fantomas.Tests/TypeDeclarationTests.fs b/src/Fantomas.Tests/TypeDeclarationTests.fs index ecab1dd4c5..34498ed947 100644 --- a/src/Fantomas.Tests/TypeDeclarationTests.fs +++ b/src/Fantomas.Tests/TypeDeclarationTests.fs @@ -701,8 +701,11 @@ let the_interface = ref([] : (string * (string * hol_type)) list) |> should equal """ -let user_printers = ref ([]: (string * (term -> unit)) list) -let the_interface = ref ([]: (string * (string * hol_type)) list) +let user_printers = + ref ([]: (string * (term -> unit)) list) + +let the_interface = + ref ([]: (string * (string * hol_type)) list) """ [] @@ -2228,8 +2231,7 @@ type Auth0User = static member Decoder : Decoder = Decode.object (fun get -> - let userId = - get.Required.Field "user_id" Decode.string + let userId = get.Required.Field "user_id" Decode.string let metaData = get.Optional.Field "app_metadata" AppMetaData.Decoder @@ -2802,8 +2804,7 @@ and [] Bar<'context, 'a> = let (bf, bv) = b if typeof<'bb> = typeof<'cb> then - let bv = - unbox> bv + let bv = unbox> bv this.InnerEquals av diff --git a/src/Fantomas.Tests/UnionTests.fs b/src/Fantomas.Tests/UnionTests.fs index 819253bbc0..1faa4838b5 100644 --- a/src/Fantomas.Tests/UnionTests.fs +++ b/src/Fantomas.Tests/UnionTests.fs @@ -42,8 +42,7 @@ type uColor = | Green = 1u | Blue = 2u -let col3 = - Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue(2u) +let col3 = Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue(2u) """ [] @@ -208,8 +207,7 @@ type uColor = | Green = 1u | Blue = 2u -let col3 = - Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue(2u) +let col3 = Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue(2u) """ [] diff --git a/src/Fantomas/CodePrinter.fs b/src/Fantomas/CodePrinter.fs index 512caccae5..22898b7398 100644 --- a/src/Fantomas/CodePrinter.fs +++ b/src/Fantomas/CodePrinter.fs @@ -4953,6 +4953,13 @@ and genMemberDefn astContext node = | None -> sprintf "abstract %s" s |> fun s -> !- s ctx + let hasGenerics = + match tds with + | None -> false + | Some (SynTyparDecls.PostfixList (tds, _tcs, _range)) -> not tds.IsEmpty + | Some (SynTyparDecls.PrefixList (tds, _range)) -> not tds.IsEmpty + | Some (SynTyparDecls.SinglePrefix (td, _range)) -> true + genPreXmlDoc px +> genAttributes astContext ats +> opt sepSpace ao genAccess @@ -5434,25 +5441,25 @@ and genLetBindingDestructedTuple let equalsRange (ctx: Context) = ctx.MkRange pat.Range.End e.Range.Start genPreXmlDoc px - +> leadingExpressionIsMultiline - (genAttrAndPref - +> afterLetKeyword - +> sepSpace - +> genDestructedTuples - +> (fun ctx -> tokN (equalsRange ctx) EQUALS sepEq ctx)) - (fun isMultiline ctx -> - let short = sepSpace +> genExpr astContext e + +> genAttrAndPref + +> (fun ctx -> + let prefix = + afterLetKeyword + +> sepSpace + +> genDestructedTuples + +> (fun ctx -> tokN (equalsRange ctx) EQUALS sepEq ctx) - let long = - indent - +> sepNln - +> genExpr astContext e - +> unindent + let long = + prefix + +> indent + +> sepNln + +> genExpr astContext e + +> unindent - if isMultiline then - long ctx - else - isShortExpression ctx.Config.MaxValueBindingWidth short long ctx) + let short = + prefix +> sepSpace +> genExpr astContext e + + isShortExpression ctx.Config.MaxValueBindingWidth short long ctx) and genSynBindingValue (astContext: ASTContext) @@ -5516,27 +5523,27 @@ and genSynBindingValue genPreXmlDoc px +> genAttrIsFirstChild - +> leadingExpressionIsMultiline - (genAfterAttributesBefore SynBinding_AfterAttributes_BeforeHeadPattern afterAttributesBeforeHeadPattern - +> genPref - +> afterLetKeyword - +> sepSpace - +> genValueName - +> genReturnType - +> (fun ctx -> genEqualsInBinding (equalsRange ctx) ctx)) - (fun isMultiline ctx -> - let short = genExprKeepIndentInBranch astContext e + +> genAfterAttributesBefore SynBinding_AfterAttributes_BeforeHeadPattern afterAttributesBeforeHeadPattern + +> genPref + +> (fun ctx -> + let prefix = + afterLetKeyword + +> sepSpace + +> genValueName + +> genReturnType + +> (fun ctx -> genEqualsInBinding (equalsRange ctx) ctx) - let long = - indent - +> sepNln - +> genExprKeepIndentInBranch astContext e - +> unindent + let short = + prefix +> genExprKeepIndentInBranch astContext e - if isMultiline then - long ctx - else - isShortExpression ctx.Config.MaxValueBindingWidth short long ctx) + let long = + prefix + +> indent + +> sepNln + +> genExprKeepIndentInBranch astContext e + +> unindent + + isShortExpression ctx.Config.MaxValueBindingWidth short long ctx) and genParenTupleWithIndentAndNewlines (astContext: ASTContext) (ps: SynPat list) (pr: range) : Context -> Context = sepOpenT diff --git a/src/Fantomas/FormatConfig.fs b/src/Fantomas/FormatConfig.fs index 5de9aedcd0..132e025e19 100644 --- a/src/Fantomas/FormatConfig.fs +++ b/src/Fantomas/FormatConfig.fs @@ -122,7 +122,7 @@ type FormatConfig = MaxArrayOrListWidth = 40 MaxArrayOrListNumberOfItems = 1 ArrayOrListMultilineFormatter = MultilineFormatterType.CharacterWidth - MaxValueBindingWidth = 40 + MaxValueBindingWidth = 80 MaxFunctionBindingWidth = 40 MaxDotGetExpressionWidth = 50 MultilineBlockBracketsOnSameColumn = false