diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index ae0d37afa..50b6dd7f6 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -8,12 +8,6 @@ "fake" ] }, - "paket": { - "version": "7.2.1", - "commands": [ - "paket" - ] - }, "fornax": { "version": "0.13.1", "commands": [ diff --git a/CHANGELOG.md b/CHANGELOG.md index fc088afd5..84f04fed4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +- Migrate from `Paket` to `Directory.Packages.props` #722 [@xperiandri] +- Migrate to .NET `9.0.201` and FCS `43.9.201` #722 [@xperiandri] +- Write test logs to test context output #722 [@xperiandri] + ## [0.24.2] - 2024-02-29 - New rule EnsureTailCallDiagnosticsInRecursiveFunctions #673 #651 [@webwarrior-ws] diff --git a/Directory.Build.props b/Directory.Build.props index 9cb4e26fd..115251847 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,5 +1,6 @@ + true true true false diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 000000000..78a0e4d24 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,30 @@ + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FSharpLint.sln b/FSharpLint.sln index 95809fec0..cb85d26a2 100644 --- a/FSharpLint.sln +++ b/FSharpLint.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30002.166 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36221.1 MinimumVisualStudioVersion = 15.0.26124.0 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{40C2798B-7078-4D4F-BD37-195240CB827B}" EndProject @@ -22,6 +22,8 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{270E691D-ECA1-4BC5-B851-C5431A64E9FA}" ProjectSection(SolutionItems) = preProject build.fsx = build.fsx + Directory.Build.props = Directory.Build.props + Directory.Packages.props = Directory.Packages.props EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{E1E03FFE-30DF-4522-83DA-9089147B431E}" diff --git a/global.json b/global.json index 3e9957eae..5461033ae 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,5 @@ { "sdk": { - "version": "6.0.417" - ,"rollForward": "minor" + "rollForward": "minor" } } diff --git a/paket.dependencies b/paket.dependencies deleted file mode 100644 index 55a3eab40..000000000 --- a/paket.dependencies +++ /dev/null @@ -1,63 +0,0 @@ -source https://api.nuget.org/v3/index.json - -framework: netstandard2.0, net6.0 -storage: none - -nuget Argu -nuget BenchmarkDotNet -nuget BenchmarkDotNet.Diagnostics.Windows -nuget FParsec -nuget FSharp.Compiler.Service ~> 41.0.1 -nuget Ionide.ProjInfo.ProjectSystem == 0.61.3 -nuget Ionide.ProjInfo.FCS == 0.61.3 -nuget Ionide.ProjInfo == 0.61.3 -nuget Ionide.ProjInfo.Sln == 0.61.3 -nuget FSharp.Core ~> 6.0 -nuget nunit ~> 3.0 -nuget System.Reactive ~> 5 -nuget NUnit3TestAdapter -nuget Microsoft.NET.Test.Sdk 17.7.2 -nuget Newtonsoft.Json -nuget Microsoft.Build.Locator - -# don't expose as a package reference -nuget Microsoft.SourceLink.GitHub copy_local: true -# don't copy runtime assets -nuget Microsoft.Build.Framework == 17.2.0 copy_local: false -nuget Microsoft.Build.Tasks.Core copy_local: false -nuget Microsoft.Build.Utilities.Core == 17.2.0 copy_local: false -nuget Microsoft.Build == 17.2.0 copy_local: false - -group Docs - source https://api.nuget.org/v3/index.json - - framework: netstandard2.0 - storage: packages - - nuget FSharp.Formatting ~> 4.0 - nuget Markdig - nuget Newtonsoft.Json - -// [ FAKE GROUP ] -group Build - source https://api.nuget.org/v3/index.json - - framework: net6.0 - storage: none - strategy: min - - nuget System.Reactive ~> 5 - nuget MSBuild.StructuredLogger == 2.1.815 - nuget FSharp.Core ~> 5.0 - nuget Fake.Core.Target - nuget Fake.Core.Process - nuget Fake.DotNet.Cli - nuget Fake.Core.ReleaseNotes - nuget Fake.DotNet.AssemblyInfoFile - nuget Fake.DotNet.Paket - nuget Fake.Tools.Git - nuget Fake.Core.Environment - nuget Fake.Core.UserInput - nuget Fake.IO.FileSystem - nuget Fake.DotNet.MsBuild - nuget Fake.Api.GitHub diff --git a/paket.lock b/paket.lock deleted file mode 100644 index 177bf2fb8..000000000 --- a/paket.lock +++ /dev/null @@ -1,1067 +0,0 @@ -STORAGE: NONE -RESTRICTION: || (== net6.0) (== netstandard2.0) -NUGET - remote: https://api.nuget.org/v3/index.json - Argu (6.1.4) - FSharp.Core (>= 4.3.2) - System.Configuration.ConfigurationManager (>= 4.4) - BenchmarkDotNet (0.13.11) - BenchmarkDotNet.Annotations (>= 0.13.11) - CommandLineParser (>= 2.9.1) - Gee.External.Capstone (>= 2.3) - Iced (>= 1.17) - Microsoft.CodeAnalysis.CSharp (>= 4.1) - Microsoft.Diagnostics.Runtime (>= 2.2.332302) - Microsoft.Diagnostics.Tracing.TraceEvent (>= 3.0.2) - Microsoft.DotNet.PlatformAbstractions (>= 3.1.6) - Microsoft.Win32.Registry (>= 5.0) - restriction: == netstandard2.0 - Perfolizer (0.2.1) - System.Management (>= 5.0) - System.Numerics.Vectors (>= 4.5) - restriction: == netstandard2.0 - System.Reflection.Emit (>= 4.7) - restriction: == netstandard2.0 - System.Reflection.Emit.Lightweight (>= 4.7) - restriction: == netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: == netstandard2.0 - BenchmarkDotNet.Annotations (0.13.11) - BenchmarkDotNet.Diagnostics.Windows (0.13.11) - BenchmarkDotNet (>= 0.13.11) - Microsoft.Diagnostics.Tracing.TraceEvent (>= 3.0.2) - CommandLineParser (2.9.1) - FParsec (1.1.1) - FSharp.Core (>= 4.3.4) - FSharp.Compiler.Service (41.0.7) - FSharp.Core (6.0.7) - Microsoft.Build.Framework (>= 17.0) - Microsoft.Build.Tasks.Core (>= 17.0) - Microsoft.Build.Utilities.Core (>= 17.0) - System.Buffers (>= 4.5.1) - System.Collections.Immutable (>= 5.0) - System.Diagnostics.Process (>= 4.3) - System.Diagnostics.TraceSource (>= 4.3) - System.Linq.Expressions (>= 4.3) - System.Linq.Queryable (>= 4.3) - System.Memory (>= 4.5.4) - System.Net.Requests (>= 4.3) - System.Net.Security (>= 4.3.1) - System.Reflection.Emit (>= 4.3) - System.Reflection.Metadata (>= 5.0) - System.Reflection.TypeExtensions (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Runtime.InteropServices (>= 4.3) - System.Runtime.Loader (>= 4.3) - System.Security.Claims (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Principal (>= 4.3) - System.Threading.Tasks.Parallel (>= 4.3) - System.Threading.Thread (>= 4.3) - System.Threading.ThreadPool (>= 4.3) - FSharp.Control.Reactive (5.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - FSharp.Core (>= 4.7.2) - System.Reactive (>= 5.0 < 6.0) - FSharp.Core (6.0.7) - Gee.External.Capstone (2.3) - Iced (1.20) - Ionide.ProjInfo (0.61.3) - FSharp.Core (>= 6.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo.Sln (>= 0.61.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - SemanticVersioning (>= 2.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo.FCS (0.61.3) - FSharp.Compiler.Service (>= 41.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - FSharp.Core (>= 6.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo (>= 0.61.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo.ProjectSystem (0.61.3) - FSharp.Compiler.Service (>= 41.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - FSharp.Control.Reactive (>= 5.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - FSharp.Core (>= 6.0.5) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo (>= 0.61.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo.FCS (>= 0.61.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo.Sln (>= 0.61.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Newtonsoft.Json (>= 13.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - Ionide.ProjInfo.Sln (0.61.3) - Microsoft.Bcl.AsyncInterfaces (8.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Build (17.2) - copy_local: false - Microsoft.Build.Framework (>= 17.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.NET.StringTools (>= 1.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Win32.Registry (>= 4.3) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Collections.Immutable (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Configuration.ConfigurationManager (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Reflection.Metadata (>= 1.6) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Security.Principal.Windows (>= 4.7) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Text.Json (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - System.Threading.Tasks.Dataflow (>= 6.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net6.0)) - Microsoft.Build.Framework (17.2) - copy_local: false - Microsoft.Win32.Registry (>= 4.3) - System.Security.Permissions (>= 4.7) - Microsoft.Build.Locator (1.6.10) - Microsoft.Build.Tasks.Core (17.8.3) - copy_local: false - Microsoft.Build.Framework (>= 17.8.3) - Microsoft.Build.Utilities.Core (>= 17.8.3) - Microsoft.NET.StringTools (>= 17.8.3) - Microsoft.Win32.Registry (>= 5.0) - System.CodeDom (>= 7.0) - System.Collections.Immutable (>= 7.0) - System.Configuration.ConfigurationManager (>= 7.0) - System.Memory (>= 4.5.5) - System.Reflection.Metadata (>= 7.0) - System.Resources.Extensions (>= 7.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Security.Cryptography.Pkcs (>= 7.0.2) - System.Security.Cryptography.Xml (>= 7.0.1) - System.Security.Principal.Windows (>= 5.0) - System.Text.Encoding.CodePages (>= 7.0) - System.Threading.Tasks.Dataflow (>= 7.0) - Microsoft.Build.Tasks.Git (8.0) - copy_local: true - Microsoft.Build.Utilities.Core (17.2) - copy_local: false - Microsoft.Build.Framework (>= 17.2) - 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) - restriction: == netstandard2.0 - System.Text.Encoding.CodePages (>= 4.0.1) - restriction: == netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (3.3.4) - Microsoft.CodeAnalysis.Common (4.8) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - System.Collections.Immutable (>= 7.0) - System.Memory (>= 4.5.5) - restriction: == netstandard2.0 - System.Reflection.Metadata (>= 7.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encoding.CodePages (>= 7.0) - restriction: == netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: == netstandard2.0 - Microsoft.CodeAnalysis.CSharp (4.8) - Microsoft.CodeAnalysis.Common (4.8) - Microsoft.CodeCoverage (17.8) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net462)) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.Diagnostics.NETCore.Client (0.2.452401) - Microsoft.Bcl.AsyncInterfaces (>= 6.0) - restriction: == netstandard2.0 - Microsoft.Extensions.Logging (>= 6.0) - System.Buffers (>= 4.5.1) - restriction: == netstandard2.0 - Microsoft.Diagnostics.Runtime (3.1.456101) - Microsoft.Diagnostics.NETCore.Client (>= 0.2.410101) - System.Collections.Immutable (>= 6.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.Diagnostics.Tracing.TraceEvent (3.1.7) - Microsoft.Win32.Registry (>= 4.4) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.DotNet.PlatformAbstractions (3.1.6) - Microsoft.Extensions.DependencyInjection (8.0) - Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (8.0) - Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.Logging (8.0) - Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.DependencyInjection (>= 8.0) - Microsoft.Extensions.Logging.Abstractions (>= 8.0) - Microsoft.Extensions.Options (>= 8.0) - System.Diagnostics.DiagnosticSource (>= 8.0) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (8.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - Microsoft.Extensions.Options (8.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) - Microsoft.Extensions.Primitives (>= 8.0) - System.ComponentModel.Annotations (>= 5.0) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - Microsoft.Extensions.Primitives (8.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.NET.StringTools (17.8.3) - copy_local: false - System.Memory (>= 4.5.5) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - Microsoft.NET.Test.Sdk (17.7.2) - Microsoft.CodeCoverage (>= 17.7.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net462)) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.TestPlatform.TestHost (>= 17.7.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.NETCore.Platforms (7.0.4) - Microsoft.NETCore.Targets (5.0) - Microsoft.SourceLink.Common (8.0) - copy_local: true - Microsoft.SourceLink.GitHub (8.0) - copy_local: true - Microsoft.Build.Tasks.Git (>= 8.0) - Microsoft.SourceLink.Common (>= 8.0) - Microsoft.TestPlatform.ObjectModel (17.8) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - NuGet.Frameworks (>= 6.5) - System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (17.8) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.TestPlatform.ObjectModel (>= 17.8) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Newtonsoft.Json (>= 13.0.1) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - Microsoft.Win32.Primitives (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - Microsoft.Win32.Registry (5.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monoandroid) (< netstandard1.3)) (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Memory (>= 4.5.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Security.AccessControl (>= 5.0) - System.Security.Principal.Windows (>= 5.0) - NETStandard.Library (2.0.3) - Microsoft.NETCore.Platforms (>= 1.1) - Newtonsoft.Json (13.0.3) - NuGet.Frameworks (6.8) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) - NUnit (3.14) - NETStandard.Library (>= 2.0) - NUnit3TestAdapter (4.5) - Perfolizer (0.2.1) - System.Memory (>= 4.5.3) - 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.native.System (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Http (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Net.Security (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - 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) - 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.Apple (4.3.1) - 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) - SemanticVersioning (2.0.2) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Buffers (4.5.1) - System.CodeDom (8.0) - copy_local: false - System.Collections (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Collections.Concurrent (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Globalization (>= 4.3) - System.Reflection (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Collections.Immutable (8.0) - copy_local: false - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.ComponentModel.Annotations (5.0) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Configuration.ConfigurationManager (8.0) - copy_local: false - System.Security.Cryptography.ProtectedData (>= 8.0) - System.Diagnostics.Debug (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Diagnostics.DiagnosticSource (8.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Diagnostics.Process (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.Win32.Primitives (>= 4.3) - Microsoft.Win32.Registry (>= 4.3) - runtime.native.System (>= 4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Text.Encoding.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Thread (>= 4.3) - System.Threading.ThreadPool (>= 4.3) - System.Diagnostics.TraceSource (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System (>= 4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Diagnostics.Tracing (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Formats.Asn1 (8.0) - copy_local: false - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Globalization (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Globalization.Calendars (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Globalization (>= 4.3) - System.Runtime (>= 4.3) - System.Globalization.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.Globalization (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.IO (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.IO.FileSystem (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.IO (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.IO.FileSystem.Primitives (4.3) - System.Runtime (>= 4.3) - System.Linq (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Linq.Expressions (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Linq (>= 4.3) - System.ObjectModel (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Emit.Lightweight (>= 4.3) - System.Reflection.Extensions (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Reflection.TypeExtensions (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Linq.Queryable (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Linq (>= 4.3) - System.Linq.Expressions (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Extensions (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Management (8.0) - System.CodeDom (>= 8.0) - System.Memory (4.5.5) - copy_local: false - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) - System.Net.Http (4.3.4) - Microsoft.NETCore.Platforms (>= 1.1.1) - runtime.native.System (>= 4.3) - runtime.native.System.Net.Http (>= 4.3) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.DiagnosticSource (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Globalization (>= 4.3) - System.Globalization.Extensions (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.Net.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Security.Cryptography.X509Certificates (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Net.Primitives (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime (>= 4.3.1) - System.Runtime.Handles (>= 4.3) - System.Net.Requests (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Net.Http (>= 4.3) - System.Net.Primitives (>= 4.3) - System.Net.WebHeaderCollection (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Net.Security (4.3.2) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.Win32.Primitives (>= 4.3) - runtime.native.System (>= 4.3) - runtime.native.System.Net.Security (>= 4.3) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.Collections.Concurrent (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Globalization (>= 4.3) - System.Globalization.Extensions (>= 4.3) - System.IO (>= 4.3) - System.Net.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Claims (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Security.Cryptography.X509Certificates (>= 4.3) - System.Security.Principal (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.ThreadPool (>= 4.3) - System.Net.WebHeaderCollection (4.3) - System.Collections (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Numerics.Vectors (4.5) - restriction: == netstandard2.0 - System.ObjectModel (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Threading (>= 4.3) - System.Reactive (5.0) - System.Runtime.InteropServices.WindowsRuntime (>= 4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.IO (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Emit (4.7) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (== net6.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Emit.ILGeneration (4.7) - System.Reflection.Emit.Lightweight (4.7) - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (== net6.0) (< netcoreapp2.0) (< netstandard2.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (< portable-net45+wp8)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Reflection.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Metadata (8.0) - copy_local: false - System.Collections.Immutable (>= 8.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Reflection.Primitives (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Reflection.TypeExtensions (4.7) - System.Resources.Extensions (8.0) - copy_local: false - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Resources.ResourceManager (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Globalization (>= 4.3) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (6.0) - System.Runtime.Extensions (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1.1) - Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime (>= 4.3.1) - System.Runtime.Handles (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Runtime.InteropServices (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Reflection (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices.WindowsRuntime (4.3) - restriction: || (&& (== net6.0) (< netcoreapp3.1)) (== netstandard2.0) - System.Runtime (>= 4.3) - System.Runtime.Loader (4.3) - System.IO (>= 4.3) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Numerics (4.3) - System.Globalization (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Security.AccessControl (6.0) - copy_local: false, restriction: == netstandard2.0 - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (== net6.0) (>= net461)) (== netstandard2.0) - System.Security.Claims (4.3) - System.Collections (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Security.Principal (>= 4.3) - System.Security.Cryptography.Algorithms (4.3.1) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Runtime.Numerics (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Security.Cryptography.Cng (5.0) - copy_local: false - System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Csp (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - System.IO (>= 4.3) - System.Reflection (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Security.Cryptography.Encoding (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - System.Collections (>= 4.3) - System.Collections.Concurrent (>= 4.3) - System.Linq (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (5.0) - System.Formats.Asn1 (>= 5.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= netcoreapp3.0)) - System.Security.Cryptography.Pkcs (8.0) - copy_local: false - System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Formats.Asn1 (>= 8.0) - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Security.Cryptography.Cng (>= 5.0) - restriction: || (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) - System.Security.Cryptography.Primitives (4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Security.Cryptography.ProtectedData (8.0) - copy_local: false - System.Memory (>= 4.5.5) - restriction: == netstandard2.0 - System.Security.Cryptography.X509Certificates (4.3.2) - Microsoft.NETCore.Platforms (>= 1.1) - runtime.native.System (>= 4.3) - runtime.native.System.Net.Http (>= 4.3) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.Globalization.Calendars (>= 4.3) - System.IO (>= 4.3) - System.IO.FileSystem (>= 4.3) - System.IO.FileSystem.Primitives (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Runtime.InteropServices (>= 4.3) - System.Runtime.Numerics (>= 4.3) - System.Security.Cryptography.Algorithms (>= 4.3) - System.Security.Cryptography.Cng (>= 4.3) - System.Security.Cryptography.Csp (>= 4.3) - System.Security.Cryptography.Encoding (>= 4.3) - System.Security.Cryptography.OpenSsl (>= 4.3) - System.Security.Cryptography.Primitives (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading (>= 4.3) - System.Security.Cryptography.Xml (8.0) - copy_local: false - System.Memory (>= 4.5.5) - restriction: == netstandard2.0 - System.Security.AccessControl (>= 6.0) - restriction: == netstandard2.0 - System.Security.Cryptography.Pkcs (>= 8.0) - System.Security.Permissions (8.0) - copy_local: false - System.Security.AccessControl (>= 6.0) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Windows.Extensions (>= 8.0) - restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - System.Security.Principal (4.3) - System.Runtime (>= 4.3) - System.Security.Principal.Windows (5.0) - copy_local: false - System.Text.Encoding (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (8.0) - copy_local: false - System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encoding.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Text.Encodings.Web (8.0) - copy_local: false, restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net5.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Json (8.0) - copy_local: false, restriction: || (== net6.0) (&& (== netstandard2.0) (>= net472)) (&& (== netstandard2.0) (>= net5.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Text.Encodings.Web (>= 8.0) - System.Threading (4.3) - System.Runtime (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Tasks (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Threading.Tasks.Dataflow (8.0) - copy_local: false - System.Threading.Tasks.Extensions (4.5.4) - restriction: || (&& (== net6.0) (>= net472)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net6.0) (>= uap10.1)) (== netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (== netstandard2.0) - System.Threading.Tasks.Parallel (4.3) - System.Collections.Concurrent (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Diagnostics.Tracing (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Thread (4.3) - System.Runtime (>= 4.3) - System.Threading.ThreadPool (4.3) - System.Runtime (>= 4.3) - System.Runtime.Handles (>= 4.3) - System.Windows.Extensions (8.0) - copy_local: false, restriction: || (== net6.0) (&& (== netstandard2.0) (>= net6.0)) - -GROUP Build -STORAGE: NONE -STRATEGY: MIN -RESTRICTION: == net6.0 -NUGET - remote: https://api.nuget.org/v3/index.json - BlackFox.VsWhere (1.1) - FSharp.Core (>= 4.2.3) - Microsoft.Win32.Registry (>= 4.7) - Fake.Api.GitHub (5.20.4) - FSharp.Core (>= 4.7.2) - Octokit (>= 0.48) - Fake.Core.CommandLineParsing (5.20.4) - FParsec (>= 1.1.1) - FSharp.Core (>= 4.7.2) - Fake.Core.Context (5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.Environment (5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.FakeVar (5.20.4) - Fake.Core.Context (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.Process (5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.FakeVar (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - FSharp.Core (>= 4.7.2) - System.Collections.Immutable (>= 1.7.1) - Fake.Core.ReleaseNotes (5.20.4) - Fake.Core.SemVer (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.SemVer (5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.String (5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.Target (5.20.4) - Fake.Core.CommandLineParsing (>= 5.20.4) - Fake.Core.Context (>= 5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.FakeVar (>= 5.20.4) - Fake.Core.Process (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - FSharp.Control.Reactive (>= 4.4.2) - FSharp.Core (>= 4.7.2) - Fake.Core.Tasks (5.20.4) - Fake.Core.Trace (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.Trace (5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.FakeVar (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.UserInput (5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Core.Xml (5.20.4) - Fake.Core.String (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.DotNet.AssemblyInfoFile (5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.DotNet.Cli (5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.Process (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.DotNet.MSBuild (>= 5.20.4) - Fake.DotNet.NuGet (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Mono.Posix.NETStandard (>= 1.0) - Newtonsoft.Json (>= 12.0.3) - Fake.DotNet.MSBuild (5.20.4) - BlackFox.VsWhere (>= 1.1) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.Process (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - FSharp.Core (>= 4.7.2) - MSBuild.StructuredLogger (>= 2.1.176) - Fake.DotNet.NuGet (5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.Process (>= 5.20.4) - Fake.Core.SemVer (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Tasks (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.Core.Xml (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - Fake.Net.Http (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Newtonsoft.Json (>= 12.0.3) - NuGet.Protocol (>= 5.6) - Fake.DotNet.Paket (5.20.4) - Fake.Core.Process (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.DotNet.Cli (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.IO.FileSystem (5.20.4) - Fake.Core.String (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Net.Http (5.20.4) - Fake.Core.Trace (>= 5.20.4) - FSharp.Core (>= 4.7.2) - Fake.Tools.Git (5.20.4) - Fake.Core.Environment (>= 5.20.4) - Fake.Core.Process (>= 5.20.4) - Fake.Core.SemVer (>= 5.20.4) - Fake.Core.String (>= 5.20.4) - Fake.Core.Trace (>= 5.20.4) - Fake.IO.FileSystem (>= 5.20.4) - FSharp.Core (>= 4.7.2) - FParsec (1.1.1) - FSharp.Core (>= 4.3.4) - FSharp.Control.Reactive (4.4.2) - FSharp.Core (>= 4.7.2) - System.Reactive (>= 4.4.1) - FSharp.Core (5.0.2) - Microsoft.Build.Framework (16.10) - System.Security.Permissions (>= 4.7) - Microsoft.Build.Utilities.Core (16.10) - Microsoft.Build.Framework (>= 16.10) - 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.NET.StringTools (1.0) - System.Memory (>= 4.5.4) - System.Runtime.CompilerServices.Unsafe (>= 5.0) - Microsoft.NETCore.Platforms (3.1) - Microsoft.NETCore.Targets (1.1) - Microsoft.Win32.Registry (4.7) - System.Security.AccessControl (>= 4.7) - System.Security.Principal.Windows (>= 4.7) - Microsoft.Win32.SystemEvents (4.7) - Microsoft.NETCore.Platforms (>= 3.1) - Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.815) - Microsoft.Build.Framework (>= 16.10) - Microsoft.Build.Utilities.Core (>= 16.10) - Newtonsoft.Json (12.0.3) - NuGet.Common (5.8.1) - NuGet.Frameworks (>= 5.8.1) - NuGet.Configuration (5.6) - NuGet.Common (>= 5.6) - System.Security.Cryptography.ProtectedData (>= 4.3) - NuGet.Frameworks (5.8.1) - NuGet.Packaging (5.6) - Newtonsoft.Json (>= 9.0.1) - NuGet.Configuration (>= 5.6) - NuGet.Versioning (>= 5.6) - System.Dynamic.Runtime (>= 4.3) - NuGet.Protocol (5.6) - NuGet.Packaging (>= 5.6) - System.Dynamic.Runtime (>= 4.3) - NuGet.Versioning (5.6) - Octokit (0.48) - System.Collections (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Collections.Immutable (5.0) - System.Configuration.ConfigurationManager (4.7) - System.Security.Cryptography.ProtectedData (>= 4.7) - System.Security.Permissions (>= 4.7) - System.Diagnostics.Debug (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Drawing.Common (4.7) - Microsoft.NETCore.Platforms (>= 3.1) - Microsoft.Win32.SystemEvents (>= 4.7) - System.Dynamic.Runtime (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Linq (>= 4.3) - System.Linq.Expressions (>= 4.3) - System.ObjectModel (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Reflection.TypeExtensions (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Globalization (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.IO (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Linq (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Linq.Expressions (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Globalization (>= 4.3) - System.IO (>= 4.3) - System.Linq (>= 4.3) - System.ObjectModel (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Emit.Lightweight (>= 4.3) - System.Reflection.Extensions (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Reflection.TypeExtensions (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime.Extensions (>= 4.3) - System.Threading (>= 4.3) - System.Memory (4.5.4) - System.ObjectModel (4.3) - System.Collections (>= 4.3) - System.Diagnostics.Debug (>= 4.3) - System.Resources.ResourceManager (>= 4.3) - System.Runtime (>= 4.3) - System.Threading (>= 4.3) - System.Reactive (5.0) - System.Reflection (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.IO (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Emit (4.3) - System.IO (>= 4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Emit.ILGeneration (4.3) - System.Reflection (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Emit.Lightweight (4.3) - System.Reflection (>= 4.3) - System.Reflection.Emit.ILGeneration (>= 4.3) - System.Reflection.Primitives (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Reflection.Primitives (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Reflection.TypeExtensions (4.3) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Resources.ResourceManager (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Globalization (>= 4.3) - System.Reflection (>= 4.3) - System.Runtime (>= 4.3) - System.Runtime (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime.CompilerServices.Unsafe (5.0) - System.Runtime.Extensions (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Runtime.Handles (4.0.1) - Microsoft.NETCore.Platforms (>= 1.0.1) - Microsoft.NETCore.Targets (>= 1.0.1) - System.Runtime (>= 4.1) - System.Runtime.InteropServices (4.1) - Microsoft.NETCore.Platforms (>= 1.0.1) - Microsoft.NETCore.Targets (>= 1.0.1) - System.Reflection (>= 4.1) - System.Reflection.Primitives (>= 4.0.1) - System.Runtime (>= 4.1) - System.Runtime.Handles (>= 4.0.1) - System.Security.AccessControl (4.7) - Microsoft.NETCore.Platforms (>= 3.1) - System.Security.Principal.Windows (>= 4.7) - System.Security.Cryptography.ProtectedData (4.7) - System.Security.Permissions (4.7) - System.Security.AccessControl (>= 4.7) - System.Windows.Extensions (>= 4.7) - System.Security.Principal.Windows (4.7) - System.Text.Encoding (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (4.0.1) - Microsoft.NETCore.Platforms (>= 1.0.1) - System.Collections (>= 4.0.11) - System.Globalization (>= 4.0.11) - System.IO (>= 4.1) - System.Reflection (>= 4.1) - System.Resources.ResourceManager (>= 4.0.1) - System.Runtime (>= 4.1) - System.Runtime.Extensions (>= 4.1) - System.Runtime.Handles (>= 4.0.1) - System.Runtime.InteropServices (>= 4.1) - System.Text.Encoding (>= 4.0.11) - System.Threading (>= 4.0.11) - System.Threading (4.3) - System.Runtime (>= 4.3) - System.Threading.Tasks (>= 4.3) - System.Threading.Tasks (4.3) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - System.Runtime (>= 4.3) - System.Windows.Extensions (4.7) - System.Drawing.Common (>= 4.7) - -GROUP Docs -STORAGE: PACKAGES -RESTRICTION: == netstandard2.0 -NUGET - remote: https://api.nuget.org/v3/index.json - FSharp.Compiler.Service (43.8.100) - FSharp.Core (8.0.100) - System.Buffers (>= 4.5.1) - System.Collections.Immutable (>= 7.0) - System.Diagnostics.DiagnosticSource (>= 7.0.2) - System.Memory (>= 4.5.5) - System.Reflection.Emit (>= 4.7) - System.Reflection.Metadata (>= 7.0) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - FSharp.Core (8.0.100) - FSharp.Formatting (4.1) - FSharp.Compiler.Service (>= 35.0) - Markdig (0.34) - System.Memory (>= 4.5.5) - Newtonsoft.Json (13.0.3) - System.Buffers (4.5.1) - System.Collections.Immutable (8.0) - System.Memory (>= 4.5.5) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Diagnostics.DiagnosticSource (8.0) - System.Memory (>= 4.5.5) - System.Runtime.CompilerServices.Unsafe (>= 6.0) - System.Memory (4.5.5) - System.Buffers (>= 4.5.1) - System.Numerics.Vectors (>= 4.4) - System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - System.Numerics.Vectors (4.5) - System.Reflection.Emit (4.7) - System.Reflection.Emit.ILGeneration (>= 4.7) - System.Reflection.Emit.ILGeneration (4.7) - System.Reflection.Metadata (8.0) - System.Collections.Immutable (>= 8.0) - System.Memory (>= 4.5.5) - System.Runtime.CompilerServices.Unsafe (6.0) diff --git a/src/FSharpLint.Console/FSharpLint.Console.fsproj b/src/FSharpLint.Console/FSharpLint.Console.fsproj index 2a9d92b88..028d418ad 100644 --- a/src/FSharpLint.Console/FSharpLint.Console.fsproj +++ b/src/FSharpLint.Console/FSharpLint.Console.fsproj @@ -1,8 +1,8 @@  + net9.0 Exe - net6.0 FSharpLint.Console Console application to run FSharpLint. @@ -20,9 +20,14 @@ + + + + + + - diff --git a/src/FSharpLint.Console/paket.references b/src/FSharpLint.Console/paket.references deleted file mode 100644 index fc097e42e..000000000 --- a/src/FSharpLint.Console/paket.references +++ /dev/null @@ -1,4 +0,0 @@ -Argu -FSharp.Compiler.Service -FSharp.Core -Microsoft.SourceLink.GitHub \ No newline at end of file diff --git a/src/FSharpLint.Core/Application/Configuration.fs b/src/FSharpLint.Core/Application/Configuration.fs index 1ba4ba8a2..c1f1a8501 100644 --- a/src/FSharpLint.Core/Application/Configuration.fs +++ b/src/FSharpLint.Core/Application/Configuration.fs @@ -83,7 +83,7 @@ module IgnoreFiles = |> fun segments -> Ignore(segments, IsDirectory(isDirectory)) let private pathMatchesGlob (globs:Regex list) (path:string list) isDirectory = - let rec getRemainingGlobSeqForMatches pathSegment (globSeqs:Regex list list) = + let rec getRemainingGlobSeqForMatches (pathSegment:string) (globSeqs:Regex list list) = globSeqs |> List.choose (function | globSegment::remaining when globSegment.IsMatch(pathSegment) -> Some remaining | _ -> None) @@ -337,7 +337,7 @@ with member this.Flatten() = [| this.recursiveAsyncFunction |> Option.bind (constructRuleIfEnabled RecursiveAsyncFunction.rule) |> Option.toArray - this.avoidTooShortNames |> Option.bind (constructRuleIfEnabled AvoidTooShortNames.rule) |> Option.toArray + this.avoidTooShortNames |> Option.bind (constructRuleIfEnabled AvoidTooShortNames.rule) |> Option.toArray this.redundantNewKeyword |> Option.bind (constructRuleIfEnabled RedundantNewKeyword.rule) |> Option.toArray this.favourNonMutablePropertyInitialization |> Option.bind (constructRuleIfEnabled FavourNonMutablePropertyInitialization.rule) |> Option.toArray this.favourReRaise |> Option.bind (constructRuleIfEnabled FavourReRaise.rule) |> Option.toArray diff --git a/src/FSharpLint.Core/FSharpLint.Core.fsproj b/src/FSharpLint.Core/FSharpLint.Core.fsproj index 3f9649f2c..5fac0ce03 100644 --- a/src/FSharpLint.Core/FSharpLint.Core.fsproj +++ b/src/FSharpLint.Core/FSharpLint.Core.fsproj @@ -1,7 +1,7 @@ - - + + - net6.0 + net9.0 true true true @@ -12,6 +12,7 @@ API to programmatically run FSharpLint. F#;fsharp;lint;FSharpLint;fslint;api + @@ -133,5 +134,22 @@ Designer - + + + + + + + + + + + + + + + + + + diff --git a/src/FSharpLint.Core/Framework/Ast.fs b/src/FSharpLint.Core/Framework/Ast.fs index 74b8a1bf5..7851403c6 100644 --- a/src/FSharpLint.Core/Framework/Ast.fs +++ b/src/FSharpLint.Core/Framework/Ast.fs @@ -7,7 +7,7 @@ open FSharp.Compiler.Text module Ast = open FSharp.Compiler.Syntax - + /// Nodes in the AST to be visited. [] @@ -106,9 +106,11 @@ module Ast = let (|Cons|_|) pattern = match pattern with + | SynPat.ListCons(lhs, rhs, _, _) -> + Some(lhs, rhs) | SynPat.LongIdent(SynLongIdent([identifier], _, _), _, _, - SynArgPats.Pats([SynPat.Tuple(_, [lhs; rhs], _)]), _, _) + SynArgPats.Pats([SynPat.Tuple(_, [lhs; rhs], _, _)]), _, _) when identifier.idText = "op_ColonColon" -> Some(lhs, rhs) | _ -> None @@ -147,16 +149,22 @@ module Ast = types |> List.revIter (Type >> add) add <| Type synType | SynType.Tuple(_, types, _) -> - types |> List.revIter (snd >> Type >> add) - | SynType.Fun(synType, synType1, _, _) - | SynType.StaticConstantNamed(synType, synType1, _) - | SynType.MeasureDivide(synType, synType1, _) -> + types |> List.revIter (function + | SynTupleTypeSegment.Type(synType) -> add <| Type synType + | SynTupleTypeSegment.Slash(_) -> () + | SynTupleTypeSegment.Star(_) -> ()) + | SynType.Fun(synType, synType1, _, _) -> + add <| Type synType1 + add <| Type synType + | SynType.StaticConstantNamed(synType, synType1, _) -> add <| Type synType1 add <| Type synType | SynType.Var(_) | SynType.Anon(_) | SynType.LongIdent(_) - | SynType.StaticConstant(_) -> () + | SynType.StaticConstant(_) + | SynType.StaticConstantNull(_) + | SynType.FromParseError(_) -> () | SynType.WithGlobalConstraints(synType, _, _) | SynType.HashConstraint(synType, _) | SynType.MeasurePower(synType, _, _) @@ -166,23 +174,29 @@ module Ast = typeNames |> List.revIter (snd >> Type >> add) | SynType.Paren(innerType, _) -> add <| Type innerType + | SynType.Intersection(synTyparOpt, types, _, _) -> + synTyparOpt |> Option.iter (TypeParameter >> add) + types |> List.revIter (Type >> add) + | SynType.Or(synType, synType1, _, _) -> + add <| Type synType + add <| Type synType1 + | SynType.SignatureParameter(_, _, _, synType, _) -> + add <| Type synType + | SynType.WithNull(synType, _, _, _) -> + add <| Type synType /// Concatenates the typed-or-untyped structure of `SynSimplePats` into a `SynSimplePat list` to keep other code /// mostly unchanged. let inline extractPatterns (simplePats:SynSimplePats) = - let rec loop pat acc = - match pat with - | SynSimplePats.SimplePats(patterns, _range) -> patterns @ acc - | SynSimplePats.Typed(patterns, _type, _range) -> loop patterns acc - loop simplePats [] + match simplePats with + | SynSimplePats.SimplePats(patterns, _, _) -> patterns let inline private memberDefinitionChildren node add = match node with | SynMemberDefn.Member(binding, _) -> add <| Binding binding - | SynMemberDefn.ImplicitCtor(_, _, patterns, _, _, _) -> - let combinedPatterns = extractPatterns patterns - combinedPatterns |> List.revIter (SimplePattern >> add) - | SynMemberDefn.ImplicitInherit(synType, expression, _, _) -> + | SynMemberDefn.ImplicitCtor(_, _, patterns, _, _, _, _) -> + add <| Pattern patterns + | SynMemberDefn.ImplicitInherit(synType, expression, _, _, _) -> add <| Expression expression add <| Type synType | SynMemberDefn.LetBindings(bindings, _, _, _) -> bindings |> List.revIter (Binding >> add) @@ -190,15 +204,16 @@ module Ast = members |> List.revIter (MemberDefinition >> add) add <| Type synType | SynMemberDefn.Interface(synType, _, None, _) - | SynMemberDefn.Inherit(synType, _, _) -> add <| Type synType + | SynMemberDefn.Inherit(Some synType, _, _, _) -> add <| Type synType + | SynMemberDefn.Inherit(None, _, _, _) | SynMemberDefn.Open(_) | SynMemberDefn.AbstractSlot(_) -> () | SynMemberDefn.ValField(field, _) -> add <| Field field | SynMemberDefn.NestedType(typeDefinition, _, _) -> add <| TypeDefinition typeDefinition - | SynMemberDefn.AutoProperty(_, _, _, Some(synType), _, _, _, _, _, expression, _, _, _) -> + | SynMemberDefn.AutoProperty(_, _, _, Some(synType), _, _, _, _, _, expression, _, _) -> add <| Expression expression add <| Type synType - | SynMemberDefn.AutoProperty(_, _, _, None, _, _, _, _, _, expression, _, _, _) -> + | SynMemberDefn.AutoProperty(_, _, _, None, _, _, _, _, _, expression, _, _) -> add <| Expression expression | SynMemberDefn.GetSetMember(memberDefnForGet, memberDefnForSet, _, _) -> memberDefnForGet |> Option.iter (Binding >> add) @@ -215,7 +230,7 @@ module Ast = add <| Pattern pattern1 add <| Pattern pattern | SynPat.ArrayOrList(_, patterns, _) - | SynPat.Tuple(_, patterns, _) + | SynPat.Tuple(_, patterns, _, _) | SynPat.Ands(patterns, _) -> patterns |> List.revIter (Pattern >> add) | SynPat.Attrib(pattern, _, _) | SynPat.Paren(pattern, _) -> add <| Pattern pattern @@ -225,7 +240,6 @@ module Ast = | SynPat.Wild(_) | SynPat.FromParseError(_) | SynPat.InstanceMember(_) - | SynPat.DeprecatedCharRange(_) | SynPat.Null(_) | SynPat.OptionalVal(_) -> () | Cons(lhs, rhs) -> @@ -236,6 +250,9 @@ module Ast = | SynPat.As(lhsPart, rhsPart, _) -> add <| Pattern lhsPart add <| Pattern rhsPart + | SynPat.ListCons(lhs, rhs, _, _) -> + add <| Pattern lhs + add <| Pattern rhs let inline private expressionChildren node add = match node with @@ -250,17 +267,17 @@ module Ast = | SynExpr.AddressOf(_, expression, _, _) | SynExpr.InferredDowncast(expression, _) | SynExpr.InferredUpcast(expression, _) - | SynExpr.DoBang(expression, _) + | SynExpr.DoBang(expression, _, _) | SynExpr.Lazy(expression, _) | SynExpr.TraitCall(_, _, expression, _) - | SynExpr.YieldOrReturn(_, expression, _) - | SynExpr.YieldOrReturnFrom(_, expression, _) -> add <| Expression expression + | SynExpr.YieldOrReturn(_, expression, _, _) + | SynExpr.YieldOrReturnFrom(_, expression, _, _) -> add <| Expression expression | SynExpr.SequentialOrImplicitYield(_, expression1, expression2, ifNotExpression, _) -> add <| Expression expression1 add <| Expression expression2 add <| Expression ifNotExpression | SynExpr.Quote(expression, _, expression1, _, _) - | SynExpr.Sequential(_, _, expression, expression1, _) + | SynExpr.Sequential(_, _, expression, expression1, _, _) | SynExpr.NamedIndexedPropertySet(_, expression, expression1, _) | SynExpr.DotIndexedSet(expression, _, expression1, _, _, _) | SynExpr.JoinIn(expression, _, expression1, _) @@ -277,9 +294,9 @@ module Ast = | SynExpr.ArrayOrList(_, expressions, _) -> expressions |> List.revIter (Expression >> add) | SynExpr.Record(_, Some(expr, _), _, _) -> add <| Expression expr | SynExpr.Record(_, None, _, _) -> () - | SynExpr.AnonRecd(_, Some (expr,_), _, _) -> + | SynExpr.AnonRecd(_, Some (expr,_), _, _, _) -> add <| Expression expr - | SynExpr.AnonRecd(_, None, _, _) -> () + | SynExpr.AnonRecd(_, None, _, _, _) -> () | SynExpr.ObjExpr(synType, _, _, bindings, _, _, _, _) -> bindings |> List.revIter (Binding >> add) add <| Type synType @@ -340,7 +357,7 @@ module Ast = | SynExpr.IfThenElse(cond, body, None, _, _, _, _) -> add <| Expression body add <| Expression cond - | SynExpr.InterpolatedString(contents, _, range) -> + | SynExpr.InterpolatedString(contents, _, range) -> contents |> List.iter ( function @@ -350,16 +367,21 @@ module Ast = add <| Expression expr ) | SynExpr.Lambda(_) + | SynExpr.DotLambda(_) | SynExpr.App(_) - | SynExpr.Fixed(_) -> () - | SynExpr.DebugPoint(_debugPoint, _, innerExpr) -> + | SynExpr.Fixed(_) + | SynExpr.Typar(_, _) -> () + | SynExpr.WhileBang(_, expression, expression1, _) -> + add <| Expression expression1 + add <| Expression expression + | SynExpr.DebugPoint(_debugPoint, _, innerExpr) -> add <| Expression innerExpr | SynExpr.Dynamic(funcExpr, _, argExpr, _) -> add <| Expression funcExpr add <| Expression argExpr - | SynExpr.IndexFromEnd(expr, _) -> + | SynExpr.IndexFromEnd(expr, _) -> add <| Expression expr - | SynExpr.IndexRange(expr1, _, expr2, _, _, _) -> + | SynExpr.IndexRange(expr1, _, expr2, _, _, _) -> expr1 |> Option.iter (Expression >> add) expr2 |> Option.iter (Expression >> add) @@ -376,11 +398,8 @@ module Ast = let inline private simplePatternsChildren node add = match node with - | SynSimplePats.SimplePats(simplePatterns, _) -> + | SynSimplePats.SimplePats(simplePatterns, _, _) -> simplePatterns |> List.revIter (SimplePattern >> add) - | SynSimplePats.Typed(simplePatterns, synType, _) -> - add <| Type synType - add <| SimplePatterns simplePatterns let inline private simplePatternChildren node add = match node with @@ -404,7 +423,7 @@ module Ast = match node with | SynArgPats.Pats(patterns) -> patterns |> List.revIter (Pattern >> add) - | SynArgPats.NamePatPairs(namePatterns, _) -> + | SynArgPats.NamePatPairs(namePatterns, _, _) -> namePatterns |> List.revIter (fun (_, _, pattern) -> pattern |> Pattern |> add) let inline private typeRepresentationChildren node add = @@ -443,7 +462,7 @@ module Ast = | Type(x) -> typeChildren x add | Match(x) -> matchChildren x add | MemberDefinition(x) -> memberDefinitionChildren x add - | Field(SynField(_, _, _, synType, _, _, _, _)) -> add <| Type synType + | Field(SynField(_, _, _, synType, _, _, _, _, _)) -> add <| Type synType | Pattern(x) -> patternChildren x add | ConstructorArguments(x) -> constructorArgumentsChildren x add | SimplePattern(x) -> simplePatternChildren x add @@ -457,12 +476,12 @@ module Ast = | Lambda({ Arguments = args; Body = body }, _) -> add <| LambdaBody(body) args |> List.revIter (LambdaArg >> add) - + | LambdaBody(x) | Else(x) | Expression(x) -> expressionChildren x add - | File(ParsedInput.ImplFile(ParsedImplFileInput(_, _, _, _, _, moduleOrNamespaces, _, _))) -> + | File(ParsedInput.ImplFile(ParsedImplFileInput(_, _, _, _, _, moduleOrNamespaces, _, _, _))) -> moduleOrNamespaces |> List.revIter (ModuleOrNamespace >> add) | UnionCase(x) -> unionCaseChildren x add diff --git a/src/FSharpLint.Core/Framework/Utilities.fs b/src/FSharpLint.Core/Framework/Utilities.fs index 398f8b1df..860dcc150 100644 --- a/src/FSharpLint.Core/Framework/Utilities.fs +++ b/src/FSharpLint.Core/Framework/Utilities.fs @@ -49,7 +49,7 @@ module ExpressionUtilities = /// Converts an operator name e.g. op_Add to the operator symbol e.g. + let identAsDecompiledOpName (ident:Ident) = if ident.idText.StartsWith("op_") then - PrettyNaming.DecompileOpName ident.idText + PrettyNaming.ConvertValLogicalNameToDisplayNameCore ident.idText else ident.idText let identAsCompiledOpName (identName: string) = diff --git a/src/FSharpLint.Core/Rules/Conventions/AsyncExceptionWithoutReturn.fs b/src/FSharpLint.Core/Rules/Conventions/AsyncExceptionWithoutReturn.fs index a93b4496b..521515201 100644 --- a/src/FSharpLint.Core/Rules/Conventions/AsyncExceptionWithoutReturn.fs +++ b/src/FSharpLint.Core/Rules/Conventions/AsyncExceptionWithoutReturn.fs @@ -1,15 +1,15 @@ module FSharpLint.Rules.AsyncExceptionWithoutReturn -open FSharpLint.Framework -open FSharpLint.Framework.Suggestion open FSharp.Compiler.Syntax open FSharp.Compiler.Text +open FSharpLint.Framework +open FSharpLint.Framework.Suggestion open FSharpLint.Framework.Ast open FSharpLint.Framework.Rules let rec checkExpression (expression: SynExpr) (range: range) = match expression with - | SynExpr.Sequential (_, _, firstExpression, secondExpression, _) -> + | SynExpr.Sequential (_, _, firstExpression, secondExpression, _, _) -> let result = checkExpression firstExpression range Array.append result (checkExpression secondExpression secondExpression.Range) | SynExpr.Paren (innerExpression, _, _, range) -> checkExpression innerExpression range diff --git a/src/FSharpLint.Core/Rules/Conventions/AvoidTooShortNames.fs b/src/FSharpLint.Core/Rules/Conventions/AvoidTooShortNames.fs index 6b6ef5423..b54fb0ad5 100644 --- a/src/FSharpLint.Core/Rules/Conventions/AvoidTooShortNames.fs +++ b/src/FSharpLint.Core/Rules/Conventions/AvoidTooShortNames.fs @@ -16,7 +16,7 @@ let private checkIdentifierPart (identifier:Ident) (idText:string) = String.Format(Resources.GetString errorName, idText) "RulesAvoidTooShortNamesError" |> formatError |> Array.singleton - + let private checkIdentifier (identifier:Ident) (idText:string) = if isIdentifierTooShort idText then checkIdentifierPart identifier idText @@ -33,21 +33,21 @@ let private getParameterWithBelowMinimumLength (pats: SynPat list): (Ident * str match patArray with | SynPat.Named(SynIdent(ident, _), _, _, _)::tail -> if isIdentifierTooShort ident.idText then - Array.singleton (ident, ident.idText, None) |> Array.append acc |> loop tail + Array.singleton (ident, ident.idText, None) |> Array.append acc |> loop tail else loop tail acc | SynPat.Paren(pat, _)::tail -> match pat with | SynPat.Typed(typedPat, _, _) -> loop (typedPat::tail) acc - | SynPat.Tuple(_, elementPats, _) -> + | SynPat.Tuple(_, elementPats, _, _) -> loop elementPats acc | _ -> loop (pat::tail) acc | SynPat.LongIdent(_, _, _, argPats, _, _)::tail -> match argPats with - | SynArgPats.Pats(pats) -> + | SynArgPats.Pats(pats) -> loop (List.append pats tail) acc - | _ -> + | _ -> loop tail acc | _ -> acc loop pats Array.empty @@ -70,23 +70,23 @@ let private getIdentifiers (args:AstNodeRuleParams) = | head::_ -> let result: (Ident * string * (unit -> bool) option) array = getParameterWithBelowMinimumLength names if isIdentifierTooShort head.idText then - Array.append result (Array.singleton (head, head.idText, None)) - else + Array.append result (Array.singleton (head, head.idText, None)) + else result | _ -> Array.empty | SynPat.Named(SynIdent(identifier, _), _, _, _) when isIdentifierTooShort identifier.idText -> (identifier, identifier.idText, None) |> Array.singleton | _ -> Array.empty - | AstNode.Field(SynField(_, _, Some identifier, _, _, _, _, _)) when isIdentifierTooShort identifier.idText -> + | AstNode.Field(SynField(_, _, Some identifier, _, _, _, _, _, _)) when isIdentifierTooShort identifier.idText -> (identifier, identifier.idText, None) |> Array.singleton | AstNode.TypeDefinition(SynTypeDefn(componentInfo, _typeDef, _, _, _, _)) -> let checkTypes types = seq { - for SynTyparDecl(_attr, SynTypar(id, _, _)) in types do + for SynTyparDecl(_attr, SynTypar(id, _, _), _, _) in types do if isIdentifierTooShort id.idText then yield (id, id.idText, None) } - + match componentInfo with | SynComponentInfo(_attrs, maybeTypes, _, _identifier, _, _, _, _) -> match maybeTypes with diff --git a/src/FSharpLint.Core/Rules/Conventions/Binding/TupleOfWildcards.fs b/src/FSharpLint.Core/Rules/Conventions/Binding/TupleOfWildcards.fs index 2fc6757b1..c3766b5d8 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Binding/TupleOfWildcards.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Binding/TupleOfWildcards.fs @@ -1,9 +1,9 @@ module FSharpLint.Rules.TupleOfWildcards open System +open FSharp.Compiler.Syntax open FSharpLint.Framework open FSharpLint.Framework.Suggestion -open FSharp.Compiler.Syntax open FSharpLint.Framework.Ast open FSharpLint.Framework.Rules @@ -19,7 +19,7 @@ let private checkTupleOfWildcards pattern identifier = constructorName + "(" + arguments + ")" match pattern with - | SynPat.Tuple(_isStruct, patterns, range) when List.length patterns > 1 && patterns |> List.forall isWildcard -> + | SynPat.Tuple(_isStruct, patterns, _, range) when List.length patterns > 1 && patterns |> List.forall isWildcard -> let errorFormat = Resources.GetString("RulesTupleOfWildcardsError") let refactorFrom = constructorString (List.length patterns) let refactorTo = (constructorString 1) @@ -37,14 +37,14 @@ let private isTupleMemberArgs breadcrumbs tupleRange = | _ -> None match breadcrumbs with - | AstNode.Binding(MemberBindingArgs(SynPat.Tuple(_, _, range)))::AstNode.Expression(SynExpr.ObjExpr(_))::_ - | AstNode.Binding(MemberBindingArgs(SynPat.Tuple(_, _, range)))::AstNode.MemberDefinition(_)::_ -> + | AstNode.Binding(MemberBindingArgs(SynPat.Tuple(_, _, _, range)))::AstNode.Expression(SynExpr.ObjExpr(_))::_ + | AstNode.Binding(MemberBindingArgs(SynPat.Tuple(_, _, _, range)))::AstNode.MemberDefinition(_)::_ -> tupleRange = range | _ -> false let private runner (args:AstNodeRuleParams) = match args.AstNode with - | AstNode.Pattern(SynPat.LongIdent(identifier, _, _, SynArgPats.Pats([SynPat.Paren(SynPat.Tuple(_, _, range) as pattern, _)]), _, _)) -> + | AstNode.Pattern(SynPat.LongIdent(identifier, _, _, SynArgPats.Pats([SynPat.Paren(SynPat.Tuple(_, _, _, range) as pattern, _)]), _, _)) -> let breadcrumbs = args.GetParents 2 if (not << isTupleMemberArgs breadcrumbs) range then let identifier = identifier.LongIdent |> List.map (fun x -> x.idText) diff --git a/src/FSharpLint.Core/Rules/Conventions/FavourNonMutablePropertyInitialization.fs b/src/FSharpLint.Core/Rules/Conventions/FavourNonMutablePropertyInitialization.fs index fca1fc59c..81e67ea84 100644 --- a/src/FSharpLint.Core/Rules/Conventions/FavourNonMutablePropertyInitialization.fs +++ b/src/FSharpLint.Core/Rules/Conventions/FavourNonMutablePropertyInitialization.fs @@ -45,7 +45,7 @@ let rec private processLetBinding (instanceNames: Set) (body: SynExpr) : | [instanceIdent; propertyIdent] when Set.contains instanceIdent.idText instanceNames -> getWarningDetails propertyIdent | _ -> Array.empty - | SynExpr.Sequential(_, _, expr1, expr2, _) -> + | SynExpr.Sequential(_, _, expr1, expr2, _, _) -> let instanceNames = Set.difference instanceNames @@ -60,7 +60,7 @@ and processExpression (expression: SynExpr) : array = | SynExpr.LetOrUse(_, _, bindings, body, _, _) -> let instanceNames = extraFromBindings bindings [] |> Set.ofList processLetBinding instanceNames body - | SynExpr.Sequential(_, _, expr1, expr2, _) -> + | SynExpr.Sequential(_, _, expr1, expr2, _, _) -> Array.append (processExpression expr1) (processExpression expr2) diff --git a/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/FunctionReimplementationHelper.fs b/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/FunctionReimplementationHelper.fs index 94cb0d1e8..ab67e2a47 100644 --- a/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/FunctionReimplementationHelper.fs +++ b/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/FunctionReimplementationHelper.fs @@ -5,7 +5,7 @@ open FSharpLint.Framework.Ast open FSharpLint.Framework.Rules let rec getLambdaParamIdent = function - | SynSimplePats.SimplePats([pattern], _) -> + | SynSimplePats.SimplePats([pattern], _, _) -> let rec getIdent = function | SynSimplePat.Id(ident, _, _, _, _, _) -> ident | SynSimplePat.Typed(simplePattern, _, _) @@ -14,8 +14,6 @@ let rec getLambdaParamIdent = function getIdent pattern |> Some | SynSimplePats.SimplePats(_) -> None - | SynSimplePats.Typed(simplePatterns, _, _) -> - getLambdaParamIdent simplePatterns let checkLambda (args:AstNodeRuleParams) checker = match args.AstNode with diff --git a/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/ReimplementsFunction.fs b/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/ReimplementsFunction.fs index a4faa6e22..e204d209a 100644 --- a/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/ReimplementsFunction.fs +++ b/src/FSharpLint.Core/Rules/Conventions/FunctionReimplementation/ReimplementsFunction.fs @@ -1,9 +1,9 @@ module FSharpLint.Rules.ReimplementsFunction open System +open FSharp.Compiler.Syntax open FSharpLint.Framework open FSharpLint.Framework.Suggestion -open FSharp.Compiler.Syntax open FSharpLint.Framework.Ast open FSharpLint.Framework.Rules @@ -25,8 +25,8 @@ let private validateLambdaIsNotPointless (text:string) lambda range = let identifier = identifier |> List.map (fun x -> - if PrettyNaming.IsMangledOpName x.idText then - PrettyNaming.DecompileOpName x.idText |> sprintf "( %s )" + if PrettyNaming.IsLogicalOpName x.idText then + PrettyNaming.ConvertValLogicalNameToDisplayNameCore x.idText |> sprintf "( %s )" else x.idText) |> String.concat "." diff --git a/src/FSharpLint.Core/Rules/Conventions/Naming/EnumCasesNames.fs b/src/FSharpLint.Core/Rules/Conventions/Naming/EnumCasesNames.fs index a4252b9e7..b0d5c260a 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Naming/EnumCasesNames.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Naming/EnumCasesNames.fs @@ -7,7 +7,7 @@ open FSharpLint.Rules.Helper.Naming let private getIdentifiers (args:AstNodeRuleParams) = match args.AstNode with - | AstNode.EnumCase(SynEnumCase(_, SynIdent(identifier, _), _, _, _, _, _)) -> + | AstNode.EnumCase(SynEnumCase(_, SynIdent(identifier, _), _, _, _, _)) -> (identifier, identifier.idText, None) |> Array.singleton | _ -> Array.empty diff --git a/src/FSharpLint.Core/Rules/Conventions/Naming/GenericTypesNames.fs b/src/FSharpLint.Core/Rules/Conventions/Naming/GenericTypesNames.fs index d67553ef3..12c6fa5ab 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Naming/GenericTypesNames.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Naming/GenericTypesNames.fs @@ -10,10 +10,10 @@ let private getIdentifiers (args: AstNodeRuleParams) = | AstNode.TypeDefinition(SynTypeDefn(componentInfo, _typeDef, _, _, _, _)) -> let checkTypes types = seq { - for SynTyparDecl(_attr, SynTypar(id, _, _)) in types do + for SynTyparDecl(_attr, SynTypar(id, _, _), _, _) in types do yield (id, id.idText, None) } - + match componentInfo with | SynComponentInfo(_attrs, maybeTypes, _, _identifier, _, _, _, _) -> match maybeTypes with diff --git a/src/FSharpLint.Core/Rules/Conventions/Naming/MemberNames.fs b/src/FSharpLint.Core/Rules/Conventions/Naming/MemberNames.fs index 486de1b1c..2e29ee179 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Naming/MemberNames.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Naming/MemberNames.fs @@ -35,7 +35,7 @@ let private getIdentifiers (args:AstNodeRuleParams) = Array.empty | AstNode.MemberDefinition(memberDef) -> match memberDef with - | SynMemberDefn.AbstractSlot(SynValSig(_, SynIdent(identifier, _), _, _, _, _, _, _, _, _, _, _), _, _) -> + | SynMemberDefn.AbstractSlot(SynValSig(_, SynIdent(identifier, _), _, _, _, _, _, _, _, _, _, _), _, _, _) -> (identifier, identifier.idText, None) |> Array.singleton | _ -> Array.empty | _ -> Array.empty diff --git a/src/FSharpLint.Core/Rules/Conventions/Naming/NamingHelper.fs b/src/FSharpLint.Core/Rules/Conventions/Naming/NamingHelper.fs index b71ce007b..7971c2c06 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Naming/NamingHelper.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Naming/NamingHelper.fs @@ -179,12 +179,12 @@ let activePatternIdentifiers (identifier:Ident) = |> Array.filter (fun x -> not <| String.IsNullOrEmpty(x) && x.Trim() <> "_") -/// Specifies access control level as described in +/// Specifies access control level as described in /// https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/access-control . -/// Higher levels also include lower levels, so e.g. identifier marked with Public +/// Higher levels also include lower levels, so e.g. identifier marked with Public /// is also accessible in Internal and Private scopes. /// Public scope is the widest, then goes Internal, then Private. -type AccessControlLevel = +type AccessControlLevel = | Public | Private | Internal @@ -203,7 +203,7 @@ let getAccessControlLevel (syntaxArray:AbstractSyntaxArray.Node []) i = | TypeSimpleRepresentation(SynTypeDefnSimpleRepr.Record(access, _, _)) | TypeSimpleRepresentation(SynTypeDefnSimpleRepr.Union(access, _, _)) | UnionCase(SynUnionCase(_, _, _, _, access, _, _)) - | Field(SynField(_, _, _, _, _, _, access, _)) + | Field(SynField(_, _, _, _, _, _, access, _, _)) | ComponentInfo(SynComponentInfo(_, _, _, _, _, _, access, _)) | ModuleOrNamespace (SynModuleOrNamespace.SynModuleOrNamespace(_, _, _, _, _, _, access, _, _)) | ExceptionRepresentation(SynExceptionDefnRepr.SynExceptionDefnRepr(_, _, _, _, access, _)) @@ -318,12 +318,12 @@ let rec getPatternIdents<'T> (accessibility:AccessControlLevel) (getIdents:GetId let hasNoArgs = match args with - | SynArgPats.NamePatPairs(pats, _) -> pats.IsEmpty + | SynArgPats.NamePatPairs(pats, _, _) -> pats.IsEmpty | SynArgPats.Pats(pats) -> pats.IsEmpty let argSuggestions = match args with - | SynArgPats.NamePatPairs(pats, _) -> + | SynArgPats.NamePatPairs(pats, _, _) -> pats |> List.toArray |> Array.collect (fun(_, _, synPat) -> getPatternIdents AccessControlLevel.Private getIdents false synPat) @@ -347,7 +347,7 @@ let rec getPatternIdents<'T> (accessibility:AccessControlLevel) (getIdents:GetId | SynPat.Paren(p, _) -> getPatternIdents accessibility getIdents false p | SynPat.Ands(pats, _) - | SynPat.Tuple(_, pats, _) + | SynPat.Tuple(_, pats, _, _) | SynPat.ArrayOrList(_, pats, _) -> pats |> List.toArray @@ -361,16 +361,16 @@ let rec getPatternIdents<'T> (accessibility:AccessControlLevel) (getIdents:GetId | SynPat.Const(_) | SynPat.Wild(_) | SynPat.OptionalVal(_) - | SynPat.DeprecatedCharRange(_) | SynPat.InstanceMember(_) | SynPat.FromParseError(_) -> Array.empty - | SynPat.As(lhsPat, rhsPat, _) -> + | SynPat.InstanceMember(_) + | SynPat.FromParseError(_) -> Array.empty + | SynPat.As(lhsPat, rhsPat, _) -> Array.append (getPatternIdents accessibility getIdents false lhsPat) (getPatternIdents accessibility getIdents false rhsPat) - -let rec identFromSimplePat = function - | SynSimplePat.Id(ident, _, _, _, _, _) -> Some ident - | SynSimplePat.Typed(p, _, _) -> identFromSimplePat p - | SynSimplePat.Attrib(_) -> None + | SynPat.ListCons(lhs, rhs, _, _) -> + Array.append + (getPatternIdents accessibility getIdents false lhs) + (getPatternIdents accessibility getIdents false rhs) let isNested args nodeIndex = let parent = args.SyntaxArray.[nodeIndex].ParentIndex diff --git a/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs b/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs index b5a5c6297..81c22e27e 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs @@ -23,18 +23,20 @@ let private getValueOrFunctionIdents typeChecker _accessibility pattern = | SynPat.OptionalVal(ident, _) when not (isActivePattern ident) -> let checkNotUnionCase = checkNotUnionCase ident (ident, ident.idText, Some checkNotUnionCase) |> Array.singleton + | SynPat.LongIdent(SynLongIdent([ident], _, _), _, _, SynArgPats.Pats([]), _, _) when not (isActivePattern ident) -> + // Handle constructor parameters that are represented as LongIdent (e.g., PascalCase parameters) + let checkNotUnionCase = checkNotUnionCase ident + (ident, ident.idText, Some checkNotUnionCase) |> Array.singleton | _ -> Array.empty let private getIdentifiers (args:AstNodeRuleParams) = match args.AstNode with | AstNode.MemberDefinition(memberDef) -> match memberDef with - | SynMemberDefn.ImplicitCtor(_, _, ctorArgs, _, _, _) -> - ctorArgs - |> extractPatterns - |> List.toArray - |> Array.choose identFromSimplePat - |> Array.map (fun ident -> (ident, ident.idText, None)) + | SynMemberDefn.ImplicitCtor(_, _, ctorArgs, _, _, _, _) -> + // ctorArgs is a SynPat, not SynSimplePats, so we need to handle it differently + let accessControlLevel = getAccessControlLevel args.SyntaxArray args.NodeIndex + getPatternIdents accessControlLevel (getValueOrFunctionIdents args.CheckInfo) true ctorArgs | _ -> Array.empty | AstNode.Binding(SynBinding(access, _, _, _, attributes, _, valData, pattern, _, _, _, _, _)) -> if not (isLiteral attributes) then diff --git a/src/FSharpLint.Core/Rules/Conventions/NumberOfItems/MaxNumberOfMembers.fs b/src/FSharpLint.Core/Rules/Conventions/NumberOfItems/MaxNumberOfMembers.fs index 4a01efa30..e0a53120e 100644 --- a/src/FSharpLint.Core/Rules/Conventions/NumberOfItems/MaxNumberOfMembers.fs +++ b/src/FSharpLint.Core/Rules/Conventions/NumberOfItems/MaxNumberOfMembers.fs @@ -15,7 +15,8 @@ let private getMembers (members:SynMemberDefn list) = let isPublicMember = function | SynMemberDefn.AbstractSlot(_) -> true | SynMemberDefn.Member(SynBinding(access, _, _, _, _, _, _, _, _, _, _, _, _), _) - | SynMemberDefn.AutoProperty(_, _, _, _, _, _, _, access, _, _, _, _, _) -> isPublic access + | SynMemberDefn.AutoProperty(_, _, _, _, _, _, _, _, SynValSigAccess.Single (access), _, _, _) -> isPublic access + | SynMemberDefn.AutoProperty(_, _, _, _, _, _, _, _, SynValSigAccess.GetSet (access, _, _), _, _, _) -> isPublic access | _ -> false members diff --git a/src/FSharpLint.Core/Rules/Conventions/RecursiveAsyncFunction.fs b/src/FSharpLint.Core/Rules/Conventions/RecursiveAsyncFunction.fs index 105e27ae8..923e441e0 100644 --- a/src/FSharpLint.Core/Rules/Conventions/RecursiveAsyncFunction.fs +++ b/src/FSharpLint.Core/Rules/Conventions/RecursiveAsyncFunction.fs @@ -1,9 +1,9 @@ module FSharpLint.Rules.RecursiveAsyncFunction -open FSharpLint.Framework -open FSharpLint.Framework.Suggestion open FSharp.Compiler.Syntax open FSharp.Compiler.Text +open FSharpLint.Framework +open FSharpLint.Framework.Suggestion open FSharpLint.Framework.Ast open FSharpLint.Framework.Rules @@ -60,7 +60,7 @@ let checkRecursiveAsyncFunction (args:AstNodeRuleParams) (range:Range) (doBangEx let runner args = match args.AstNode with - | AstNode.Expression (SynExpr.DoBang (expr, range)) -> + | AstNode.Expression (SynExpr.DoBang (expr, range, _)) -> let parents = args.GetParents 5 checkRecursiveAsyncFunction args range expr parents | _ -> Array.empty diff --git a/src/FSharpLint.Core/Rules/Conventions/SuggestUseAutoProperty.fs b/src/FSharpLint.Core/Rules/Conventions/SuggestUseAutoProperty.fs index 418658788..80d7a3c15 100644 --- a/src/FSharpLint.Core/Rules/Conventions/SuggestUseAutoProperty.fs +++ b/src/FSharpLint.Core/Rules/Conventions/SuggestUseAutoProperty.fs @@ -1,9 +1,9 @@ module FSharpLint.Rules.SuggestUseAutoProperty open System +open FSharp.Compiler.Syntax open FSharpLint.Framework open FSharpLint.Framework.Suggestion -open FSharp.Compiler.Syntax open FSharpLint.Framework.Ast open FSharpLint.Framework.Rules @@ -38,7 +38,7 @@ let rec private isImmutableValueExpression (args: AstNodeRuleParams) (expression and isImmutableSequentialExpression args expression = match expression with - | SynExpr.Sequential (_, _, expr1, expr2, _) -> + | SynExpr.Sequential (_, _, expr1, expr2, _, _) -> isImmutableValueExpression args expr1 && (isImmutableSequentialExpression args expr2 || isImmutableValueExpression args expr2) diff --git a/src/FSharpLint.Core/Rules/Hints/HintMatcher.fs b/src/FSharpLint.Core/Rules/Hints/HintMatcher.fs index d3d3742b9..eaf3d1ff2 100644 --- a/src/FSharpLint.Core/Rules/Hints/HintMatcher.fs +++ b/src/FSharpLint.Core/Rules/Hints/HintMatcher.fs @@ -4,6 +4,7 @@ open System open System.Collections.Generic open System.Diagnostics open FSharp.Compiler.Syntax +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Symbols open FSharp.Compiler.CodeAnalysis open FSharpLint.Framework @@ -16,11 +17,8 @@ open FSharpLint.Framework.Rules type Config = { HintTrie:MergeSyntaxTrees.Edges } -let rec private extractSimplePatterns = function - | SynSimplePats.SimplePats(simplePatterns, _) -> - simplePatterns - | SynSimplePats.Typed(simplePatterns, _, _) -> - extractSimplePatterns simplePatterns +let private extractSimplePatterns (SynSimplePats.SimplePats(simplePatterns, _, _)) = + simplePatterns let rec private extractIdent = function | SynSimplePat.Id(ident, _, isCompilerGenerated, _, _, _) -> (ident, isCompilerGenerated) @@ -215,12 +213,12 @@ module private MatchExpression = /// Check that an infix equality operation is not actually the assignment of a value to a property in a constructor /// or a named parameter in a method call. - let private notPropertyInitialisationOrNamedParameter arguments leftExpr opExpr = + let private notPropertyInitialisationOrNamedParameter arguments leftExpr opExpr = match (leftExpr, opExpr) with | ExpressionUtilities.Identifier([ident], _), ExpressionUtilities.Identifier([opIdent], _) when opIdent.idText = "op_Equality" -> match arguments.FSharpCheckFileResults with | Some(checkFile) -> - fun () -> + fun () -> let symbolUse = checkFile.GetSymbolUseAtLocation( ident.idRange.StartLine, ident.idRange.EndColumn, "", [ident.idText]) @@ -443,20 +441,13 @@ module private MatchPattern = and private matchTuple (pattern, hint) = match (pattern, hint) with - | SynPat.Tuple(_, patterns, _), Pattern.Tuple(hintExpressions) -> + | SynPat.Tuple(_, patterns, _, _), Pattern.Tuple(hintExpressions) -> doPatternsMatch patterns hintExpressions | _ -> false and private matchConsPattern (pattern, hint) = match (pattern, hint) with - | SynPat.LongIdent( - SynLongIdent([ident], _, _), - _, - _, - SynArgPats.Pats([SynPat.Tuple(_, [leftPattern;rightPattern], _)]), - _, - _), Pattern.Cons(left, right) - when ident.idText = "op_ColonColon" -> + | Cons(leftPattern, rightPattern), Pattern.Cons(left, right) -> matchHintPattern (leftPattern, left) && matchHintPattern (rightPattern, right) | _ -> false diff --git a/src/FSharpLint.Core/Rules/Typography/Indentation.fs b/src/FSharpLint.Core/Rules/Typography/Indentation.fs index b393995cb..2f5ed2ae8 100644 --- a/src/FSharpLint.Core/Rules/Typography/Indentation.fs +++ b/src/FSharpLint.Core/Rules/Typography/Indentation.fs @@ -63,7 +63,7 @@ module ContextBuilder = match node with | TypeDefinition (SynTypeDefn(_, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.Record(_, fields, _), _), _, _, _, _)) -> fields - |> List.map (fun (SynField (_, _, _, _, _, _, _, range)) -> range) + |> List.map (fun (SynField (_, _, _, _, _, _, _, range, _)) -> range) |> firstRangePerLine |> createAbsoluteAndOffsetOverridesBasedOnFirst | Expression (SynExpr.Tuple (_, exprs, _, _)) -> diff --git a/src/FSharpLint.Core/paket.references b/src/FSharpLint.Core/paket.references deleted file mode 100644 index b1c667ac4..000000000 --- a/src/FSharpLint.Core/paket.references +++ /dev/null @@ -1,13 +0,0 @@ -FSharp.Compiler.Service -FParsec -Ionide.ProjInfo -Ionide.ProjInfo.ProjectSystem -Ionide.ProjInfo.FCS -FSharp.Core -Newtonsoft.Json -Microsoft.SourceLink.GitHub -Microsoft.Build.Tasks.Core -Microsoft.Build.Framework -Microsoft.Build.Locator -Microsoft.Build.Utilities.Core -Microsoft.Build diff --git a/tests/FSharpLint.Benchmarks/FSharpLint.Benchmarks.fsproj b/tests/FSharpLint.Benchmarks/FSharpLint.Benchmarks.fsproj index 50cb4924f..59c9da03a 100644 --- a/tests/FSharpLint.Benchmarks/FSharpLint.Benchmarks.fsproj +++ b/tests/FSharpLint.Benchmarks/FSharpLint.Benchmarks.fsproj @@ -1,15 +1,26 @@ - - + + + net9.0 Exe - net6.0 + + + + + + + + + + + - + diff --git a/tests/FSharpLint.Benchmarks/Program.fs b/tests/FSharpLint.Benchmarks/Program.fs index 87975b431..13768750c 100644 --- a/tests/FSharpLint.Benchmarks/Program.fs +++ b/tests/FSharpLint.Benchmarks/Program.fs @@ -1,4 +1,4 @@ -open BenchmarkDotNet.Configs +open BenchmarkDotNet.Configs open BenchmarkDotNet.Diagnostics.Windows open BenchmarkDotNet.Environments open BenchmarkDotNet.Jobs diff --git a/tests/FSharpLint.Benchmarks/paket.references b/tests/FSharpLint.Benchmarks/paket.references deleted file mode 100644 index e2e120913..000000000 --- a/tests/FSharpLint.Benchmarks/paket.references +++ /dev/null @@ -1,3 +0,0 @@ -BenchmarkDotNet -BenchmarkDotNet.Diagnostics.Windows -FSharp.Core diff --git a/tests/FSharpLint.Console.Tests/FSharpLint.Console.Tests.fsproj b/tests/FSharpLint.Console.Tests/FSharpLint.Console.Tests.fsproj index 275352d9a..f6bf54bcd 100644 --- a/tests/FSharpLint.Console.Tests/FSharpLint.Console.Tests.fsproj +++ b/tests/FSharpLint.Console.Tests/FSharpLint.Console.Tests.fsproj @@ -1,7 +1,7 @@  - net6.0 + net9.0 FSharpLint.Console.Tests @@ -9,10 +9,16 @@ + + + + + + + - diff --git a/tests/FSharpLint.Console.Tests/TestApp.fs b/tests/FSharpLint.Console.Tests/TestApp.fs index 68b69ab64..3182e2a15 100644 --- a/tests/FSharpLint.Console.Tests/TestApp.fs +++ b/tests/FSharpLint.Console.Tests/TestApp.fs @@ -10,7 +10,7 @@ let getErrorsFromOutput (output:string) = set [ for i in 1..splitOutput.Length - 1 do if splitOutput.[i].StartsWith "Error" then yield splitOutput.[i - 1] ] -type TemporaryFile(fileContent, extension) = +type TemporaryFile(fileContent : string, extension) = let filename = Path.ChangeExtension(Path.GetTempFileName(), extension) do File.WriteAllText(filename, fileContent) @@ -80,8 +80,8 @@ type TestConsoleApplication() = let (returnCode, errors) = main [| "lint"; "--lint-config"; config.FileName; input |] Assert.AreEqual(0, returnCode) - Assert.AreEqual(Set.empty, errors) - + Assert.AreEqual(Set.empty, errors) + [] member __.``Lint source with error suppressed, no error is given.``() = let input = """ @@ -90,11 +90,11 @@ type TestConsoleApplication() = abstract member Encoded : string abstract member PathName : string """ - + let (returnCode, errors) = main [| "lint"; input |] - + Assert.AreEqual(0, returnCode) - Assert.AreEqual(Set.empty, errors) + Assert.AreEqual(Set.empty, errors) [] member __.``Regression test: typePrefixing rule with old config format should still work``() = diff --git a/tests/FSharpLint.Console.Tests/paket.references b/tests/FSharpLint.Console.Tests/paket.references deleted file mode 100644 index 53834a92d..000000000 --- a/tests/FSharpLint.Console.Tests/paket.references +++ /dev/null @@ -1,6 +0,0 @@ -nunit -NUnit3TestAdapter -Argu -FSharp.Compiler.Service -FSharp.Core -Microsoft.NET.Test.Sdk diff --git a/tests/FSharpLint.Core.Tests/FSharpLint.Core.Tests.fsproj b/tests/FSharpLint.Core.Tests/FSharpLint.Core.Tests.fsproj index ddd4e4bd4..1924d3f2d 100644 --- a/tests/FSharpLint.Core.Tests/FSharpLint.Core.Tests.fsproj +++ b/tests/FSharpLint.Core.Tests/FSharpLint.Core.Tests.fsproj @@ -1,7 +1,7 @@  - net6.0 + net9.0 FSharpLint.Core.Tests @@ -94,9 +94,15 @@ + + + + + + + - diff --git a/tests/FSharpLint.Core.Tests/Framework/TestAbstractSyntaxArray.fs b/tests/FSharpLint.Core.Tests/Framework/TestAbstractSyntaxArray.fs index dc030093c..4f39e7840 100644 --- a/tests/FSharpLint.Core.Tests/Framework/TestAbstractSyntaxArray.fs +++ b/tests/FSharpLint.Core.Tests/Framework/TestAbstractSyntaxArray.fs @@ -26,7 +26,7 @@ type TestAst() = match ast with | ParsedInput.ImplFile(x) -> match x with - | ParsedImplFileInput(_, _, _, _, _, Module(app)::_, _, _) -> + | ParsedImplFileInput(_, _, _, _, _, Module(app)::_, _, _, _) -> app | _ -> failwith "Expected at least one module or namespace." | _ -> failwith "Expected an implementation file." @@ -104,7 +104,7 @@ type TestAst() = let result = times |> Seq.sum |> (fun totalMilliseconds -> totalMilliseconds / int64 iterations) Assert.Less(result, 200) - System.Console.WriteLine(sprintf "Built array in an average of %d milliseconds." result) + fprintf TestContext.Out "Built array in an average of %d milliseconds." result [] member __.``Syntax array constructed from AST in valid order.``() = @@ -132,7 +132,7 @@ type TestAst() = Utilities.hash2 SyntaxNode.Identifier "woofs" ] Assert.AreEqual(expected, actual) - + let expected = array |> Array.map (fun x -> (x.NumberOfChildren, x.ParentIndex)) |> Array.toList Assert.AreEqual([ (14, 0) (13, 0) diff --git a/tests/FSharpLint.Core.Tests/Framework/TestFuzzyHintMatcher.fs b/tests/FSharpLint.Core.Tests/Framework/TestFuzzyHintMatcher.fs index b56fc24a3..eacb0499a 100644 --- a/tests/FSharpLint.Core.Tests/Framework/TestFuzzyHintMatcher.fs +++ b/tests/FSharpLint.Core.Tests/Framework/TestFuzzyHintMatcher.fs @@ -146,7 +146,7 @@ type TestAst() = stopwatch.Stop() Assert.Less(stopwatch.ElapsedMilliseconds, 50) - System.Console.WriteLine(sprintf "Iterated array in %d milliseconds." stopwatch.ElapsedMilliseconds) + fprintf TestContext.Out "Iterated array in %d milliseconds." stopwatch.ElapsedMilliseconds [] [] diff --git a/tests/FSharpLint.Core.Tests/Rules/Conventions/CyclomaticComplexity.fs b/tests/FSharpLint.Core.Tests/Rules/Conventions/CyclomaticComplexity.fs index 872f9beab..31b7e8c61 100644 --- a/tests/FSharpLint.Core.Tests/Rules/Conventions/CyclomaticComplexity.fs +++ b/tests/FSharpLint.Core.Tests/Rules/Conventions/CyclomaticComplexity.fs @@ -1,5 +1,6 @@ module FSharpLint.Core.Tests.Rules.Conventions.CyclomaticComplexity +open System open NUnit.Framework open FSharpLint.Rules.CyclomaticComplexity @@ -202,9 +203,9 @@ let f() = member this.EnsureComplexityOfFunctionsAreIndependent() = let code = $"""Module Program let f() = - {makeMatchSnippet (MaxComplexity + 1) |> indent 4} +{makeMatchSnippet (MaxComplexity + 1) |> indent 4} let g() = - {makeMatchSnippet MaxComplexity |> indent 4}""" +{makeMatchSnippet MaxComplexity |> indent 4}""" this.Parse code Assert.AreEqual(1, this.ErrorRanges.Length) Assert.IsTrue(this.ErrorExistsAt(2, 4)) @@ -229,9 +230,9 @@ let f() = let code = $"""Module Program let f() = let g() = - {(makeMatchSnippet (MaxComplexity+1)) |> indent 8} +{makeMatchSnippet (MaxComplexity+1) |> indent 8} let h() = -{makeMatchSnippet MaxComplexity |> indent 8} +{makeMatchSnippet MaxComplexity |> indent 8} {makeMatchSnippet (MaxComplexity+1) |> indent 4}""" this.Parse code Assert.AreEqual(2, this.ErrorRanges.Length) diff --git a/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ActivePatternNames.fs b/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ActivePatternNames.fs index 6659257bb..5c0a68842 100644 --- a/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ActivePatternNames.fs +++ b/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ActivePatternNames.fs @@ -54,7 +54,7 @@ match 4 with | Odd -> () """ - Assert.IsTrue(this.ErrorExistsAt(4, 5)) + Assert.That(this.ErrorExistsAt(4, 5), Is.True) [] member this.ActivePatternDoesNotContainUnderscore() = @@ -82,7 +82,7 @@ match 3 with | dog -> () """ - Assert.IsTrue(this.ErrorExistsAt(4, 5)) + Assert.That(this.ErrorExistsAt(4, 5), Is.True) [] member this.PartialActivePatternDoesNotContainUnderscore() = diff --git a/tests/FSharpLint.Core.Tests/Rules/TestHintMatcherBase.fs b/tests/FSharpLint.Core.Tests/Rules/TestHintMatcherBase.fs index 28e2a933c..774da74fe 100644 --- a/tests/FSharpLint.Core.Tests/Rules/TestHintMatcherBase.fs +++ b/tests/FSharpLint.Core.Tests/Rules/TestHintMatcherBase.fs @@ -44,7 +44,7 @@ type TestHintMatcherBase () = ParseFile.parseSource input checker let rule = - match HintMatcher.rule { HintTrie = hintTrie }with + match HintMatcher.rule { HintTrie = hintTrie } with | Rules.AstNodeRule rule -> rule | _ -> failwithf "TestHintMatcherBase only accepts AstNodeRules" diff --git a/tests/FSharpLint.Core.Tests/paket.references b/tests/FSharpLint.Core.Tests/paket.references deleted file mode 100644 index b7dc60e22..000000000 --- a/tests/FSharpLint.Core.Tests/paket.references +++ /dev/null @@ -1,4 +0,0 @@ -nunit -NUnit3TestAdapter -FSharp.Core -Microsoft.NET.Test.Sdk \ No newline at end of file diff --git a/tests/FSharpLint.FunctionalTest/FSharpLint.FunctionalTest.fsproj b/tests/FSharpLint.FunctionalTest/FSharpLint.FunctionalTest.fsproj index 05910007e..18664508c 100644 --- a/tests/FSharpLint.FunctionalTest/FSharpLint.FunctionalTest.fsproj +++ b/tests/FSharpLint.FunctionalTest/FSharpLint.FunctionalTest.fsproj @@ -1,7 +1,7 @@  - net6.0 + net9.0 FSharpLint.FunctionalTest @@ -10,9 +10,15 @@ + + + + + + + - diff --git a/tests/FSharpLint.FunctionalTest/TestApi.fs b/tests/FSharpLint.FunctionalTest/TestApi.fs index 49b854d2e..f6a81908d 100644 --- a/tests/FSharpLint.FunctionalTest/TestApi.fs +++ b/tests/FSharpLint.FunctionalTest/TestApi.fs @@ -58,7 +58,7 @@ module TestApi = let result = times |> Seq.sum |> (fun totalMilliseconds -> totalMilliseconds / int64 iterations) Assert.Less(result, 250) - System.Console.WriteLine(sprintf "Average runtime of linter on parsed file: %d (milliseconds)." result) + fprintf TestContext.Out "Average runtime of linter on parsed file: %d (milliseconds)." result [] member __.``Lint project via absolute path``() = diff --git a/tests/FSharpLint.FunctionalTest/TestConsoleApplication.fs b/tests/FSharpLint.FunctionalTest/TestConsoleApplication.fs index 84e55f2b2..9967a96ba 100644 --- a/tests/FSharpLint.FunctionalTest/TestConsoleApplication.fs +++ b/tests/FSharpLint.FunctionalTest/TestConsoleApplication.fs @@ -56,8 +56,9 @@ module Tests = let getErrorsFromOutput (output:string) = let splitOutput = output.Split([|Environment.NewLine|], StringSplitOptions.None) - set [ for i in 1..splitOutput.Length - 1 do - if splitOutput.[i].StartsWith "Error" then yield splitOutput.[i - 1] ] + set [ for line in splitOutput do + if line.StartsWith "`" && line.Contains "might be able to be refactored into" then + yield line ] let expectedErrors = set [ diff --git a/tests/FSharpLint.FunctionalTest/paket.references b/tests/FSharpLint.FunctionalTest/paket.references deleted file mode 100644 index 58a3defbe..000000000 --- a/tests/FSharpLint.FunctionalTest/paket.references +++ /dev/null @@ -1,5 +0,0 @@ -nunit -NUnit3TestAdapter -Microsoft.NET.Test.Sdk -FSharp.Compiler.Service -FSharp.Core