diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 043c88bb1e..2b7c7530d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -74,10 +74,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v3 with: dotnet-version: '8.0.x' @@ -95,10 +95,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v3 with: dotnet-version: '8.0.x' @@ -113,10 +113,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v3 with: dotnet-version: '8.0.x' @@ -181,10 +181,10 @@ jobs: test: ["default", "no_std", "threaded"] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v3 with: dotnet-version: '8.0.x' @@ -207,10 +207,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v3 with: dotnet-version: '8.0.x' @@ -222,37 +222,39 @@ jobs: # Separate job to run F# analyzers analyzers: - runs-on: windows-latest + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 + steps: + - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' - - name: Restore tools - run: dotnet tool restore + - name: Restore tools + run: dotnet tool restore - - name: Build solution - run: dotnet build -c Release Fable.sln + - name: Build solution + run: dotnet build -c Release Fable.sln - - name: Run analyzers for Fable.AST - run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.AST/Fable.AST.fsproj - continue-on-error: true + - name: Run analyzers for Fable.AST + run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.AST/Fable.AST.fsproj + continue-on-error: true - - name: Run analyzers for Rust.AST - run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Transforms/Rust/AST/Rust.AST.fsproj - continue-on-error: true + - name: Run analyzers for Rust.AST + run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Transforms/Rust/AST/Rust.AST.fsproj + continue-on-error: true - - name: Run analyzers Fable.Transforms - run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Transforms/Fable.Transforms.fsproj - continue-on-error: true + - name: Run analyzers Fable.Transforms + run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Transforms/Fable.Transforms.fsproj + continue-on-error: true - - name: Run analyzers Fable.Compiler - run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Compiler/Fable.Compiler.fsproj - continue-on-error: true + - name: Run analyzers Fable.Compiler + run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Compiler/Fable.Compiler.fsproj + continue-on-error: true - - name: Upload SARIF files - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: src/reports + - name: Upload SARIF files + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: src/reports diff --git a/.vscode/launch.json b/.vscode/launch.json index 344170be2c..b493b57f83 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest-dart", "--lang", @@ -29,7 +29,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest", "--exclude", @@ -45,7 +45,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest", "--lang", @@ -62,7 +62,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest-py", "--lang", @@ -82,7 +82,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest-rust", "--lang", @@ -102,7 +102,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest-rust", "--lang", @@ -124,7 +124,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/quicktest-rust", "--lang", @@ -191,7 +191,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/fable-library-dart", "--outDir", "temp/fable-library-dart", @@ -207,7 +207,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/fable-library-ts", "--outDir", "temp/fable-library-ts", @@ -225,7 +225,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/fable-library-py/fable_library", "--outDir", "temp/fable-library-py/fable_library", @@ -241,7 +241,7 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceFolder}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "src/fable-library-rust/src", "--outDir", "temp/fable-library-rust/src", @@ -250,8 +250,7 @@ "--define", "FABLE_LIBRARY", "--lang", "Rust", "--noCache", - "--noParallelTypeCheck", - "--test:MSBuildCracker" + "--noParallelTypeCheck" ] }, { @@ -259,15 +258,14 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceRoot}/src/Fable.Cli/bin/Debug/net6.0/fable.dll", + "program": "${workspaceRoot}/src/Fable.Cli/bin/Debug/net8.0/fable.dll", "args": [ "--outDir", "${workspaceRoot}/../fable-test", "--fableLib", "${workspaceRoot}/temp/fable-library-rust", "--exclude", "Fable.Core", "--lang", "Rust", "--noCache", - "--noParallelTypeCheck", - "--test:MSBuildCracker" + "--noParallelTypeCheck" ], "cwd": "${workspaceRoot}/../fable-test", "stopAtEntry": false, @@ -289,4 +287,4 @@ "console": "internalConsole" } ] -} \ No newline at end of file +} diff --git a/global.json b/global.json index d07970ac26..c19a2e057c 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { "version": "8.0.100", - "rollForward": "latestMajor" + "rollForward": "latestMinor" } } diff --git a/lib/fcs/FSharp.Compiler.Service.deps.json b/lib/fcs/FSharp.Compiler.Service.deps.json index 49a7841fb4..9d485459ec 100644 --- a/lib/fcs/FSharp.Compiler.Service.deps.json +++ b/lib/fcs/FSharp.Compiler.Service.deps.json @@ -7,19 +7,24 @@ "targets": { ".NETStandard,Version=v2.0": {}, ".NETStandard,Version=v2.0/": { - "FSharp.Compiler.Service/43.8.200-dev": { + "FSharp.Compiler.Service/43.9.200-dev": { "dependencies": { - "FSharp.Core": "8.0.200-dev", - "FSharp.DependencyManager.Nuget": "8.0.200-dev", - "Microsoft.DotNet.XliffTasks": "1.0.0-beta.23426.1", + "FSharp.Core": "9.0.200-dev", + "FSharp.DependencyManager.Nuget": "9.0.200-dev", + "Microsoft.DotNet.XliffTasks": "9.0.0-beta.24462.3", "NETStandard.Library": "2.0.3", "System.Buffers": "4.5.1", - "System.Collections.Immutable": "6.0.0", - "System.Diagnostics.DiagnosticSource": "6.0.0", + "System.Collections.Immutable": "8.0.0", + "System.Diagnostics.DiagnosticSource": "8.0.0", "System.Memory": "4.5.5", "System.Reflection.Emit": "4.7.0", - "System.Reflection.Metadata": "6.0.1", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" + "System.Reflection.Metadata": "8.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "optimization.linux-arm64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.linux-x64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-arm64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-x64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-x86.MIBC.Runtime": "1.0.0-prerelease.24462.2" }, "runtime": { "FSharp.Compiler.Service.dll": {} @@ -66,13 +71,18 @@ } } }, - "Microsoft.DotNet.XliffTasks/1.0.0-beta.23426.1": {}, + "Microsoft.DotNet.XliffTasks/9.0.0-beta.24462.3": {}, "Microsoft.NETCore.Platforms/1.1.0": {}, "NETStandard.Library/2.0.3": { "dependencies": { "Microsoft.NETCore.Platforms": "1.1.0" } }, + "optimization.linux-arm64.MIBC.Runtime/1.0.0-prerelease.24462.2": {}, + "optimization.linux-x64.MIBC.Runtime/1.0.0-prerelease.24462.2": {}, + "optimization.windows_nt-arm64.MIBC.Runtime/1.0.0-prerelease.24462.2": {}, + "optimization.windows_nt-x64.MIBC.Runtime/1.0.0-prerelease.24462.2": {}, + "optimization.windows_nt-x86.MIBC.Runtime/1.0.0-prerelease.24462.2": {}, "System.Buffers/4.5.1": { "runtime": { "lib/netstandard2.0/System.Buffers.dll": { @@ -81,27 +91,27 @@ } } }, - "System.Collections.Immutable/6.0.0": { + "System.Collections.Immutable/8.0.0": { "dependencies": { "System.Memory": "4.5.5", "System.Runtime.CompilerServices.Unsafe": "6.0.0" }, "runtime": { "lib/netstandard2.0/System.Collections.Immutable.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" } } }, - "System.Diagnostics.DiagnosticSource/6.0.0": { + "System.Diagnostics.DiagnosticSource/8.0.0": { "dependencies": { "System.Memory": "4.5.5", "System.Runtime.CompilerServices.Unsafe": "6.0.0" }, "runtime": { "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" } } }, @@ -145,14 +155,15 @@ } } }, - "System.Reflection.Metadata/6.0.1": { + "System.Reflection.Metadata/8.0.0": { "dependencies": { - "System.Collections.Immutable": "6.0.0" + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5" }, "runtime": { "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.322.12309" + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" } } }, @@ -164,118 +175,136 @@ } } }, - "FSharp.Core/8.0.200-dev": { + "FSharp.Core/9.0.200-dev": { + "dependencies": { + "optimization.linux-arm64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.linux-x64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-arm64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-x64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-x86.MIBC.Runtime": "1.0.0-prerelease.24462.2" + }, "runtime": { - "FSharp.Core.dll": {} + "FSharp.Core.dll": { + "assemblyVersion": "9.0.200-dev", + "fileVersion": "42.42.42.42424" + } }, "resources": { - "it/FSharp.Core.resources.dll": { - "locale": "it" - }, - "ru/FSharp.Core.resources.dll": { - "locale": "ru" + "de/FSharp.Core.resources.dll": { + "locale": "de" }, - "pl/FSharp.Core.resources.dll": { - "locale": "pl" + "ko/FSharp.Core.resources.dll": { + "locale": "ko" }, - "pt-BR/FSharp.Core.resources.dll": { - "locale": "pt-BR" + "it/FSharp.Core.resources.dll": { + "locale": "it" }, "ja/FSharp.Core.resources.dll": { "locale": "ja" }, - "cs/FSharp.Core.resources.dll": { - "locale": "cs" - }, - "ko/FSharp.Core.resources.dll": { - "locale": "ko" - }, "zh-Hans/FSharp.Core.resources.dll": { "locale": "zh-Hans" }, + "fr/FSharp.Core.resources.dll": { + "locale": "fr" + }, + "pl/FSharp.Core.resources.dll": { + "locale": "pl" + }, "tr/FSharp.Core.resources.dll": { "locale": "tr" }, - "fr/FSharp.Core.resources.dll": { - "locale": "fr" + "ru/FSharp.Core.resources.dll": { + "locale": "ru" }, "zh-Hant/FSharp.Core.resources.dll": { "locale": "zh-Hant" }, - "de/FSharp.Core.resources.dll": { - "locale": "de" + "pt-BR/FSharp.Core.resources.dll": { + "locale": "pt-BR" }, "es/FSharp.Core.resources.dll": { "locale": "es" + }, + "cs/FSharp.Core.resources.dll": { + "locale": "cs" } } }, - "FSharp.DependencyManager.Nuget/8.0.200-dev": { + "FSharp.DependencyManager.Nuget/9.0.200-dev": { "dependencies": { - "FSharp.Core": "8.0.200-dev", + "FSharp.Core": "9.0.200-dev", "System.Reflection.Emit": "4.7.0", - "System.Reflection.Metadata": "6.0.1", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" + "System.Reflection.Metadata": "8.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "optimization.linux-arm64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.linux-x64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-arm64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-x64.MIBC.Runtime": "1.0.0-prerelease.24462.2", + "optimization.windows_nt-x86.MIBC.Runtime": "1.0.0-prerelease.24462.2" }, "runtime": { - "FSharp.DependencyManager.Nuget.dll": {} + "FSharp.DependencyManager.Nuget.dll": { + "assemblyVersion": "9.0.200-dev", + "fileVersion": "42.42.42.42424" + } }, "resources": { - "it/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "it" - }, - "ru/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "ru" + "de/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "de" }, - "pl/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "pl" + "ko/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "ko" }, - "pt-BR/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "pt-BR" + "it/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "it" }, "ja/FSharp.DependencyManager.Nuget.resources.dll": { "locale": "ja" }, - "cs/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "cs" - }, - "ko/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "ko" - }, "zh-Hans/FSharp.DependencyManager.Nuget.resources.dll": { "locale": "zh-Hans" }, + "fr/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "fr" + }, + "pl/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "pl" + }, "tr/FSharp.DependencyManager.Nuget.resources.dll": { "locale": "tr" }, - "fr/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "fr" + "ru/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "ru" }, "zh-Hant/FSharp.DependencyManager.Nuget.resources.dll": { "locale": "zh-Hant" }, - "de/FSharp.DependencyManager.Nuget.resources.dll": { - "locale": "de" + "pt-BR/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "pt-BR" }, "es/FSharp.DependencyManager.Nuget.resources.dll": { "locale": "es" + }, + "cs/FSharp.DependencyManager.Nuget.resources.dll": { + "locale": "cs" } } } } }, "libraries": { - "FSharp.Compiler.Service/43.8.200-dev": { + "FSharp.Compiler.Service/43.9.200-dev": { "type": "project", "serviceable": false, "sha512": "" }, - "Microsoft.DotNet.XliffTasks/1.0.0-beta.23426.1": { + "Microsoft.DotNet.XliffTasks/9.0.0-beta.24462.3": { "type": "package", "serviceable": true, - "sha512": "sha512-XS628H3vIhZR2KSlnt4Gz8UOq2Af8U5q5Iypfxk/HmBS/bU0r0qNHldAblwvxIuvJL1X797qZwTXwdtRPNj02A==", - "path": "microsoft.dotnet.xlifftasks/1.0.0-beta.23426.1", - "hashPath": "microsoft.dotnet.xlifftasks.1.0.0-beta.23426.1.nupkg.sha512" + "sha512": "sha512-nvLDQGv1fufauDNemRIJtdWAhhx0K/6X1US+6MU/38thDS5hHbrKegSC6fuIkAEvAOMZDqmkjZFzelZdsrfXrg==", + "path": "microsoft.dotnet.xlifftasks/9.0.0-beta.24462.3", + "hashPath": "microsoft.dotnet.xlifftasks.9.0.0-beta.24462.3.nupkg.sha512" }, "Microsoft.NETCore.Platforms/1.1.0": { "type": "package", @@ -291,6 +320,41 @@ "path": "netstandard.library/2.0.3", "hashPath": "netstandard.library.2.0.3.nupkg.sha512" }, + "optimization.linux-arm64.MIBC.Runtime/1.0.0-prerelease.24462.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hjaYmVJ37l557Lh6U0OavCxd+ot8+nqb2LV72wviuLL1tx8x5esAgGxkxpY//Parn5Hvx+F4sAM5qAuHbmf9mQ==", + "path": "optimization.linux-arm64.mibc.runtime/1.0.0-prerelease.24462.2", + "hashPath": "optimization.linux-arm64.mibc.runtime.1.0.0-prerelease.24462.2.nupkg.sha512" + }, + "optimization.linux-x64.MIBC.Runtime/1.0.0-prerelease.24462.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1VqXdKkqGeWQUWQc/m1DM8JAHc6G3BWEOxk56eC3WMI+9uD0+0pg/0E+6RxgLL4HPFNANy/tFdboa9TwF2QDPQ==", + "path": "optimization.linux-x64.mibc.runtime/1.0.0-prerelease.24462.2", + "hashPath": "optimization.linux-x64.mibc.runtime.1.0.0-prerelease.24462.2.nupkg.sha512" + }, + "optimization.windows_nt-arm64.MIBC.Runtime/1.0.0-prerelease.24462.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RaL1svpSHbLT6XUrZFN8ZNolNnOEnz7OLr07lEHl5MzCw+2dGeI2p9QcUw762hHOD+6eVVTmQ9AO1boDHo92Jw==", + "path": "optimization.windows_nt-arm64.mibc.runtime/1.0.0-prerelease.24462.2", + "hashPath": "optimization.windows_nt-arm64.mibc.runtime.1.0.0-prerelease.24462.2.nupkg.sha512" + }, + "optimization.windows_nt-x64.MIBC.Runtime/1.0.0-prerelease.24462.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7rAVqrrG0G8JDbAPqxaxrmMpPjB6FjQYNpqT+OG8YyXGww9dvNFYCV3AqBCYlPQeOvv6w8UYjkAfGQ5QoQPZUQ==", + "path": "optimization.windows_nt-x64.mibc.runtime/1.0.0-prerelease.24462.2", + "hashPath": "optimization.windows_nt-x64.mibc.runtime.1.0.0-prerelease.24462.2.nupkg.sha512" + }, + "optimization.windows_nt-x86.MIBC.Runtime/1.0.0-prerelease.24462.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CscKYxjkotQM3h96EE5FAyORLRiklRhjWgo9T5a6dRbedy4frjiEsK284DcNl1VZUSc+pr3w9vZ5RxSduJcEpg==", + "path": "optimization.windows_nt-x86.mibc.runtime/1.0.0-prerelease.24462.2", + "hashPath": "optimization.windows_nt-x86.mibc.runtime.1.0.0-prerelease.24462.2.nupkg.sha512" + }, "System.Buffers/4.5.1": { "type": "package", "serviceable": true, @@ -298,19 +362,19 @@ "path": "system.buffers/4.5.1", "hashPath": "system.buffers.4.5.1.nupkg.sha512" }, - "System.Collections.Immutable/6.0.0": { + "System.Collections.Immutable/8.0.0": { "type": "package", "serviceable": true, - "sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", - "path": "system.collections.immutable/6.0.0", - "hashPath": "system.collections.immutable.6.0.0.nupkg.sha512" + "sha512": "sha512-AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "path": "system.collections.immutable/8.0.0", + "hashPath": "system.collections.immutable.8.0.0.nupkg.sha512" }, - "System.Diagnostics.DiagnosticSource/6.0.0": { + "System.Diagnostics.DiagnosticSource/8.0.0": { "type": "package", "serviceable": true, - "sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", - "path": "system.diagnostics.diagnosticsource/6.0.0", - "hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512" + "sha512": "sha512-c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "path": "system.diagnostics.diagnosticsource/8.0.0", + "hashPath": "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512" }, "System.Memory/4.5.5": { "type": "package", @@ -340,12 +404,12 @@ "path": "system.reflection.emit.ilgeneration/4.7.0", "hashPath": "system.reflection.emit.ilgeneration.4.7.0.nupkg.sha512" }, - "System.Reflection.Metadata/6.0.1": { + "System.Reflection.Metadata/8.0.0": { "type": "package", "serviceable": true, - "sha512": "sha512-III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", - "path": "system.reflection.metadata/6.0.1", - "hashPath": "system.reflection.metadata.6.0.1.nupkg.sha512" + "sha512": "sha512-ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "path": "system.reflection.metadata/8.0.0", + "hashPath": "system.reflection.metadata.8.0.0.nupkg.sha512" }, "System.Runtime.CompilerServices.Unsafe/6.0.0": { "type": "package", @@ -354,12 +418,12 @@ "path": "system.runtime.compilerservices.unsafe/6.0.0", "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" }, - "FSharp.Core/8.0.200-dev": { + "FSharp.Core/9.0.200-dev": { "type": "project", "serviceable": false, "sha512": "" }, - "FSharp.DependencyManager.Nuget/8.0.200-dev": { + "FSharp.DependencyManager.Nuget/9.0.200-dev": { "type": "project", "serviceable": false, "sha512": "" diff --git a/lib/fcs/FSharp.Compiler.Service.dll b/lib/fcs/FSharp.Compiler.Service.dll index b761c2894d..c5c3cc05aa 100644 Binary files a/lib/fcs/FSharp.Compiler.Service.dll and b/lib/fcs/FSharp.Compiler.Service.dll differ diff --git a/lib/fcs/FSharp.Compiler.Service.xml b/lib/fcs/FSharp.Compiler.Service.xml index 36daa418be..72680fb368 100644 --- a/lib/fcs/FSharp.Compiler.Service.xml +++ b/lib/fcs/FSharp.Compiler.Service.xml @@ -11,61 +11,61 @@ This XML comment is invalid: unresolved cross-reference '%s' - (Originally from FSComp.txt:1646) + (Originally from FSComp.txt:1675) This XML comment is invalid: missing 'name' attribute for parameter or parameter reference - (Originally from FSComp.txt:1642) + (Originally from FSComp.txt:1671) This XML comment is incomplete: no documentation for parameter '%s' - (Originally from FSComp.txt:1647) + (Originally from FSComp.txt:1676) This XML comment is invalid: missing 'cref' attribute for cross-reference - (Originally from FSComp.txt:1643) + (Originally from FSComp.txt:1672) This XML comment is invalid: unknown parameter '%s' - (Originally from FSComp.txt:1644) + (Originally from FSComp.txt:1673) This XML comment is invalid: multiple documentation entries for parameter '%s' - (Originally from FSComp.txt:1645) + (Originally from FSComp.txt:1674) This XML comment is invalid: '%s' - (Originally from FSComp.txt:1641) + (Originally from FSComp.txt:1670) The byref pointer is readonly, so this write is not permitted. - (Originally from FSComp.txt:1499) + (Originally from FSComp.txt:1503) The value '%s' is not accessible from this code location - (Originally from FSComp.txt:974) + (Originally from FSComp.txt:976) Use reference assemblies for .NET framework references when available (Enabled by default). - (Originally from FSComp.txt:1537) + (Originally from FSComp.txt:1558) @@ -77,19 +77,19 @@ Parentheses can be removed. - (Originally from FSComp.txt:1732) + (Originally from FSComp.txt:1761) The union cases or fields of the type '%s' are not accessible from this code location - (Originally from FSComp.txt:973) + (Originally from FSComp.txt:975) The union case '%s' is not accessible from this code location - (Originally from FSComp.txt:975) + (Originally from FSComp.txt:977) @@ -185,373 +185,373 @@ The type '%s' implements 'System.IComparable'. Consider also adding an explicit override for 'Object.Equals' - (Originally from FSComp.txt:180) + (Originally from FSComp.txt:179) The type '%s' implements 'System.IComparable' explicitly but provides no corresponding override for 'Object.Equals'. An implementation of 'Object.Equals' has been automatically provided, implemented via 'System.IComparable'. Consider implementing the override 'Object.Equals' explicitly - (Originally from FSComp.txt:181) + (Originally from FSComp.txt:180) The signature and implementation are not compatible because the respective type parameter counts differ - (Originally from FSComp.txt:176) + (Originally from FSComp.txt:175) The signature and implementation are not compatible because the type parameter '%s' has a constraint of the form %s but the implementation does not. Either remove this constraint from the signature or add it to the implementation. - (Originally from FSComp.txt:179) + (Originally from FSComp.txt:178) The signature and implementation are not compatible because the declaration of the type parameter '%s' requires a constraint of the form %s - (Originally from FSComp.txt:178) + (Originally from FSComp.txt:177) The signature and implementation are not compatible because the type parameter in the class/signature has a different compile-time requirement to the one in the member/implementation - (Originally from FSComp.txt:177) + (Originally from FSComp.txt:176) The override for '%s' was ambiguous - (Originally from FSComp.txt:196) + (Originally from FSComp.txt:195) The override '%s' implements more than one abstract slot, e.g. '%s' and '%s' - (Originally from FSComp.txt:199) + (Originally from FSComp.txt:198) No implementations of '%s' had the correct number of arguments and type parameters. The required signature is '%s'. - (Originally from FSComp.txt:195) + (Originally from FSComp.txt:194) No implementation was given for '%s'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. - (Originally from FSComp.txt:206) + (Originally from FSComp.txt:205) No implementation was given for those members: %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. - (Originally from FSComp.txt:207) + (Originally from FSComp.txt:206) No implementation was given for those members (some results omitted): %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. - (Originally from FSComp.txt:208) + (Originally from FSComp.txt:207) No implementation was given for those members (some results omitted): %s - (Originally from FSComp.txt:205) + (Originally from FSComp.txt:204) No implementation was given for those members: %s - (Originally from FSComp.txt:204) + (Originally from FSComp.txt:203) No implementation was given for '%s' - (Originally from FSComp.txt:203) + (Originally from FSComp.txt:202) A type has been implicitly inferred as 'obj', which may be unintended. Consider adding explicit type annotations. You can disable this warning by using '#nowarn \"3559\"' or '--nowarn:3559'. - (Originally from FSComp.txt:1707) + (Originally from FSComp.txt:1736) The interface '%s' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface. - (Originally from FSComp.txt:201) + (Originally from FSComp.txt:200) The named argument '%s' has been assigned more than one value - (Originally from FSComp.txt:202) + (Originally from FSComp.txt:201) More than one override implements '%s' - (Originally from FSComp.txt:197) + (Originally from FSComp.txt:196) The namespace or module attributes differ between signature and implementation - (Originally from FSComp.txt:193) + (Originally from FSComp.txt:192) The method '%s' is sealed and cannot be overridden - (Originally from FSComp.txt:198) + (Originally from FSComp.txt:197) This method is over-constrained in its type parameters - (Originally from FSComp.txt:194) + (Originally from FSComp.txt:193) The member '%s' matches multiple overloads of the same method.\nPlease restrict it to one of the following:%s. - (Originally from FSComp.txt:1392) + (Originally from FSComp.txt:1396) The member '%s' does not have the correct number of method type parameters. The required signature is '%s'. - (Originally from FSComp.txt:210) + (Originally from FSComp.txt:209) The member '%s' does not have the correct number of arguments. The required signature is '%s'. - (Originally from FSComp.txt:209) + (Originally from FSComp.txt:208) The member '%s' does not have the correct kinds of generic parameters. The required signature is '%s'. - (Originally from FSComp.txt:211) + (Originally from FSComp.txt:210) The member '%s' cannot be used to implement '%s'. The required signature is '%s'. - (Originally from FSComp.txt:212) + (Originally from FSComp.txt:211) Invalid value - (Originally from FSComp.txt:175) + (Originally from FSComp.txt:174) You cannot implement the interface '%s' with the two instantiations '%s' and '%s' because they may unify. - (Originally from FSComp.txt:1600) + (Originally from FSComp.txt:1629) '%s' cannot implement the interface '%s' with the two instantiations '%s' and '%s' because they may unify. - (Originally from FSComp.txt:1599) + (Originally from FSComp.txt:1628) Interface member '%s' does not have a most specific implementation. - (Originally from FSComp.txt:1535) + (Originally from FSComp.txt:1556) The struct, record or union type '%s' has an explicit implementation of 'Object.GetHashCode' or 'Object.Equals'. You must apply the 'CustomEquality' attribute to the type - (Originally from FSComp.txt:182) + (Originally from FSComp.txt:181) The struct, record or union type '%s' has an explicit implementation of 'Object.GetHashCode'. Consider implementing a matching override for 'Object.Equals(obj)' - (Originally from FSComp.txt:183) + (Originally from FSComp.txt:182) The struct, record or union type '%s' has an explicit implementation of 'Object.Equals'. Consider implementing a matching override for 'Object.GetHashCode()' - (Originally from FSComp.txt:184) + (Originally from FSComp.txt:183) Duplicate or redundant interface - (Originally from FSComp.txt:200) + (Originally from FSComp.txt:199) The implicit instantiation of a generic construct at or near this point could not be resolved because it could resolve to multiple unrelated types, e.g. '%s' and '%s'. Consider using type annotations to resolve the ambiguity - (Originally from FSComp.txt:171) + (Originally from FSComp.txt:170) Could not resolve the ambiguity in the use of a generic construct with an 'unmanaged' constraint at or near this position - (Originally from FSComp.txt:1086) + (Originally from FSComp.txt:1088) Could not resolve the ambiguity inherent in the use of a 'printf'-style format string - (Originally from FSComp.txt:172) + (Originally from FSComp.txt:171) Could not resolve the ambiguity in the use of a generic construct with an 'enum' constraint at or near this position - (Originally from FSComp.txt:173) + (Originally from FSComp.txt:172) Could not resolve the ambiguity in the use of a generic construct with a 'delegate' constraint at or near this position - (Originally from FSComp.txt:174) + (Originally from FSComp.txt:173) The type '%s' is not accessible from this code location - (Originally from FSComp.txt:972) + (Originally from FSComp.txt:974) union case - (Originally from FSComp.txt:950) + (Originally from FSComp.txt:952) property - (Originally from FSComp.txt:955) + (Originally from FSComp.txt:957) patvar - (Originally from FSComp.txt:960) + (Originally from FSComp.txt:962) and %d other overloads - (Originally from FSComp.txt:949) + (Originally from FSComp.txt:951) namespace/module - (Originally from FSComp.txt:963) + (Originally from FSComp.txt:965) namespace - (Originally from FSComp.txt:961) + (Originally from FSComp.txt:963) module - (Originally from FSComp.txt:962) + (Originally from FSComp.txt:964) generated type - (Originally from FSComp.txt:967) + (Originally from FSComp.txt:969) generated property - (Originally from FSComp.txt:966) + (Originally from FSComp.txt:968) Full name - (Originally from FSComp.txt:945) + (Originally from FSComp.txt:947) also from %s - (Originally from FSComp.txt:965) + (Originally from FSComp.txt:967) from %s - (Originally from FSComp.txt:964) + (Originally from FSComp.txt:966) field - (Originally from FSComp.txt:953) + (Originally from FSComp.txt:955) extension - (Originally from FSComp.txt:956) + (Originally from FSComp.txt:958) event - (Originally from FSComp.txt:954) + (Originally from FSComp.txt:956) custom operation - (Originally from FSComp.txt:957) + (Originally from FSComp.txt:959) Calls - (Originally from FSComp.txt:1296) + (Originally from FSComp.txt:1300) argument - (Originally from FSComp.txt:958) + (Originally from FSComp.txt:960) anonymous record field - (Originally from FSComp.txt:959) + (Originally from FSComp.txt:961) active recognizer - (Originally from FSComp.txt:952) + (Originally from FSComp.txt:954) active pattern result - (Originally from FSComp.txt:951) + (Originally from FSComp.txt:953) @@ -563,103 +563,109 @@ The specified .NET Framework version '%s' is not supported. Please specify a value from the enumeration Microsoft.Build.Utilities.TargetDotNetFrameworkVersion. - (Originally from FSComp.txt:1134) + (Originally from FSComp.txt:1138) + + + + + The type '%s' has too many methods. Found: '%d', maximum: '%d' + (Originally from FSComp.txt:1771) Unexpected Expr.TyChoose - (Originally from FSComp.txt:982) + (Originally from FSComp.txt:984) Note: Lambda-lifting optimizations have not been applied because of the use of this local constrained generic function as a first class value. Adding type constraints may resolve this condition. - (Originally from FSComp.txt:983) + (Originally from FSComp.txt:985) The 'VolatileField' attribute may only be used on 'let' bindings in classes - (Originally from FSComp.txt:677) + (Originally from FSComp.txt:678) Volatile fields must be marked 'mutable' and cannot be thread-static - (Originally from FSComp.txt:732) + (Originally from FSComp.txt:733) A declaration may only be given a value in a signature if the declaration has the [<Literal>] attribute - (Originally from FSComp.txt:730) + (Originally from FSComp.txt:731) Declaring \"interfaces with static abstract methods\" is an advanced feature. See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3535\"' or '--nowarn:3535'. - (Originally from FSComp.txt:1689) + (Originally from FSComp.txt:1718) '%s' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. - (Originally from FSComp.txt:1690) + (Originally from FSComp.txt:1719) In sequence expressions, multiple results are generated using 'yield!' - (Originally from FSComp.txt:652) + (Originally from FSComp.txt:653) 'use' expressions may not be used in queries - (Originally from FSComp.txt:1313) + (Originally from FSComp.txt:1317) The use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead. - (Originally from FSComp.txt:650) + (Originally from FSComp.txt:651) This declaration is not supported in recursive declaration groups - (Originally from FSComp.txt:1382) + (Originally from FSComp.txt:1386) This attribute cannot be used in this version of F# - (Originally from FSComp.txt:704) + (Originally from FSComp.txt:705) This is not a known query operator. Query operators are identifiers such as 'select', 'where', 'sortBy', 'thenBy', 'groupBy', 'groupValBy', 'join', 'groupJoin', 'sumBy' and 'averageBy', defined using corresponding methods on the 'QueryBuilder' type. - (Originally from FSComp.txt:1316) + (Originally from FSComp.txt:1320) Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)' - (Originally from FSComp.txt:1324) + (Originally from FSComp.txt:1328) Unrecognized attribute target. Valid attribute targets are 'assembly', 'module', 'type', 'method', 'property', 'return', 'param', 'field', 'event', 'constructor'. - (Originally from FSComp.txt:694) + (Originally from FSComp.txt:695) The unnamed arguments do not form a prefix of the arguments of the method called - (Originally from FSComp.txt:671) + (Originally from FSComp.txt:672) @@ -677,61 +683,61 @@ This union case takes one argument - (Originally from FSComp.txt:580) + (Originally from FSComp.txt:581) The union case named '%s' conflicts with the generated type '%s' - (Originally from FSComp.txt:1110) + (Originally from FSComp.txt:1112) Union case/exception field '%s' cannot be used more than once. - (Originally from FSComp.txt:1351) + (Originally from FSComp.txt:1355) This union case expects %d arguments in tupled form, but was given %d. The missing field arguments may be any of:%s - (Originally from FSComp.txt:581) + (Originally from FSComp.txt:582) This union case does not take arguments - (Originally from FSComp.txt:579) + (Originally from FSComp.txt:580) The union case '%s' does not have a field named '%s'. - (Originally from FSComp.txt:1347) + (Originally from FSComp.txt:1351) Uninitialized 'val' fields must be mutable and marked with the '[<DefaultValue>]' attribute. Consider using a 'let' binding instead of a 'val' field. - (Originally from FSComp.txt:733) + (Originally from FSComp.txt:734) Unexpected type arguments - (Originally from FSComp.txt:571) + (Originally from FSComp.txt:572) Unexpected %s in type expression - (Originally from FSComp.txt:565) + (Originally from FSComp.txt:566) Unexpected / in type - (Originally from FSComp.txt:570) + (Originally from FSComp.txt:571) @@ -755,7 +761,7 @@ Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). - (Originally from FSComp.txt:1729) + (Originally from FSComp.txt:1758) @@ -779,7 +785,7 @@ Unexpected condition in imported assembly: failed to decode AttributeUsage attribute - (Originally from FSComp.txt:693) + (Originally from FSComp.txt:694) @@ -791,97 +797,97 @@ The field '%s' has been given a value, but is not present in the type '%s' - (Originally from FSComp.txt:617) + (Originally from FSComp.txt:618) Invalid interpolated string. %s - (Originally from FSComp.txt:1626) + (Originally from FSComp.txt:1655) Unable to parse format string '%s' - (Originally from FSComp.txt:595) + (Originally from FSComp.txt:596) Types cannot inherit from multiple concrete types - (Originally from FSComp.txt:782) + (Originally from FSComp.txt:783) Types cannot contain nested type definitions - (Originally from FSComp.txt:763) + (Originally from FSComp.txt:764) Struct types are always sealed - (Originally from FSComp.txt:794) + (Originally from FSComp.txt:795) Record types are always sealed - (Originally from FSComp.txt:792) + (Originally from FSComp.txt:793) Enum types are always sealed - (Originally from FSComp.txt:796) + (Originally from FSComp.txt:797) Delegate types are always sealed - (Originally from FSComp.txt:795) + (Originally from FSComp.txt:796) Discriminated union types are always sealed - (Originally from FSComp.txt:791) + (Originally from FSComp.txt:792) Assembly code types are always sealed - (Originally from FSComp.txt:793) + (Originally from FSComp.txt:794) The type '%s' is used in an invalid way. A value prior to '%s' has an inferred type involving '%s', which is an invalid forward reference. - (Originally from FSComp.txt:818) + (Originally from FSComp.txt:819) This type test or downcast will erase the provided type '%s' to the type '%s' - (Originally from FSComp.txt:1224) + (Originally from FSComp.txt:1228) This type test or downcast will ignore the unit-of-measure '%s' - (Originally from FSComp.txt:1121) + (Originally from FSComp.txt:1123) This type test with a provided type '%s' is not allowed because this provided type will be erased to '%s' at runtime. - (Originally from FSComp.txt:1226) + (Originally from FSComp.txt:1230) This type requires a definition - (Originally from FSComp.txt:779) + (Originally from FSComp.txt:780) @@ -893,7 +899,7 @@ Type parameter cannot be used as type constructor - (Originally from FSComp.txt:566) + (Originally from FSComp.txt:567) @@ -911,91 +917,97 @@ type or module - (Originally from FSComp.txt:765) + (Originally from FSComp.txt:766) The type '%s' is not an interface type - (Originally from FSComp.txt:740) + (Originally from FSComp.txt:741) This type is not an interface type - (Originally from FSComp.txt:758) + (Originally from FSComp.txt:759) This type is not a record type. Values of class and struct types must be created using calls to object constructors. - (Originally from FSComp.txt:645) + (Originally from FSComp.txt:646) This type is not a record type - (Originally from FSComp.txt:646) + (Originally from FSComp.txt:647) This type is not accessible from this code location - (Originally from FSComp.txt:692) + (Originally from FSComp.txt:693) This type has no nested types - (Originally from FSComp.txt:564) + (Originally from FSComp.txt:565) This type has no accessible object constructors - (Originally from FSComp.txt:655) + (Originally from FSComp.txt:656) type, exception or module - (Originally from FSComp.txt:764) + (Originally from FSComp.txt:765) This type does not inherit Attribute, it will not work correctly with other .NET languages. - (Originally from FSComp.txt:1515) + (Originally from FSComp.txt:1519) + + + + + The type '%s' does not support a nullness qualification. + (Originally from FSComp.txt:1528) Type definitions may only have one 'inherit' specification and it must be the first declaration - (Originally from FSComp.txt:811) + (Originally from FSComp.txt:812) 'let' and 'do' bindings must come before member and interface definitions in type definitions - (Originally from FSComp.txt:812) + (Originally from FSComp.txt:813) This type definition involves an immediate cyclic reference through a struct field or inheritance relation - (Originally from FSComp.txt:807) + (Originally from FSComp.txt:808) This type definition involves an immediate cyclic reference through an abbreviation - (Originally from FSComp.txt:806) + (Originally from FSComp.txt:807) This downcast will erase the provided type '%s' to the type '%s'. - (Originally from FSComp.txt:1225) + (Originally from FSComp.txt:1229) @@ -1007,193 +1019,193 @@ Type abbreviations cannot have members - (Originally from FSComp.txt:747) + (Originally from FSComp.txt:748) As of F# 4.1, the accessibility of type abbreviations is checked at compile-time. Consider changing the accessibility of the type abbreviation. Ignoring this warning might lead to runtime errors. - (Originally from FSComp.txt:748) + (Originally from FSComp.txt:749) Type abbreviations cannot have interface declarations - (Originally from FSComp.txt:756) + (Originally from FSComp.txt:757) Type abbreviations cannot have augmentations - (Originally from FSComp.txt:816) + (Originally from FSComp.txt:817) This type abbreviation has one or more declared type parameters that do not appear in the type being abbreviated. Type abbreviations must use all declared type parameters in the type being abbreviated. Consider removing one or more type parameters, or use a concrete type definition that wraps an underlying type, such as 'type C<'a> = C of ...'. - (Originally from FSComp.txt:780) + (Originally from FSComp.txt:781) One tuple type is a struct tuple, the other is a reference tuple - (Originally from FSComp.txt:1375) + (Originally from FSComp.txt:1379) This method or property is not normally used from F# code, use an explicit tuple pattern for deconstruction instead. - (Originally from FSComp.txt:1495) + (Originally from FSComp.txt:1499) 'try/with' expressions may not be used in queries - (Originally from FSComp.txt:1317) + (Originally from FSComp.txt:1321) 'try'/'with' cannot be used within sequence expressions - (Originally from FSComp.txt:651) + (Originally from FSComp.txt:652) A trait may not specify optional, in, out, ParamArray, CallerInfo or Quote arguments - (Originally from FSComp.txt:1686) + (Originally from FSComp.txt:1715) Trait '%s' is static - (Originally from FSComp.txt:1684) + (Originally from FSComp.txt:1713) Trait '%s' is not static - (Originally from FSComp.txt:1685) + (Originally from FSComp.txt:1714) Invocation of a static constraint should use \"'T.Ident\" and not \"^T.Ident\", even for statically resolved type parameters. - (Originally from FSComp.txt:1688) + (Originally from FSComp.txt:1717) The trait '%s' invoked by this call has multiple support types. This invocation syntax is not permitted for such traits. See https://aka.ms/fsharp-srtp for guidance. - (Originally from FSComp.txt:1691) + (Originally from FSComp.txt:1720) Thread-static and context-static variables must be static and given the [<DefaultValue>] attribute to indicate that the value is initialized to the default value on each new thread - (Originally from FSComp.txt:731) + (Originally from FSComp.txt:732) This member, function or value declaration may not be declared 'inline' - (Originally from FSComp.txt:1322) + (Originally from FSComp.txt:1326) This type definition may not have the 'CLIMutable' attribute. Only record types may have this attribute. - (Originally from FSComp.txt:1304) + (Originally from FSComp.txt:1308) Invalid provided field. Provided fields of erased provided types must be literals. - (Originally from FSComp.txt:1333) + (Originally from FSComp.txt:1337) The syntax 'expr.id' may only be used with record labels, properties and fields - (Originally from FSComp.txt:666) + (Originally from FSComp.txt:667) Syntax error - unexpected '?' symbol - (Originally from FSComp.txt:587) + (Originally from FSComp.txt:588) '%s' may only be used to construct object types - (Originally from FSComp.txt:615) + (Originally from FSComp.txt:616) SynType.Or is not permitted in this declaration - (Originally from FSComp.txt:1696) + (Originally from FSComp.txt:1725) This expression implicitly converts type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. - (Originally from FSComp.txt:1639) + (Originally from FSComp.txt:1668) The struct, record or union type '%s' has the 'StructuralEquality' attribute but the component type '%s' does not satisfy the 'equality' constraint - (Originally from FSComp.txt:1066) + (Originally from FSComp.txt:1068) The struct, record or union type '%s' has the 'StructuralEquality' attribute but the type parameter '%s' does not satisfy the 'equality' constraint. Consider adding the 'equality' constraint to the type parameter - (Originally from FSComp.txt:1065) + (Originally from FSComp.txt:1067) The struct, record or union type '%s' has the 'StructuralComparison' attribute but the component type '%s' does not satisfy the 'comparison' constraint - (Originally from FSComp.txt:1060) + (Originally from FSComp.txt:1062) The struct, record or union type '%s' has the 'StructuralComparison' attribute but the type parameter '%s' does not satisfy the 'comparison' constraint. Consider adding the 'comparison' constraint to the type parameter - (Originally from FSComp.txt:1059) + (Originally from FSComp.txt:1061) Each argument of the primary constructor for a struct must be given a type, for example 'type S(x1:int, x2: int) = ...'. These arguments determine the fields of the struct. - (Originally from FSComp.txt:1067) + (Originally from FSComp.txt:1069) Structs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type. - (Originally from FSComp.txt:752) + (Originally from FSComp.txt:753) Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings - (Originally from FSComp.txt:751) + (Originally from FSComp.txt:752) Structs, interfaces, enums and delegates cannot inherit from other types - (Originally from FSComp.txt:781) + (Originally from FSComp.txt:782) Structs cannot have an object constructor with no arguments. This is a restriction imposed on all CLI languages as structs automatically support a default constructor. - (Originally from FSComp.txt:723) + (Originally from FSComp.txt:724) @@ -1205,31 +1217,31 @@ If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields. - (Originally from FSComp.txt:1734) + (Originally from FSComp.txt:1763) If a multicase union type is a struct, then all union cases must have unique names. For example: 'type A = B of b: int | C of c: int'. - (Originally from FSComp.txt:1384) + (Originally from FSComp.txt:1388) Struct types cannot contain abstract members - (Originally from FSComp.txt:801) + (Originally from FSComp.txt:802) Static 'val' fields in types must be mutable, private and marked with the '[<DefaultValue>]' attribute. They are initialized to the 'null' or 'zero' value for their type. Consider also using a 'static let mutable' binding in a class type. - (Originally from FSComp.txt:734) + (Originally from FSComp.txt:735) Static optimization conditionals are only for use within the F# library - (Originally from FSComp.txt:672) + (Originally from FSComp.txt:673) @@ -1241,13 +1253,13 @@ For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher. - (Originally from FSComp.txt:753) + (Originally from FSComp.txt:754) Interfaces cannot contain definitions of static initializers - (Originally from FSComp.txt:718) + (Originally from FSComp.txt:719) @@ -1265,19 +1277,19 @@ Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. - (Originally from FSComp.txt:1723) + (Originally from FSComp.txt:1752) A simple method name is required here - (Originally from FSComp.txt:625) + (Originally from FSComp.txt:626) Cannot call '%s' - a setter for init-only property, please use object initialization instead. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization - (Originally from FSComp.txt:664) + (Originally from FSComp.txt:665) @@ -1289,7 +1301,7 @@ Array method '%s' is supplied by the runtime and cannot be directly used in code. For operations with array elements consider using family of GetArray/SetArray functions from LanguagePrimitives.IntrinsicFunctions module. - (Originally from FSComp.txt:1346) + (Originally from FSComp.txt:1350) @@ -1301,67 +1313,67 @@ Return types of union cases must be identical to the type being defined, up to abbreviations - (Originally from FSComp.txt:738) + (Originally from FSComp.txt:739) 'return' and 'return!' may not be used in queries - (Originally from FSComp.txt:1315) + (Originally from FSComp.txt:1319) Using resumable code or resumable state machines requires /langversion:preview - (Originally from FSComp.txt:1660) + (Originally from FSComp.txt:1689) Resumable code invocation. Suppress this warning if you are defining new low-level resumable code in terms of existing resumable code. - (Originally from FSComp.txt:1664) + (Originally from FSComp.txt:1693) Invalid resumable code. Any method of function accepting or returning resumable code must be marked 'inline' - (Originally from FSComp.txt:1656) + (Originally from FSComp.txt:1685) - Invalid resumable code. A 'let rec' occured in the resumable code specification - (Originally from FSComp.txt:1659) + Invalid resumable code. A 'let rec' occurred in the resumable code specification + (Originally from FSComp.txt:1688) Invalid resumable code. Resumable code parameter must have name beginning with '__expand' - (Originally from FSComp.txt:1657) + (Originally from FSComp.txt:1686) Invalid resumable code. A resumable code parameter must be of delegate or function type - (Originally from FSComp.txt:1658) + (Originally from FSComp.txt:1687) The syntax 'type X with ...' is reserved for augmentations. Types whose representations are hidden but which have members are now declared in signatures using 'type X = ...'. You may also need to add the '[<Sealed>] attribute to the type definition in the signature - (Originally from FSComp.txt:808) + (Originally from FSComp.txt:809) This is not a variable, constant, active recognizer or literal - (Originally from FSComp.txt:584) + (Originally from FSComp.txt:585) The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '%s' method or appropriate 'MergeSources' and 'Bind' methods - (Originally from FSComp.txt:1529) + (Originally from FSComp.txt:1550) @@ -1373,25 +1385,25 @@ Only active patterns returning exactly one result may accept arguments - (Originally from FSComp.txt:576) + (Originally from FSComp.txt:577) The representation of this type is hidden by the signature. It must be given an attribute such as [<Sealed>], [<Class>] or [<Interface>] to indicate the characteristics of the type. - (Originally from FSComp.txt:787) + (Originally from FSComp.txt:788) Recursive bindings that include member specifications can only occur as a direct augmentation of a type - (Originally from FSComp.txt:725) + (Originally from FSComp.txt:726) Records, union, abbreviations and struct types cannot have the 'AllowNullLiteral' attribute - (Originally from FSComp.txt:783) + (Originally from FSComp.txt:784) @@ -1403,7 +1415,7 @@ The 'rec' on this module is implied by an outer 'rec' declaration and is being ignored - (Originally from FSComp.txt:1379) + (Originally from FSComp.txt:1383) @@ -1415,55 +1427,97 @@ This property or field was not found on this custom attribute type - (Originally from FSComp.txt:699) + (Originally from FSComp.txt:700) Property '%s' is static - (Originally from FSComp.txt:661) + (Originally from FSComp.txt:662) Property '%s' is not static - (Originally from FSComp.txt:658) + (Originally from FSComp.txt:659) Property '%s' is not readable - (Originally from FSComp.txt:659) + (Originally from FSComp.txt:660) Property '%s' cannot be set - (Originally from FSComp.txt:662) + (Originally from FSComp.txt:663) This property cannot be set - (Originally from FSComp.txt:698) + (Originally from FSComp.txt:699) The types System.ValueType, System.Enum, System.Delegate, System.MulticastDelegate and System.Array cannot be used as super types in an object expression or class - (Originally from FSComp.txt:626) + (Originally from FSComp.txt:627) + + + + + You can remove this `nonNull` assertion. + (Originally from FSComp.txt:1538) + + + + + You can create 'ValueSome value' directly instead of 'ofObj', or consider not using a voption for this value. + (Originally from FSComp.txt:1535) + + + + + You can create 'Some value' directly instead of 'ofObj', or consider not using an option for this value. + (Originally from FSComp.txt:1534) + + + + + You can remove this |NonNullQuick| pattern usage. + (Originally from FSComp.txt:1537) + + + + + You can remove this |Null|NonNull| pattern usage. + (Originally from FSComp.txt:1536) + + + + + Value known to be without null passed to a function meant for nullables: %s + (Originally from FSComp.txt:1533) + + + + + Multi-case partial active patterns are not supported. Consider using a single-case partial active pattern or a full active pattern. + (Originally from FSComp.txt:1788) The syntax '(expr1)[expr2]' is now reserved for indexing and is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. - (Originally from FSComp.txt:1608) + (Originally from FSComp.txt:1637) The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. - (Originally from FSComp.txt:1611) + (Originally from FSComp.txt:1640) @@ -1475,7 +1529,7 @@ The parameter '%s' was inferred to have byref type. Parameters of byref type must be given an explicit type annotation, e.g. 'x1: byref<int>'. When used, a byref parameter is implicitly dereferenced. - (Originally from FSComp.txt:1082) + (Originally from FSComp.txt:1084) @@ -1487,145 +1541,145 @@ Accessibility modifiers are not permitted on overrides or interface implementations - (Originally from FSComp.txt:790) + (Originally from FSComp.txt:791) This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). - (Originally from FSComp.txt:1725) + (Originally from FSComp.txt:1754) This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:%s - (Originally from FSComp.txt:710) + (Originally from FSComp.txt:711) One or more of the overloads of this method has curried arguments. Consider redesigning these members to take arguments in tupled form. - (Originally from FSComp.txt:670) + (Originally from FSComp.txt:671) The syntax 'expr1[expr2]' is now reserved for indexing and is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction expr1 [expr2]'. - (Originally from FSComp.txt:1610) + (Originally from FSComp.txt:1639) The syntax 'expr1[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use 'expr1.[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction expr1 [expr2]'. - (Originally from FSComp.txt:1613) + (Originally from FSComp.txt:1642) Optional arguments cannot be used in custom attributes - (Originally from FSComp.txt:697) + (Originally from FSComp.txt:698) Optional arguments are only permitted on type members - (Originally from FSComp.txt:572) + (Originally from FSComp.txt:573) Optional arguments must come at the end of the argument list, after any non-optional arguments - (Originally from FSComp.txt:1107) + (Originally from FSComp.txt:1109) '%s' must be followed by 'in'. Usage: %s. - (Originally from FSComp.txt:1340) + (Originally from FSComp.txt:1344) Incorrect syntax for '%s'. Usage: %s. - (Originally from FSComp.txt:1268) + (Originally from FSComp.txt:1272) The operator '%s' does not accept the use of 'into' - (Originally from FSComp.txt:1302) + (Originally from FSComp.txt:1306) This declaration opens the namespace or module '%s' through a partially qualified path. Adjust this code to use the full path of the namespace. This change will make your code more robust as new constructs are added to the F# and CLI libraries. - (Originally from FSComp.txt:745) + (Originally from FSComp.txt:746) In a recursive declaration group, 'open' declarations must come first in each module - (Originally from FSComp.txt:1380) + (Originally from FSComp.txt:1384) Only types representing units-of-measure may be given the 'Measure' attribute - (Originally from FSComp.txt:789) + (Originally from FSComp.txt:790) Only structs and classes without primary constructors may be given the 'StructLayout' attribute - (Originally from FSComp.txt:786) + (Originally from FSComp.txt:787) Only simple variable patterns can be bound in 'let rec' constructs - (Originally from FSComp.txt:726) + (Originally from FSComp.txt:727) Only simple bindings of the form 'id = expr' can be used in construction expressions - (Originally from FSComp.txt:632) + (Originally from FSComp.txt:633) Mutable 'let' bindings can't be recursive or defined in recursive modules or namespaces - (Originally from FSComp.txt:727) + (Originally from FSComp.txt:728) Only functions may be marked 'inline' - (Originally from FSComp.txt:686) + (Originally from FSComp.txt:687) Only classes may be given the 'AbstractClass' attribute - (Originally from FSComp.txt:788) + (Originally from FSComp.txt:789) Objects must be initialized by an object construction expression that calls an inherited object constructor and assigns a value to each field - (Originally from FSComp.txt:633) + (Originally from FSComp.txt:634) The operator 'expr.[idx]' has been used on an object of indeterminate type based on information prior to this program point. Consider adding further type constraints - (Originally from FSComp.txt:606) + (Originally from FSComp.txt:607) Only overrides of abstract and virtual members may be specified in object expressions - (Originally from FSComp.txt:620) + (Originally from FSComp.txt:621) @@ -1637,13 +1691,13 @@ Calls to object constructors on type parameters cannot be given arguments - (Originally from FSComp.txt:608) + (Originally from FSComp.txt:609) Interfaces cannot contain definitions of object constructors - (Originally from FSComp.txt:719) + (Originally from FSComp.txt:720) @@ -1655,25 +1709,37 @@ Object construction expressions (i.e. record expressions with inheritance specifications) may only be used to implement constructors in object model types. Use 'new ObjectType(args)' to construct instances of object model types outside of constructors - (Originally from FSComp.txt:643) + (Originally from FSComp.txt:644) Object construction expressions may only be used to implement constructors in class types - (Originally from FSComp.txt:631) + (Originally from FSComp.txt:632) This numeric literal requires that a module '%s' defining functions FromZero, FromOne, FromInt32, FromInt64 and FromString be in scope - (Originally from FSComp.txt:639) + (Originally from FSComp.txt:640) + + + + + The 'nullness checking' language feature is not enabled. This use of a nullness checking construct will be ignored. + (Originally from FSComp.txt:1542) + + + + + With nullness checking enabled, overrides of .ToString() method must return a non-nullable string. You can handle potential nulls via the built-in string function. + (Originally from FSComp.txt:1539) This is not a valid name for an enumeration case - (Originally from FSComp.txt:599) + (Originally from FSComp.txt:600) @@ -1685,31 +1751,31 @@ The value '%s' is not a function and does not support index notation. - (Originally from FSComp.txt:1597) + (Originally from FSComp.txt:1626) This expression is not a function and does not support index notation. - (Originally from FSComp.txt:1598) + (Originally from FSComp.txt:1627) Not an exception - (Originally from FSComp.txt:773) + (Originally from FSComp.txt:774) This value supports indexing, e.g. '%s.[index]'. The syntax '%s[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation. - (Originally from FSComp.txt:1595) + (Originally from FSComp.txt:1624) This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation. - (Originally from FSComp.txt:1596) + (Originally from FSComp.txt:1625) @@ -1721,13 +1787,13 @@ The generic member '%s' has been used at a non-uniform instantiation prior to this program point. Consider reordering the members so this member occurs first. Alternatively, specify the full type of the member explicitly, including argument types, return type and any additional generic parameters and constraints. - (Originally from FSComp.txt:1083) + (Originally from FSComp.txt:1085) This 'let' definition may not be used in a query. Only simple value definitions may be used in queries. - (Originally from FSComp.txt:1318) + (Originally from FSComp.txt:1322) @@ -1739,121 +1805,121 @@ 'while' expressions may not be used in queries - (Originally from FSComp.txt:1311) + (Originally from FSComp.txt:1315) 'try/finally' expressions may not be used in queries - (Originally from FSComp.txt:1312) + (Originally from FSComp.txt:1316) No static abstract property was found that corresponds to this override - (Originally from FSComp.txt:1737) + (Originally from FSComp.txt:1766) No static abstract member was found that corresponds to this override - (Originally from FSComp.txt:1736) + (Originally from FSComp.txt:1765) No abstract property was found that corresponds to this override - (Originally from FSComp.txt:713) + (Originally from FSComp.txt:714) No abstract or interface member was found that corresponds to this override - (Originally from FSComp.txt:709) + (Originally from FSComp.txt:710) Interface implementations cannot be given on construction expressions - (Originally from FSComp.txt:630) + (Originally from FSComp.txt:631) In queries, use the form 'for x in n .. m do ...' for ranging over integers - (Originally from FSComp.txt:1310) + (Originally from FSComp.txt:1314) The struct, record or union type '%s' does not support structural equality because the type '%s' does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '%s' to clarify that the type does not support structural equality - (Originally from FSComp.txt:1064) + (Originally from FSComp.txt:1066) The struct, record or union type '%s' does not support structural equality because the type parameter %s does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '%s' to clarify that the type does not support structural equality - (Originally from FSComp.txt:1063) + (Originally from FSComp.txt:1065) Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later - (Originally from FSComp.txt:1661) + (Originally from FSComp.txt:1690) The struct, record or union type '%s' is not structurally comparable because the type '%s' does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '%s' to clarify that the type is not comparable - (Originally from FSComp.txt:1062) + (Originally from FSComp.txt:1064) The struct, record or union type '%s' is not structurally comparable because the type parameter %s does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '%s' to clarify that the type is not comparable - (Originally from FSComp.txt:1061) + (Originally from FSComp.txt:1063) No arguments may be given when constructing a record value - (Originally from FSComp.txt:629) + (Originally from FSComp.txt:630) The member '%s' does not correspond to any abstract or virtual method available to override or implement. - (Originally from FSComp.txt:621) + (Originally from FSComp.txt:622) 'new' may only be used with object constructors - (Originally from FSComp.txt:637) + (Originally from FSComp.txt:638) 'new' must be used with a named type - (Originally from FSComp.txt:627) + (Originally from FSComp.txt:628) This new member hides the abstract member '%s' once tuples, functions, units of measure and/or provided types are erased. Rename the member or use 'override' instead. - (Originally from FSComp.txt:717) + (Originally from FSComp.txt:718) This new member hides the abstract member '%s'. Rename the member or use 'override' instead. - (Originally from FSComp.txt:716) + (Originally from FSComp.txt:717) 'new' cannot be used on interface types. Consider using an object expression '{ new ... with ... }' instead. - (Originally from FSComp.txt:612) + (Originally from FSComp.txt:613) @@ -1871,31 +1937,31 @@ '%s' may only be used with named types - (Originally from FSComp.txt:610) + (Originally from FSComp.txt:611) Named arguments cannot be given to member trait calls - (Originally from FSComp.txt:598) + (Originally from FSComp.txt:599) The named argument '%s' did not match any argument or mutable property - (Originally from FSComp.txt:669) + (Originally from FSComp.txt:670) %s is an active pattern and cannot be treated as a discriminated union case with named fields. - (Originally from FSComp.txt:1389) + (Originally from FSComp.txt:1393) Name '%s' not bound in pattern context - (Originally from FSComp.txt:573) + (Originally from FSComp.txt:574) @@ -1907,19 +1973,19 @@ Mutable function values should be written 'let mutable f = (fun args -> ...)' - (Originally from FSComp.txt:685) + (Originally from FSComp.txt:686) Mutable values cannot have generic parameters - (Originally from FSComp.txt:684) + (Originally from FSComp.txt:685) Mutable values cannot be marked 'inline' - (Originally from FSComp.txt:683) + (Originally from FSComp.txt:684) @@ -1937,7 +2003,7 @@ Multiple type matches were found:\n%s\nThe type '%s' was used. Due to the overlapping field names\n%s\nconsider using type annotations or change the order of open statements. - (Originally from FSComp.txt:1716) + (Originally from FSComp.txt:1745) @@ -1949,37 +2015,37 @@ This declaration opens the module '%s', which is marked as 'RequireQualifiedAccess'. Adjust your code to use qualified references to the elements of the module instead, e.g. 'List.map' instead of 'map'. This change will ensure that your code is robust as new constructs are added to libraries. - (Originally from FSComp.txt:744) + (Originally from FSComp.txt:745) The path '%s' is a namespace. A module abbreviation may not abbreviate a namespace. - (Originally from FSComp.txt:817) + (Originally from FSComp.txt:818) In a recursive declaration group, module abbreviations must come after all 'open' declarations and before other declarations - (Originally from FSComp.txt:1381) + (Originally from FSComp.txt:1385) - The following required properties have to be initalized:%s - (Originally from FSComp.txt:1692) + The following required properties have to be initialized:%s + (Originally from FSComp.txt:1721) A custom query operation for '%s' is required but not specified - (Originally from FSComp.txt:1238) + (Originally from FSComp.txt:1242) Method overrides and interface implementations are not permitted here - (Originally from FSComp.txt:708) + (Originally from FSComp.txt:709) @@ -1991,31 +2057,31 @@ Members that extend interface, delegate or enum types must be placed in a module separate to the definition of the type. This module must either have the AutoOpen attribute or be opened explicitly by client code to bring the extension members into scope. - (Originally from FSComp.txt:809) + (Originally from FSComp.txt:810) The member '%s' is used in an invalid way. A use of '%s' has been inferred prior to the definition of '%s', which is an invalid forward reference. - (Originally from FSComp.txt:819) + (Originally from FSComp.txt:820) Interfaces cannot contain definitions of member overrides - (Originally from FSComp.txt:720) + (Originally from FSComp.txt:721) Extension members cannot provide operator overloads. Consider defining the operator as part of the type definition instead. - (Originally from FSComp.txt:1109) + (Originally from FSComp.txt:1111) This member is not permitted in an interface implementation - (Originally from FSComp.txt:761) + (Originally from FSComp.txt:762) @@ -2027,127 +2093,127 @@ This member is not sufficiently generic - (Originally from FSComp.txt:728) + (Originally from FSComp.txt:729) The type %s contains the member '%s' but it is not a virtual or abstract method that is available to override or implement. - (Originally from FSComp.txt:622) + (Originally from FSComp.txt:623) A member and a local class binding both have the name '%s' - (Originally from FSComp.txt:755) + (Originally from FSComp.txt:756) Measure definitions cannot have type parameters - (Originally from FSComp.txt:778) + (Originally from FSComp.txt:779) Measure declarations may have only static members: constructors are not available - (Originally from FSComp.txt:754) + (Originally from FSComp.txt:755) Measure declarations may have only static members - (Originally from FSComp.txt:750) + (Originally from FSComp.txt:751) 'match' expressions may not be used in queries - (Originally from FSComp.txt:1337) + (Originally from FSComp.txt:1341) This lookup cannot be used here - (Originally from FSComp.txt:660) + (Originally from FSComp.txt:661) Local class bindings cannot be marked inline. Consider lifting the definition out of the class or else do not mark it as inline. - (Originally from FSComp.txt:746) + (Originally from FSComp.txt:747) Cannot assign '%s' to a value marked literal - (Originally from FSComp.txt:1602) + (Originally from FSComp.txt:1631) Cannot assign a value to another value marked literal - (Originally from FSComp.txt:1603) + (Originally from FSComp.txt:1632) This literal pattern does not take arguments - (Originally from FSComp.txt:1369) + (Originally from FSComp.txt:1373) Literal values cannot have generic parameters - (Originally from FSComp.txt:690) + (Originally from FSComp.txt:691) A literal value cannot be marked 'mutable' - (Originally from FSComp.txt:688) + (Originally from FSComp.txt:689) A literal value cannot be marked 'inline' - (Originally from FSComp.txt:689) + (Originally from FSComp.txt:690) A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' - (Originally from FSComp.txt:729) + (Originally from FSComp.txt:730) A [<Literal>] declaration cannot use an active pattern for its identifier - (Originally from FSComp.txt:1653) + (Originally from FSComp.txt:1682) The syntax '[expr1][expr2]' is now reserved for indexing and is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction [expr1] [expr2]'. - (Originally from FSComp.txt:1609) + (Originally from FSComp.txt:1638) The syntax '[expr1][expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction [expr1] [expr2]'. - (Originally from FSComp.txt:1612) + (Originally from FSComp.txt:1641) This list expression exceeds the maximum size for list literals. Use an array for larger literals and call Array.ToList. - (Originally from FSComp.txt:596) + (Originally from FSComp.txt:597) This definition may only be used in a type with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'. - (Originally from FSComp.txt:815) + (Originally from FSComp.txt:816) @@ -2159,67 +2225,67 @@ The kind of the type specified by its attributes does not match the kind implied by its definition - (Originally from FSComp.txt:777) + (Originally from FSComp.txt:778) In queries, '%s' must use a simple pattern - (Originally from FSComp.txt:1237) + (Originally from FSComp.txt:1241) A type annotated with IsReadOnly must also be a struct. Consider adding the [<Struct>] attribute to the type. - (Originally from FSComp.txt:1506) + (Originally from FSComp.txt:1510) Invalid use of a type name - (Originally from FSComp.txt:654) + (Originally from FSComp.txt:655) Invalid use of reverse index in list expression. - (Originally from FSComp.txt:1604) + (Originally from FSComp.txt:1633) Invalid use of an interface type - (Originally from FSComp.txt:656) + (Originally from FSComp.txt:657) Invalid use of a delegate constructor. Use the syntax 'new Type(args)' or just 'Type(args)'. - (Originally from FSComp.txt:657) + (Originally from FSComp.txt:658) The 'UseNullAsTrueValue' attribute flag may only be used with union types that have one nullary case and at least one non-nullary case - (Originally from FSComp.txt:1081) + (Originally from FSComp.txt:1083) 'use' bindings must be of the form 'use <var> = <expr>' - (Originally from FSComp.txt:706) + (Originally from FSComp.txt:707) use! may not be combined with and! - (Originally from FSComp.txt:1531) + (Originally from FSComp.txt:1552) 'use!' bindings must be of the form 'use! <var> = <expr>' - (Originally from FSComp.txt:1116) + (Originally from FSComp.txt:1118) @@ -2237,67 +2303,67 @@ Literal enumerations must have type int, uint, int16, uint16, int64, uint64, byte, sbyte or char - (Originally from FSComp.txt:805) + (Originally from FSComp.txt:806) Invalid type extension - (Originally from FSComp.txt:775) + (Originally from FSComp.txt:776) Type arguments cannot be specified here - (Originally from FSComp.txt:575) + (Originally from FSComp.txt:576) The number of type arguments did not match: '%d' given, '%d' expected. This may be related to a previously reported error. - (Originally from FSComp.txt:1231) + (Originally from FSComp.txt:1235) The use of '[<Struct>]' on values, functions and methods is only allowed on partial active pattern definitions - (Originally from FSComp.txt:1637) + (Originally from FSComp.txt:1666) Invalid signature for set member - (Originally from FSComp.txt:715) + (Originally from FSComp.txt:716) Invalid record, sequence or computation expression. Sequence expressions should be of the form 'seq { ... }' - (Originally from FSComp.txt:593) + (Originally from FSComp.txt:594) Invalid constraint. Valid constraint forms include \"'T :> ISomeInterface\" for interface constraints and \"SomeConstrainingType<'T>\" for self-constraints. See https://aka.ms/fsharp-type-constraints. - (Originally from FSComp.txt:1687) + (Originally from FSComp.txt:1716) The construct '%s' may only be used in valid resumable code. - (Originally from FSComp.txt:1655) + (Originally from FSComp.txt:1684) Invalid join relation in '%s'. Expected 'expr <op> expr', where <op> is =, =?, ?= or ?=?. - (Originally from FSComp.txt:1295) + (Originally from FSComp.txt:1299) Invalid record construction - (Originally from FSComp.txt:640) + (Originally from FSComp.txt:641) @@ -2309,13 +2375,13 @@ This is not a valid pattern - (Originally from FSComp.txt:585) + (Originally from FSComp.txt:586) Invalid optional assignment to a property or field - (Originally from FSComp.txt:674) + (Originally from FSComp.txt:675) @@ -2339,13 +2405,13 @@ Invalid object, sequence or record expression - (Originally from FSComp.txt:592) + (Originally from FSComp.txt:593) Invalid object expression. Objects without overrides or interfaces should use the expression form 'new Type(args)' without braces. - (Originally from FSComp.txt:591) + (Originally from FSComp.txt:592) @@ -2357,7 +2423,7 @@ Non-primitive numeric literal constants cannot be used in pattern matches because they can be mapped to multiple different types through the use of a NumericLiteral module. Consider using replacing with a variable, and use 'when <variable> = <constant>' at the end of the match clause. - (Originally from FSComp.txt:574) + (Originally from FSComp.txt:575) @@ -2369,13 +2435,13 @@ Invalid namespace, module, type or union case name - (Originally from FSComp.txt:736) + (Originally from FSComp.txt:737) Invalid module name - (Originally from FSComp.txt:774) + (Originally from FSComp.txt:775) @@ -2405,7 +2471,7 @@ Invalid member name. Members may not have name '.ctor' or '.cctor' - (Originally from FSComp.txt:1229) + (Originally from FSComp.txt:1233) @@ -2417,19 +2483,19 @@ Invalid member declaration. The name of the member is missing or has parentheses. - (Originally from FSComp.txt:1680) + (Originally from FSComp.txt:1709) Invalid inline specification - (Originally from FSComp.txt:705) + (Originally from FSComp.txt:706) Incomplete expression or invalid use of indexer syntax - (Originally from FSComp.txt:605) + (Originally from FSComp.txt:606) @@ -2441,13 +2507,13 @@ Internal error. Invalid index into active pattern array - (Originally from FSComp.txt:578) + (Originally from FSComp.txt:579) This is not a valid value for an enumeration literal - (Originally from FSComp.txt:739) + (Originally from FSComp.txt:740) @@ -2459,7 +2525,7 @@ Delegate specifications must be of the form 'typ -> typ' - (Originally from FSComp.txt:803) + (Originally from FSComp.txt:804) @@ -2483,61 +2549,61 @@ This is not a valid constant expression - (Originally from FSComp.txt:691) + (Originally from FSComp.txt:692) Invalid assignment - (Originally from FSComp.txt:653) + (Originally from FSComp.txt:654) Invalid argument to parameterized pattern label - (Originally from FSComp.txt:577) + (Originally from FSComp.txt:578) Invalid alignment in interpolated string - (Originally from FSComp.txt:1623) + (Originally from FSComp.txt:1652) - + - This is not a valid name for an active pattern - (Originally from FSComp.txt:681) + '%s' is not a valid method name. Use a 'let' binding instead. + (Originally from FSComp.txt:682) A use of 'into' must be followed by the remainder of the computation - (Originally from FSComp.txt:1301) + (Originally from FSComp.txt:1305) Mismatch in interpolated string. Interpolated strings may not use '%%' format specifiers unless each is given an expression, e.g. '%%d{1+1}' - (Originally from FSComp.txt:1622) + (Originally from FSComp.txt:1651) Interfaces inherited by other interfaces should be declared using 'inherit ...' instead of 'interface ...' - (Originally from FSComp.txt:1098) + (Originally from FSComp.txt:1100) Interface types cannot be sealed - (Originally from FSComp.txt:802) + (Originally from FSComp.txt:803) Interface types and delegate types cannot contain fields - (Originally from FSComp.txt:797) + (Originally from FSComp.txt:798) @@ -2549,61 +2615,61 @@ The 'InlineIfLambda' attribute may only be used on parameters of inlined functions of methods whose type is a function or F# delegate type. - (Originally from FSComp.txt:1678) + (Originally from FSComp.txt:1707) Init-only property '%s' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization - (Originally from FSComp.txt:663) + (Originally from FSComp.txt:664) The inherited type is not an object model type - (Originally from FSComp.txt:642) + (Originally from FSComp.txt:643) A inheritance declaration is not permitted here - (Originally from FSComp.txt:743) + (Originally from FSComp.txt:744) This 'inherit' declaration specifies the inherited type but no arguments. Consider supplying arguments, e.g. 'inherit BaseType(args)'. - (Originally from FSComp.txt:813) + (Originally from FSComp.txt:814) This 'inherit' declaration has arguments, but is not in a type with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'. - (Originally from FSComp.txt:814) + (Originally from FSComp.txt:815) 'inherit' cannot be used on interface types. Consider implementing the interface by using 'interface ... with ... end' instead. - (Originally from FSComp.txt:611) + (Originally from FSComp.txt:612) This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. - (Originally from FSComp.txt:1731) + (Originally from FSComp.txt:1760) The function or member '%s' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is '%s'. - (Originally from FSComp.txt:1230) + (Originally from FSComp.txt:1234) The syntax 'arr.[idx]' is now revised to 'arr[idx]'. Please update your code. - (Originally from FSComp.txt:1606) + (Originally from FSComp.txt:1635) @@ -2615,19 +2681,19 @@ This expression uses the implicit conversion '%s' to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn \"3391\". - (Originally from FSComp.txt:1648) + (Originally from FSComp.txt:1677) This expression uses the implicit conversion '%s' to convert type '%s' to type '%s'. - (Originally from FSComp.txt:1652) + (Originally from FSComp.txt:1681) The struct, record or union type '%s' implements the interface 'System.IStructuralEquatable' explicitly. Apply the 'CustomEquality' attribute to the type. - (Originally from FSComp.txt:766) + (Originally from FSComp.txt:767) @@ -2639,7 +2705,7 @@ The struct, record or union type '%s' implements the interface 'System.IEquatable<_>' explicitly. Apply the 'CustomEquality' attribute to the type and provide a consistent implementation of the non-generic override 'System.Object.Equals(obj)'. - (Originally from FSComp.txt:767) + (Originally from FSComp.txt:768) @@ -2657,73 +2723,73 @@ Illegal syntax in type expression - (Originally from FSComp.txt:567) + (Originally from FSComp.txt:568) This is not valid literal expression. The [<Literal>] attribute will be ignored. - (Originally from FSComp.txt:1355) + (Originally from FSComp.txt:1359) Illegal pattern - (Originally from FSComp.txt:586) + (Originally from FSComp.txt:587) Explicit type declarations for constructors must be of the form 'ty1 * ... * tyN -> resTy'. Parentheses may be required around 'resTy' - (Originally from FSComp.txt:737) + (Originally from FSComp.txt:738) Byref types are not allowed in an open type declaration. - (Originally from FSComp.txt:1523) + (Originally from FSComp.txt:1527) A literal value cannot be given the [<ThreadStatic>] or [<ContextStatic>] attributes - (Originally from FSComp.txt:687) + (Originally from FSComp.txt:688) An if/then/else expression may not be used within queries. Consider using either an if/then expression, or use a sequence expression instead. - (Originally from FSComp.txt:1258) + (Originally from FSComp.txt:1262) It is recommended that objects supporting the IDisposable interface are created using the syntax 'new Type(args)', rather than 'Type(args)' or 'Type' as a function value representing the constructor, to indicate that resources may be owned by the generated value - (Originally from FSComp.txt:614) + (Originally from FSComp.txt:615) The syntax 'expr1[expr2]' is now reserved for indexing. See https://aka.ms/fsharp-index-notation. If calling a function, add a space between the function and argument, e.g. 'someFunction [expr]'. - (Originally from FSComp.txt:1607) + (Originally from FSComp.txt:1636) The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'. - (Originally from FSComp.txt:1605) + (Originally from FSComp.txt:1634) The system type '%s' was required but no referenced system DLL contained this type - (Originally from FSComp.txt:1391) + (Originally from FSComp.txt:1395) Generic types cannot be given the 'StructLayout' attribute - (Originally from FSComp.txt:785) + (Originally from FSComp.txt:786) @@ -2735,7 +2801,7 @@ The provided types generated by this use of a type provider may not be used from other F# assemblies and should be marked internal or private. Consider using 'type internal TypeName = ...' or 'type private TypeName = ...'. - (Originally from FSComp.txt:1344) + (Originally from FSComp.txt:1348) @@ -2753,13 +2819,13 @@ The corresponding formal argument is not optional - (Originally from FSComp.txt:673) + (Originally from FSComp.txt:674) Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() - (Originally from FSComp.txt:1386) + (Originally from FSComp.txt:1390) @@ -2771,37 +2837,37 @@ A field/val declaration is not permitted here - (Originally from FSComp.txt:742) + (Originally from FSComp.txt:743) This field requires a name - (Originally from FSComp.txt:735) + (Originally from FSComp.txt:736) No assignment given for field '%s' of type '%s' - (Originally from FSComp.txt:618) + (Originally from FSComp.txt:619) This field is not a literal and cannot be used in a pattern - (Originally from FSComp.txt:583) + (Originally from FSComp.txt:584) Named field '%s' is used more than once. - (Originally from FSComp.txt:1352) + (Originally from FSComp.txt:1356) Named field '%s' conflicts with autogenerated name for anonymous field. - (Originally from FSComp.txt:1353) + (Originally from FSComp.txt:1357) @@ -2813,67 +2879,67 @@ Field '%s' is not static - (Originally from FSComp.txt:582) + (Originally from FSComp.txt:583) This field is not mutable - (Originally from FSComp.txt:600) + (Originally from FSComp.txt:601) All record, union and struct types in FSharp.Core.dll must be explicitly labelled with 'StructuralComparison' or 'NoComparison' - (Originally from FSComp.txt:1058) + (Originally from FSComp.txt:1060) Extraneous fields have been given values - (Originally from FSComp.txt:619) + (Originally from FSComp.txt:620) This list or array expression includes an element of the form 'if ... then ... else'. Parenthesize this expression to indicate it is an individual element of the list or array, to disambiguate this from a list generated using a sequence expression - (Originally from FSComp.txt:594) + (Originally from FSComp.txt:595) This expression form may only be used in sequence and computation expressions - (Originally from FSComp.txt:590) + (Originally from FSComp.txt:591) The expression form { expr with ... } may only be used with record types. To build object types use { new Type(...) with ... } - (Originally from FSComp.txt:641) + (Originally from FSComp.txt:642) The expression form 'expr then expr' may only be used as part of an explicit object constructor - (Originally from FSComp.txt:597) + (Originally from FSComp.txt:598) Expected %d expressions, got %d - (Originally from FSComp.txt:588) + (Originally from FSComp.txt:589) TcExprUndelayed: delayed - (Originally from FSComp.txt:589) + (Originally from FSComp.txt:590) Explicit type specifications cannot be used for exception constructors - (Originally from FSComp.txt:768) + (Originally from FSComp.txt:769) @@ -2921,7 +2987,7 @@ Expected an interface type - (Originally from FSComp.txt:634) + (Originally from FSComp.txt:635) @@ -2933,79 +2999,91 @@ The exception '%s' does not have a field named '%s'. - (Originally from FSComp.txt:1348) + (Originally from FSComp.txt:1352) Exception abbreviations should not have argument lists - (Originally from FSComp.txt:769) + (Originally from FSComp.txt:770) Exception abbreviations must refer to existing exceptions or F# types deriving from System.Exception - (Originally from FSComp.txt:771) + (Originally from FSComp.txt:772) Event '%s' is static - (Originally from FSComp.txt:667) + (Originally from FSComp.txt:668) Event '%s' is not static - (Originally from FSComp.txt:668) + (Originally from FSComp.txt:669) Enumerations cannot have members - (Originally from FSComp.txt:749) + (Originally from FSComp.txt:750) Enumerations cannot have interface declarations - (Originally from FSComp.txt:757) + (Originally from FSComp.txt:758) The type '%s' is not a valid enumerator type , i.e. does not have a 'MoveNext()' method returning a bool, and a 'Current' property - (Originally from FSComp.txt:1118) + (Originally from FSComp.txt:1120) The 'EntryPointAttribute' attribute may only be used on function definitions in modules - (Originally from FSComp.txt:682) + (Originally from FSComp.txt:683) '{ }' is not a valid expression. Records must include at least one field. Empty sequences are specified by using Seq.empty or an empty list '[]'. - (Originally from FSComp.txt:644) + (Originally from FSComp.txt:645) Copy-and-update record expressions must include at least one field. - (Originally from FSComp.txt:1342) + (Originally from FSComp.txt:1346) + + + + + An empty body may only be used if the computation expression builder defines a 'Zero' method. + (Originally from FSComp.txt:564) Duplicate specification of an interface - (Originally from FSComp.txt:741) + (Originally from FSComp.txt:742) + + + + + Nullness warning: Downcasting from '%s' into '%s' can introduce unexpected null values. Cast to '%s|null' instead or handle the null before downcasting. + (Originally from FSComp.txt:1540) Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'. - (Originally from FSComp.txt:1733) + (Originally from FSComp.txt:1762) @@ -3017,7 +3095,7 @@ 'do!' cannot be used within sequence expressions - (Originally from FSComp.txt:649) + (Originally from FSComp.txt:650) @@ -3029,25 +3107,25 @@ DLLImport bindings must be static members in a class or function definitions in a module - (Originally from FSComp.txt:1112) + (Originally from FSComp.txt:1114) Delegate specifications must not be curried types. Use 'typ * ... * typ -> typ' for multi-argument delegates, and 'typ -> (typ -> typ)' for delegates returning function values. - (Originally from FSComp.txt:804) + (Originally from FSComp.txt:805) A delegate constructor must be passed a single function value - (Originally from FSComp.txt:675) + (Originally from FSComp.txt:676) The 'DefaultValue' attribute may only be used on 'val' declarations - (Originally from FSComp.txt:679) + (Originally from FSComp.txt:680) @@ -3059,97 +3137,97 @@ A default implementation of this interface has already been added because the explicit implementation of the interface was not specified at the definition of the type - (Originally from FSComp.txt:760) + (Originally from FSComp.txt:761) This method already has a default implementation - (Originally from FSComp.txt:711) + (Originally from FSComp.txt:712) The method implemented by this default is ambiguous - (Originally from FSComp.txt:712) + (Originally from FSComp.txt:713) One or more of the declared type parameters for this type extension have a missing or wrong type constraint not matching the original type constraints on '%s' - (Originally from FSComp.txt:810) + (Originally from FSComp.txt:811) This declaration element is not permitted in an augmentation - (Originally from FSComp.txt:762) + (Originally from FSComp.txt:763) '%s' is not used correctly. Usage: %s. This is a custom operation in this query or computation expression. - (Originally from FSComp.txt:1263) + (Originally from FSComp.txt:1267) '%s' is not used correctly. This is a custom operation in this query or computation expression. - (Originally from FSComp.txt:1262) + (Originally from FSComp.txt:1266) A custom operation may not be used in conjunction with a non-value or recursive 'let' binding in another part of this computation expression - (Originally from FSComp.txt:1244) + (Originally from FSComp.txt:1248) A custom operation may not be used in conjunction with 'use', 'try/with', 'try/finally', 'if/then/else' or 'match' operators within this computation expression - (Originally from FSComp.txt:1245) + (Originally from FSComp.txt:1249) The custom operation '%s' refers to a method which is overloaded. The implementations of custom operations may not be overloaded. - (Originally from FSComp.txt:1246) + (Originally from FSComp.txt:1250) The definition of the custom operator '%s' does not use a valid combination of attribute flags - (Originally from FSComp.txt:1303) + (Originally from FSComp.txt:1307) '%s' is used with an incorrect number of arguments. This is a custom operation in this query or computation expression. Expected %d argument(s), but given %d. - (Originally from FSComp.txt:1270) + (Originally from FSComp.txt:1274) A custom attribute must invoke an object constructor - (Originally from FSComp.txt:702) + (Originally from FSComp.txt:703) A custom attribute must be a reference type - (Originally from FSComp.txt:700) + (Originally from FSComp.txt:701) The number of args for a custom attribute does not match the expected number of args for the attribute constructor - (Originally from FSComp.txt:701) + (Originally from FSComp.txt:702) Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression. - (Originally from FSComp.txt:1387) + (Originally from FSComp.txt:1391) @@ -3161,61 +3239,61 @@ This copy-and-update record expression changes all fields of record type '%s'. Consider using the record construction syntax instead. - (Originally from FSComp.txt:1708) + (Originally from FSComp.txt:1737) The input to a copy-and-update expression that creates an anonymous record must be either an anonymous record or a record - (Originally from FSComp.txt:1518) + (Originally from FSComp.txt:1522) Constructors are not permitted as extension members - they must be defined as part of the original definition of the type - (Originally from FSComp.txt:1370) + (Originally from FSComp.txt:1374) Constructors cannot be defined for this type - (Originally from FSComp.txt:724) + (Originally from FSComp.txt:725) Constructors cannot be specified in exception augmentations - (Originally from FSComp.txt:722) + (Originally from FSComp.txt:723) Constructors must be applied to arguments and cannot be used as first-class values. If necessary use an anonymous function '(fun arg1 ... argN -> new Type(arg1,...,argN))'. - (Originally from FSComp.txt:665) + (Originally from FSComp.txt:666) Constructors for the type '%s' must directly or indirectly call its implicit object constructor. Use a call to the implicit object constructor instead of a record expression. - (Originally from FSComp.txt:616) + (Originally from FSComp.txt:617) This object constructor requires arguments - (Originally from FSComp.txt:636) + (Originally from FSComp.txt:637) Constructor expressions for interfaces do not take arguments - (Originally from FSComp.txt:635) + (Originally from FSComp.txt:636) The constructor does not have a field named '%s'. - (Originally from FSComp.txt:1350) + (Originally from FSComp.txt:1354) @@ -3227,37 +3305,37 @@ This construct may only be used within sequence or computation expressions - (Originally from FSComp.txt:603) + (Originally from FSComp.txt:604) This construct may only be used within list, array and sequence expressions, e.g. expressions of the form 'seq { ... }', '[ ... ]' or '[| ... |]'. These use the syntax 'for ... in ... do ... yield...' to generate elements - (Originally from FSComp.txt:601) + (Originally from FSComp.txt:602) This construct may only be used within computation expressions. To return a value from an ordinary function simply write the expression without 'return'. - (Originally from FSComp.txt:602) + (Originally from FSComp.txt:603) This construct may only be used within computation expressions - (Originally from FSComp.txt:604) + (Originally from FSComp.txt:605) This construct is ambiguous as part of a sequence expression. Nested expressions may be written using 'let _ = (...)' and nested sequences using 'yield! seq {... }'. - (Originally from FSComp.txt:648) + (Originally from FSComp.txt:649) This construct is ambiguous as part of a computation expression. Nested expressions may be written using 'let _ = (...)' and nested computations using 'let! res = builder { ... }'. - (Originally from FSComp.txt:647) + (Originally from FSComp.txt:648) @@ -3269,157 +3347,157 @@ Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on methods or attribute classes - (Originally from FSComp.txt:1108) + (Originally from FSComp.txt:1110) The 'ConditionalAttribute' attribute may only be used on members - (Originally from FSComp.txt:680) + (Originally from FSComp.txt:681) Interfaces cannot contain definitions of concrete instance members. You may need to define a constructor on your type to indicate that the type is a class. - (Originally from FSComp.txt:721) + (Originally from FSComp.txt:722) The 'CompiledName' attribute cannot be used with this language element - (Originally from FSComp.txt:609) + (Originally from FSComp.txt:610) Cannot partially apply the extension method '%s' because the first parameter is a byref type. - (Originally from FSComp.txt:1514) + (Originally from FSComp.txt:1518) Cannot override inherited member '%s' because it is sealed - (Originally from FSComp.txt:1232) + (Originally from FSComp.txt:1236) Cannot inherit from a variable type - (Originally from FSComp.txt:607) + (Originally from FSComp.txt:608) Cannot inherit a sealed type - (Originally from FSComp.txt:799) + (Originally from FSComp.txt:800) Cannot inherit from interface type. Use interface ... with instead. - (Originally from FSComp.txt:800) + (Originally from FSComp.txt:801) Cannot inherit from erased provided type - (Originally from FSComp.txt:1227) + (Originally from FSComp.txt:1231) Cannot create an extension of a sealed type - (Originally from FSComp.txt:628) + (Originally from FSComp.txt:629) Cannot call the byref extension method '%s. 'this' parameter requires the value to be mutable or a non-readonly byref type. - (Originally from FSComp.txt:1512) + (Originally from FSComp.txt:1516) Cannot call an abstract base member: '%s' - (Originally from FSComp.txt:1085) + (Originally from FSComp.txt:1087) '%s' must be applied to an argument of type '%s', but has been applied to an argument of type '%s' - (Originally from FSComp.txt:1127) + (Originally from FSComp.txt:1129) '%s' can only be applied to optional arguments - (Originally from FSComp.txt:1128) + (Originally from FSComp.txt:1130) Byref types are not allowed to have optional type extensions. - (Originally from FSComp.txt:1513) + (Originally from FSComp.txt:1517) A byref pointer returned by a function or method is implicitly dereferenced as of F# 4.5. To acquire the return value as a pointer, use the address-of operator, e.g. '&f(x)' or '&obj.Method(arg1, arg2)'. - (Originally from FSComp.txt:1501) + (Originally from FSComp.txt:1505) A type annotated with IsByRefLike must also be a struct. Consider adding the [<Struct>] attribute to the type. - (Originally from FSComp.txt:1502) + (Originally from FSComp.txt:1506) This expression uses a built-in implicit conversion to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. - (Originally from FSComp.txt:1640) + (Originally from FSComp.txt:1669) A binding cannot be marked both 'use' and 'rec' - (Originally from FSComp.txt:676) + (Originally from FSComp.txt:677) 'let!', 'use!' and 'do!' expressions may not be used in queries - (Originally from FSComp.txt:1314) + (Originally from FSComp.txt:1318) '%s' must be followed by a variable name. Usage: %s. - (Originally from FSComp.txt:1267) + (Originally from FSComp.txt:1271) '%s' must come after a 'for' selection clause and be followed by the rest of the query. Syntax: ... %s ... - (Originally from FSComp.txt:1269) + (Originally from FSComp.txt:1273) 'member val' definitions are only permitted in types with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'. - (Originally from FSComp.txt:1305) + (Originally from FSComp.txt:1309) Attributes cannot be applied to type extensions. - (Originally from FSComp.txt:1519) + (Originally from FSComp.txt:1523) The attributes of this type specify multiple kinds for the type - (Originally from FSComp.txt:776) + (Originally from FSComp.txt:777) @@ -3431,223 +3509,253 @@ Attributes are not permitted on 'let' bindings in expressions - (Originally from FSComp.txt:678) + (Originally from FSComp.txt:679) This attribute is not valid for use on this language element. Assembly attributes should be attached to a 'do ()' declaration, if necessary within an F# module. - (Originally from FSComp.txt:695) + (Originally from FSComp.txt:696) This attribute is not valid for use on this language element - (Originally from FSComp.txt:696) + (Originally from FSComp.txt:697) Attribute expressions must be calls to object constructors - (Originally from FSComp.txt:703) + (Originally from FSComp.txt:704) The attribute 'AutoOpen(\"%s\")' in the assembly '%s' did not refer to a valid module or namespace in that assembly and has been ignored - (Originally from FSComp.txt:820) + (Originally from FSComp.txt:821) The attribute '%s' appears in both the implementation and the signature, but the attribute arguments differ. Only the attribute from the signature will be included in the compiled code. - (Originally from FSComp.txt:1084) + (Originally from FSComp.txt:1086) At least one override did not correctly implement its corresponding abstract member - (Originally from FSComp.txt:638) + (Originally from FSComp.txt:639) The member '%s' does not accept the correct number of arguments. One overload accepts %d arguments, but %d were given. The required signature is '%s'.%s - (Originally from FSComp.txt:624) + (Originally from FSComp.txt:625) The member '%s' does not accept the correct number of arguments. %d argument(s) are expected, but %d were given. The required signature is '%s'.%s - (Originally from FSComp.txt:623) + (Originally from FSComp.txt:624) Anonymous unit-of-measure cannot be nested inside another unit-of-measure expression - (Originally from FSComp.txt:568) + (Originally from FSComp.txt:569) Anonymous type variables are not permitted in this declaration - (Originally from FSComp.txt:569) + (Originally from FSComp.txt:570) The field '%s' appears multiple times in this anonymous record type. - (Originally from FSComp.txt:1682) + (Originally from FSComp.txt:1711) This anonymous record has an extra field. Remove field '%s'. - (Originally from FSComp.txt:1400) + (Originally from FSComp.txt:1404) This anonymous record is missing field '%s'. - (Originally from FSComp.txt:1398) + (Originally from FSComp.txt:1402) This anonymous record should have field '%s' but here has field '%s'. - (Originally from FSComp.txt:1402) + (Originally from FSComp.txt:1406) This anonymous record should have field '%s' but here has fields %s. - (Originally from FSComp.txt:1403) + (Originally from FSComp.txt:1407) This anonymous record has extra fields. Remove fields %s. - (Originally from FSComp.txt:1401) + (Originally from FSComp.txt:1405) This anonymous record is missing fields %s. - (Originally from FSComp.txt:1399) + (Originally from FSComp.txt:1403) This anonymous record should have fields %s; but here has field '%s'. - (Originally from FSComp.txt:1404) + (Originally from FSComp.txt:1408) This anonymous record should have fields %s; but here has fields %s. - (Originally from FSComp.txt:1405) + (Originally from FSComp.txt:1409) Invalid Anonymous Record type declaration. - (Originally from FSComp.txt:1395) + (Originally from FSComp.txt:1399) This anonymous record does not exactly match the expected shape. Add the missing fields %s and remove the extra fields %s. - (Originally from FSComp.txt:1397) + (Originally from FSComp.txt:1401) The field '%s' appears multiple times in this record expression. - (Originally from FSComp.txt:1681) + (Originally from FSComp.txt:1710) Two anonymous record types are from different assemblies '%s' and '%s' - (Originally from FSComp.txt:1396) + (Originally from FSComp.txt:1400) This feature is not supported in this version of F#. You may need to add /langversion:preview to use this feature. - (Originally from FSComp.txt:1530) + (Originally from FSComp.txt:1551) This expression has type '%s' and is only made compatible with type '%s' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:%s - (Originally from FSComp.txt:1638) + (Originally from FSComp.txt:1667) The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. - (Originally from FSComp.txt:1720) + (Originally from FSComp.txt:1749) Types with the 'AllowNullLiteral' attribute may only inherit from or implement types which also allow the use of the null literal - (Originally from FSComp.txt:784) + (Originally from FSComp.txt:785) All implemented interfaces should be declared on the initial declaration of the type - (Originally from FSComp.txt:759) + (Originally from FSComp.txt:760) Active patterns do not have fields. This syntax is invalid. - (Originally from FSComp.txt:1349) + (Originally from FSComp.txt:1353) + + + + + This active pattern expects exactly one pattern argument, e.g., '%s pat'. + (Originally from FSComp.txt:1776) + + + + + This active pattern does not expect any arguments, i.e., it should be used like '%s' instead of '%s x'. + (Originally from FSComp.txt:1775) + + + + + This active pattern expects %d expression argument(s) and a pattern argument, e.g., '%s%s pat'. + (Originally from FSComp.txt:1778) + + + + + This active pattern expects %d expression argument(s), e.g., '%s%s'. + (Originally from FSComp.txt:1777) + + + + + Access modifiers cannot be applied to an SRTP constraint. + (Originally from FSComp.txt:1785) Instances of this type cannot be created since it has been marked abstract or not all methods have been given implementations. Consider using an object expression '{ new ... with ... }' instead. - (Originally from FSComp.txt:613) + (Originally from FSComp.txt:614) This property overrides or implements an abstract property but the abstract property doesn't have a corresponding %s - (Originally from FSComp.txt:714) + (Originally from FSComp.txt:715) Abstract members are not permitted in an augmentation - they must be defined as part of the type itself - (Originally from FSComp.txt:707) + (Originally from FSComp.txt:708) Abbreviations for Common IL exception types must have a matching object constructor - (Originally from FSComp.txt:772) + (Originally from FSComp.txt:773) Abbreviations for Common IL exceptions cannot take arguments - (Originally from FSComp.txt:770) + (Originally from FSComp.txt:771) Abbreviated types cannot be given the 'Sealed' attribute - (Originally from FSComp.txt:798) + (Originally from FSComp.txt:799) F# supports array ranks between 1 and 32. The value %d is not allowed. - (Originally from FSComp.txt:1309) + (Originally from FSComp.txt:1313) @@ -3659,7 +3767,7 @@ A value defined in a module must be mutable in order to take its address, e.g. 'let mutable x = ...' - (Originally from FSComp.txt:1505) + (Originally from FSComp.txt:1509) @@ -3701,19 +3809,19 @@ The module/namespace '%s' from compilation unit '%s' did not contain the val '%s' - (Originally from FSComp.txt:1079) + (Originally from FSComp.txt:1081) The module/namespace '%s' from compilation unit '%s' did not contain the namespace, module or type '%s' - (Originally from FSComp.txt:1080) + (Originally from FSComp.txt:1082) The module/namespace '%s' from compilation unit '%s' did not contain the module/namespace '%s' - (Originally from FSComp.txt:1078) + (Originally from FSComp.txt:1080) @@ -3791,7 +3899,7 @@ This operation accesses a mutable top-level value defined in another assembly in an unsupported way. The value cannot be accessed through its address. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...', and if necessary assigning the value back after the completion of the operation - (Originally from FSComp.txt:1074) + (Originally from FSComp.txt:1076) @@ -3803,7 +3911,7 @@ This literal expression or attribute argument results in an arithmetic overflow. - (Originally from FSComp.txt:1354) + (Originally from FSComp.txt:1358) @@ -3815,7 +3923,7 @@ Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address. - (Originally from FSComp.txt:1511) + (Originally from FSComp.txt:1515) @@ -3827,19 +3935,19 @@ (Suggested name) - (Originally from FSComp.txt:968) + (Originally from FSComp.txt:970) The struct or class field '%s' is not accessible from this code location - (Originally from FSComp.txt:977) + (Originally from FSComp.txt:979) Source file is too large to embed in a portable PDB - (Originally from FSComp.txt:873) + (Originally from FSComp.txt:874) @@ -3850,19 +3958,19 @@ The .NET SDK for this script could not be determined. If the script is in a directory using a 'global.json' then ensure the relevant .NET SDK is installed. Unexpected error '%s'. - (Originally from FSComp.txt:1635) + (Originally from FSComp.txt:1664) The .NET SDK for this script could not be determined. dotnet.exe could not be found ensure a .NET SDK is installed. - (Originally from FSComp.txt:1636) + (Originally from FSComp.txt:1665) The .NET SDK for this script could not be determined. If the script is in a directory using a 'global.json' then ensure the relevant .NET SDK is installed. The output from '%s --version' in the directory '%s' was: '%s' and the exit code was '%d'. - (Originally from FSComp.txt:1634) + (Originally from FSComp.txt:1663) @@ -3874,73 +3982,73 @@ This state machine is not statically compilable and no alternative is available. %s. Use an 'if __useResumableCode then <state-machine> else <alternative>' to give an alternative. - (Originally from FSComp.txt:1663) + (Originally from FSComp.txt:1692) This state machine is not statically compilable. %s. An alternative dynamic implementation will be used, which may be slower. Consider adjusting your code to ensure this state machine is statically compilable, or else suppress this warning. - (Originally from FSComp.txt:1662) + (Originally from FSComp.txt:1691) The state machine has an unexpected form - (Originally from FSComp.txt:1675) + (Originally from FSComp.txt:1704) The resumable code value(s) '%s' does not have a definition - (Originally from FSComp.txt:1673) + (Originally from FSComp.txt:1702) A resumable code invocation at '%s' could not be reduced - (Originally from FSComp.txt:1666) + (Originally from FSComp.txt:1695) A delegate or function producing resumable code in a state machine has type parameters - (Originally from FSComp.txt:1674) + (Originally from FSComp.txt:1703) A try/finally may not contain resumption points - (Originally from FSComp.txt:1670) + (Originally from FSComp.txt:1699) The 'with' block of a try/with may not contain resumption points - (Originally from FSComp.txt:1671) + (Originally from FSComp.txt:1700) - A 'let rec' occured in the resumable code specification - (Originally from FSComp.txt:1667) + A 'let rec' occurred in the resumable code specification + (Originally from FSComp.txt:1696) A fast integer for loop may not contain resumption points - (Originally from FSComp.txt:1672) + (Originally from FSComp.txt:1701) A target label for __resumeAt was not statically determined. A __resumeAt with a non-static target label may only appear at the start of a resumable code method - (Originally from FSComp.txt:1669) + (Originally from FSComp.txt:1698) - A constrained generic construct occured in the resumable code specification - (Originally from FSComp.txt:1668) + A constrained generic construct occurred in the resumable code specification + (Originally from FSComp.txt:1697) @@ -3952,67 +4060,67 @@ Recursive class hierarchy in type '%s' - (Originally from FSComp.txt:969) + (Originally from FSComp.txt:971) A ReadOnly attribute has been applied to a struct type with a mutable field. - (Originally from FSComp.txt:1500) + (Originally from FSComp.txt:1504) Unexpected token '%s' in preprocessor expression - (Originally from FSComp.txt:1361) + (Originally from FSComp.txt:1365) Missing token '%s' in preprocessor expression - (Originally from FSComp.txt:1363) + (Originally from FSComp.txt:1367) Incomplete preprocessor expression - (Originally from FSComp.txt:1362) + (Originally from FSComp.txt:1366) Unexpected character '%s' in preprocessor expression - (Originally from FSComp.txt:1360) + (Originally from FSComp.txt:1364) Expected single line comment or end of line - (Originally from FSComp.txt:1054) + (Originally from FSComp.txt:1056) #i is not supported by the registered PackageManagers - (Originally from FSComp.txt:1528) + (Originally from FSComp.txt:1549) An error occurred while reading the F# metadata of assembly '%s'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. - (Originally from FSComp.txt:1494) + (Originally from FSComp.txt:1498) An error occurred while reading the F# metadata node at position %d in table '%s' of assembly '%s'. The node had no matching declaration. Please report this warning. You may need to recompile the F# assembly you are using. - (Originally from FSComp.txt:1364) + (Originally from FSComp.txt:1368) Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: %s . Context: \n %s - (Originally from FSComp.txt:1724) + (Originally from FSComp.txt:1753) @@ -4030,25 +4138,25 @@ Problem with filename '%s': Illegal characters in path. - (Originally from FSComp.txt:1170) + (Originally from FSComp.txt:1174) Partial active patterns may only generate one result - (Originally from FSComp.txt:987) + (Originally from FSComp.txt:989) Missing variable '%s' - (Originally from FSComp.txt:986) + (Originally from FSComp.txt:988) Missing 'do' in 'while' expression. Expected 'while <expr> do <expr>'. - (Originally from FSComp.txt:1293) + (Originally from FSComp.txt:1297) @@ -4084,13 +4192,13 @@ Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'use!' keyword. - (Originally from FSComp.txt:1291) + (Originally from FSComp.txt:1295) Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'use' keyword. - (Originally from FSComp.txt:1292) + (Originally from FSComp.txt:1296) @@ -4102,19 +4210,19 @@ Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let!' keyword. - (Originally from FSComp.txt:1290) + (Originally from FSComp.txt:1294) Incomplete value or function definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let' keyword. - (Originally from FSComp.txt:1289) + (Originally from FSComp.txt:1293) Unmatched '[<'. Expected closing '>]' - (Originally from FSComp.txt:1273) + (Originally from FSComp.txt:1277) @@ -4174,7 +4282,7 @@ Unexpected token '%s' or incomplete expression - (Originally from FSComp.txt:1329) + (Originally from FSComp.txt:1333) @@ -4186,7 +4294,7 @@ Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead? - (Originally from FSComp.txt:1394) + (Originally from FSComp.txt:1398) @@ -4204,7 +4312,7 @@ Unexpected quotation operator '<@' in type definition. If you intend to pass a verbatim string as a static argument to a type provider, put a space between the '<' and '@' characters. - (Originally from FSComp.txt:1124) + (Originally from FSComp.txt:1126) @@ -4234,91 +4342,91 @@ Unexpected end of input in 'match' or 'try' expression - (Originally from FSComp.txt:1278) + (Originally from FSComp.txt:1282) Unexpected end of input in 'while' expression. Expected 'while <expr> do <expr>'. - (Originally from FSComp.txt:1276) + (Originally from FSComp.txt:1280) Unexpected end of input in type signature - (Originally from FSComp.txt:1283) + (Originally from FSComp.txt:1287) Unexpected end of input in type definition - (Originally from FSComp.txt:1284) + (Originally from FSComp.txt:1288) Unexpected end of input in type arguments - (Originally from FSComp.txt:1282) + (Originally from FSComp.txt:1286) Unexpected end of input in 'try' expression. Expected 'try <expr> with <rules>' or 'try <expr> finally <expr>'. - (Originally from FSComp.txt:1275) + (Originally from FSComp.txt:1279) Unexpected end of input in 'then' branch of conditional expression. Expected 'if <expr> then <expr>' or 'if <expr> then <expr> else <expr>'. - (Originally from FSComp.txt:1279) + (Originally from FSComp.txt:1283) Unexpected end of input in object members - (Originally from FSComp.txt:1285) + (Originally from FSComp.txt:1289) Unexpected end of input in 'match' expression. Expected 'match <expr> with | <pat> -> <expr> | <pat> -> <expr> ...'. - (Originally from FSComp.txt:1274) + (Originally from FSComp.txt:1278) Unexpected end of input in body of lambda expression. Expected 'fun <pat> ... <pat> -> <expr>'. - (Originally from FSComp.txt:1281) + (Originally from FSComp.txt:1285) Unexpected end of input in 'for' expression. Expected 'for <pat> in <expr> do <expr>'. - (Originally from FSComp.txt:1277) + (Originally from FSComp.txt:1281) Unexpected end of input in expression - (Originally from FSComp.txt:1287) + (Originally from FSComp.txt:1291) Unexpected end of input in 'else' branch of conditional expression. Expected 'if <expr> then <expr>' or 'if <expr> then <expr> else <expr>'. - (Originally from FSComp.txt:1280) + (Originally from FSComp.txt:1284) Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. - (Originally from FSComp.txt:1710) + (Originally from FSComp.txt:1739) Unexpected end of input in value, function or member definition - (Originally from FSComp.txt:1286) + (Originally from FSComp.txt:1290) @@ -4336,7 +4444,7 @@ '_' cannot be used as field name - (Originally from FSComp.txt:1343) + (Originally from FSComp.txt:1347) @@ -4348,7 +4456,7 @@ Type name cannot be empty. - (Originally from FSComp.txt:1331) + (Originally from FSComp.txt:1335) @@ -4402,13 +4510,13 @@ Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration. - (Originally from FSComp.txt:1740) + (Originally from FSComp.txt:1769) A setter property may have at most two argument groups - (Originally from FSComp.txt:1071) + (Originally from FSComp.txt:1073) @@ -4429,6 +4537,12 @@ (Originally from FSComp.txt:459) + + + Only simple patterns are allowed in primary constructors + (Originally from FSComp.txt:1772) + + At most one 'with' augmentation is permitted @@ -4450,19 +4564,19 @@ The use of the type syntax 'int C' and 'C <int>' is not permitted here. Consider adjusting this type to be written in the form 'C<int>' - (Originally from FSComp.txt:1077) + (Originally from FSComp.txt:1079) Remove spaces between the type name and type parameter, e.g. \"type C<'T>\", not type \"C <'T>\". Type parameters must be placed directly adjacent to the type name. - (Originally from FSComp.txt:1075) + (Originally from FSComp.txt:1077) Remove spaces between the type name and type parameter, e.g. \"C<'T>\", not \"C <'T>\". Type parameters must be placed directly adjacent to the type name. - (Originally from FSComp.txt:1076) + (Originally from FSComp.txt:1078) @@ -4486,7 +4600,7 @@ This member access is ambiguous. Please use parentheses around the object creation, e.g. '(new SomeType(args)).MemberName' - (Originally from FSComp.txt:1651) + (Originally from FSComp.txt:1680) @@ -4498,13 +4612,13 @@ To indicate that this property can be set, use 'member val PropertyName = expr with get,set'. - (Originally from FSComp.txt:1307) + (Originally from FSComp.txt:1311) Property definitions may not be declared mutable. To indicate that this property can be set, use 'member val PropertyName = expr with get,set'. - (Originally from FSComp.txt:1306) + (Originally from FSComp.txt:1310) @@ -4534,13 +4648,13 @@ Missing union case name - (Originally from FSComp.txt:1712) + (Originally from FSComp.txt:1741) Expected type argument or static argument - (Originally from FSComp.txt:1122) + (Originally from FSComp.txt:1124) @@ -4552,19 +4666,19 @@ Expecting member body - (Originally from FSComp.txt:1717) + (Originally from FSComp.txt:1746) Missing keyword '%s' - (Originally from FSComp.txt:1718) + (Originally from FSComp.txt:1747) Unmatched '<'. Expected closing '>' - (Originally from FSComp.txt:1123) + (Originally from FSComp.txt:1125) @@ -4600,25 +4714,25 @@ Invalid use of 'rec' keyword - (Originally from FSComp.txt:1383) + (Originally from FSComp.txt:1387) Invalid property getter or setter - (Originally from FSComp.txt:1072) + (Originally from FSComp.txt:1074) Invalid operator definition. Prefix operator definitions must use a valid prefix operator name. - (Originally from FSComp.txt:1100) + (Originally from FSComp.txt:1102) Invalid prefix operator - (Originally from FSComp.txt:1099) + (Originally from FSComp.txt:1101) @@ -4636,13 +4750,13 @@ Invalid anonymous record type - (Originally from FSComp.txt:1517) + (Originally from FSComp.txt:1521) Invalid anonymous record expression - (Originally from FSComp.txt:1516) + (Originally from FSComp.txt:1520) @@ -4672,7 +4786,7 @@ An indexer property must be given at least one argument - (Originally from FSComp.txt:1073) + (Originally from FSComp.txt:1075) @@ -4702,7 +4816,7 @@ Neither 'member val' nor 'override val' definitions are permitted in object expressions. - (Originally from FSComp.txt:1341) + (Originally from FSComp.txt:1345) @@ -4744,7 +4858,7 @@ A getter property may have at most one argument group - (Originally from FSComp.txt:1070) + (Originally from FSComp.txt:1072) @@ -4762,7 +4876,7 @@ Missing 'do' in 'for' expression. Expected 'for <pat> in <expr> do <expr>'. - (Originally from FSComp.txt:1294) + (Originally from FSComp.txt:1298) @@ -4771,52 +4885,58 @@ (Originally from FSComp.txt:465) + + + Expecting union case field + (Originally from FSComp.txt:1783) + + Expecting type - (Originally from FSComp.txt:1713) + (Originally from FSComp.txt:1742) - + - Expecting pattern - (Originally from FSComp.txt:1693) + Expecting record field + (Originally from FSComp.txt:1770) - + - Expecting record field - (Originally from FSComp.txt:1741) + Expecting pattern + (Originally from FSComp.txt:1722) Expecting expression - (Originally from FSComp.txt:1683) + (Originally from FSComp.txt:1712) Expected a type after this point - (Originally from FSComp.txt:1272) + (Originally from FSComp.txt:1276) Expected a pattern after this point - (Originally from FSComp.txt:1694) + (Originally from FSComp.txt:1723) Unexpected end of type. Expected a name after this point. - (Originally from FSComp.txt:1288) + (Originally from FSComp.txt:1292) Expected an expression after this point - (Originally from FSComp.txt:1271) + (Originally from FSComp.txt:1275) @@ -4828,7 +4948,7 @@ Attempted to parse this as an operator name, but failed - (Originally from FSComp.txt:1125) + (Originally from FSComp.txt:1127) @@ -4852,13 +4972,13 @@ End of file in triple-quote string embedded in comment begun at or before here - (Originally from FSComp.txt:1120) + (Originally from FSComp.txt:1122) End of file in triple-quote string begun at or before here - (Originally from FSComp.txt:1119) + (Originally from FSComp.txt:1121) @@ -4876,25 +4996,25 @@ Incomplete interpolated verbatim string begun at or before here - (Originally from FSComp.txt:1630) + (Originally from FSComp.txt:1659) Incomplete interpolated triple-quote string begun at or before here - (Originally from FSComp.txt:1631) + (Originally from FSComp.txt:1660) Incomplete interpolated string expression fill begun at or before here - (Originally from FSComp.txt:1628) + (Originally from FSComp.txt:1657) Incomplete interpolated string begun at or before here - (Originally from FSComp.txt:1629) + (Originally from FSComp.txt:1658) @@ -4942,7 +5062,7 @@ Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. - (Originally from FSComp.txt:1632) + (Originally from FSComp.txt:1661) @@ -4954,7 +5074,7 @@ Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. - (Originally from FSComp.txt:1722) + (Originally from FSComp.txt:1751) @@ -5002,7 +5122,7 @@ Cannot find code target for this attribute, possibly because the code after the attribute is incomplete. - (Originally from FSComp.txt:1330) + (Originally from FSComp.txt:1334) @@ -5044,91 +5164,91 @@ Package manager key '%s' was not registered in %s. Currently registered: %s. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager - (Originally from FSComp.txt:842) + (Originally from FSComp.txt:843) %s - (Originally from FSComp.txt:843) + (Originally from FSComp.txt:844) The 'package management' feature requires language version 5.0 or above - (Originally from FSComp.txt:1526) + (Originally from FSComp.txt:1547) Write the xmldoc of the assembly to the given file - (Originally from FSComp.txt:854) + (Originally from FSComp.txt:855) Specify a Win32 resource file (.res) - (Originally from FSComp.txt:866) + (Originally from FSComp.txt:867) Specify a Win32 manifest file - (Originally from FSComp.txt:867) + (Originally from FSComp.txt:868) Specify a Win32 icon file (.ico) - (Originally from FSComp.txt:865) + (Originally from FSComp.txt:866) Report all warnings as errors - (Originally from FSComp.txt:886) + (Originally from FSComp.txt:888) Report specific warnings as errors - (Originally from FSComp.txt:887) + (Originally from FSComp.txt:889) Enable specific warnings that may be off by default - (Originally from FSComp.txt:890) + (Originally from FSComp.txt:892) Set a warning level (0-5) - (Originally from FSComp.txt:888) + (Originally from FSComp.txt:890) Display compiler version banner and exit - (Originally from FSComp.txt:896) + (Originally from FSComp.txt:898) Output messages in UTF-8 encoding - (Originally from FSComp.txt:900) + (Originally from FSComp.txt:902) Enable high-entropy ASLR - (Originally from FSComp.txt:927) + (Originally from FSComp.txt:929) Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module' - (Originally from FSComp.txt:937) + (Originally from FSComp.txt:939) @@ -5140,756 +5260,762 @@ Unrecognized debug type '%s', expected 'pdbonly' or 'full' - (Originally from FSComp.txt:938) + (Originally from FSComp.txt:940) Invalid value '%s' for --interfacedata, valid value are: none, file, compress. - (Originally from FSComp.txt:934) + (Originally from FSComp.txt:936) Unrecognized platform '%s', valid values are 'x86', 'x64', 'Arm', 'Arm64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'. The default is anycpu. - (Originally from FSComp.txt:943) + (Originally from FSComp.txt:945) Invalid value '%s' for --optimizationdata, valid value are: none, file, compress. - (Originally from FSComp.txt:936) + (Originally from FSComp.txt:938) Algorithm '%s' is not supported - (Originally from FSComp.txt:944) + (Originally from FSComp.txt:946) Unknown --test argument: '%s' - (Originally from FSComp.txt:942) + (Originally from FSComp.txt:944) Specify target framework profile of this assembly. Valid values are mscorlib, netcore or netstandard. Default - mscorlib - (Originally from FSComp.txt:929) + (Originally from FSComp.txt:931) Enable or disable tailcalls - (Originally from FSComp.txt:879) + (Originally from FSComp.txt:880) Supported language versions: - (Originally from FSComp.txt:1540) + (Originally from FSComp.txt:1563) Specify subsystem version of this assembly - (Originally from FSComp.txt:928) + (Originally from FSComp.txt:930) Specify a strong name key file - (Originally from FSComp.txt:855) + (Originally from FSComp.txt:856) Specify a strong name key container - (Originally from FSComp.txt:856) + (Originally from FSComp.txt:857) Override indentation rules implied by the language version - (Originally from FSComp.txt:1541) + (Originally from FSComp.txt:1564) Statically link the given assembly and all referenced DLLs that depend on this assembly. Use an assembly name e.g. mylib, not a DLL name. - (Originally from FSComp.txt:907) + (Originally from FSComp.txt:909) Statically link the F# library and all referenced DLLs that depend on it into the assembly being generated - (Originally from FSComp.txt:906) + (Originally from FSComp.txt:908) Source link information file to embed in the portable PDB file - (Originally from FSComp.txt:871) + (Originally from FSComp.txt:872) Resolve assembly references using directory-based rules rather than MSBuild resolution - (Originally from FSComp.txt:910) + (Originally from FSComp.txt:912) Include F# interface information, the default is file. Essential for distributing libraries. - (Originally from FSComp.txt:933) + (Originally from FSComp.txt:935) Print the inferred interface of the assembly to a file - (Originally from FSComp.txt:861) + (Originally from FSComp.txt:862) Short form of '%s' - (Originally from FSComp.txt:911) + (Originally from FSComp.txt:913) Specify language version such as 'latest' or 'preview'. - (Originally from FSComp.txt:1539) + (Originally from FSComp.txt:1562) Response file '%s' not found in '%s' - (Originally from FSComp.txt:1372) + (Originally from FSComp.txt:1376) Response file name '%s' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long - (Originally from FSComp.txt:1373) + (Originally from FSComp.txt:1377) Read response file for more options - (Originally from FSComp.txt:897) + (Originally from FSComp.txt:899) Embed the specified managed resource - (Originally from FSComp.txt:874) + (Originally from FSComp.txt:875) Use a resident background compilation service to improve compiler startup times. - (Originally from FSComp.txt:908) + (Originally from FSComp.txt:910) Disable implicit generation of constructs using reflection - (Originally from FSComp.txt:885) + (Originally from FSComp.txt:887) Reference an assembly (Short form: -r) - (Originally from FSComp.txt:863) + (Originally from FSComp.txt:864) Produce a reference assembly with the specified file path. - (Originally from FSComp.txt:882) + (Originally from FSComp.txt:884) Produce a reference assembly, instead of a full assembly, as the primary output - (Originally from FSComp.txt:881) + (Originally from FSComp.txt:883) + + + + + Generate assembly with IL visibility that matches the source code visibility + (Originally from FSComp.txt:882) Public-sign the assembly using only the public portion of the strong name key, and mark the assembly as signed - (Originally from FSComp.txt:853) + (Originally from FSComp.txt:854) Problem with codepage '%d': %s - (Originally from FSComp.txt:844) + (Originally from FSComp.txt:845) Specify the preferred output language culture name (e.g. es-ES, ja-JP) - (Originally from FSComp.txt:931) + (Originally from FSComp.txt:933) Limit which platforms this code can run on: x86, x64, Arm, Arm64, Itanium, anycpu32bitpreferred, or anycpu. The default is anycpu. - (Originally from FSComp.txt:858) + (Originally from FSComp.txt:859) The pdb output file name cannot match the build output filename use --pdb:filename.pdb - (Originally from FSComp.txt:872) + (Originally from FSComp.txt:873) Name the output debug file - (Originally from FSComp.txt:909) + (Originally from FSComp.txt:911) Maps physical paths to source path names output by the compiler - (Originally from FSComp.txt:883) + (Originally from FSComp.txt:885) Enable optimizations (Short form: -O) - (Originally from FSComp.txt:878) + (Originally from FSComp.txt:879) Specify included optimization information, the default is file. Important for distributed libraries. - (Originally from FSComp.txt:935) + (Originally from FSComp.txt:937) Do not include the default Win32 manifest - (Originally from FSComp.txt:868) + (Originally from FSComp.txt:869) Disable specific warning messages - (Originally from FSComp.txt:889) + (Originally from FSComp.txt:891) Suppress compiler copyright message - (Originally from FSComp.txt:894) + (Originally from FSComp.txt:896) Do not reference the default CLI assemblies by default - (Originally from FSComp.txt:905) + (Originally from FSComp.txt:907) Only include optimization information essential for implementing inlined constructs. Inhibits cross-module inlining but improves binary compatibility. - (Originally from FSComp.txt:859) + (Originally from FSComp.txt:860) Don't add a resource to the generated assembly containing F#-specific metadata - (Originally from FSComp.txt:860) + (Originally from FSComp.txt:861) Don't copy FSharp.Core.dll along the produced binaries - (Originally from FSComp.txt:932) + (Originally from FSComp.txt:934) Name of the output file (Short form: -o) - (Originally from FSComp.txt:847) + (Originally from FSComp.txt:848) Ignore ML compatibility warnings - (Originally from FSComp.txt:893) + (Originally from FSComp.txt:895) Link the specified resource to this assembly where the resinfo format is <file>[,<string name>[,public|private]] - (Originally from FSComp.txt:875) + (Originally from FSComp.txt:876) Specify a directory for the include path which is used to resolve source files and assemblies (Short form: -I) - (Originally from FSComp.txt:902) + (Originally from FSComp.txt:904) Invalid warning level '%d' - (Originally from FSComp.txt:939) + (Originally from FSComp.txt:941) Invalid value '%s' for '--targetprofile', valid values are 'mscorlib', 'netcore' or 'netstandard'. - (Originally from FSComp.txt:941) + (Originally from FSComp.txt:943) Invalid version '%s' for '--subsystemversion'. The version must be 4.00 or greater. - (Originally from FSComp.txt:940) + (Originally from FSComp.txt:942) Invalid response file '%s' ( '%s' ) - (Originally from FSComp.txt:1371) + (Originally from FSComp.txt:1375) Invalid reference assembly path' - (Originally from FSComp.txt:1175) + (Originally from FSComp.txt:1179) Invalid use of emitting a reference assembly, do not use '--standalone or --staticlink' with '--refonly or --refout'. - (Originally from FSComp.txt:1176) + (Originally from FSComp.txt:1180) Invalid path map. Mappings must be comma separated and of the format 'path=sourcePath' - (Originally from FSComp.txt:1174) + (Originally from FSComp.txt:1178) The command-line option '%s' is for test purposes only - (Originally from FSComp.txt:922) + (Originally from FSComp.txt:924) - RESOURCES - - (Originally from FSComp.txt:916) + (Originally from FSComp.txt:918) - OUTPUT FILES - - (Originally from FSComp.txt:914) + (Originally from FSComp.txt:916) - MISCELLANEOUS - - (Originally from FSComp.txt:919) + (Originally from FSComp.txt:921) - LANGUAGE - - (Originally from FSComp.txt:920) + (Originally from FSComp.txt:922) - INPUT FILES - - (Originally from FSComp.txt:915) + (Originally from FSComp.txt:917) - ERRORS AND WARNINGS - - (Originally from FSComp.txt:921) + (Originally from FSComp.txt:923) - CODE GENERATION - - (Originally from FSComp.txt:917) + (Originally from FSComp.txt:919) - ADVANCED - - (Originally from FSComp.txt:918) + (Originally from FSComp.txt:920) Display this usage message (Short form: -?) - (Originally from FSComp.txt:895) + (Originally from FSComp.txt:897) Display the allowed values for language version. - (Originally from FSComp.txt:1538) + (Originally from FSComp.txt:1561) Output messages with fully qualified paths - (Originally from FSComp.txt:901) + (Originally from FSComp.txt:903) Emit debug information in quotations - (Originally from FSComp.txt:930) + (Originally from FSComp.txt:932) Embed specific source files in the portable PDB file - (Originally from FSComp.txt:870) + (Originally from FSComp.txt:871) Embed all source files in the portable PDB file - (Originally from FSComp.txt:869) + (Originally from FSComp.txt:870) Produce a deterministic assembly (including module version GUID and timestamp) - (Originally from FSComp.txt:880) + (Originally from FSComp.txt:881) Delay-sign the assembly using only the public portion of the strong name key - (Originally from FSComp.txt:852) + (Originally from FSComp.txt:853) Define conditional compilation symbols (Short form: -d) - (Originally from FSComp.txt:892) + (Originally from FSComp.txt:894) Emit debug information (Short form: -g) - (Originally from FSComp.txt:876) + (Originally from FSComp.txt:877) - Specify debugging type: full, portable, embedded, pdbonly. ('%s' is the default if no debuggging type specified and enables attaching a debugger to a running program, 'portable' is a cross-platform format, 'embedded' is a cross-platform format embedded into the output file). - (Originally from FSComp.txt:877) + Specify debugging type: full, portable, embedded, pdbonly. ('%s' is the default if no debugging type specified and enables attaching a debugger to a running program, 'portable' is a cross-platform format, 'embedded' is a cross-platform format embedded into the output file). + (Originally from FSComp.txt:878) The command-line option '%s' has been deprecated - (Originally from FSComp.txt:923) + (Originally from FSComp.txt:925) The command-line option '%s' has been deprecated. HTML document generation is now part of the F# Power Pack, via the tool FsHtmlDoc.exe. - (Originally from FSComp.txt:925) + (Originally from FSComp.txt:927) The command-line option '%s' has been deprecated. Use '%s' instead. - (Originally from FSComp.txt:924) + (Originally from FSComp.txt:926) Enable or disable cross-module optimizations - (Originally from FSComp.txt:884) + (Originally from FSComp.txt:886) Freely distributed under the MIT Open Source License. https://github.com/Microsoft/visualfsharp/blob/master/License.txt - (Originally from FSComp.txt:846) + (Originally from FSComp.txt:847) Copyright (c) Microsoft Corporation. All Rights Reserved. - (Originally from FSComp.txt:845) + (Originally from FSComp.txt:846) Output warning and error messages in color - (Originally from FSComp.txt:926) + (Originally from FSComp.txt:928) Compress interface and optimization data files - (Originally from FSComp.txt:857) + (Originally from FSComp.txt:858) Reference an assembly or directory containing a design time tool (Short form: -t) - (Originally from FSComp.txt:864) + (Originally from FSComp.txt:865) Specify the codepage used to read source files - (Originally from FSComp.txt:898) + (Originally from FSComp.txt:900) Use to override where the compiler looks for mscorlib.dll and framework components - (Originally from FSComp.txt:913) + (Originally from FSComp.txt:915) The command-line option '--cliroot' has been deprecated. Use an explicit reference to a specific copy of mscorlib.dll instead. - (Originally from FSComp.txt:912) + (Originally from FSComp.txt:914) Clear the package manager results cache - (Originally from FSComp.txt:899) + (Originally from FSComp.txt:901) Specify algorithm for calculating source file checksum stored in PDB. Supported values are: SHA1 or SHA256 (default) - (Originally from FSComp.txt:904) + (Originally from FSComp.txt:906) Generate overflow checks - (Originally from FSComp.txt:891) + (Originally from FSComp.txt:893) + + + + + Enable nullness declarations and checks + (Originally from FSComp.txt:1559) Build a Windows executable - (Originally from FSComp.txt:849) + (Originally from FSComp.txt:850) Build a module that can be added to another assembly - (Originally from FSComp.txt:851) + (Originally from FSComp.txt:852) Build a library (Short form: -a) - (Originally from FSComp.txt:850) + (Originally from FSComp.txt:851) Build a console executable - (Originally from FSComp.txt:848) + (Originally from FSComp.txt:849) Base address for the library to be built - (Originally from FSComp.txt:903) + (Originally from FSComp.txt:905) Print the inferred interfaces of all compilation files to associated signature files - (Originally from FSComp.txt:862) + (Originally from FSComp.txt:863) A value marked as 'inline' has an unexpected value - (Originally from FSComp.txt:996) + (Originally from FSComp.txt:997) A value marked as 'inline' could not be inlined - (Originally from FSComp.txt:997) + (Originally from FSComp.txt:998) The value '%s' was marked inline but was not bound in the optimization environment - (Originally from FSComp.txt:994) + (Originally from FSComp.txt:996) The value '%s' was marked inline but its implementation makes use of an internal or private function which is not sufficiently accessible - (Originally from FSComp.txt:993) + (Originally from FSComp.txt:995) Recursive ValValue %s - (Originally from FSComp.txt:999) - - - - - Local value %s not found during optimization - (Originally from FSComp.txt:995) + (Originally from FSComp.txt:1000) Failed to inline the value '%s' marked 'inline', perhaps because a recursive value was marked 'inline' - (Originally from FSComp.txt:998) + (Originally from FSComp.txt:999) The value '%s' was marked 'InlineIfLambda' but was not determined to have a lambda value. This warning is for informational purposes only. - (Originally from FSComp.txt:1676) + (Originally from FSComp.txt:1705) The union type for union case '%s' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('%s') in the name you are using. - (Originally from FSComp.txt:1013) + (Originally from FSComp.txt:1014) Unexpected empty long identifier - (Originally from FSComp.txt:1008) + (Originally from FSComp.txt:1009) Multiple types exist called '%s', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. '%s'. - (Originally from FSComp.txt:1004) + (Originally from FSComp.txt:1005) The instantiation of the generic type '%s' is missing and can't be inferred from the arguments or return type of this member. Consider providing a type instantiation when accessing this type, e.g. '%s'. - (Originally from FSComp.txt:1005) + (Originally from FSComp.txt:1006) The record type for the record field '%s' was defined with the RequireQualifiedAccessAttribute. Include the name of the record type ('%s') in the name you are using. - (Originally from FSComp.txt:1014) + (Originally from FSComp.txt:1015) The record type '%s' does not contain a label '%s'. - (Originally from FSComp.txt:1009) + (Originally from FSComp.txt:1010) No constructors are available for the type '%s' - (Originally from FSComp.txt:1012) + (Originally from FSComp.txt:1013) This is not a constructor or literal, or a constructor is being used incorrectly - (Originally from FSComp.txt:1007) + (Originally from FSComp.txt:1008) Invalid module/expression/type - (Originally from FSComp.txt:1003) + (Originally from FSComp.txt:1004) Invalid field label - (Originally from FSComp.txt:1010) + (Originally from FSComp.txt:1011) Invalid expression '%s' - (Originally from FSComp.txt:1011) + (Originally from FSComp.txt:1012) 'global' may only be used as the first name in a qualified path - (Originally from FSComp.txt:1006) + (Originally from FSComp.txt:1007) This value is not a function and cannot be applied. Did you intend to access the indexer via '%s[index]'? - (Originally from FSComp.txt:1490) + (Originally from FSComp.txt:1494) This value is not a function and cannot be applied. Did you intend to access the indexer via '%s.[index]'? - (Originally from FSComp.txt:1488) + (Originally from FSComp.txt:1492) - (Originally from FSComp.txt:1492) + (Originally from FSComp.txt:1496) This expression is not a function and cannot be applied. Did you intend to access the indexer via 'expr[index]'? - (Originally from FSComp.txt:1491) + (Originally from FSComp.txt:1495) This expression is not a function and cannot be applied. Did you intend to access the indexer via 'expr.[index]'? - (Originally from FSComp.txt:1489) + (Originally from FSComp.txt:1493) This value is not a function and cannot be applied. Did you forget to terminate a declaration? - (Originally from FSComp.txt:1493) + (Originally from FSComp.txt:1497) This value is not a function and cannot be applied. - (Originally from FSComp.txt:1487) + (Originally from FSComp.txt:1491) No Invoke methods found for delegate type - (Originally from FSComp.txt:979) + (Originally from FSComp.txt:981) @@ -5901,79 +6027,79 @@ + %d overloads - (Originally from FSComp.txt:1327) + (Originally from FSComp.txt:1331) + 1 overload - (Originally from FSComp.txt:1326) + (Originally from FSComp.txt:1330) Resource header beginning at offset %s is malformed. - (Originally from FSComp.txt:1543) + (Originally from FSComp.txt:1566) Stream does not begin with a null resource and is not in '.RES' format. - (Originally from FSComp.txt:1542) + (Originally from FSComp.txt:1565) More than one Invoke method found for delegate type - (Originally from FSComp.txt:980) + (Originally from FSComp.txt:982) The use of 'module M = struct ... end ' was deprecated in F# 2.0 and is no longer supported. Remove the 'struct' and 'end' and use indentation instead - (Originally from FSComp.txt:1096) + (Originally from FSComp.txt:1098) The use of 'module M = sig ... end ' was deprecated in F# 2.0 and is no longer supported. Remove the 'sig' and 'end' and use indentation instead - (Originally from FSComp.txt:1094) + (Originally from FSComp.txt:1096) The use of 'module M: sig ... end ' was deprecated in F# 2.0 and is no longer supported. Change the ':' to an '=' and remove the 'sig' and 'end' and use indentation instead - (Originally from FSComp.txt:1093) + (Originally from FSComp.txt:1095) The use of multiple parenthesized type parameters before a generic type name such as '(int, int) Map' was deprecated in F# 2.0 and is no longer supported - (Originally from FSComp.txt:1095) + (Originally from FSComp.txt:1097) This construct is for ML compatibility. %s. You can disable this warning by using '--mlcompatibility' or '--nowarn:62'. - (Originally from FSComp.txt:1089) + (Originally from FSComp.txt:1091) The use of '#light \"off\"' or '#indent \"off\"' was deprecated in F# 2.0 and is no longer supported - (Originally from FSComp.txt:1092) + (Originally from FSComp.txt:1094) In previous versions of F# '%s' was a reserved keyword but the use of this keyword is now deprecated - (Originally from FSComp.txt:1091) + (Originally from FSComp.txt:1093) This construct is deprecated. %s. You can enable this feature by using '--langversion:5.0' and '--mlcompatibility'. - (Originally from FSComp.txt:1090) + (Originally from FSComp.txt:1092) @@ -5985,43 +6111,43 @@ Method or object constructor '%s' is not static - (Originally from FSComp.txt:1393) + (Originally from FSComp.txt:1397) Infix operator member '%s' has %d initial argument(s). Expected a tuple of 3 arguments - (Originally from FSComp.txt:1338) + (Originally from FSComp.txt:1342) Infix operator member '%s' has %d initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - (Originally from FSComp.txt:1056) + (Originally from FSComp.txt:1058) Infix operator member '%s' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - (Originally from FSComp.txt:1055) + (Originally from FSComp.txt:1057) Infix operator member '%s' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - (Originally from FSComp.txt:1057) + (Originally from FSComp.txt:1059) Pattern discard is not allowed for union case that takes no data. - (Originally from FSComp.txt:1695) + (Originally from FSComp.txt:1724) (loading description...) - (Originally from FSComp.txt:1334) + (Originally from FSComp.txt:1338) @@ -6039,1117 +6165,1135 @@ Identifiers containing '@' are reserved for use in F# code generation - (Originally from FSComp.txt:984) + (Originally from FSComp.txt:986) The identifier '%s' is reserved for future use by F# - (Originally from FSComp.txt:985) + (Originally from FSComp.txt:987) Unexpected syntax or possible incorrect indentation: this token is offside of context started at position %s. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. - (Originally from FSComp.txt:1001) + (Originally from FSComp.txt:1002) The '|' tokens separating rules of this pattern match are misaligned by one column. Consider realigning your code or using further indentation. - (Originally from FSComp.txt:1002) + (Originally from FSComp.txt:1003) The indentation of this 'in' token is incorrect with respect to the corresponding 'let' - (Originally from FSComp.txt:1000) + (Originally from FSComp.txt:1001) Syntax error. Wrong nested #endif, unexpected tokens before it. - (Originally from FSComp.txt:1052) + (Originally from FSComp.txt:1054) The interpolated string contains unmatched closing braces. - (Originally from FSComp.txt:1130) + (Originally from FSComp.txt:1132) Unexpected character '%s' - (Originally from FSComp.txt:1021) + (Originally from FSComp.txt:1022) Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. - (Originally from FSComp.txt:1625) + (Originally from FSComp.txt:1654) The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%%' characters. - (Originally from FSComp.txt:1131) + (Originally from FSComp.txt:1133) The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. - (Originally from FSComp.txt:1129) + (Originally from FSComp.txt:1131) This token is reserved for future use - (Originally from FSComp.txt:1042) + (Originally from FSComp.txt:1044) This Unicode encoding is only valid in string literals - (Originally from FSComp.txt:1041) + (Originally from FSComp.txt:1043) TABs are not allowed in F# code unless the #indent \"off\" option is used - (Originally from FSComp.txt:1043) + (Originally from FSComp.txt:1045) Invalid interpolated string. Single quote or verbatim string literals may not be used in interpolated expressions in single quote or verbatim strings. Consider using an explicit 'let' binding for the interpolation expression or use a triple quote string as the outer string literal. - (Originally from FSComp.txt:1624) + (Originally from FSComp.txt:1653) A '}' character must be escaped (by doubling) in an interpolated string. - (Originally from FSComp.txt:1633) + (Originally from FSComp.txt:1662) This number is outside the allowable range for 32-bit unsigned integers - (Originally from FSComp.txt:1030) + (Originally from FSComp.txt:1031) This number is outside the allowable range for 32-bit signed integers - (Originally from FSComp.txt:1029) + (Originally from FSComp.txt:1030) + + + + + This number is outside the allowable range for 32-bit floats + (Originally from FSComp.txt:1038) This number is outside the allowable range for 64-bit unsigned integers - (Originally from FSComp.txt:1032) + (Originally from FSComp.txt:1033) This number is outside the allowable range for 64-bit signed integers - (Originally from FSComp.txt:1031) + (Originally from FSComp.txt:1032) This number is outside the allowable range for 16-bit unsigned integers - (Originally from FSComp.txt:1028) + (Originally from FSComp.txt:1029) This number is outside the allowable range for 16-bit signed integers - (Originally from FSComp.txt:1027) + (Originally from FSComp.txt:1028) This number is outside the allowable range for unsigned native integers - (Originally from FSComp.txt:1034) + (Originally from FSComp.txt:1035) This number is outside the allowable range for signed native integers - (Originally from FSComp.txt:1033) + (Originally from FSComp.txt:1034) This number is outside the allowable range for this integer type - (Originally from FSComp.txt:1016) + (Originally from FSComp.txt:1017) This number is outside the allowable range for 8-bit unsigned integers - (Originally from FSComp.txt:1026) + (Originally from FSComp.txt:1027) This number is outside the allowable range for hexadecimal 8-bit signed integers - (Originally from FSComp.txt:1025) + (Originally from FSComp.txt:1026) This number is outside the allowable range for 8-bit signed integers - (Originally from FSComp.txt:1024) + (Originally from FSComp.txt:1025) - + - This number is outside the allowable range for 32-bit floats + This number is outside the allowable range for decimal literals (Originally from FSComp.txt:1037) - + - This number is outside the allowable range for decimal literals - (Originally from FSComp.txt:1036) + \U%s is not a valid Unicode character escape sequence + (Originally from FSComp.txt:1128) - + - \U%s is not a valid Unicode character escape sequence - (Originally from FSComp.txt:1126) + This is not a valid byte character literal. The value must be less than or equal to '\127'B.\nNote: In a future F# version this warning will be promoted to an error. + (Originally from FSComp.txt:1041) This is not a valid numeric literal. Valid numeric literals include 1, 0x1, 0o1, 0b1, 1l (int/int32), 1u (uint/uint32), 1L (int64), 1UL (uint64), 1s (int16), 1us (uint16), 1y (int8/sbyte), 1uy (uint8/byte), 1.0 (float/double), 1.0f (float32/single), 1.0m (decimal), 1I (bigint). - (Originally from FSComp.txt:1038) + (Originally from FSComp.txt:1039) Invalid line number: '%s' - (Originally from FSComp.txt:1044) + (Originally from FSComp.txt:1046) This is not a valid identifier - (Originally from FSComp.txt:1711) + (Originally from FSComp.txt:1740) Invalid floating point number - (Originally from FSComp.txt:1035) + (Originally from FSComp.txt:1036) + + + + + '%s' is not a valid character literal.\nNote: Currently the value is wrapped around byte range to '%s'. In a future F# version this warning will be promoted to an error. + (Originally from FSComp.txt:1135) This is not a valid character literal - (Originally from FSComp.txt:1040) + (Originally from FSComp.txt:1042) - + - This is not a valid byte literal - (Originally from FSComp.txt:1039) + This is not a valid byte character literal. The value must be less than or equal to '\127'B. + (Originally from FSComp.txt:1040) Consider using a file with extension '.ml' or '.mli' instead - (Originally from FSComp.txt:1102) + (Originally from FSComp.txt:1104) IF-FSHARP/IF-CAML regions are no longer supported - (Originally from FSComp.txt:1103) + (Originally from FSComp.txt:1105) Identifiers followed by '%s' are reserved for future use - (Originally from FSComp.txt:1023) + (Originally from FSComp.txt:1024) #if directive should be immediately followed by an identifier - (Originally from FSComp.txt:1051) + (Originally from FSComp.txt:1053) #if directive must appear as the first non-whitespace character on a line - (Originally from FSComp.txt:1045) + (Originally from FSComp.txt:1047) #endif has no matching #if - (Originally from FSComp.txt:1049) + (Originally from FSComp.txt:1051) #endif required for #else - (Originally from FSComp.txt:1047) + (Originally from FSComp.txt:1049) #endif directive must appear as the first non-whitespace character on a line - (Originally from FSComp.txt:1050) + (Originally from FSComp.txt:1052) #else has no matching #if - (Originally from FSComp.txt:1046) + (Originally from FSComp.txt:1048) #else directive must appear as the first non-whitespace character on a line - (Originally from FSComp.txt:1048) + (Originally from FSComp.txt:1050) #! may only appear as the first line at the start of a file. - (Originally from FSComp.txt:1053) + (Originally from FSComp.txt:1055) Extended string interpolation is not supported in this version of F#. - (Originally from FSComp.txt:1132) + (Originally from FSComp.txt:1134) '%s' is not permitted as a character in operator names and is reserved for future use - (Originally from FSComp.txt:1020) + (Originally from FSComp.txt:1021) a byte string may not be interpolated - (Originally from FSComp.txt:1627) + (Originally from FSComp.txt:1656) - + - This byte array literal contains characters that do not encode as a single byte - (Originally from FSComp.txt:1022) + This byte array literal contains %d non-ASCII characters. All characters should be < 128y. + (Originally from FSComp.txt:1136) + + + + + This byte array literal contains %d characters that do not encode as a single byte + (Originally from FSComp.txt:1023) Used in a computation expression to append the result of a given computation expression to a collection of results for the containing computation expression. - (Originally from FSComp.txt:1477) + (Originally from FSComp.txt:1481) Used in a sequence expression to produce a value for a sequence. - (Originally from FSComp.txt:1476) + (Originally from FSComp.txt:1480) Used together with the match keyword in pattern matching expressions. Also used in object expressions, record copying expressions, and type extensions to introduce member definitions, and to introduce exception handlers. - (Originally from FSComp.txt:1475) + (Originally from FSComp.txt:1479) Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. - (Originally from FSComp.txt:1474) + (Originally from FSComp.txt:1478) Introduces a looping construct. - (Originally from FSComp.txt:1473) + (Originally from FSComp.txt:1477) Used for Boolean conditions (when guards) on pattern matches and to introduce a constraint clause for a generic type parameter. - (Originally from FSComp.txt:1472) + (Originally from FSComp.txt:1476) Indicates the .NET void type. Used when interoperating with other .NET languages. - (Originally from FSComp.txt:1471) + (Originally from FSComp.txt:1475) Used in a signature to indicate a value, or in a type to declare a member, in limited situations. - (Originally from FSComp.txt:1470) + (Originally from FSComp.txt:1474) Used instead of let! in computation expressions for computation expression results that implement IDisposable. - (Originally from FSComp.txt:1469) + (Originally from FSComp.txt:1473) Used instead of let for values that implement IDisposable - (Originally from FSComp.txt:1468) + (Originally from FSComp.txt:1472) Used to convert to a type that is higher in the inheritance chain. - (Originally from FSComp.txt:1467) + (Originally from FSComp.txt:1471) Delimits a untyped code quotation. - (Originally from FSComp.txt:1483) + (Originally from FSComp.txt:1487) Delimits a typed code quotation. - (Originally from FSComp.txt:1482) + (Originally from FSComp.txt:1486) Used to check if an object is of the given type in a pattern or binding. - (Originally from FSComp.txt:1466) + (Originally from FSComp.txt:1470) Used to declare a class, record, structure, discriminated union, enumeration type, unit of measure, or type abbreviation. - (Originally from FSComp.txt:1465) + (Originally from FSComp.txt:1469) - Used to introduce a block of code that might generate an exception. Used together with with or finally. - (Originally from FSComp.txt:1464) + Used to introduce a block of code that might generate an exception. Used together with 'with' or 'finally'. + (Originally from FSComp.txt:1468) Used as a Boolean literal. - (Originally from FSComp.txt:1425) + (Originally from FSComp.txt:1429) Used in for loops to indicate a range. - (Originally from FSComp.txt:1463) + (Originally from FSComp.txt:1467) Used in conditional expressions. Also used to perform side effects after object construction. - (Originally from FSComp.txt:1462) + (Originally from FSComp.txt:1466) Used to declare a structure type. Also used in generic parameter constraints. - (Originally from FSComp.txt:1461) + (Originally from FSComp.txt:1465) Used to indicate a method or property that can be called without an instance of a type, or a value member that is shared among all instances of a type. - (Originally from FSComp.txt:1460) + (Originally from FSComp.txt:1464) Keyword reserved for ML-compatibility. - (Originally from FSComp.txt:1459) + (Originally from FSComp.txt:1463) Used in query expressions to specify what fields or columns to extract. Note that this is a contextual keyword, which means that it is not actually a reserved word and it only acts like a keyword in appropriate context. - (Originally from FSComp.txt:1458) + (Originally from FSComp.txt:1462) In function types, delimits arguments and return values. Yields an expression (in sequence expressions); equivalent to the yield keyword. Used in match expressions - (Originally from FSComp.txt:1478) + (Originally from FSComp.txt:1482) Used to provide a value for the result of the containing computation expression, where that value itself comes from the result another computation expression. - (Originally from FSComp.txt:1457) + (Originally from FSComp.txt:1461) Used to provide a value for the result of the containing computation expression. - (Originally from FSComp.txt:1456) + (Originally from FSComp.txt:1460) Used to indicate that a function is recursive. - (Originally from FSComp.txt:1455) + (Originally from FSComp.txt:1459) Allows access to a member from outside the type. - (Originally from FSComp.txt:1454) + (Originally from FSComp.txt:1458) Restricts access to a member to code in the same type or module. - (Originally from FSComp.txt:1453) + (Originally from FSComp.txt:1457) Used to implement a version of an abstract or virtual method that differs from the base version. - (Originally from FSComp.txt:1452) + (Originally from FSComp.txt:1456) Used with Boolean conditions as a Boolean or operator. Equivalent to ||. Also used in member constraints. - (Originally from FSComp.txt:1451) + (Originally from FSComp.txt:1455) Used to make the contents of a namespace or module available without qualification. - (Originally from FSComp.txt:1450) + (Originally from FSComp.txt:1454) Used in discriminated unions to indicate the type of categories of values, and in delegate and exception declarations. - (Originally from FSComp.txt:1449) + (Originally from FSComp.txt:1453) Indicates the absence of an object. Also used in generic parameter constraints. - (Originally from FSComp.txt:1448) + (Originally from FSComp.txt:1452) Not actually a keyword. However, not struct in combination is used as a generic parameter constraint. - (Originally from FSComp.txt:1447) + (Originally from FSComp.txt:1451) Used to declare, define, or invoke a constructor that creates or that can create an object. Also used in generic parameter constraints to indicate that a type must have a certain constructor. - (Originally from FSComp.txt:1446) + (Originally from FSComp.txt:1450) Used to associate a name with a group of related types and modules, to logically separate it from other code. - (Originally from FSComp.txt:1445) + (Originally from FSComp.txt:1449) Used to declare a variable, that is, a value that can be changed. - (Originally from FSComp.txt:1444) + (Originally from FSComp.txt:1448) Used to associate a name with a group of related types, values, and functions, to logically separate it from other code. - (Originally from FSComp.txt:1443) + (Originally from FSComp.txt:1447) Used to declare a property or method in an object type. - (Originally from FSComp.txt:1442) + (Originally from FSComp.txt:1446) Used in computation expressions to pattern match directly over the result of another computation expression. - (Originally from FSComp.txt:1441) + (Originally from FSComp.txt:1445) Used to branch by comparing a value to a pattern. - (Originally from FSComp.txt:1440) + (Originally from FSComp.txt:1444) Used in computation expressions to bind a name to the result of another computation expression. - (Originally from FSComp.txt:1439) + (Originally from FSComp.txt:1443) Used to associate, or bind, a name to a value or function. - (Originally from FSComp.txt:1438) + (Originally from FSComp.txt:1442) Assigns a value to a variable. - (Originally from FSComp.txt:1479) + (Originally from FSComp.txt:1483) Used to specify a computation that is to be performed only when a result is needed. - (Originally from FSComp.txt:1437) + (Originally from FSComp.txt:1441) Used to specify that a member is visible inside an assembly but not outside it. - (Originally from FSComp.txt:1436) + (Originally from FSComp.txt:1440) Used to declare and implement interfaces. - (Originally from FSComp.txt:1435) + (Originally from FSComp.txt:1439) Used to indicate a function that should be integrated directly into the caller's code. - (Originally from FSComp.txt:1434) + (Originally from FSComp.txt:1438) Used to specify a base class or base interface. - (Originally from FSComp.txt:1433) + (Originally from FSComp.txt:1437) Used for sequence expressions and, in verbose syntax, to separate expressions from bindings. - (Originally from FSComp.txt:1432) + (Originally from FSComp.txt:1436) Used in conditional branching constructs. - (Originally from FSComp.txt:1431) + (Originally from FSComp.txt:1435) Used to reference the top-level .NET namespace. - (Originally from FSComp.txt:1430) + (Originally from FSComp.txt:1434) Used as a shorter alternative to the fun keyword and a match expression in a lambda expression that has pattern matching on a single argument. - (Originally from FSComp.txt:1429) + (Originally from FSComp.txt:1433) Used in lambda expressions, also known as anonymous functions. - (Originally from FSComp.txt:1428) + (Originally from FSComp.txt:1432) Used in looping constructs. - (Originally from FSComp.txt:1427) + (Originally from FSComp.txt:1431) Used together with try to introduce a block of code that executes regardless of whether an exception occurs. - (Originally from FSComp.txt:1426) + (Originally from FSComp.txt:1430) Indicates that a declared program element is defined in another binary or assembly. - (Originally from FSComp.txt:1424) + (Originally from FSComp.txt:1428) Used to declare an exception type. - (Originally from FSComp.txt:1423) + (Originally from FSComp.txt:1427) In type definitions and type extensions, indicates the end of a section of member definitions. In verbose syntax, used to specify the end of a code block that starts with the begin keyword. - (Originally from FSComp.txt:1422) + (Originally from FSComp.txt:1426) Used in conditional branching. - (Originally from FSComp.txt:1421) + (Originally from FSComp.txt:1425) Used in conditional branching. A short form of else if. - (Originally from FSComp.txt:1420) + (Originally from FSComp.txt:1424) Converts a type to a type that is lower in the hierarchy. - (Originally from FSComp.txt:1481) + (Originally from FSComp.txt:1485) In a for expression, used when counting in reverse. - (Originally from FSComp.txt:1419) + (Originally from FSComp.txt:1423) Used to convert to a type that is lower in the inheritance chain. - (Originally from FSComp.txt:1418) + (Originally from FSComp.txt:1422) In verbose syntax, indicates the end of a block of code in a looping expression. - (Originally from FSComp.txt:1417) + (Originally from FSComp.txt:1421) Used in looping constructs or to execute imperative code. - (Originally from FSComp.txt:1416) + (Originally from FSComp.txt:1420) Used to declare a delegate. - (Originally from FSComp.txt:1415) + (Originally from FSComp.txt:1419) Indicates an implementation of an abstract method; used together with an abstract method declaration to create a virtual method. - (Originally from FSComp.txt:1414) + (Originally from FSComp.txt:1418) Keyword to specify a constant literal as a type parameter argument in Type Providers. - (Originally from FSComp.txt:1413) + (Originally from FSComp.txt:1417) In verbose syntax, indicates the start of a class definition. - (Originally from FSComp.txt:1412) + (Originally from FSComp.txt:1416) Converts a type to type that is higher in the hierarchy. - (Originally from FSComp.txt:1480) + (Originally from FSComp.txt:1484) In verbose syntax, indicates the start of a code block. - (Originally from FSComp.txt:1411) + (Originally from FSComp.txt:1415) Used as the name of the base class object. - (Originally from FSComp.txt:1410) + (Originally from FSComp.txt:1414) Used to verify code during debugging. - (Originally from FSComp.txt:1409) + (Originally from FSComp.txt:1413) Used to give the current class object an object name. Also used to give a name to a whole pattern within a pattern match. - (Originally from FSComp.txt:1408) + (Originally from FSComp.txt:1412) Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters. - (Originally from FSComp.txt:1407) + (Originally from FSComp.txt:1411) Indicates a method that either has no implementation in the type in which it is declared or that is virtual and has a default implementation. - (Originally from FSComp.txt:1406) + (Originally from FSComp.txt:1410) %s '%s' not found in type '%s' from assembly '%s'. A possible cause may be a version incompatibility. You may need to explicitly reference the correct version of this assembly to allow all referenced components to use the correct version. - (Originally from FSComp.txt:1485) + (Originally from FSComp.txt:1489) %s '%s' not found in assembly '%s'. A possible cause may be a version incompatibility. You may need to explicitly reference the correct version of this assembly to allow all referenced components to use the correct version. - (Originally from FSComp.txt:1484) + (Originally from FSComp.txt:1488) XML comment is not placed on a valid language element. - (Originally from FSComp.txt:1679) + (Originally from FSComp.txt:1708) The 'anycpu32bitpreferred' platform can only be used with EXE targets. You must use 'anycpu' instead. - (Originally from FSComp.txt:1321) + (Originally from FSComp.txt:1325) invalid namespace for provided type - (Originally from FSComp.txt:1217) + (Originally from FSComp.txt:1221) invalid full name for provided type - (Originally from FSComp.txt:1218) + (Originally from FSComp.txt:1222) Invalid provided literal value '%s' - (Originally from FSComp.txt:1320) + (Originally from FSComp.txt:1324) This expression returns a value of type '%s' but is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'. If you intended to use the expression as a value in the sequence then use an explicit 'yield!'. - (Originally from FSComp.txt:1497) + (Originally from FSComp.txt:1501) This expression returns a value of type '%s' but is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'. If you intended to use the expression as a value in the sequence then use an explicit 'yield'. - (Originally from FSComp.txt:1496) + (Originally from FSComp.txt:1500) The 'InlineIfLambda' attribute is present in the signature but not the implementation. - (Originally from FSComp.txt:1677) + (Originally from FSComp.txt:1706) The type '%s' is required here and is unavailable. You must add a reference to assembly '%s'. - (Originally from FSComp.txt:988) + (Originally from FSComp.txt:990) A reference to the type '%s' in assembly '%s' was found, but the type could not be found in that assembly - (Originally from FSComp.txt:989) + (Originally from FSComp.txt:991) A reference to the DLL %s is required by assembly %s. The imported type %s is located in the first assembly and could not be resolved. - (Originally from FSComp.txt:991) + (Originally from FSComp.txt:993) Internal error or badly formed metadata: not enough type parameters were in scope while importing - (Originally from FSComp.txt:990) + (Originally from FSComp.txt:992) Invalid number of generic arguments to type '%s' in provided type. Expected '%d' arguments, given '%d'. - (Originally from FSComp.txt:1297) + (Originally from FSComp.txt:1301) Invalid value unit-of-measure parameter '%s' - (Originally from FSComp.txt:1299) + (Originally from FSComp.txt:1303) Invalid value '%s' for unit-of-measure parameter '%s' - (Originally from FSComp.txt:1298) + (Originally from FSComp.txt:1302) An imported assembly uses the type '%s' but that type is not public - (Originally from FSComp.txt:992) + (Originally from FSComp.txt:994) Invalid argument to 'methodhandleof' during codegen - (Originally from FSComp.txt:1259) + (Originally from FSComp.txt:1263) The resumable code construct '%s' may only be used in inlined code protected by 'if __useResumableCode then ...' and the overall composition must form valid resumable code. - (Originally from FSComp.txt:1654) + (Originally from FSComp.txt:1683) Unknown debug point '%s'. The available debug points are '%s'. - (Originally from FSComp.txt:1665) + (Originally from FSComp.txt:1694) Unexpected error creating debug information file '%s' - (Originally from FSComp.txt:1015) + (Originally from FSComp.txt:1016) The file '%s' changed on disk unexpectedly, please reload. - (Originally from FSComp.txt:1498) + (Originally from FSComp.txt:1502) Compiler error: unexpected unrealized value - (Originally from FSComp.txt:834) + (Originally from FSComp.txt:835) Unexpected GetSet annotation on a property - (Originally from FSComp.txt:837) + (Originally from FSComp.txt:838) Undefined value '%s' - (Originally from FSComp.txt:821) + (Originally from FSComp.txt:822) This type cannot be used for a literal field - (Originally from FSComp.txt:836) + (Originally from FSComp.txt:837) The StructLayout attribute could not be decoded - (Originally from FSComp.txt:839) + (Originally from FSComp.txt:840) GenSetStorage: %s was represented as a static method but was not an appropriate lambda expression - (Originally from FSComp.txt:832) + (Originally from FSComp.txt:833) The signature for this external function contains type parameters. Constrain the argument and return types to indicate the types of the corresponding C function. - (Originally from FSComp.txt:829) + (Originally from FSComp.txt:830) RSA key expected - (Originally from FSComp.txt:1141) + (Originally from FSComp.txt:1145) Private key expected - (Originally from FSComp.txt:1140) + (Originally from FSComp.txt:1144) No signature directory - (Originally from FSComp.txt:1146) + (Originally from FSComp.txt:1150) Invalid signature size - (Originally from FSComp.txt:1145) + (Originally from FSComp.txt:1149) Invalid RSAParameters structure - '{0}' expected - (Originally from FSComp.txt:1143) + (Originally from FSComp.txt:1147) Invalid Public Key blob - (Originally from FSComp.txt:1147) + (Originally from FSComp.txt:1151) Invalid Magic value in CLR Header - (Originally from FSComp.txt:1138) + (Originally from FSComp.txt:1142) Invalid bit Length - (Originally from FSComp.txt:1142) + (Originally from FSComp.txt:1146) Invalid algId - 'Exponent' expected - (Originally from FSComp.txt:1144) + (Originally from FSComp.txt:1148) Bad image format - (Originally from FSComp.txt:1139) + (Originally from FSComp.txt:1143) Reflected definitions cannot contain uses of the prefix splice operator '%%' - (Originally from FSComp.txt:841) + (Originally from FSComp.txt:842) Mutable variables cannot escape their method - (Originally from FSComp.txt:833) + (Originally from FSComp.txt:834) The MarshalAs attribute could not be decoded - (Originally from FSComp.txt:828) + (Originally from FSComp.txt:829) Main module of program is empty: nothing will happen when it is run - (Originally from FSComp.txt:835) + (Originally from FSComp.txt:836) Literal fields cannot be set - (Originally from FSComp.txt:831) + (Originally from FSComp.txt:832) Label %s not found - (Originally from FSComp.txt:822) + (Originally from FSComp.txt:823) Incorrect number of type arguments to local call - (Originally from FSComp.txt:823) + (Originally from FSComp.txt:824) The FieldOffset attribute could not be decoded - (Originally from FSComp.txt:838) + (Originally from FSComp.txt:839) The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit) - (Originally from FSComp.txt:1106) + (Originally from FSComp.txt:1108) The type '%s' has been marked as having an Explicit layout, but the field '%s' has not been marked with the 'FieldOffset' attribute - (Originally from FSComp.txt:1097) + (Originally from FSComp.txt:1099) Dynamic invocation of %s is not supported - (Originally from FSComp.txt:824) + (Originally from FSComp.txt:825) The DllImport attribute could not be decoded - (Originally from FSComp.txt:830) + (Originally from FSComp.txt:831) The DefaultAugmentation attribute could not be decoded - (Originally from FSComp.txt:840) + (Originally from FSComp.txt:841) Custom marshallers cannot be specified in F# code. Consider using a C# helper function. - (Originally from FSComp.txt:827) + (Originally from FSComp.txt:828) This operation involves taking the address of a value '%s' represented using a local variable or other special representation. This is invalid. - (Originally from FSComp.txt:826) + (Originally from FSComp.txt:827) Taking the address of a literal field is invalid - (Originally from FSComp.txt:825) + (Originally from FSComp.txt:826) @@ -7172,289 +7316,289 @@ Invalid directive '#%s %s' - (Originally from FSComp.txt:1536) + (Originally from FSComp.txt:1557) Cannot find FSharp.Core.dll in compiler's directory - (Originally from FSComp.txt:1374) + (Originally from FSComp.txt:1378) Conflicting options specified: 'win32manifest' and 'win32res'. Only one of these can be used. - (Originally from FSComp.txt:1153) + (Originally from FSComp.txt:1157) Exiting - too many errors - (Originally from FSComp.txt:1149) + (Originally from FSComp.txt:1153) System.Runtime.InteropServices assembly is required to use UnknownWrapper\DispatchWrapper classes. - (Originally from FSComp.txt:1356) + (Originally from FSComp.txt:1360) Static linking may not be used on an assembly referencing mscorlib (e.g. a .NET Framework assembly) when generating an assembly that references System.Runtime (e.g. a .NET Core or Portable assembly). - (Originally from FSComp.txt:1172) + (Originally from FSComp.txt:1176) Static linking may not include a mixed managed/unmanaged DLL - (Originally from FSComp.txt:1157) + (Originally from FSComp.txt:1161) Static linking may not include a .EXE - (Originally from FSComp.txt:1156) + (Originally from FSComp.txt:1160) Passing a .resx file (%s) as a source file to the compiler is deprecated. Use resgen.exe to transform the .resx file into a .resources file to pass as a --resource option. If you are using MSBuild, this can be done via an <EmbeddedResource> item in the .fsproj project file. - (Originally from FSComp.txt:1171) + (Originally from FSComp.txt:1175) - The resident compilation service was not used because a problem occured in communicating with the server. - (Originally from FSComp.txt:1169) + The resident compilation service was not used because a problem occurred in communicating with the server. + (Originally from FSComp.txt:1173) The assembly '%s' is listed on the command line. Assemblies should be referenced using a command line flag such as '-r'. - (Originally from FSComp.txt:1168) + (Originally from FSComp.txt:1172) Code in this assembly makes uses of quotation literals. Static linking may not include components that make use of quotation literals unless all assemblies are compiled with at least F# 4.0. - (Originally from FSComp.txt:1155) + (Originally from FSComp.txt:1159) The code in assembly '%s' makes uses of quotation literals. Static linking may not include components that make use of quotation literals unless all assemblies are compiled with at least F# 4.0. - (Originally from FSComp.txt:1154) + (Originally from FSComp.txt:1158) A problem occurred writing the binary '%s': %s - (Originally from FSComp.txt:1162) + (Originally from FSComp.txt:1166) No implementation files specified - (Originally from FSComp.txt:1151) + (Originally from FSComp.txt:1155) Option '--keycontainer' overrides attribute 'System.Reflection.AssemblyNameAttribute' given in a source file or added module - (Originally from FSComp.txt:1167) + (Originally from FSComp.txt:1171) Option '--keyfile' overrides attribute 'System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module - (Originally from FSComp.txt:1166) + (Originally from FSComp.txt:1170) The key file '%s' could not be opened - (Originally from FSComp.txt:1161) + (Originally from FSComp.txt:1165) Ignoring mixed managed/unmanaged assembly '%s' during static linking - (Originally from FSComp.txt:1158) + (Originally from FSComp.txt:1162) Option '--delaysign' overrides attribute 'System.Reflection.AssemblyDelaySignAttribute' given in a source file or added module - (Originally from FSComp.txt:1165) + (Originally from FSComp.txt:1169) The attribute %s specified version '%s', but this value is invalid and has been ignored - (Originally from FSComp.txt:1152) + (Originally from FSComp.txt:1156) Assembly '%s' was referenced transitively and the assembly could not be resolved automatically. Static linking will assume this DLL has no dependencies on the F# library or other statically linked DLLs. Consider adding an explicit reference to this DLL. - (Originally from FSComp.txt:1159) + (Originally from FSComp.txt:1163) An %s specified version '%s', but this value is a wildcard, and you have requested a deterministic build, these are in conflict. - (Originally from FSComp.txt:1173) + (Originally from FSComp.txt:1177) The 'AssemblyVersionAttribute' has been ignored because a version was given using a command line option - (Originally from FSComp.txt:1163) + (Originally from FSComp.txt:1167) Assembly '%s' not found in dependency set of target binary. Statically linked roots should be specified using an assembly name, without a DLL or EXE extension. If this assembly was referenced explicitly then it is possible the assembly was not actually required by the generated binary, in which case it should not be statically linked. - (Originally from FSComp.txt:1160) + (Originally from FSComp.txt:1164) Error emitting 'System.Reflection.AssemblyCultureAttribute' attribute -- 'Executables cannot be satellite assemblies, Culture should always be empty' - (Originally from FSComp.txt:1164) + (Originally from FSComp.txt:1168) The 'from the end slicing' feature requires language version 'preview'. - (Originally from FSComp.txt:1527) + (Originally from FSComp.txt:1548) - %s - (Originally from FSComp.txt:1544) + (Originally from FSComp.txt:1567) Prefix flag (' ' or '+') set twice - (Originally from FSComp.txt:233) + (Originally from FSComp.txt:232) Precision missing after the '.' - (Originally from FSComp.txt:238) + (Originally from FSComp.txt:237) Positional specifiers are not permitted in format strings - (Originally from FSComp.txt:230) + (Originally from FSComp.txt:229) The '%%A' format specifier may not be used in an assembly being compiled with option '--reflectionfree'. This construct implicitly uses reflection. - (Originally from FSComp.txt:245) + (Originally from FSComp.txt:244) Missing format specifier - (Originally from FSComp.txt:231) + (Originally from FSComp.txt:230) The 'l' or 'L' in this format specifier is unnecessary. In F# code you can use %%d, %%x, %%o or %%u instead, which are overloaded to work with all basic integer types. - (Originally from FSComp.txt:241) + (Originally from FSComp.txt:240) The # formatting modifier is invalid in F# - (Originally from FSComp.txt:234) + (Originally from FSComp.txt:233) The 'h' or 'H' in this format specifier is unnecessary. You can use %%d, %%x, %%o or %%u instead, which are overloaded to work with all basic integer types. - (Originally from FSComp.txt:242) + (Originally from FSComp.txt:241) Interpolated strings used as type IFormattable or type FormattableString may not use '%%' specifiers, only .NET-style interpolands such as '{expr}', '{expr,3}' or '{expr:N5}' may be used. - (Originally from FSComp.txt:1621) + (Originally from FSComp.txt:1650) The '%%P' specifier may not be used explicitly. - (Originally from FSComp.txt:1620) + (Originally from FSComp.txt:1649) .NET-style format specifiers such as '{x,3}' or '{x:N5}' may not be mixed with '%%' format specifiers. - (Originally from FSComp.txt:1619) + (Originally from FSComp.txt:1648) Interpolated strings may not use '%%' format specifiers unless each is given an expression, e.g. '%%d{1+1}'. - (Originally from FSComp.txt:1618) + (Originally from FSComp.txt:1647) '%s' format does not support precision - (Originally from FSComp.txt:239) + (Originally from FSComp.txt:238) '%s' flag set twice - (Originally from FSComp.txt:232) + (Originally from FSComp.txt:231) '%s' format does not support '0' flag - (Originally from FSComp.txt:237) + (Originally from FSComp.txt:236) '%s' does not support prefix '%s' flag - (Originally from FSComp.txt:243) + (Originally from FSComp.txt:242) Bad width in format specifier - (Originally from FSComp.txt:236) + (Originally from FSComp.txt:235) Bad precision in format specifier - (Originally from FSComp.txt:235) + (Originally from FSComp.txt:234) Bad format specifier: '%s' - (Originally from FSComp.txt:244) + (Originally from FSComp.txt:243) Bad format specifier (after l or L): Expected ld,li,lo,lu,lx or lX. In F# code you can use %%d, %%x, %%o or %%u instead, which are overloaded to work with all basic integer types. - (Originally from FSComp.txt:240) + (Originally from FSComp.txt:239) @@ -7472,817 +7616,913 @@ The record, struct or class field '%s' is not accessible from this code location - (Originally from FSComp.txt:976) + (Originally from FSComp.txt:978) witness passing for trait constraints in F# quotations - (Originally from FSComp.txt:1560) + (Originally from FSComp.txt:1584) wild card in for loop - (Originally from FSComp.txt:1546) + (Originally from FSComp.txt:1569) 'while!' expression - (Originally from FSComp.txt:1588) + (Originally from FSComp.txt:1612) Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. - (Originally from FSComp.txt:1583) + (Originally from FSComp.txt:1607) Raises warnings when 'let inline ... =' is used together with [<MethodImpl(MethodImplOptions.NoInlining)>] attribute. Function is not getting inlined. - (Originally from FSComp.txt:1574) + (Originally from FSComp.txt:1598) Raises warnings when an copy-and-update record expression changes all fields of a record. - (Originally from FSComp.txt:1578) + (Originally from FSComp.txt:1602) Indexed properties getter and setter must have the same type - (Originally from FSComp.txt:1592) + (Originally from FSComp.txt:1616) + + + + + Use type conversion cache during compilation + (Originally from FSComp.txt:1787) Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) - (Originally from FSComp.txt:1726) + (Originally from FSComp.txt:1755) Union case test properties - (Originally from FSComp.txt:1594) + (Originally from FSComp.txt:1618) Support for try-with in sequence expressions - (Originally from FSComp.txt:1577) + (Originally from FSComp.txt:1601) struct representation for active patterns - (Originally from FSComp.txt:1562) + (Originally from FSComp.txt:1586) string interpolation - (Originally from FSComp.txt:1559) + (Originally from FSComp.txt:1583) Raises errors on incorrect indentation, allows better recovery and analysis during editing - (Originally from FSComp.txt:1585) + (Originally from FSComp.txt:1609) Static members in interfaces - (Originally from FSComp.txt:1579) + (Originally from FSComp.txt:1603) Allow static let bindings in union, record, struct, non-incremental-class types - (Originally from FSComp.txt:1715) + (Originally from FSComp.txt:1744) single underscore pattern - (Originally from FSComp.txt:1545) + (Originally from FSComp.txt:1568) self type constraints - (Originally from FSComp.txt:1567) + (Originally from FSComp.txt:1591) Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type - (Originally from FSComp.txt:1735) + (Originally from FSComp.txt:1764) resumable state machines - (Originally from FSComp.txt:1556) + (Originally from FSComp.txt:1580) support for required properties - (Originally from FSComp.txt:1568) + (Originally from FSComp.txt:1592) whitespace relaxation v2 - (Originally from FSComp.txt:1563) + (Originally from FSComp.txt:1587) - whitespace relexation - (Originally from FSComp.txt:1547) + whitespace relaxation + (Originally from FSComp.txt:1570) informational messages related to reference cells - (Originally from FSComp.txt:1251) + (Originally from FSComp.txt:1255) list literals of any size - (Originally from FSComp.txt:1564) + (Originally from FSComp.txt:1588) binary formatting for integers - (Originally from FSComp.txt:1249) + (Originally from FSComp.txt:1253) prefer String.GetPinnableReference in fixed bindings - (Originally from FSComp.txt:1590) + (Originally from FSComp.txt:1614) prefer extension method over plain property - (Originally from FSComp.txt:1591) + (Originally from FSComp.txt:1615) + + + + + Unexpected integer literal '%d'. + (Originally from FSComp.txt:1780) + + + + + Unexpected identifier '%s'. + (Originally from FSComp.txt:1781) + + + + + # directives with non-quoted string arguments + (Originally from FSComp.txt:1779) package management - (Originally from FSComp.txt:1552) + (Originally from FSComp.txt:1575) overloads for custom operations - (Originally from FSComp.txt:1247) + (Originally from FSComp.txt:1251) open type declaration - (Originally from FSComp.txt:1550) + (Originally from FSComp.txt:1573) + + + + + nullness checking + (Originally from FSComp.txt:1579) nullable optional interop - (Originally from FSComp.txt:1557) + (Originally from FSComp.txt:1581) non-variable patterns to the right of 'as' patterns - (Originally from FSComp.txt:1253) + (Originally from FSComp.txt:1257) String values marked as literals and IL constants as printf format - (Originally from FSComp.txt:1580) + (Originally from FSComp.txt:1604) Nested record field copy-and-update - (Originally from FSComp.txt:1581) + (Originally from FSComp.txt:1605) nameof - (Originally from FSComp.txt:1548) + (Originally from FSComp.txt:1571) Pattern match discard is not allowed for union case that takes no data. - (Originally from FSComp.txt:1571) + (Originally from FSComp.txt:1595) ML compatibility revisions - (Originally from FSComp.txt:1255) + (Originally from FSComp.txt:1259) Allow lowercase DU when RequireQualifiedAccess attribute - (Originally from FSComp.txt:1570) + (Originally from FSComp.txt:1594) + + + + + Lowers [for x in xs -> f x] and [|for x in xs -> f x|] to fast loops when xs is a list or an array, respectively. + (Originally from FSComp.txt:1623) + + + + + Optimizes interpolated strings in certain cases, by lowering to concatenation + (Originally from FSComp.txt:1621) + + + + + Optimizes certain uses of the integral range (..) and range-step (.. ..) operators to fast while-loops. + (Originally from FSComp.txt:1622) interfaces with multiple generic instantiation - (Originally from FSComp.txt:1601) + (Originally from FSComp.txt:1630) static abstract interface members - (Originally from FSComp.txt:1566) + (Originally from FSComp.txt:1590) support for consuming init properties - (Originally from FSComp.txt:1569) + (Originally from FSComp.txt:1593) Diagnostic 3559 (warn when obj inferred) at informational level, off by default - (Originally from FSComp.txt:1714) + (Originally from FSComp.txt:1743) expr[idx] notation for indexing and slicing - (Originally from FSComp.txt:1250) + (Originally from FSComp.txt:1254) Improved implied argument names - (Originally from FSComp.txt:1584) + (Originally from FSComp.txt:1608) implicit yield - (Originally from FSComp.txt:1549) + (Originally from FSComp.txt:1572) from-end slicing - (Originally from FSComp.txt:1553) + (Originally from FSComp.txt:1576) fixed-index slice 3d/4d - (Originally from FSComp.txt:1554) + (Originally from FSComp.txt:1577) Extended string interpolation similar to C# raw string literals. - (Originally from FSComp.txt:1582) + (Originally from FSComp.txt:1606) extended fixed bindings for byref and GetPinnableReference - (Originally from FSComp.txt:1589) + (Originally from FSComp.txt:1613) more types support units of measure - (Originally from FSComp.txt:1248) + (Originally from FSComp.txt:1252) Escapes curly braces before calling FormattableStringFactory.Create when interpolated string literal is typed as FormattableString - (Originally from FSComp.txt:1698) + (Originally from FSComp.txt:1727) Error reporting on static classes - (Originally from FSComp.txt:1576) + (Originally from FSComp.txt:1600) give error on deprecated access of construct with RequireQualifiedAccess attribute - (Originally from FSComp.txt:1565) + (Originally from FSComp.txt:1589) Raises errors for non-virtual members overrides - (Originally from FSComp.txt:1573) + (Originally from FSComp.txt:1597) + + + + + Enforce AttributeTargets + (Originally from FSComp.txt:1620) + + + + + Support for computation expressions with empty bodies: builder { } + (Originally from FSComp.txt:1782) dotless float32 literal - (Originally from FSComp.txt:1551) + (Originally from FSComp.txt:1574) + + + + + Don't warn on uppercase identifiers in binding patterns + (Originally from FSComp.txt:1789) discard pattern in use binding - (Originally from FSComp.txt:1252) + (Originally from FSComp.txt:1256) + + + + + Deprecate places where 'seq' can be omitted + (Originally from FSComp.txt:1791) fix to resolution of delegate type names, see https://github.com/dotnet/fsharp/issues/10228 - (Originally from FSComp.txt:1257) + (Originally from FSComp.txt:1261) default interface member consumption - (Originally from FSComp.txt:1558) + (Originally from FSComp.txt:1582) Constraint intersection on flexible types - (Originally from FSComp.txt:1586) + (Originally from FSComp.txt:1610) Raises warnings if the 'TailCall' attribute is used on non-recursive functions. - (Originally from FSComp.txt:1593) + (Originally from FSComp.txt:1617) Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. - (Originally from FSComp.txt:1587) + (Originally from FSComp.txt:1611) Allow implicit Extension attribute on declaring types, modules - (Originally from FSComp.txt:1572) + (Originally from FSComp.txt:1596) + + + + + Boolean-returning and return-type-directed partial active patterns + (Originally from FSComp.txt:1619) automatic generation of 'Message' property for 'exception' declarations - (Originally from FSComp.txt:1256) + (Originally from FSComp.txt:1260) attributes to the right of the 'module' keyword - (Originally from FSComp.txt:1254) + (Originally from FSComp.txt:1258) Arithmetic and logical operations in literals, enum definitions and attributes - (Originally from FSComp.txt:1575) + (Originally from FSComp.txt:1599) applicative computation expressions - (Originally from FSComp.txt:1555) + (Originally from FSComp.txt:1578) + + + + + Allow object expressions without overrides + (Originally from FSComp.txt:1786) + + + + + Allow access modifiers to auto properties getters and setters + (Originally from FSComp.txt:1784) additional type-directed conversions - (Originally from FSComp.txt:1561) + (Originally from FSComp.txt:1585) underscore dot shorthand for accessor only function - (Originally from FSComp.txt:1721) + (Originally from FSComp.txt:1750) + + + + + %s for F# %s + (Originally from FSComp.txt:1560) Expression does not have a name. - (Originally from FSComp.txt:1521) + (Originally from FSComp.txt:1525) This construct is experimental - (Originally from FSComp.txt:978) + (Originally from FSComp.txt:980) The event '%s' has a non-standard type. If this event is declared in another CLI language, you may need to access this event using the explicit %s and %s methods for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent<_>' or 'IEvent<_,_>'. - (Originally from FSComp.txt:971) + (Originally from FSComp.txt:973) Unsupported expression '%s' from type provider. If you are the author of this type provider, consider adjusting it to provide a different provided expression. - (Originally from FSComp.txt:1196) + (Originally from FSComp.txt:1200) Invalid member '%s' on provided type '%s'. Only properties, methods and constructors are allowed - (Originally from FSComp.txt:1188) + (Originally from FSComp.txt:1192) Unsupported constant type '%s'. Quotations provided by type providers can only contain simple constants. The implementation of the type provider may need to be adjusted by moving a value declared outside a provided quotation literal to be a 'let' binding inside the quotation literal. - (Originally from FSComp.txt:1195) + (Originally from FSComp.txt:1199) Unknown static argument kind '%s' when resolving a reference to a provided type or method '%s' - (Originally from FSComp.txt:1214) + (Originally from FSComp.txt:1218) Unexpected 'null' return value from provided type '%s' member '%s' - (Originally from FSComp.txt:1209) + (Originally from FSComp.txt:1213) Unexpected exception from provided type '%s' member '%s': %s - (Originally from FSComp.txt:1194) + (Originally from FSComp.txt:1198) Unexpected exception from member '%s' of provided type '%s' member '%s': %s - (Originally from FSComp.txt:1210) + (Originally from FSComp.txt:1214) The type provider constructor has thrown an exception: %s - (Originally from FSComp.txt:1220) + (Originally from FSComp.txt:1224) Too many static parameters. Expected at most %d parameters, but got %d unnamed and %d named parameters. - (Originally from FSComp.txt:1319) + (Originally from FSComp.txt:1323) The static parameter '%s' of the provided type or method '%s' requires a value. Static parameters to type providers may be optionally specified using named arguments, e.g. '%s<%s=...>'. - (Originally from FSComp.txt:1240) + (Originally from FSComp.txt:1244) The static parameter '%s' has already been given a value - (Originally from FSComp.txt:1242) + (Originally from FSComp.txt:1246) The type provider returned 'null', which is not a valid return value from '%s' - (Originally from FSComp.txt:1219) + (Originally from FSComp.txt:1223) Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded or doesn't exist. The exception reported was: %s - %s - (Originally from FSComp.txt:1200) + (Originally from FSComp.txt:1204) Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded from path '%s'. The exception reported was: %s - %s - (Originally from FSComp.txt:1201) + (Originally from FSComp.txt:1205) The type provider designer assembly '%s' could not be loaded from folder '%s'. The exception reported was: %s - %s - (Originally from FSComp.txt:1216) + (Originally from FSComp.txt:1220) The type provider designer assembly '%s' could not be loaded from folder '%s' because a dependency was missing or could not loaded. All dependencies of the type provider designer assembly must be located in the same folder as that assembly. The exception reported was: %s - %s - (Originally from FSComp.txt:1215) + (Originally from FSComp.txt:1219) The type provider '%s' reported an error in the context of provided type '%s', member '%s'. The error: %s - (Originally from FSComp.txt:1233) + (Originally from FSComp.txt:1237) The type provider '%s' reported an error: %s - (Originally from FSComp.txt:1203) + (Originally from FSComp.txt:1207) The type provider does not have a valid constructor. A constructor taking either no arguments or one argument of type 'TypeProviderConfig' was expected. - (Originally from FSComp.txt:1202) + (Originally from FSComp.txt:1206) The '%s' of a provided type was null or empty. - (Originally from FSComp.txt:1235) + (Originally from FSComp.txt:1239) An exception occurred when accessing the '%s' of a provided type: %s - (Originally from FSComp.txt:1234) + (Originally from FSComp.txt:1238) A reference to a provided type was missing a value for the static parameter '%s'. You may need to recompile one or more referenced assemblies. - (Originally from FSComp.txt:1260) + (Originally from FSComp.txt:1264) A reference to a provided type had an invalid value '%s' for a static parameter. You may need to recompile one or more referenced assemblies. - (Originally from FSComp.txt:1261) + (Originally from FSComp.txt:1265) Expected provided type with path '%s' but provided type has path '%s' - (Originally from FSComp.txt:1208) + (Originally from FSComp.txt:1212) Expected provided type named '%s' but provided type has 'Name' with value '%s' - (Originally from FSComp.txt:1197) + (Originally from FSComp.txt:1201) The type provider '%s' returned an invalid type from 'ApplyStaticArguments'. A type with name '%s' was expected, but a type with name '%s' was returned. - (Originally from FSComp.txt:1222) + (Originally from FSComp.txt:1226) The type provider '%s' returned an invalid method from 'ApplyStaticArgumentsForMethod'. A method with name '%s' was expected, but a method with name '%s' was returned. - (Originally from FSComp.txt:1223) + (Originally from FSComp.txt:1227) Property '%s' on provided type '%s' is neither readable nor writable as it has CanRead=false and CanWrite=false - (Originally from FSComp.txt:1300) + (Originally from FSComp.txt:1304) Property '%s' on provided type '%s' has CanWrite=false but GetSetMethod() returned a method - (Originally from FSComp.txt:1192) + (Originally from FSComp.txt:1196) Property '%s' on provided type '%s' has CanRead=false but GetGetMethod() returned a method - (Originally from FSComp.txt:1190) + (Originally from FSComp.txt:1194) Property '%s' on provided type '%s' has CanWrite=true but there was no value from GetSetMethod() - (Originally from FSComp.txt:1191) + (Originally from FSComp.txt:1195) Property '%s' on provided type '%s' has CanRead=true but there was no value from GetGetMethod() - (Originally from FSComp.txt:1189) + (Originally from FSComp.txt:1193) One or more errors seen during provided type setup - (Originally from FSComp.txt:1193) + (Originally from FSComp.txt:1197) Type provider '%s' returned null from GetInvokerExpression. - (Originally from FSComp.txt:1221) + (Originally from FSComp.txt:1225) The provided type '%s' returned a member with a null or empty member name - (Originally from FSComp.txt:1178) + (Originally from FSComp.txt:1182) The provided type '%s' has member '%s' which has declaring type '%s'. Expected declaring type to be the same as provided type. - (Originally from FSComp.txt:1181) + (Originally from FSComp.txt:1185) The provided type '%s' member info '%s' has null declaring type - (Originally from FSComp.txt:1180) + (Originally from FSComp.txt:1184) The provided type '%s' returned a null member - (Originally from FSComp.txt:1179) + (Originally from FSComp.txt:1183) No static parameter exists with name '%s' - (Originally from FSComp.txt:1241) + (Originally from FSComp.txt:1245) Nested provided types do not take static arguments or generic parameters - (Originally from FSComp.txt:1211) + (Originally from FSComp.txt:1215) Provided type '%s' has 'IsGenericType' as true, but generic types are not supported. - (Originally from FSComp.txt:1185) + (Originally from FSComp.txt:1189) Provided type '%s' has 'IsArray' as true, but array types are not supported. - (Originally from FSComp.txt:1186) + (Originally from FSComp.txt:1190) Multiple static parameters exist with name '%s' - (Originally from FSComp.txt:1243) + (Originally from FSComp.txt:1247) This provided method requires static parameters - (Originally from FSComp.txt:1376) + (Originally from FSComp.txt:1380) Invalid member '%s' on provided type '%s'. Provided type members must be public, and not be generic, virtual, or abstract. - (Originally from FSComp.txt:1187) + (Originally from FSComp.txt:1191) - Assembly '%s' hase TypeProviderAssembly attribute with invalid value '%s'. The value should be a valid assembly name - (Originally from FSComp.txt:1228) + Assembly '%s' has TypeProviderAssembly attribute with invalid value '%s'. The value should be a valid assembly name + (Originally from FSComp.txt:1232) Invalid static argument to provided type. Expected an argument of kind '%s'. - (Originally from FSComp.txt:1212) + (Originally from FSComp.txt:1216) The type provider '%s' provided a method with a name '%s' and metadata token '%d', which is not reported among its methods of its declaring type '%s' - (Originally from FSComp.txt:1205) + (Originally from FSComp.txt:1209) The type provider '%s' provided a constructor which is not reported among the constructors of its declaring type '%s' - (Originally from FSComp.txt:1206) + (Originally from FSComp.txt:1210) The type provider '%s' used an invalid parameter in the ParameterExpression: %s - (Originally from FSComp.txt:1204) + (Originally from FSComp.txt:1208) Character '%s' is not allowed in provided type name '%s' - (Originally from FSComp.txt:1236) + (Originally from FSComp.txt:1240) Character '%s' is not allowed in provided namespace name '%s' - (Originally from FSComp.txt:1177) + (Originally from FSComp.txt:1181) Referenced assembly '%s' has assembly level attribute '%s' but no public type provider classes were found - (Originally from FSComp.txt:1182) + (Originally from FSComp.txt:1186) Event '%s' on provided type '%s' has no value from GetRemoveMethod() - (Originally from FSComp.txt:1199) + (Originally from FSComp.txt:1203) Event '%s' on provided type '%s' has no value from GetAddMethod() - (Originally from FSComp.txt:1198) + (Originally from FSComp.txt:1202) - An error occured applying the static arguments to a provided type - (Originally from FSComp.txt:1213) + An error occurred applying the static arguments to a provided type + (Originally from FSComp.txt:1217) - An error occured applying the static arguments to a provided method - (Originally from FSComp.txt:1359) + An error occurred applying the static arguments to a provided method + (Originally from FSComp.txt:1363) The provider '%s' returned a non-generated type '%s' in the context of a set of generated types. Consider adjusting the type provider to only return generated types. - (Originally from FSComp.txt:1323) + (Originally from FSComp.txt:1327) Type '%s' from type provider '%s' has an empty namespace. Use 'null' for the global namespace. - (Originally from FSComp.txt:1183) + (Originally from FSComp.txt:1187) Empty namespace found from the type provider '%s'. Use 'null' for the global namespace. - (Originally from FSComp.txt:1184) + (Originally from FSComp.txt:1188) A direct reference to the generated type '%s' is not permitted. Instead, use a type definition, e.g. 'type TypeAlias = <path>'. This indicates that a type provider adds generated types to your assembly. - (Originally from FSComp.txt:1207) + (Originally from FSComp.txt:1211) Named static arguments must come after all unnamed static arguments - (Originally from FSComp.txt:1239) + (Originally from FSComp.txt:1243) A type provider implemented GetStaticParametersForMethod, but ApplyStaticArgumentsForMethod was not implemented or invalid - (Originally from FSComp.txt:1358) + (Originally from FSComp.txt:1362) Erased to - (Originally from FSComp.txt:1328) + (Originally from FSComp.txt:1332) @@ -8300,31 +8540,31 @@ System.Environment.Exit did not exit - (Originally from FSComp.txt:246) + (Originally from FSComp.txt:245) The treatment of this operator is now handled directly by the F# compiler and its meaning cannot be redefined - (Originally from FSComp.txt:247) + (Originally from FSComp.txt:246) The documentation file has no .xml suffix - (Originally from FSComp.txt:1150) + (Originally from FSComp.txt:1154) is - (Originally from FSComp.txt:1486) + (Originally from FSComp.txt:1490) (description unavailable...) - (Originally from FSComp.txt:1335) + (Originally from FSComp.txt:1339) @@ -8336,25 +8576,25 @@ Delegates are not allowed to have curried signatures - (Originally from FSComp.txt:981) + (Originally from FSComp.txt:983) %s var in collection - (Originally from FSComp.txt:1266) + (Originally from FSComp.txt:1270) %s var in collection %s (outerKey = innerKey). Note that parentheses are required after '%s' - (Originally from FSComp.txt:1264) + (Originally from FSComp.txt:1268) %s var in collection %s (outerKey = innerKey) into group. Note that parentheses are required after '%s' - (Originally from FSComp.txt:1265) + (Originally from FSComp.txt:1269) @@ -8372,7 +8612,7 @@ None of the types '%s' support the operator '%s' - (Originally from FSComp.txt:316) + (Originally from FSComp.txt:315) @@ -8408,7 +8648,19 @@ Type inference problem too complicated (maximum iteration depth reached). Consider adding further type annotations. - (Originally from FSComp.txt:311) + (Originally from FSComp.txt:310) + + + + + The type '%s' uses 'null' as a representation value but a non-null type is expected + (Originally from FSComp.txt:1543) + + + + + The type '%s' supports 'null' but a non-null type is expected + (Originally from FSComp.txt:1544) @@ -8426,7 +8678,7 @@ The type '%s' does not support the operator '%s' - (Originally from FSComp.txt:317) + (Originally from FSComp.txt:316) @@ -8480,7 +8732,7 @@ The declared type parameter '%s' cannot be used here since the type parameter cannot be resolved at compile time - (Originally from FSComp.txt:309) + (Originally from FSComp.txt:308) @@ -8519,6 +8771,12 @@ (Originally from FSComp.txt:326) + + + The constraints 'null' and 'not null' are inconsistent + (Originally from FSComp.txt:1541) + + Known type parameter: %s @@ -8702,7 +8960,7 @@ This indexer expects %d arguments but is here given %d - (Originally from FSComp.txt:313) + (Originally from FSComp.txt:312) @@ -8747,22 +9005,28 @@ (Originally from FSComp.txt:341) + + + '%s' does not support the type '%s', because the latter lacks the required (real or built-in) member '%s' + (Originally from FSComp.txt:317) + + Expected arguments to an instance member - (Originally from FSComp.txt:312) + (Originally from FSComp.txt:311) Expecting a type supporting the operator '%s' but given a tuple type - (Originally from FSComp.txt:315) + (Originally from FSComp.txt:314) Expecting a type supporting the operator '%s' but given a function type. You may be missing an argument to a function. - (Originally from FSComp.txt:314) + (Originally from FSComp.txt:313) @@ -8786,7 +9050,7 @@ This code is less generic than indicated by its annotations. A unit-of-measure specified using '_' has been determined to be '1', i.e. dimensionless. Consider making the code generic, or removing the use of '_'. - (Originally from FSComp.txt:310) + (Originally from FSComp.txt:309) @@ -8816,145 +9080,145 @@ Quotations cannot contain expressions that set union case fields - (Originally from FSComp.txt:301) + (Originally from FSComp.txt:300) Quotations cannot contain expressions that set fields in exception values - (Originally from FSComp.txt:302) + (Originally from FSComp.txt:301) Quotations cannot contain expressions that require byref pointers - (Originally from FSComp.txt:303) + (Originally from FSComp.txt:302) Quotations cannot contain expressions that fetch union case indexes - (Originally from FSComp.txt:300) + (Originally from FSComp.txt:299) Quotations cannot contain this kind of type - (Originally from FSComp.txt:308) + (Originally from FSComp.txt:307) Quotations cannot contain this kind of pattern match - (Originally from FSComp.txt:306) + (Originally from FSComp.txt:305) Quotations cannot contain this kind of constant - (Originally from FSComp.txt:305) + (Originally from FSComp.txt:304) Quotations cannot contain expressions that fetch static fields - (Originally from FSComp.txt:297) + (Originally from FSComp.txt:296) Quotations cannot contain object expressions - (Originally from FSComp.txt:295) + (Originally from FSComp.txt:294) Quotations cannot contain inline assembly code or pattern matching on arrays - (Originally from FSComp.txt:298) + (Originally from FSComp.txt:297) Quotations cannot contain function definitions that are inferred or declared to be generic. Consider adding some type constraints to make this a valid quoted expression. - (Originally from FSComp.txt:294) + (Originally from FSComp.txt:293) Quotations cannot contain uses of generic expressions - (Originally from FSComp.txt:293) + (Originally from FSComp.txt:292) Quotations cannot contain descending for loops - (Originally from FSComp.txt:299) + (Originally from FSComp.txt:298) Quotations cannot contain array pattern matching - (Originally from FSComp.txt:307) + (Originally from FSComp.txt:306) Quotations cannot contain expressions that take the address of a field - (Originally from FSComp.txt:296) + (Originally from FSComp.txt:295) Quotations cannot contain expressions that make member constraint calls, or uses of operators that implicitly resolve to a member constraint call - (Originally from FSComp.txt:304) + (Originally from FSComp.txt:303) A quotation may not involve an assignment to or taking the address of a captured local variable - (Originally from FSComp.txt:1325) + (Originally from FSComp.txt:1329) Inner generic functions are not permitted in quoted expressions. Consider adding some type constraints until this function is no longer generic. - (Originally from FSComp.txt:1117) + (Originally from FSComp.txt:1119) The variable '%s' is bound in a quotation but is used as part of a spliced expression. This is not permitted since it may escape its scope. - (Originally from FSComp.txt:292) + (Originally from FSComp.txt:291) The dependency manager extension %s could not be loaded. Message: %s - (Originally from FSComp.txt:1520) + (Originally from FSComp.txt:1524) Key container signing is not supported on this platform. - (Originally from FSComp.txt:1650) + (Originally from FSComp.txt:1679) The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. - (Originally from FSComp.txt:1649) + (Originally from FSComp.txt:1678) The conversion from %s to %s is a compile-time safe upcast, not a downcast. Consider using the :> (upcast) operator instead of the :?> (downcast) operator. - (Originally from FSComp.txt:1378) + (Originally from FSComp.txt:1382) The conversion from %s to %s is a compile-time safe upcast, not a downcast. Consider using 'upcast' instead of 'downcast'. - (Originally from FSComp.txt:1377) + (Originally from FSComp.txt:1381) @@ -8966,511 +9230,529 @@ The variable '%s' is used in an invalid way - (Originally from FSComp.txt:251) + (Originally from FSComp.txt:250) The type of a field using the 'DefaultValue' attribute must admit default initialization, i.e. have 'null' as a proper value or be a struct type whose fields all admit default initialization. You can use 'DefaultValue(false)' to disable this check - (Originally from FSComp.txt:290) + (Originally from FSComp.txt:289) The value '%s' is unused - (Originally from FSComp.txt:1068) + (Originally from FSComp.txt:1070) The recursive object reference '%s' is unused. The presence of a recursive object reference adds runtime initialization checks to members in this and derived types. Consider removing this recursive object reference. - (Originally from FSComp.txt:1069) + (Originally from FSComp.txt:1071) default augmentation of the union case - (Originally from FSComp.txt:276) + (Originally from FSComp.txt:275) compiled form of the union case - (Originally from FSComp.txt:275) + (Originally from FSComp.txt:274) The type '%s' is less accessible than the value, member or type '%s' it is used in. - (Originally from FSComp.txt:252) + (Originally from FSComp.txt:251) A type variable has been constrained by multiple different class types. A type variable may only have one class constraint. - (Originally from FSComp.txt:1336) + (Originally from FSComp.txt:1340) The TailCall attribute should only be applied to recursive functions. - (Originally from FSComp.txt:1739) + (Originally from FSComp.txt:1768) 'System.Void' can only be used as 'typeof<System.Void>' in F# - (Originally from FSComp.txt:253) + (Originally from FSComp.txt:252) Struct members cannot return the address of fields of the struct by reference - (Originally from FSComp.txt:1507) + (Originally from FSComp.txt:1511) Object expressions cannot implement interfaces with static abstract members or declare static members. - (Originally from FSComp.txt:1738) + (Originally from FSComp.txt:1767) + + + + + Classes cannot contain static abstract members. + (Originally from FSComp.txt:1774) + + + + + A static abstract non-virtual interface member should only be called via type parameter (for example: 'T.%s). + (Originally from FSComp.txt:1773) Expression-splicing operators may only be used within quotations - (Originally from FSComp.txt:256) + (Originally from FSComp.txt:255) A method return type would contain byrefs which is not permitted - (Originally from FSComp.txt:268) + (Originally from FSComp.txt:267) [<ReflectedDefinition>] terms cannot contain uses of the prefix splice operator '%%' - (Originally from FSComp.txt:273) + (Originally from FSComp.txt:272) A protected member is called or 'base' is being used. This is only allowed in the direct implementation of members since they could escape their object scope. - (Originally from FSComp.txt:248) + (Originally from FSComp.txt:247) The property '%s' has the same name as a method in type '%s'. - (Originally from FSComp.txt:277) + (Originally from FSComp.txt:276) The property '%s' has the same name as another property in type '%s', but one takes indexer arguments and the other does not. You may be missing an indexer argument to one of your properties. - (Originally from FSComp.txt:279) + (Originally from FSComp.txt:278) The member or function '%s' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. - (Originally from FSComp.txt:1719) + (Originally from FSComp.txt:1748) This value can't be assigned because the target '%s' may refer to non-stack-local memory, while the expression being assigned is assessed to potentially refer to stack-local memory. This is to help prevent pointers to stack-bound memory escaping their scope. - (Originally from FSComp.txt:1504) + (Originally from FSComp.txt:1508) The Span or IsByRefLike variable '%s' cannot be used at this point. This is to ensure the address of the local value does not escape its scope. - (Originally from FSComp.txt:1509) + (Originally from FSComp.txt:1513) A Span or IsByRefLike value returned from the expression cannot be used at ths point. This is to ensure the address of the local value does not escape its scope. - (Originally from FSComp.txt:1510) + (Originally from FSComp.txt:1514) ReflectedDefinitionAttribute may not be applied to an instance member on a struct type, because the instance member takes an implicit 'this' byref parameter - (Originally from FSComp.txt:1111) + (Originally from FSComp.txt:1113) First-class uses of the expression-splicing operator are not permitted - (Originally from FSComp.txt:257) + (Originally from FSComp.txt:256) First-class uses of the 'reraise' function is not permitted - (Originally from FSComp.txt:259) + (Originally from FSComp.txt:258) Using the 'nameof' operator as a first-class function value is not permitted. - (Originally from FSComp.txt:1522) + (Originally from FSComp.txt:1526) First-class uses of the address-of operators are not permitted - (Originally from FSComp.txt:258) + (Originally from FSComp.txt:257) Type '%s' is illegal because in byref<T>, T cannot contain byref types. - (Originally from FSComp.txt:1308) + (Originally from FSComp.txt:1312) The function or method call cannot be used at this point, because one argument that is a byref of a non-stack-local Span or IsByRefLike type is used with another argument that is a stack-local Span or IsByRefLike type. This is to ensure the address of the local value does not escape its scope. - (Originally from FSComp.txt:1508) + (Originally from FSComp.txt:1512) The type abbreviation contains byrefs. This is not permitted by F#. - (Originally from FSComp.txt:291) + (Originally from FSComp.txt:290) The byref typed value '%s' cannot be used at this point - (Originally from FSComp.txt:260) + (Originally from FSComp.txt:259) A byref typed value would be stored here. Top-level let-bound byref values are not permitted. - (Originally from FSComp.txt:272) + (Originally from FSComp.txt:271) The address of a value returned from the expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope. - (Originally from FSComp.txt:1503) + (Originally from FSComp.txt:1507) The address of the variable '%s' or a related expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope. - (Originally from FSComp.txt:1388) + (Originally from FSComp.txt:1392) The address of the static field '%s' cannot be used at this point - (Originally from FSComp.txt:264) + (Originally from FSComp.txt:263) The address of the variable '%s' cannot be used at this point - (Originally from FSComp.txt:263) + (Originally from FSComp.txt:262) The address of an array element cannot be used at this point - (Originally from FSComp.txt:266) + (Originally from FSComp.txt:265) The address of the field '%s' cannot be used at this point - (Originally from FSComp.txt:265) + (Originally from FSComp.txt:264) This type implements the same interface at different generic instantiations '%s' and '%s'. This is not permitted in this version of F#. - (Originally from FSComp.txt:289) + (Originally from FSComp.txt:288) The member '%s' is used in an invalid way. A use of '%s' has been inferred prior to its definition at or near '%s'. This is an invalid forward reference. - (Originally from FSComp.txt:271) + (Originally from FSComp.txt:270) 'base' values may only be used to make direct calls to the base implementations of overridden members - (Originally from FSComp.txt:261) + (Originally from FSComp.txt:260) The function or method has an invalid return type '%s'. This is not permitted by the rules of Common IL. - (Originally from FSComp.txt:1525) + (Originally from FSComp.txt:1546) The parameter '%s' has an invalid type '%s'. This is not permitted by the rules of Common IL. - (Originally from FSComp.txt:1524) + (Originally from FSComp.txt:1545) Invalid custom attribute value (not a constant or literal) - (Originally from FSComp.txt:269) + (Originally from FSComp.txt:268) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Instance members are not allowed. - (Originally from FSComp.txt:1702) + (Originally from FSComp.txt:1731) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Instance let bindings are not allowed. - (Originally from FSComp.txt:1703) + (Originally from FSComp.txt:1732) The use of 'incr' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'incr cell' to 'cell.Value <- cell.Value + 1'. - (Originally from FSComp.txt:1616) + (Originally from FSComp.txt:1645) The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. - (Originally from FSComp.txt:1614) + (Originally from FSComp.txt:1643) The use of 'decr' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'decr cell' to 'cell.Value <- cell.Value - 1'. - (Originally from FSComp.txt:1617) + (Originally from FSComp.txt:1646) The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. - (Originally from FSComp.txt:1615) + (Originally from FSComp.txt:1644) An indexed property's getter and setter must have the same type. Property '%s' has getter of type '%s' but setter of type '%s'. - (Originally from FSComp.txt:1730) + (Originally from FSComp.txt:1759) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Implementing interfaces is not allowed. - (Originally from FSComp.txt:1704) + (Originally from FSComp.txt:1733) The property '%s' of type '%s' has a getter and a setter that do not match. If one is abstract then the other must be as well. - (Originally from FSComp.txt:278) + (Originally from FSComp.txt:277) A property's getter and setter must have the same type. Property '%s' has getter of type '%s' but setter of type '%s'. - (Originally from FSComp.txt:1345) + (Originally from FSComp.txt:1349) The type of a first-class function cannot contain byrefs - (Originally from FSComp.txt:267) + (Originally from FSComp.txt:266) Feature '%s' requires the F# library for language version %s or greater. - (Originally from FSComp.txt:1532) + (Originally from FSComp.txt:1553) Feature '%s' is not supported by target runtime. - (Originally from FSComp.txt:1534) + (Originally from FSComp.txt:1555) Feature '%s' is not available in F# %s. Please use language version %s or greater. - (Originally from FSComp.txt:1533) + (Originally from FSComp.txt:1554) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Explicit field declarations are not allowed. - (Originally from FSComp.txt:1706) + (Originally from FSComp.txt:1735) A type instantiation involves a byref type. This is not permitted by the rules of Common IL. - (Originally from FSComp.txt:254) + (Originally from FSComp.txt:253) Calls to 'reraise' may only occur directly in a handler of a try-with - (Originally from FSComp.txt:255) + (Originally from FSComp.txt:254) A function labeled with the 'EntryPointAttribute' attribute must be the last declaration in the last file in the compilation sequence. - (Originally from FSComp.txt:274) + (Originally from FSComp.txt:273) Duplicate parameter. The parameter '%s' has been used more that once in this method. - (Originally from FSComp.txt:1697) + (Originally from FSComp.txt:1726) Duplicate property. The property '%s' has the same name and signature as another property in type '%s' once tuples, functions, units of measure and/or provided types are erased. - (Originally from FSComp.txt:286) + (Originally from FSComp.txt:285) Duplicate property. The property '%s' has the same name and signature as another property in type '%s'. - (Originally from FSComp.txt:285) + (Originally from FSComp.txt:284) Duplicate method. The method '%s' has the same name and signature as another method in type '%s' once tuples, functions, units of measure and/or provided types are erased. - (Originally from FSComp.txt:282) + (Originally from FSComp.txt:281) Duplicate method. The abstract method '%s' has the same name and signature as an abstract method in an inherited type once tuples, functions, units of measure and/or provided types are erased. - (Originally from FSComp.txt:288) + (Originally from FSComp.txt:287) Duplicate method. The abstract method '%s' has the same name and signature as an abstract method in an inherited type. - (Originally from FSComp.txt:287) + (Originally from FSComp.txt:286) The method '%s' has curried arguments but has the same name as another method in type '%s'. Methods with curried arguments cannot be overloaded. Consider using a method taking tupled arguments. - (Originally from FSComp.txt:283) + (Originally from FSComp.txt:282) Duplicate method. The method '%s' has the same name and signature as another method in type '%s'. - (Originally from FSComp.txt:281) + (Originally from FSComp.txt:280) + + + + + This construct is deprecated. Sequence expressions should be of the form 'seq { ... }' + (Originally from FSComp.txt:1790) Methods with curried arguments cannot declare 'out', 'ParamArray', 'optional', 'ReflectedDefinition', 'byref', 'CallerLineNumber', 'CallerMemberName', or 'CallerFilePath' arguments - (Originally from FSComp.txt:284) + (Originally from FSComp.txt:283) This expression is an anonymous record, use {|...|} instead of {...}. - (Originally from FSComp.txt:1727) + (Originally from FSComp.txt:1756) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Constructor with arguments is not allowed. - (Originally from FSComp.txt:1700) + (Originally from FSComp.txt:1729) A type would store a byref typed value. This is not permitted by Common IL. - (Originally from FSComp.txt:280) + (Originally from FSComp.txt:279) The byref-typed variable '%s' is used in an invalid way. Byrefs cannot be captured by closures or passed to inner functions. - (Originally from FSComp.txt:249) + (Originally from FSComp.txt:248) The 'base' keyword is used in an invalid way. Base calls cannot be used in closures. Consider using a private member to make base calls. - (Originally from FSComp.txt:250) + (Originally from FSComp.txt:249) FSharp.Core.AutoOpenAttribute should not be aliased. - (Originally from FSComp.txt:1709) + (Originally from FSComp.txt:1738) The attribute type '%s' has 'AllowMultiple=false'. Multiple instances of this attribute cannot be attached to a single language element. - (Originally from FSComp.txt:270) + (Originally from FSComp.txt:269) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Additional constructor is not allowed. - (Originally from FSComp.txt:1701) + (Originally from FSComp.txt:1730) If a type uses both [<Sealed>] and [<AbstractClass>] attributes, it means it is static. Abstract member declarations are not allowed. - (Originally from FSComp.txt:1705) + (Originally from FSComp.txt:1734) Redundant arguments are being ignored in function '%s'. Expected %d but got %d arguments. - (Originally from FSComp.txt:1367) + (Originally from FSComp.txt:1371) Type inference caused an inference type variable to escape its scope. Consider adding type annotations to make your code less generic. - (Originally from FSComp.txt:1366) + (Originally from FSComp.txt:1370) Type inference caused the type variable %s to escape its scope. Consider adding an explicit type parameter declaration or adjusting your code to be less generic. - (Originally from FSComp.txt:1365) + (Originally from FSComp.txt:1369) Lowercase literal '%s' is being shadowed by a new pattern with the same name. Only uppercase and module-prefixed literals can be used as named patterns. - (Originally from FSComp.txt:1368) + (Originally from FSComp.txt:1372) The operator '%s' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'. - (Originally from FSComp.txt:1339) + (Originally from FSComp.txt:1343) @@ -9488,7 +9770,7 @@ Filename '%s' contains invalid character '%s' - (Originally from FSComp.txt:1115) + (Originally from FSComp.txt:1117) @@ -9518,7 +9800,7 @@ Problem reading assembly '%s': %s - (Originally from FSComp.txt:1332) + (Originally from FSComp.txt:1336) @@ -9662,13 +9944,13 @@ FSharp.Core.sigdata not found alongside FSharp.Core. File expected in %s. Consider upgrading to a more recent version of FSharp.Core, where this file is no longer be required. - (Originally from FSComp.txt:1113) + (Originally from FSComp.txt:1115) File '%s' not found alongside FSharp.Core. File expected in %s. Consider upgrading to a more recent version of FSharp.Core, where this file is no longer be required. - (Originally from FSComp.txt:1114) + (Originally from FSComp.txt:1116) @@ -9680,7 +9962,7 @@ The source file '%s' (at position %d/%d) already appeared in the compilation list (at position %d/%d). Please verify that it is included only once in the project file. - (Originally from FSComp.txt:1699) + (Originally from FSComp.txt:1728) @@ -9710,7 +9992,7 @@ The file extensions '.ml' and '.mli' are for ML compatibility - (Originally from FSComp.txt:1101) + (Originally from FSComp.txt:1103) @@ -9740,103 +10022,103 @@ A type cannot have both the 'ReferenceEquality' and 'StructuralEquality' or 'StructuralComparison' attributes - (Originally from FSComp.txt:222) + (Originally from FSComp.txt:221) The 'StructuralEquality' attribute must be used in conjunction with the 'NoComparison' or 'StructuralComparison' attributes - (Originally from FSComp.txt:221) + (Originally from FSComp.txt:220) The 'StructuralComparison' attribute must be used in conjunction with the 'StructuralEquality' attribute - (Originally from FSComp.txt:220) + (Originally from FSComp.txt:219) A type with attribute 'ReferenceEquality' cannot have an explicit implementation of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable' - (Originally from FSComp.txt:224) + (Originally from FSComp.txt:223) Only record, union, exception and struct types may be augmented with the 'ReferenceEquality', 'StructuralEquality' and 'StructuralComparison' attributes - (Originally from FSComp.txt:223) + (Originally from FSComp.txt:222) The 'ReferenceEquality' attribute cannot be used on structs. Consider using the 'StructuralEquality' attribute instead, or implement an override for 'System.Object.Equals(obj)'. - (Originally from FSComp.txt:217) + (Originally from FSComp.txt:216) The 'NoEquality' attribute must be used in conjunction with the 'NoComparison' attribute - (Originally from FSComp.txt:219) + (Originally from FSComp.txt:218) A type with attribute 'NoEquality' should not usually have an explicit implementation of 'Object.Equals(obj)'. Disable this warning if this is intentional for interoperability purposes - (Originally from FSComp.txt:227) + (Originally from FSComp.txt:226) A type with attribute 'NoComparison' should not usually have an explicit implementation of 'System.IComparable', 'System.IComparable<_>' or 'System.Collections.IStructuralComparable'. Disable this warning if this is intentional for interoperability purposes - (Originally from FSComp.txt:228) + (Originally from FSComp.txt:227) This type uses an invalid mix of the attributes 'NoEquality', 'ReferenceEquality', 'StructuralEquality', 'NoComparison' and 'StructuralComparison' - (Originally from FSComp.txt:218) + (Originally from FSComp.txt:217) A type with attribute 'CustomEquality' must have an explicit implementation of at least one of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable' - (Originally from FSComp.txt:225) + (Originally from FSComp.txt:224) The 'CustomEquality' attribute must be used in conjunction with the 'NoComparison' or 'CustomComparison' attributes - (Originally from FSComp.txt:229) + (Originally from FSComp.txt:228) A type with attribute 'CustomComparison' must have an explicit implementation of at least one of 'System.IComparable' or 'System.Collections.IStructuralComparable' - (Originally from FSComp.txt:226) + (Originally from FSComp.txt:225) Error while parsing embedded IL type - (Originally from FSComp.txt:214) + (Originally from FSComp.txt:213) Error while parsing embedded IL - (Originally from FSComp.txt:213) + (Originally from FSComp.txt:212) Invalid expression on left of assignment - (Originally from FSComp.txt:216) + (Originally from FSComp.txt:215) This indexer notation has been removed from the F# language - (Originally from FSComp.txt:215) + (Originally from FSComp.txt:214) @@ -9854,7 +10136,7 @@ Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. - (Originally from FSComp.txt:1728) + (Originally from FSComp.txt:1757) @@ -9866,19 +10148,19 @@ Active pattern '%s' is not a function - (Originally from FSComp.txt:1104) + (Originally from FSComp.txt:1106) Active pattern '%s' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice<int,unit> = A x' - (Originally from FSComp.txt:1105) + (Originally from FSComp.txt:1107) The mutable local '%s' is implicitly allocated as a reference cell because it has been captured by a closure. This warning is for informational purposes only to indicate where implicit allocations are performed. - (Originally from FSComp.txt:1357) + (Originally from FSComp.txt:1361) @@ -10028,115 +10310,115 @@ The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe types of the fields differ - (Originally from FSComp.txt:163) + (Originally from FSComp.txt:162) The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe names differ - (Originally from FSComp.txt:161) + (Originally from FSComp.txt:160) The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe respective number of data fields differ - (Originally from FSComp.txt:162) + (Originally from FSComp.txt:161) The module contains the constructor\n %s \nbut its signature specifies\n %s \nthe accessibility specified in the signature is more than that specified in the implementation - (Originally from FSComp.txt:164) + (Originally from FSComp.txt:163) Invalid recursive reference to an abstract slot - (Originally from FSComp.txt:970) + (Originally from FSComp.txt:972) The module contains the field\n %s \nbut its signature specifies\n %s \nThe types differ - (Originally from FSComp.txt:170) + (Originally from FSComp.txt:169) The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'static' modifiers differ - (Originally from FSComp.txt:167) + (Originally from FSComp.txt:166) The module contains the field\n %s \nbut its signature specifies\n %s \nThe names differ - (Originally from FSComp.txt:165) + (Originally from FSComp.txt:164) The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'mutable' modifiers differ - (Originally from FSComp.txt:168) + (Originally from FSComp.txt:167) The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'literal' modifiers differ - (Originally from FSComp.txt:169) + (Originally from FSComp.txt:168) The module contains the field\n %s \nbut its signature specifies\n %s \nthe accessibility specified in the signature is more than that specified in the implementation - (Originally from FSComp.txt:166) + (Originally from FSComp.txt:165) The exception definitions are not compatible because the exception abbreviations in the signature and implementation differ. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s. - (Originally from FSComp.txt:188) + (Originally from FSComp.txt:187) The exception definitions are not compatible because a CLI exception mapping is being hidden by a signature. The exception mapping must be visible to other modules. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s - (Originally from FSComp.txt:185) + (Originally from FSComp.txt:184) The exception definitions are not compatible because the order of the fields is different in the signature and implementation. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s. - (Originally from FSComp.txt:192) + (Originally from FSComp.txt:191) The exception definitions are not compatible because the field '%s' was required by the signature but was not specified by the implementation. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s. - (Originally from FSComp.txt:190) + (Originally from FSComp.txt:189) The exception definitions are not compatible because the field '%s' was present in the implementation but not in the signature. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s. - (Originally from FSComp.txt:191) + (Originally from FSComp.txt:190) The exception definitions are not compatible because the exception declarations differ. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s. - (Originally from FSComp.txt:189) + (Originally from FSComp.txt:188) The exception definitions are not compatible because the CLI representations differ. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s - (Originally from FSComp.txt:186) + (Originally from FSComp.txt:185) The exception definitions are not compatible because the exception abbreviation is being hidden by the signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s. - (Originally from FSComp.txt:187) + (Originally from FSComp.txt:186) @@ -10190,7 +10472,7 @@ The %s definitions for type '%s' in the signature and implementation are not compatible because the signature has an abbreviation while the implementation does not - (Originally from FSComp.txt:160) + (Originally from FSComp.txt:159) @@ -10319,28 +10601,22 @@ (Originally from FSComp.txt:155) - - - The %s definitions for type '%s' in the signature and implementation are not compatible because the abbreviations differ: %s versus %s - (Originally from FSComp.txt:158) - - The %s definitions for type '%s' in the signature and implementation are not compatible because an abbreviation is being hidden by a signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature. - (Originally from FSComp.txt:159) + (Originally from FSComp.txt:158) The default value does not have the same type as the argument. The DefaultParameterValue attribute and any Optional attribute will be ignored. Note: 'null' needs to be annotated with the correct type, e.g. 'DefaultParameterValue(null:obj)'. - (Originally from FSComp.txt:1390) + (Originally from FSComp.txt:1394) - + The CallerMemberNameAttribute applied to parameter '%s' will have no effect. It is overridden by the CallerFilePathAttribute. - (Originally from FSComp.txt:1385) + (Originally from FSComp.txt:1389) @@ -10352,7 +10628,7 @@ Prevents references from being locked by the F# Interactive process - (Originally from Interactive/FSIstrings.txt:55) + (Originally from Interactive/FSIstrings.txt:56) @@ -10380,19 +10656,19 @@ - Unexpected ThreadAbortException (Ctrl-C) during event handling: Trying to restart... - (Originally from Interactive/FSIstrings.txt:50) + (Originally from Interactive/FSIstrings.txt:51) --> Timing now on - (Originally from Interactive/FSIstrings.txt:48) + (Originally from Interactive/FSIstrings.txt:49) --> Timing now off - (Originally from Interactive/FSIstrings.txt:49) + (Originally from Interactive/FSIstrings.txt:50) @@ -10428,31 +10704,31 @@ F# Interactive for F# %s - (Originally from Interactive/FSIstrings.txt:54) + (Originally from Interactive/FSIstrings.txt:55) Microsoft (R) F# Interactive version %s - (Originally from Interactive/FSIstrings.txt:53) + (Originally from Interactive/FSIstrings.txt:54) Operation failed. The error text has been printed in the error stream. To return the corresponding FSharpDiagnostic use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing - (Originally from Interactive/FSIstrings.txt:57) + (Originally from Interactive/FSIstrings.txt:58) Operation could not be completed due to earlier error - (Originally from Interactive/FSIstrings.txt:56) + (Originally from Interactive/FSIstrings.txt:57) Emit multiple assemblies (on by default) - (Originally from Interactive/FSIstrings.txt:58) + (Originally from Interactive/FSIstrings.txt:59) @@ -10464,7 +10740,7 @@ Loading - (Originally from Interactive/FSIstrings.txt:39) + (Originally from Interactive/FSIstrings.txt:40) @@ -10494,13 +10770,13 @@ See '%s' for options - (Originally from Interactive/FSIstrings.txt:38) + (Originally from Interactive/FSIstrings.txt:39) F# Interactive command line options: - (Originally from Interactive/FSIstrings.txt:37) + (Originally from Interactive/FSIstrings.txt:38) @@ -10524,7 +10800,7 @@ Exit - (Originally from Interactive/FSIstrings.txt:35) + (Originally from Interactive/FSIstrings.txt:36) @@ -10533,6 +10809,12 @@ (Originally from Interactive/FSIstrings.txt:32) + + + Display documentation for an identifier, e.g. #help \"List.map\";; + (Originally from Interactive/FSIstrings.txt:35) + + Display help @@ -10542,7 +10824,7 @@ Clear screen - (Originally from Interactive/FSIstrings.txt:36) + (Originally from Interactive/FSIstrings.txt:37) @@ -10560,7 +10842,7 @@ \n- Interrupt\n - (Originally from Interactive/FSIstrings.txt:40) + (Originally from Interactive/FSIstrings.txt:41) @@ -10584,13 +10866,13 @@ Failed to resolve assembly '%s' - (Originally from Interactive/FSIstrings.txt:51) + (Originally from Interactive/FSIstrings.txt:52) \n- Exit...\n - (Originally from Interactive/FSIstrings.txt:41) + (Originally from Interactive/FSIstrings.txt:42) @@ -10620,7 +10902,7 @@ Functions with [<EntryPoint>] are not invoked in FSI. '%s' was not invoked. Execute '%s <args>' in order to invoke '%s' with the appropriate string array of command line arguments. - (Originally from Interactive/FSIstrings.txt:59) + (Originally from Interactive/FSIstrings.txt:60) @@ -10638,31 +10920,37 @@ --> Referenced '%s' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly) - (Originally from Interactive/FSIstrings.txt:46) + (Originally from Interactive/FSIstrings.txt:47) --> Referenced '%s' (file may be locked by F# Interactive process) - (Originally from Interactive/FSIstrings.txt:45) + (Originally from Interactive/FSIstrings.txt:46) --> Referenced '%s' - (Originally from Interactive/FSIstrings.txt:44) + (Originally from Interactive/FSIstrings.txt:45) --> Added '%s' to library include path - (Originally from Interactive/FSIstrings.txt:47) + (Originally from Interactive/FSIstrings.txt:48) + + + + + See https://learn.microsoft.com/dotnet/fsharp/language-reference/fsharp-interactive-options for more details. + (Originally from Interactive/FSIstrings.txt:61) Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was:\n\t%s - (Originally from Interactive/FSIstrings.txt:43) + (Originally from Interactive/FSIstrings.txt:44) @@ -10680,7 +10968,7 @@ Binding session to '%s'... - (Originally from Interactive/FSIstrings.txt:52) + (Originally from Interactive/FSIstrings.txt:53) @@ -10698,7 +10986,7 @@ - Aborting main thread... - (Originally from Interactive/FSIstrings.txt:42) + (Originally from Interactive/FSIstrings.txt:43) @@ -11056,1278 +11344,1355 @@ The edit distance is a metric that allows to measure the amount of similarity between two strings. - + - Lookup or set the given element in the table. Set replaces all existing bindings for a value with a single - bindings. Raise <c>KeyNotFoundException</c> if the element is not found. + Immutable map collection, with explicit flattening to a backing dictionary - + - Lookup or set the given element in the table. Set replaces all existing bindings for a value with a single - bindings. Raise <c>KeyNotFoundException</c> if the element is not found. + Interface that defines methods for comparing objects using partial equality relation - + - The total number of keys in the hash table. + Just like "Lazy" but EVERY forcer must provide an instance of "ctxt", e.g. to help track errors + on forcing back to at least one sensible user location - + - Lookup the given element in the table, returning the result as an Option. + A thread-safe lookup table which is assigning an auto-increment stamp with each insert - + - Replace the latest binding if any for the given element. + Memoize tables (all entries cached, never collected unless whole table is collected) - + - Remove the latest binding if any for the given element from the table. + Generates unique stamps - + - Apply the given function to each binding in the hash table. + Encapsulates a lock associated with a particular token-type representing the acquisition of that lock. - + - Apply the given function to each element in the collection threading the accumulating parameter - through the sequence of function applications. + A base type for various types of tokens that must be passed when a lock is taken. + Each different static lock should declare a new subtype of this type. - + - Find all bindings for the given element in the table, if any. + Represents a token that indicates execution on any of several potential user threads calling the F# compiler services. - + - Make a shallow copy of the collection. + Represents a token that indicates execution on the compilation thread, i.e. + - we have full access to the (partially mutable) TAST and TcImports data structures + - compiler execution may result in type provider invocations when resolving types and members + - we can access various caches in the SourceCodeServices + + Like other execution tokens this should be passed via argument passing and not captured/stored beyond + the lifetime of stack-based calls. This is not checked, it is a discipline within the compiler code. - + - Test if the collection contains any bindings for the given element. + Represents a permission active at this point in execution - + - Clear all elements from the collection. + Represents a synchronous, cold-start, cancellable computation with explicit representation of a cancelled result. + + A cancellable computation may be cancelled via a CancellationToken, which is propagated implicitly. + If cancellation occurs, it is propagated as data rather than by raising an OperationCanceledException. - + - Add a binding for the element to the table. + For every entry in m2 find an entry in m1 and fold - + - Build a map that contains the bindings of the given IEnumerable. + Union entries by identical key, using the provided function to union sets of values - + - Create a new empty mutable HashMultiMap with an internal bucket array of the given approximate size - and with the given key hash/equality functions. + Not a very useful function - only called in one place - should be changed - + - Create a new empty mutable HashMultiMap with the given key hash/equality functions. + Like Seq.distinctBy but only filters out duplicates for some of the elements - + - Hash tables, by default based on F# structural "hash" and (=) functions. - The table may map a single key to multiple bindings. + Interface that defines methods for comparing objects using partial equality relation - + - Maps with a specific comparison function + Intern tables to save space. - + - Sets with a specific comparison function + Represents a place in the compiler codebase where we assume we are executing on a compilation thread - + - Get the value for the given key or <c>None</c> if not still valid. Skips `areSame` checking unless `areSimilar` is not provided. + Represents a place in the compiler codebase where we are passed a CompilationThreadToken unnecessarily. + This represents code that may potentially not need to be executed on the compilation thread. - + - Get the value for the given key or None, but only if entry is still valid. Skips `areSame` checking unless `areSimilar` is not provided. + Represents a place where we are stating that execution on the compilation thread is required. The + reason why will be documented in a comment in the code at the callsite. - + - Get the value for the given key or <c>None</c> if not still valid. + Splits a string into substrings based on the strings in the array separators - + - Get the value for the given key or None, but only if entry is still valid + Split a large ResizeArray into a series of array chunks that are each under the Large Object Heap limit. + This is done to help prevent a stop-the-world collection of the single large array, instead allowing for a greater + probability of smaller collections. Stop-the-world is still possible, just less likely. - + - Set the given key. + Split a ResizeArray into an array of smaller chunks. + This requires `items/chunkSize` Array copies of length `chunkSize` if `items/chunkSize % 0 = 0`, + otherwise `items/chunkSize + 1` Array copies. - + - Resize + Returns true if one array has trailing elements equal to another's. - + - Remove the given value from the mru cache. + Returns true if one array has another as its subset from index 0. - + - Get the similar (subsumable) value for the given key or <c>None</c> if not already available. + Check if subArray is found in the wholeArray starting at the provided index - + - Clear out the cache. + Returns all heads of a given array. - + - Simple priority caching for a small number of key/value associations. - This cache may age-out results that have been Set by the caller. - Because of this, the caller must be able to tolerate values - that aren't what was originally passed to the Set function. - - Concurrency: This collection is thread-safe, though concurrent use may result in different - threads seeing different live sets of cached items. - - - areSimilar: Keep at most once association for two similar keys (as given by areSimilar) + Optimized arrays equality. ~100x faster than `array1 = array2` on strings. + ~2x faster for floats + ~0.8x slower for ints - + - Lookup the value without making it the most recent. - Returns the original key value because the areSame function - may have unified two different keys. + Returns a new array with an element replaced with a given value. - + - Lookup a value and make it the most recent. - Returns the original key value because the areSame function - may have unified two different keys. + Async implementation of Array.map. - + - Lookup a value and make it the most recent. Return <c>None</c> if it wasn't there. + pass an array byref to reverse it in place - + - Resize + Runs the computation synchronously, always starting on the current thread. - + - Remove the given value from the collection. + Get an initialization hole - + - Add an element to the collection. Make it the most recent. + Per the docs the threshold for the Large Object Heap is 85000 bytes: https://learn.microsoft.com/dotnet/standard/garbage-collection/large-object-heap#how-an-object-ends-up-on-the-large-object-heap-and-how-gc-handles-them + We set the limit to be 80k to account for larger pointer sizes for when F# is running 64-bit. - + - Remove all elements. + Returns true if the list contains exactly 1 element. Otherwise false. - + - Simple aging lookup table. When a member is accessed it's - moved to the top of the list and when there are too many elements - the least-recently-accessed element falls of the end. - - - areSimilar: Keep at most once association for two similar keys (as given by areSimilar) + Returns true if the list has less than 2 elements. Otherwise false. - + - Iterable functional collection with O(1) append-1 time. Useful for data structures where elements get added at the - end but the collection must occasionally be iterated. Iteration is slower and may allocate because - a suffix of elements is stored in reverse order. - - The type doesn't support structural hashing or comparison. + Logical shift right treating int32 as unsigned integer. + Code that uses this should probably be adjusted to use unsigned integer types. - + - Lookup an element in the map. Raise <c>KeyNotFoundException</c> if no binding - exists in the map. + Bind the cancellation token associated with the computation - + - Return True if there are no bindings in the map. + Run the computation in a mode where it may not be cancelled. The computation never results in a + ValueOrCancelled.Cancelled. - + - The number of bindings in the map. + Run a cancellable computation using the given cancellation token - + - Lookup an element in the map, returning a Some value if the element is in the domain - of the map and None if not. + Register some items to dispose - + - The elements of the set as a list. + Track a set of resources to cleanup - + - The elements of the set as an array. + Caches, mainly for free variables - + - Remove an element from the domain of the map. No exception is raised if the element is not present. + In some cases we play games where we use 'null' as a more efficient representation + in F#. The functions below are used to give initial values to mutable fields. + This is an unsafe trick, as it relies on the fact that the type of values + being placed into the slot never utilizes "null" as a representation. To be used with + with care. - + - Build two new maps, one containing the bindings for which the given predicate returns True, - and another for the remaining bindings. + Like Append, but returns unit - + - Build a new collection whose elements are the results of applying the given function - to each of the elements of the collection. + Writing to output stream via a string buffer. - + - Build a new collection whose elements are the results of applying the given function - to each of the elements of the collection. The index passed to the - function indicates the index of element being transformed. + Buffer printing utility - + - Apply the given function to each binding in the dictionary. + Specialized parallel functions for an array. + Different from Array.Parallel as it will try to minimize the max degree of parallelism. + Will flatten aggregate exceptions that contain one exception. - + - Return True if the given predicate returns true for all of the - bindings in the map. Always returns true if the map is empty. + Note: if duplicates appear, keep the ones toward the _front_ of the list - + - Given the start and end points of a key range, - Fold over the bindings in the map that are in the range, - and the end points are included if present (the range is considered a closed interval). + NOTE: not tail recursive! - + - Fold over the bindings in the map. + NOTE: quadratic! - + - Fold over the bindings in the map. + NOTE: O(n)! - + - Search the map looking for the first element where the given function returns a Some value. + NOTE: O(n)! - + - Build a new map containing the bindings for which the given predicate returns True. + Treat a list of key-value pairs as a lookup collection. + This function looks up a value based on a match from the supplied + predicate function and returns None if value does not exist. - + - Return True if the given predicate returns true for one of the - bindings in the map. Always returns false if the map is empty. + Treat a list of key-value pairs as a lookup collection. + This function looks up a value based on a match from the supplied predicate function. - + - The empty map, and use the given comparer comparison function for all operations associated - with any maps built from this map. + Get the most significant byte of a 32-bit integer - + - Build a map that contains the bindings of the given <c>IEnumerable</c> - and where comparison of elements is based on the given comparison function. + Get the 3rd least significant byte of a 32-bit integer - + - Test is an element is in the domain of the map. + Get the 2nd least significant byte of a 32-bit integer - + - Return a new map with the binding added to the given map. + Get the least significant byte of a 32-bit integer - + - Immutable maps. Keys are ordered by construction function specified - when creating empty maps or by F# structural comparison if no - construction function is specified. - - <performance> - Maps based on structural comparison are - efficient for small keys. They are not a suitable choice if keys are recursive data structures - or require non-structural comparison semantics. - </performance> - Immutable maps. A constraint tag carries information about the class of key-comparers being used. + Rational arithmetic, used for exponents on units-of-measure - + - Return a new set with the elements of the second set removed from the first. + Map a directory name with its replacement. + Prefixes are compared case sensitively. - + - Compute the union of the two sets. + Map a file path with its replacement. + Prefixes are compared case sensitively. - + - Returns the lowest element in the set according to the ordering being used for the set. + Add a path mapping to the map. - + - Returns the highest element in the set according to the ordering being used for the set. + Tools for hashing things with MD5 into a string that can be used as a cache key. - + - A useful shortcut for <c>Set.isEmpty</c>. See the <c>Set</c> module for further operations on sets. + Interpret tables for a unicode lexer generated by <c>fslex.exe</c>. - + - Return the number of elements in the set. + Create the tables from raw data - + - The number of elements in the set. + The type of tables for an unicode lexer generated by <c>fslex.exe</c>. - + - Compute the union of the two sets. + The start position for the lexeme. - + - The elements of the set as a list. + True if the refill of the buffer ever failed , or if explicitly set to True. - + - The elements of the set as an array. + The end position for the lexeme. - + - A singleton set based on the given comparison operator. + The start position for the lexeme. - + - A useful shortcut for <c>Set.remove</c>. Note this operation produces a new set - and does not mutate the original set. The new set will share many storage - nodes with the original. See the <c>Set</c> module for further operations on sets. + Determines if the parser can report FSharpCore library-only features. - + - Build two new sets, one containing the elements for which the given predicate returns True, - and another with the remaining elements. + The currently matched text as a Span, it is only valid until the lexer is advanced - + - Apply the given function to each binding in the collection. + Get the language version being supported - + - Evaluates to True if all elements of the first set are in the second. + True if the refill of the buffer ever failed , or if explicitly set to True. - + - Evaluates to True if all elements of the second set are in the first. + The end position for the lexeme. - + - Compute the intersection of the two sets. + Dynamically typed, non-lexically scoped parameter table. - + - Test if all elements of the collection satisfy the given predicate. - If the input function is f and the elements are i0...iN and j0...jN then - computes p i0 && ... && p iN. + True if the specified language feature is supported. - + - Apply the given accumulating function to all the elements of the set. + Fast helper to turn the matched characters into a string, avoiding an intermediate array. - + - Return a new collection containing only the elements of the collection - for which the given predicate returns True. + Determine if Lexeme contains a specific character - + - Test if any element of the collection satisfies the given predicate. - If the input function is f and the elements are i0...iN then computes - p i0 or ... or p iN. + Get single character of matched string - + - Compares two sets and returns True if they are equal or False otherwise. + Create a lex buffer backed by source text. - + - The empty set based on the given comparer. + Create a lex buffer that reads character or byte inputs by using the given function. - + - Return a new set with the elements of the second set removed from the first. + Create a lex buffer suitable for Unicode lexing that reads characters from the given array. + Important: does take ownership of the array. - + - A set based on the given comparer containing the given initial elements. + Logs a recoverable error if a language feature is unsupported, at the specified range. - + - A useful shortcut for <c>Set.contains</c>. See the <c>Set</c> module for further operations on sets. + Input buffers consumed by lexers generated by <c>fslex.exe</c>. + The type must be generic to match the code generated by FsLex and FsYacc (if you would like to + fix this, please submit a PR to the FsLexYacc repository allowing for optional emit of a non-generic type reference). - + - Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b. + Return absolute offset of the start of the line marked by the position. - + - A useful shortcut for <c>Set.add</c>. Note this operation produces a new set - and does not mutate the original set. The new set will share many storage - nodes with the original. See the <c>Set</c> module for further operations on sets. + The character number in the input stream. - + - Immutable sets based on binary trees, default tag - Immutable sets where a constraint tag carries information about the class of key-comparer being used. + The line number for the position in the input stream, assuming fresh positions have been updated + using for the new line. - + - Immutable map collection, with explicit flattening to a backing dictionary + The line number in the input stream, assuming fresh positions have been updated + for the new line by modifying the EndPos property of the LexBuffer. - + - Interface that defines methods for comparing objects using partial equality relation + The file index for the file associated with the input stream, use <c>fileOfFileIndex</c> to decode - + - Just like "Lazy" but EVERY forcer must provide an instance of "ctxt", e.g. to help track errors - on forcing back to at least one sensible user location + Given a position just beyond the end of a line, return a position at the start of the next line. - + - A thread-safe lookup table which is assigning an auto-increment stamp with each insert + Get an arbitrary position, with the empty string as file name. - + - Memoize tables (all entries cached, never collected unless whole table is collected) + Same line, column -1. - + - Generates unique stamps + Return the column number marked by the position, + i.e. the difference between the <c>AbsoluteOffset</c> and the <c>StartOfLineAbsoluteOffset</c> - + - Encapsulates a lock associated with a particular token-type representing the acquisition of that lock. + Gives a position shifted by specified number of characters. - + - A base type for various types of tokens that must be passed when a lock is taken. - Each different static lock should declare a new subtype of this type. + Given a position at the start of a token of length n, return a position just beyond the end of the token. - + - Represents a token that indicates execution on any of several potential user threads calling the F# compiler services. + Apply a #line directive. - + - Represents a token that indicates execution on the compilation thread, i.e. - - we have full access to the (partially mutable) TAST and TcImports data structures - - compiler execution may result in type provider invocations when resolving types and members - - we can access various caches in the SourceCodeServices - - Like other execution tokens this should be passed via argument passing and not captured/stored beyond - the lifetime of stack-based calls. This is not checked, it is a discipline within the compiler code. + Position information stored for lexing tokens - + - Represents a permission active at this point in execution + The tag of the error terminal. - + - Represents a synchronous, cold-start, cancellable computation with explicit representation of a cancelled result. - - A cancellable computation may be cancelled via a CancellationToken, which is propagated implicitly. - If cancellation occurs, it is propagated as data rather than by raising an OperationCanceledException. + The total number of terminals. - + - For every entry in m2 find an entry in m1 and fold + This function is used to hold the user specified "parse_error" or "parse_error_rich" functions. - + - Union entries by identical key, using the provided function to union sets of values + This table is logically part of the Goto table. - + - Not a very useful function - only called in one place - should be changed + The sparse table offsets for the productions active for each state. - + - Like Seq.distinctBy but only filters out duplicates for some of the elements + The sparse table for the productions active for each state. - + - Interface that defines methods for comparing objects using partial equality relation + The sparse goto table row offsets. - + - Intern tables to save space. + The sparse goto table. - + - Represents a place in the compiler codebase where we assume we are executing on a compilation thread + The immediate action table. - + - Represents a place in the compiler codebase where we are passed a CompilationThreadToken unnecessarily. - This represents code that may potentially not need to be executed on the compilation thread. + The number of symbols for each reduction. - + - Represents a place where we are stating that execution on the compilation thread is required. The - reason why will be documented in a comment in the code at the callsite. + The sparse action table row offsets. - + - Splits a string into substrings based on the strings in the array separators + The sparse action table elements. - + - Split a large ResizeArray into a series of array chunks that are each under the Large Object Heap limit. - This is done to help prevent a stop-the-world collection of the single large array, instead allowing for a greater - probability of smaller collections. Stop-the-world is still possible, just less likely. + A function to compute the data carried by a token. - + - Split a ResizeArray into an array of smaller chunks. - This requires `items/chunkSize` Array copies of length `chunkSize` if `items/chunkSize % 0 = 0`, - otherwise `items/chunkSize + 1` Array copies. + A function to compute the tag of a token. - + - Returns true if one array has trailing elements equal to another's. + The token number indicating the end of input. - + - Returns true if one array has another as its subset from index 0. + The reduction table. - + - Check if subArray is found in the wholeArray starting at the provided index + Interpret the parser table taking input from the given lexer, using the given lex buffer, and the given start state. + Returns an object indicating the final synthesized value for the parse. - + - Returns all heads of a given array. + Tables generated by fsyacc + The type of the tables contained in a file produced by the <c>fsyacc.exe</c> parser generator. - + - Optimized arrays equality. ~100x faster than `array1 = array2` on strings. - ~2x faster for floats - ~0.8x slower for ints + The stack of state indexes active at the parse error . - + - Returns a new array with an element replaced with a given value. + The token that would cause a shift at the parse error. - + - Async implementation of Array.map. + The stack of productions that would be reduced at the parse error. - + - pass an array byref to reverse it in place + The tokens that would cause a reduction at the parse error. - + - Indicates that a type may be null. 'MaybeNull<string>' is used internally in the F# compiler as - replacement for 'string?' to align with FS-1060. + The state active at the parse error. - + - Runs the computation synchronously, always starting on the current thread. + The message associated with the parse error. - + - Get an initialization hole + The token that caused the parse error. - + - Per the docs the threshold for the Large Object Heap is 85000 bytes: https://learn.microsoft.com/dotnet/standard/garbage-collection/large-object-heap#how-an-object-ends-up-on-the-large-object-heap-and-how-gc-handles-them - We set the limit to be 80k to account for larger pointer sizes for when F# is running 64-bit. + The context provided when a parse error occurs. - + - Checks the argument is non-null + Get the start of the range of positions matched by the production. - + - Asserts the argument is non-null and raises an exception if it is + Get the full range of positions matched by the production. - + - Match on the nullness of an argument. + Get the end of the range of positions matched by the production. - + - Asserts the argument is non-null and raises an exception if it is + Return the LexBuffer for this parser instance. - + - Returns true if the argument is non-null. + Raise an error in this parse context. - + - Returns true if the list contains exactly 1 element. Otherwise false. + Get the start position for the terminal or non-terminal at a given index matched by the production. - + - Returns true if the list has less than 2 elements. Otherwise false. + Get the start and end position for the terminal or non-terminal at a given index matched by the production. - + - Logical shift right treating int32 as unsigned integer. - Code that uses this should probably be adjusted to use unsigned integer types. + Get the end position for the terminal or non-terminal at a given index matched by the production. - + - Bind the cancellation token associated with the computation + Get the value produced by the terminal or non-terminal at the given position. - + - Run the computation in a mode where it may not be cancelled. The computation never results in a - ValueOrCancelled.Cancelled. + Indicates a parse error has occurred and parse recovery is in progress. - + - Run a cancellable computation using the given cancellation token + Indicates an accept action has occurred. - + - Register some items to dispose + The default implementation of the parse_error function. - + - Track a set of resources to cleanup + The default implementation of the parse_error_rich function. - + - Caches, mainly for free variables + Helpers used by generated parsers. - + - In some cases we play games where we use 'null' as a more efficient representation - in F#. The functions below are used to give initial values to mutable fields. - This is an unsafe trick, as it relies on the fact that the type of values - being placed into the slot never utilizes "null" as a representation. To be used with - with care. + Lookup or set the given element in the table. Set replaces all existing bindings for a value with a single + bindings. Raise <c>KeyNotFoundException</c> if the element is not found. - + - Like Append, but returns unit + Lookup or set the given element in the table. Set replaces all existing bindings for a value with a single + bindings. Raise <c>KeyNotFoundException</c> if the element is not found. - + - Writing to output stream via a string buffer. + The total number of keys in the hash table. - + - Buffer printing utility + Lookup the given element in the table, returning the result as an Option. - + - Specialized parallel functions for an array. - Different from Array.Parallel as it will try to minimize the max degree of parallelism. - Will flatten aggregate exceptions that contain one exception. + Replace the latest binding if any for the given element. - + - Note: if duplicates appear, keep the ones toward the _front_ of the list + Remove the latest binding if any for the given element from the table. - + - NOTE: not tail recursive! + Apply the given function to each binding in the hash table. - + - NOTE: quadratic! + Apply the given function to each element in the collection threading the accumulating parameter + through the sequence of function applications. - + - NOTE: O(n)! + Find all bindings for the given element in the table, if any. - + - NOTE: O(n)! + Make a shallow copy of the collection. - + - Treat a list of key-value pairs as a lookup collection. - This function looks up a value based on a match from the supplied - predicate function and returns None if value does not exist. + Test if the collection contains any bindings for the given element. - + - Treat a list of key-value pairs as a lookup collection. - This function looks up a value based on a match from the supplied predicate function. + Clear all elements from the collection. - + - Get the most significant byte of a 32-bit integer + Add a binding for the element to the table. - + - Get the 3rd least significant byte of a 32-bit integer + Build a map that contains the bindings of the given IEnumerable. - + - Get the 2nd least significant byte of a 32-bit integer + Create a new empty mutable HashMultiMap with an internal bucket array of the given approximate size + and with the given key hash/equality functions. - + - Get the least significant byte of a 32-bit integer + Create a new empty mutable HashMultiMap with the given key hash/equality functions. - + - Rational arithmetic, used for exponents on units-of-measure + Hash tables, by default based on F# structural "hash" and (=) functions. + The table may map a single key to multiple bindings. - + - Map a directory name with its replacement. - Prefixes are compared case sensitively. + Maps with a specific comparison function - + - Map a file path with its replacement. - Prefixes are compared case sensitively. + Sets with a specific comparison function - + - Add a path mapping to the map. + Get the value for the given key or <c>None</c> if not still valid. Skips `areSame` checking unless `areSimilar` is not provided. - + - Interpret tables for a unicode lexer generated by <c>fslex.exe</c>. + Get the value for the given key or None, but only if entry is still valid. Skips `areSame` checking unless `areSimilar` is not provided. - + - Create the tables from raw data + Get the value for the given key or <c>None</c> if not still valid. - + - The type of tables for an unicode lexer generated by <c>fslex.exe</c>. + Get the value for the given key or None, but only if entry is still valid - + - The start position for the lexeme. + Set the given key. - + - True if the refill of the buffer ever failed , or if explicitly set to True. + Resize - + - The end position for the lexeme. + Remove the given value from the mru cache. - + - The start position for the lexeme. + Get the similar (subsumable) value for the given key or <c>None</c> if not already available. - + - Determines if the parser can report FSharpCore library-only features. + Clear out the cache. - + - The currently matched text as a Span, it is only valid until the lexer is advanced + Simple priority caching for a small number of key/value associations. + This cache may age-out results that have been Set by the caller. + Because of this, the caller must be able to tolerate values + that aren't what was originally passed to the Set function. + + Concurrency: This collection is thread-safe, though concurrent use may result in different + threads seeing different live sets of cached items. + + - areSimilar: Keep at most once association for two similar keys (as given by areSimilar) - + - Get the language version being supported + Lookup the value without making it the most recent. + Returns the original key value because the areSame function + may have unified two different keys. - + - True if the refill of the buffer ever failed , or if explicitly set to True. + Lookup a value and make it the most recent. + Returns the original key value because the areSame function + may have unified two different keys. - + - The end position for the lexeme. + Lookup a value and make it the most recent. Return <c>None</c> if it wasn't there. - + - Dynamically typed, non-lexically scoped parameter table. + Resize - + - True if the specified language feature is supported. + Remove the given value from the collection. - + - Fast helper to turn the matched characters into a string, avoiding an intermediate array. + Add an element to the collection. Make it the most recent. - + - Determine if Lexeme contains a specific character + Remove all elements. - + - Get single character of matched string + Simple aging lookup table. When a member is accessed it's + moved to the top of the list and when there are too many elements + the least-recently-accessed element falls of the end. + + - areSimilar: Keep at most once association for two similar keys (as given by areSimilar) - + - Create a lex buffer backed by source text. + Iterable functional collection with O(1) append-1 time. Useful for data structures where elements get added at the + end but the collection must occasionally be iterated. Iteration is slower and may allocate because + a suffix of elements is stored in reverse order. + + The type doesn't support structural hashing or comparison. - + - Create a lex buffer that reads character or byte inputs by using the given function. + Gets the number of items in the cache - + - Create a lex buffer suitable for Unicode lexing that reads characters from the given array. - Important: does take ownership of the array. + Returns a list of version * value pairs for a given key. The strongly held value is first in the list. - + - Logs a recoverable error if a language feature is unsupported, at the specified range. + Returns an option of a value for given key and version, and also a list of all other versions for given key - + - Input buffers consumed by lexers generated by <c>fslex.exe</c>. - The type must be generic to match the code generated by FsLex and FsYacc (if you would like to - fix this, please submit a PR to the FsLexYacc repository allowing for optional emit of a non-generic type reference). + Clear any keys that match the given predicate - + + Maximum number of strongly held results to keep in the cache + Maximum number of weakly held results to keep in the cache + A predicate that determines if a value should be kept strongly (no matter what) + An event that is called when an item is evicted, collected, weakened or strengthened + + - Return absolute offset of the start of the line marked by the position. + A cache where least recently used items are removed when the cache is full. + + It's also versioned, meaning each key can have multiple versions and only the latest one is kept strongly. + Older versions are kept weakly and can be collected by GC. - + - The character number in the input stream. + A drop-in replacement for AsyncMemoize that disables caching and just runs the computation every time. - + + Maximum number of strongly held results to keep in the cache + Maximum number of weakly held results to keep in the cache + Name of the cache - used in tracing messages + If true, when a job is started, all other jobs with the same key will be canceled. + + + + A cache/memoization for computations that makes sure that the same computation will only be computed once even if it's needed + at multiple places/times. + + Strongly holds at most one result per key. + + + - The line number for the position in the input stream, assuming fresh positions have been updated - using for the new line. + Lookup an element in the map. Raise <c>KeyNotFoundException</c> if no binding + exists in the map. - + - The line number in the input stream, assuming fresh positions have been updated - for the new line by modifying the EndPos property of the LexBuffer. + Return True if there are no bindings in the map. - + - The file index for the file associated with the input stream, use <c>fileOfFileIndex</c> to decode + The number of bindings in the map. - + - Given a position just beyond the end of a line, return a position at the start of the next line. + Lookup an element in the map, returning a Some value if the element is in the domain + of the map and None if not. - + - Get an arbitrary position, with the empty string as file name. + The elements of the set as a list. - + - Same line, column -1. + The elements of the set as an array. - + - Return the column number marked by the position, - i.e. the difference between the <c>AbsoluteOffset</c> and the <c>StartOfLineAbsoluteOffset</c> + Remove an element from the domain of the map. No exception is raised if the element is not present. - + - Gives a position shifted by specified number of characters. + Build two new maps, one containing the bindings for which the given predicate returns True, + and another for the remaining bindings. - + - Given a position at the start of a token of length n, return a position just beyond the end of the token. + Build a new collection whose elements are the results of applying the given function + to each of the elements of the collection. - + - Apply a #line directive. + Build a new collection whose elements are the results of applying the given function + to each of the elements of the collection. The index passed to the + function indicates the index of element being transformed. - + - Position information stored for lexing tokens + Apply the given function to each binding in the dictionary. - + - The tag of the error terminal. + Return True if the given predicate returns true for all of the + bindings in the map. Always returns true if the map is empty. - + - The total number of terminals. + Given the start and end points of a key range, + Fold over the bindings in the map that are in the range, + and the end points are included if present (the range is considered a closed interval). - + - This function is used to hold the user specified "parse_error" or "parse_error_rich" functions. + Fold over the bindings in the map. - + - This table is logically part of the Goto table. + Fold over the bindings in the map. - + - The sparse table offsets for the productions active for each state. + Search the map looking for the first element where the given function returns a Some value. - + - The sparse table for the productions active for each state. + Build a new map containing the bindings for which the given predicate returns True. - + - The sparse goto table row offsets. + Return True if the given predicate returns true for one of the + bindings in the map. Always returns false if the map is empty. - + - The sparse goto table. + The empty map, and use the given comparer comparison function for all operations associated + with any maps built from this map. - + - The immediate action table. + Build a map that contains the bindings of the given <c>IEnumerable</c> + and where comparison of elements is based on the given comparison function. - + - The number of symbols for each reduction. + Test is an element is in the domain of the map. - + - The sparse action table row offsets. + Return a new map with the binding added to the given map. - + - The sparse action table elements. + Immutable maps. Keys are ordered by construction function specified + when creating empty maps or by F# structural comparison if no + construction function is specified. + + <performance> + Maps based on structural comparison are + efficient for small keys. They are not a suitable choice if keys are recursive data structures + or require non-structural comparison semantics. + </performance> + Immutable maps. A constraint tag carries information about the class of key-comparers being used. - + - A function to compute the data carried by a token. + Return a new set with the elements of the second set removed from the first. - + - A function to compute the tag of a token. + Compute the union of the two sets. - + - The token number indicating the end of input. + Returns the lowest element in the set according to the ordering being used for the set. - + - The reduction table. + Returns the highest element in the set according to the ordering being used for the set. - + - Interpret the parser table taking input from the given lexer, using the given lex buffer, and the given start state. - Returns an object indicating the final synthesized value for the parse. + A useful shortcut for <c>Set.isEmpty</c>. See the <c>Set</c> module for further operations on sets. - + - Tables generated by fsyacc - The type of the tables contained in a file produced by the <c>fsyacc.exe</c> parser generator. + Return the number of elements in the set. - + - The stack of state indexes active at the parse error . + The number of elements in the set. - + - The token that would cause a shift at the parse error. + Compute the union of the two sets. - + - The stack of productions that would be reduced at the parse error. + The elements of the set as a list. - + - The tokens that would cause a reduction at the parse error. + The elements of the set as an array. - + - The state active at the parse error. + A singleton set based on the given comparison operator. - + - The message associated with the parse error. + A useful shortcut for <c>Set.remove</c>. Note this operation produces a new set + and does not mutate the original set. The new set will share many storage + nodes with the original. See the <c>Set</c> module for further operations on sets. - + - The token that caused the parse error. + Build two new sets, one containing the elements for which the given predicate returns True, + and another with the remaining elements. - + - The context provided when a parse error occurs. + Apply the given function to each binding in the collection. - + - Get the start of the range of positions matched by the production. + Evaluates to True if all elements of the first set are in the second. - + - Get the full range of positions matched by the production. + Evaluates to True if all elements of the second set are in the first. - + - Get the end of the range of positions matched by the production. + Compute the intersection of the two sets. - + - Return the LexBuffer for this parser instance. + Test if all elements of the collection satisfy the given predicate. + If the input function is f and the elements are i0...iN and j0...jN then + computes p i0 && ... && p iN. - + - Raise an error in this parse context. + Apply the given accumulating function to all the elements of the set. - + - Get the start position for the terminal or non-terminal at a given index matched by the production. + Return a new collection containing only the elements of the collection + for which the given predicate returns True. - + - Get the start and end position for the terminal or non-terminal at a given index matched by the production. + Test if any element of the collection satisfies the given predicate. + If the input function is f and the elements are i0...iN then computes + p i0 or ... or p iN. - + - Get the end position for the terminal or non-terminal at a given index matched by the production. + Compares two sets and returns True if they are equal or False otherwise. - + - Get the value produced by the terminal or non-terminal at the given position. + The empty set based on the given comparer. - + - Indicates a parse error has occurred and parse recovery is in progress. + Return a new set with the elements of the second set removed from the first. - + - Indicates an accept action has occurred. + A set based on the given comparer containing the given initial elements. - + - The default implementation of the parse_error function. + A useful shortcut for <c>Set.contains</c>. See the <c>Set</c> module for further operations on sets. - + - The default implementation of the parse_error_rich function. + Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b. - + - Helpers used by generated parsers. + A useful shortcut for <c>Set.add</c>. Note this operation produces a new set + and does not mutate the original set. The new set will share many storage + nodes with the original. See the <c>Set</c> module for further operations on sets. + + + + + Immutable sets based on binary trees, default tag + Immutable sets where a constraint tag carries information about the class of key-comparer being used. + + + + + Return file name with one directory above it + + + + + Hash type parameters + + + + + Hash a single type used as the type of a member or value + + + + + Hash a type, taking precedence into account to insert brackets where needed + + + + + Hash a unit of measure expression + + + + + Hash type parameter constraints + + + + + Hash an attribute 'Type(arg1, ..., argN)' + + + + + Hash the flags of a member + + + + + Hash a reference to a type + + + + + Get has for Stamp for TType_app tyconref and TType_var typar @@ -12898,6 +13263,11 @@ Coordinating compiler operations - configuration, loading initial context, reporting errors etc. + + + When disposed, restores caller's diagnostics logger and build phase. + + This represents the global state established as each task function runs as part of the build. @@ -12905,7 +13275,7 @@ Use to reset error and warning handlers. - + Execute the new function, on a new thread if necessary @@ -12989,7 +13359,7 @@ - Represnts an early exit from parsing, checking etc, for example because 'maxerrors' has been reached. + Represents an early exit from parsing, checking etc, for example because 'maxerrors' has been reached. @@ -13040,7 +13410,7 @@ Reports an error diagnostic and continues - + NOTE: The change will be undone when the returned "unwind" object disposes @@ -13077,7 +13447,7 @@ - Creates a diagnostic exeption whose text comes via SR.* + Creates a diagnostic exception whose text comes via SR.* @@ -13087,7 +13457,7 @@ - Represents a diagnostic exeption whose text comes via SR.* + Represents a diagnostic exception whose text comes via SR.* @@ -13111,6 +13481,18 @@ Thrown when we want to add some range information to a .NET exception + + + Run computations sequentially starting immediately on the current thread. + + + + + Run computations using Async.Parallel. + Captures the diagnostics from each computation and commits them to the caller's logger preserving their order. + When done, restores caller's build phase and diagnostics logger. + + Like ErrorRecover by no range is attached to System.Exception and ArgumentException. @@ -13386,7 +13768,7 @@ - Check if the position is adjacent to another postition + Check if the position is adjacent to another position @@ -13401,7 +13783,7 @@ - Notes that a range is related to an implied "Delay"m "Quote" or "Run" at the entry to a computation expression. THis doesn't + Notes that a range is related to an implied "Delay"m "Quote" or "Run" at the entry to a computation expression. This doesn't apply to the "Delay" calls added for try/with, try/finally, while or for constructs. @@ -13463,6 +13845,11 @@ An enhancement to TaggedText in the TaggedText layouts generated by FSharp.Compiler.Service + + + Just like ISourceText, but with a checksum. Added as a separate type to avoid breaking changes. + + Gets the total length of the input in characters @@ -13940,7 +14327,7 @@ Creates a GraphNode with given result already cached. - + - computation - The computation code to run. @@ -13954,72 +14341,6 @@ as to prevent any references captured by the computation from being strongly held. - - - Only used for testing, do not use - - - - - Used in places where we don't care about cancellation, e.g. the command line compiler - and F# Interactive - - - - - Only used for testing, do not use - - - - - Execute the cancellable computation synchronously using the ambient cancellation token of - the NodeCode. - - - - - Only used for testing, do not use - - - - - Contains helpers to specify code that can be run as part of the build graph. - - - - - A generic 'use' that disposes of the IDisposable at the end of the computation. - - - - - A limited form 'use' for establishing the compilation globals. - - - - - A standard builder for node code. - - - - - Represents code that can be run as part of the build graph. - - This is essentially cancellable async code where the only asynchronous waits are on nodes. - When a node is evaluated the evaluation is run synchronously on the thread of the - first requestor. - - - - - Specifies code that can be run as part of the build graph. - - - - - Asynchronously await code in the build graph - - Allows to specify the language for error messages @@ -14190,6 +14511,21 @@ Represents collected XmlDoc lines + + + The syntax range of `not` + + + + + The syntax range of `:` + + + + + Represents additional information for SynTypeConstraint.WhereTyparNotSupportsNull + + Represents additional information for SynConst.Measure @@ -14225,6 +14561,16 @@ Represents additional information for SynBindingReturnInfo + + + The syntax range of the `|` token + + + + + Represents additional information for SynType.WithNull + + The syntax range of the `or` keyword @@ -14250,6 +14596,11 @@ Represents additional information for SynField + + + Represents additional information for SynMemberDefn.Inherit + + The syntax range of 'get, set' @@ -14442,6 +14793,11 @@ The syntax range of the `=` token. + + + The syntax range of the `and!` keyword + + Represents additional information for SynExprAndBang @@ -14587,6 +14943,17 @@ Represents additional information for SynMatchClause + + + The syntax range of the `;` token. + Could also be the `then` keyword. + + + + + Represents additional information for SynExpr.Sequential + + The syntax range of the `{|` token. @@ -14597,6 +14964,36 @@ Represents additional information for SynExpr.AnonRecd + + + The syntax range of the `yield!` or `return!` keyword. + + + + + Represents additional information for SynExpr.YieldOrReturnFrom + + + + + The syntax range of the `yield` or `return` keyword. + + + + + Represents additional information for SynExpr.YieldOrReturn + + + + + The syntax range of the `do!` keyword + + + + + Represents additional information for SynExpr.DoBang + + The syntax range of the `with` keyword @@ -14632,6 +15029,11 @@ The syntax range of the `=` token. + + + The syntax range of the `let!` or `use!` keyword. + + Represents additional information for SynExpr.LetOrUseBang @@ -14642,6 +15044,11 @@ The syntax range of the `in` keyword. + + + The syntax range of the `let` or `use` keyword. + + Represents additional information for SynExpr.LetOrUse @@ -14783,6 +15190,16 @@ The operator ident will be compiled into "op_Addition", while the original notation was "+" + + + Adds SynPat.Or pattern for unfinished empty clause above + + + + + Generated get_XYZ or set_XYZ ident text + + 'e1 |||> e2' @@ -15787,7 +16204,7 @@ - Used at the end of comppiling an assembly to get a frozen, final stable CCU + Used at the end of compiling an assembly to get a frozen, final stable CCU for the compilation which we no longer mutate. @@ -16541,11 +16958,6 @@ than a closure or a local), including argument names, attributes etc. - - - Get a reference to the value for the active pattern being referred to - - Get the index of the active pattern element within the overall active pattern @@ -16556,6 +16968,11 @@ Get a reference to the value for the active pattern being referred to + + + Get a reference to the value for the active pattern being referred to + + Get the full information about the active pattern being referred to @@ -16601,7 +17018,7 @@ -- boundVals - The values bound at the target, matching the valuesin the TDSuccess -- targetExpr - The expression to evaluate if we branch to the target -- debugPoint - The debug point for the target - -- isStateVarFlags - Indicates which, if any, of the values are repesents as state machine variables + -- isStateVarFlags - Indicates which, if any, of the values are represents as state machine variables @@ -16611,13 +17028,13 @@ - Test.ActivePatternCase(activePatExpr, activePatResTys, isStructRetTy, activePatIdentity, idx, activePatInfo) + Test.ActivePatternCase(activePatExpr, activePatResTys, activePatRetKind, activePatIdentity, idx, activePatInfo) Run the active pattern type bind a successful result to a variable in the remaining tree. activePatExpr -- The active pattern function being called, perhaps applied to some active pattern parameters. activePatResTys -- The result types (case types) of the active pattern. - isStructRetTy -- Is the active pattern a struct return + activePatRetKind -- Indicating what is returning from the active pattern activePatIdentity -- The value type the types it is applied to. If there are any active pattern parameters then this is empty. idx -- The case number of the active pattern which the test relates to. activePatternInfo -- The extracted info for the active pattern. @@ -16650,6 +17067,26 @@ Test if the input to a decision tree matches the given union case + + + Returning bool + + + + + Returning `_ voption` + + + + + Returning `_ option` or `Choice<_, _, .., _>` + + + + + Indicating what is returning from an AP + + Get the discriminator associated with the case @@ -16844,7 +17281,7 @@ - Indicates the type is built from a named type type a number of type arguments. + Indicates the type is built from a named type and a number of type arguments. 'flags' is a placeholder for future features, in particular nullness analysis @@ -16865,6 +17302,21 @@ Represents a type in the typed abstract syntax + + + we know we don't care + + + + + we know that there is no extra null value in the type + + + + + we know that there is an extra null value in the type + + Get a reference to the type containing this record field @@ -17043,6 +17495,11 @@ A unique stamp within the context of this invocation of the compiler process + + + Indicates whether the inline declaration for the value indicate that the value should be inlined? + + The quotation expression associated with a value given the [<ReflectedDefinition>] tag @@ -17077,11 +17534,6 @@ Get the number of 'this'/'self' object arguments for the member. Instance extension members return '1'. - - - Indicates whether the inline declaration for the value indicate that the value must be inlined? - - Is this a member, if so some more data about the member. @@ -18045,6 +18497,11 @@ Get the signature for the value's XML documentation Range of the definition (signature) of the value, used by Visual Studio + + + Indicates whether the inline declaration for the value indicates that the value should be inlined. + + The quotation expression associated with a value given the [<ReflectedDefinition>] tag @@ -18083,11 +18540,6 @@ Get the signature for the value's XML documentation Get the number of 'this'/'self' object arguments for the member. Instance extension members return '1'. - - - Indicates whether the inline declaration for the value indicate that the value must be inlined? - - Is this a member, if so some more data about the member. @@ -18575,7 +19027,8 @@ Get the signature for the value's XML documentation Indicates the signature of a member constraint. Contains a mutable solution cell - to store the inferred solution of the constraint. + to store the inferred solution of the constraint. And a mutable source cell to store + the name of the type or member that defined the constraint. @@ -18639,6 +19092,11 @@ Get the signature for the value's XML documentation Get the member name associated with the member constraint. + + + An anti-constraint indicating that ref structs (e.g. Span<>) are allowed here + + A constraint that a type is .NET unmanaged type @@ -18691,6 +19149,11 @@ Get the signature for the value's XML documentation A constraint that a type has a member with the given signature + + + A constraint that a type doesn't support nullness + + A constraint that a type has a 'null' value @@ -18745,7 +19208,7 @@ Get the signature for the value's XML documentation - Get the XML documetnation for the type parameter + Get the XML documentation for the type parameter @@ -18854,9 +19317,9 @@ Get the signature for the value's XML documentation The declared attributes of the type parameter. Empty for type inference variables type parameters from .NET. - + - Links a previously unlinked type variable to the given data. Only used during unpickling of F# metadata. + Set whether this type parameter is flexible for 'supports null' constraint, e.g. in the case of assignment to a mutable value @@ -18924,16 +19387,31 @@ Get the signature for the value's XML documentation Creates a type variable based on the given data. Only used during unpickling of F# metadata. + + + Marks the typar as being contravariant + + Links a previously unlinked type variable to the given data. Only used during unpickling of F# metadata. + + + Links a previously unlinked type variable to the given data. Only used during unpickling of F# metadata. + + A declared generic type/measure parameter, or a type/measure inference variable. + + + Set to true if the typar is contravariant, i.e. declared as <in T> in C# + + The declared attributes of the type parameter. Empty for type inference variables. @@ -18966,6 +19444,11 @@ Get the signature for the value's XML documentation Indicates the construct can only be accessed from any code in the given type constructor, module or assembly. [] indicates global scope. + + + Readable rendering of Accessibility + + Represents the constraint on access for a construct @@ -19742,9 +20225,9 @@ Get the signature for the value's XML documentation - This is the value implementing the auto-generated comparison + This is the value implementing the auto-generated equality semantics if any. It is not present if the type defines its own implementation - of IStructuralEquatable or if the type doesn't implement IComparable implicitly. + of IStructuralEquatable or if the type doesn't override Object.Equals implicitly. @@ -20292,7 +20775,7 @@ Get the signature for the value's XML documentation including hidden fields from the compilation of implicit class constructions. - + Gets all implicit hash/equals/compare methods added to an F# record, union or struct type definition. @@ -20443,6 +20926,11 @@ Get the signature for the value's XML documentation The information ILXGEN needs about the location of an item + + + Represents the specified visibility of the accessibility -- used to ensure IL visibility + + A public path records where a construct lives within the global namespace @@ -20551,6 +21039,11 @@ Get the signature for the value's XML documentation Indicates whether a type variable can be instantiated by types or units-of-measure. + + + Indicates whether this type parameter is flexible for 'supports null' constraint, e.g. in the case of assignment to a mutable value + + Indicates if the type inference variable was generated after an error when type checking expressions or patterns @@ -20700,7 +21193,7 @@ Get the signature for the value's XML documentation Indicates the value is inlined but the .NET IL code for the function still exists, e.g. to satisfy interfaces on objects, but that it is also always inlined - + Returns true if the implementation of a value must always be inlined @@ -20796,11 +21289,6 @@ Get the signature for the value's XML documentation Metadata on values (names of arguments etc. - - - Indicates if we can use System.Array.Empty when emitting IL for empty array literals - - Memoization table to help minimize the number of ILSourceDocument objects we create @@ -20829,7 +21317,7 @@ Get the signature for the value's XML documentation - Find an FSharp.Core LaguagePrimitives dynamic function that corresponds to a trait witness, e.g. + Find an FSharp.Core LanguagePrimitives dynamic function that corresponds to a trait witness, e.g. AdditionDynamic for op_Addition. Also work out the type instantiation of the dynamic function. @@ -20858,23 +21346,44 @@ Get the signature for the value's XML documentation Represents an intrinsic value from FSharp.Core known to the compiler - + - Defines the global environment for all type checking. - - The environment (TcGlobals) are well-known types and values are hard-wired - into the compiler. This lets the compiler perform particular optimizations - for these types and values, for example emitting optimized calls for - comparison and hashing functions. + Signals how checker/compiler was invoked - from FSC task/process (a one-off compilation), from tooling or from interactive session. + This is used to determine if we want to use certain features in the pipeline, for example, type subsumption cache is only used in one-off compilation now. - An immutable mappping from witnesses to some data. + An immutable mapping from witnesses to some data. Note: this uses an immutable HashMap/Dictionary with an IEqualityComparer that captures TcGlobals, see EmptyTraitWitnessInfoHashMap + + + An expression representing the overall loop. + + + + + An expression representing the loop body. + + + + + An expression representing the current loop element. + + + + + An expression representing the loop's current iteration index. + + + + + An expression holding the loop's iteration count. + + Represents metadata extracted from a nominal type @@ -21352,18 +21861,38 @@ Get the signature for the value's XML documentation Create an empty immutable mapping from witnesses to some data + + + Makes an optimized while-loop for a range expression with the given integral start, step, and finish: + + start..step..finish + + The buildLoop function enables using the precomputed iteration count in an optional initialization step before the loop is executed. + + + + + Matches if the given expression is an application + of the range or range-step operator on an integral type + and returns the type, start, step, and finish if so. + + start..finish + + start..step..finish + + Determines types that are potentially known to satisfy the 'comparable' constraint and returns a set of residual types that must also satisfy the constraint - + Get the overall type for a function that implements the active pattern - + Get the result type for the active pattern @@ -21435,6 +21964,16 @@ Get the signature for the value's XML documentation Make a call to the 'isprintf' function for string interpolation + + + Makes an expression holding a constant 1 value of the given numeric type. + + + + + Makes an expression holding a constant 0 value of the given numeric type. + + This is used for tacking on code _after_ the expression. The SuppressStmt @@ -21667,7 +22206,7 @@ Get the signature for the value's XML documentation - Determine if a type is a FSharpRef type + Determine if a type is a reference type @@ -21710,9 +22249,19 @@ Get the signature for the value's XML documentation Determine if a type is the System.ValueType type - + - Determine if a type is the System.Object type + Determine if a type is a strictly non-nullable System.Object type. If nullness checking is disabled, this returns false. + + + + + Determine if a type is the (System.Object | null) type. Allows either nullness if null checking is disabled. + + + + + Determine if a type is the System.Object type with any nullness qualifier @@ -21730,7 +22279,7 @@ Get the signature for the value's XML documentation Check if a type definition is one of the artificial type definitions used for array types of different ranks - + Build an array type of the given rank @@ -21845,6 +22394,16 @@ Get the signature for the value's XML documentation Determine is a type is a System.Nullable type + + + Try to take apart an Choice type + + + + + Take apart an Choice type + + Try to take apart an option type @@ -21860,6 +22419,11 @@ Get the signature for the value's XML documentation Take apart an option type + + + Determine if a type is an Choice type + + Determine if a type is an option type @@ -21870,6 +22434,11 @@ Get the signature for the value's XML documentation Determine if a type is a value option type + + + Determine if a type is a bool type + + Build a single-dimensional array type @@ -22022,6 +22591,16 @@ Get the signature for the value's XML documentation Determine if a type definition is hidden by a signature + + + Get the value including fsi remapping + + + + + Get the value including fsi remapping + + Make a remapping table for viewing a module or namespace 'from the outside' @@ -22313,7 +22892,7 @@ Get the signature for the value's XML documentation - Make a TAST expression representing getting an item fromm a tuple + Make a TAST expression representing getting an item from a tuple @@ -22549,6 +23128,12 @@ Get the signature for the value's XML documentation Invisible bindings are not given a sequence point and should not have side effects. + + + Make a mutable let-expression that locally binds a compiler-generated value to an expression, where the expression + is returned by the given continuation. Compiler-generated bindings do not give rise to a sequence point in debugging. + + Make a let-expression that locally binds a compiler-generated value to an expression, where the expression @@ -22814,6 +23399,11 @@ Get the signature for the value's XML documentation An exception representing a warning for a defensive copy of an immutable struct + + + Constant 0. + + Debug layout for class and record fields @@ -23006,7 +23596,7 @@ Get the signature for the value's XML documentation Represents deserialized data with a dangling set of CCU fixup thunks indexed by name - + Deserialize an arbitrary object which may have holes referring to other compilation units @@ -23208,6 +23798,11 @@ Get the signature for the value's XML documentation The AssemblyLoader for the import context + + + Type subsumption cache + + Represents a context used for converting AbstractIL .NET and provided types to F# internal compiler data structures. @@ -23241,10 +23836,17 @@ Get the signature for the value's XML documentation and accessing information about generated provided assemblies. - + + + Import an IL type as an F# type, first rescoping to view the metadata from the current assembly + being compiled. importInst gives the context for interpreting type variables. + + + Import an IL type as an F# type, first rescoping to view the metadata from the current assembly being compiled. importInst gives the context for interpreting type variables. + This function fully skips the 'nullness checking' metadata flags. @@ -23257,7 +23859,7 @@ Get the signature for the value's XML documentation Import an IL assembly as a new TAST CCU - + Import a set of Abstract IL generic parameter specifications as a list of new F# generic parameters. @@ -23334,23 +23936,28 @@ Get the signature for the value's XML documentation Note: this now looks identical to constraint instantiation. - + Get the return type of an IL method, taking into account instantiations for type, return attributes and method generic parameters, and translating 'void' to 'None'. - + Get the parameter type of an IL method. - + Read an Abstract IL type from metadata, including any attributes that may affect the type itself, and convert to an F# type. - + + + Read an Abstract IL type from metadata and convert to an F# type, ignoring nullness checking. + + + Read an Abstract IL type from metadata and convert to an F# type. @@ -23658,12 +24265,12 @@ Get the signature for the value's XML documentation - Indidcates whether IL property has an init-only setter (i.e. has the `System.Runtime.CompilerServices.IsExternalInit` modifer) + Indicates whether IL property has an init-only setter (i.e. has the `System.Runtime.CompilerServices.IsExternalInit` modifier) - Is the property requied (has the RequiredMemberAttribute). + Is the property required (has the RequiredMemberAttribute). @@ -23840,7 +24447,7 @@ Get the signature for the value's XML documentation - Is the property requied (has the RequiredMemberAttribute). + Is the property required (has the RequiredMemberAttribute). @@ -24141,6 +24748,11 @@ Get the signature for the value's XML documentation Describes a use of a pseudo-method corresponding to the default constructor for a .NET struct type + + + A pseudo-method used by F# typechecker to treat Object.ToString() of known types as returning regular string, not `string?` as in the BCL + + Describes a use of a method backed by Abstract IL # metadata @@ -24244,7 +24856,7 @@ Get the signature for the value's XML documentation - Indicates, wheter this method has `IsExternalInit` modreq. + Indicates, whether this method has `IsExternalInit` modreq. @@ -24579,7 +25191,7 @@ Get the signature for the value's XML documentation - Get the argument types of the the IL method. If this is an C#-style extension method + Get the argument types of the IL method. If this is an C#-style extension method then drop the object argument. @@ -24884,7 +25496,7 @@ Get the signature for the value's XML documentation Here x gets a generalized type "list<'T>". - + The feasible coercion relation. Part of the language spec. @@ -25025,7 +25637,7 @@ Get the signature for the value's XML documentation Similar to "IgnoreOverrides", but filters the items bottom-to-top, - and discards all when finds first non-virtual member which hides one above it in hirearchy. + and discards all when finds first non-virtual member which hides one above it in hierarchy. @@ -25085,7 +25697,7 @@ Get the signature for the value's XML documentation and F# function type by looking at the Invoke signature of the delegate. - + Get a set of most specific override methods. @@ -25106,6 +25718,11 @@ Get the signature for the value's XML documentation Perform type-directed name resolution of a particular named member in an F# type + + + Get the flattened list of intrinsic properties in the hierarchy. If the PropInfo is get-only or set-only, try to find its setter or getter from the hierarchy. + + Get the flattened list of intrinsic properties in the hierarchy @@ -25156,12 +25773,24 @@ Get the signature for the value's XML documentation Checks whether the given type has an indexer property. + + + Query the immediate properties of an F# type, not taking into account inherited properties. The optFilter + parameter is an optional name to restrict the set of properties returned. + + Query the immediate properties of an F# type, not taking into account inherited properties. The optFilter parameter is an optional name to restrict the set of properties returned. + + + Query the immediate methods of an F# type, not taking into account inherited methods. The optFilter + parameter is an optional name to restrict the set of properties returned. + + Query the immediate methods of an F# type, not taking into account inherited methods. The optFilter @@ -25313,15 +25942,15 @@ Get the signature for the value's XML documentation - Record that an open declaration occured in a given scope range + Record that an open declaration occurred in a given scope range - + Record that a name resolution occurred at a specific location in the source - + Record that a method group name resolution occurred at a specific location in the source @@ -25435,7 +26064,7 @@ Get the signature for the value's XML documentation The active instantiation for any generic type parameters - + Information about the occurrence of the symbol @@ -25455,7 +26084,7 @@ Get the signature for the value's XML documentation The access rights of code at the location - + Represents the kind of the occurrence when reporting a name in name resolution @@ -25679,11 +26308,6 @@ Get the signature for the value's XML documentation Represents the resolution of a name to a delegate - - - Represents the resolution of a name to the fake constructor simulated for an interface type. - - Represents the resolution of a name to a constructor @@ -25835,7 +26459,7 @@ Get the signature for the value's XML documentation - Resolve a (possibly incomplete) long identifier to a loist of possible class or record fields + Resolve a (possibly incomplete) long identifier to a list of possible class or record fields @@ -25853,7 +26477,7 @@ Get the signature for the value's XML documentation Resolve a long identifier to a field - + Resolve a long identifier to a type definition @@ -25883,6 +26507,74 @@ Get the signature for the value's XML documentation Resolve a long identifier to a namespace, module. + + + Given a set of type parameters, make new inference type variables for + each and ensure that the constraints on the new type variables are adjusted. + + Returns + 1. the new type parameters + 2. the instantiation mapping old type parameters to inference variables + 3. the inference type variables as a list of types. + + + + + Given a set of formal type parameters and their constraints, make new inference type variables for + each and ensure that the constraints on the new type variables are adjusted to refer to these. + + Returns + 1. the new type parameters + 2. the instantiation mapping old type parameters to inference variables + 3. the inference type variables as a list of types. + + + + + Given a method, which may be generic, make new inference type variables for + its generic parameters, and ensure that the constraints the new type variables are adjusted. + + Returns the inference type variables as a list of types. + + + + + Given a set of type parameters, make new inference type variables for + each and ensure that the constraints on the new type variables are adjusted. + + Returns the inference type variables as a list of types. + + + + + Create a list of inference type variables, one for each element in the input list + + + + + Create an inference type variable representing an error condition when checking a measure + + + + + Create an inference type variable representing an error condition when checking an expression + + + + + Create an inference type variable for the kind of a byref pointer + + + + + Create an inference type variable + + + + + Create a type variable representing the use of a "_" in F# code + + Generate a new reference to a record field with a fresh type instantiation @@ -25913,17 +26605,17 @@ Get the signature for the value's XML documentation Report a specific name resolution at a source range - + Report a specific name resolution at a source range, replacing any previous resolutions - + Report a specific method group name resolution at a source range - + Report a specific name resolution at a source range @@ -26306,7 +26998,7 @@ Get the signature for the value's XML documentation - Generate a witness for the given (solved) constraint. Five possiblilities are taken + Generate a witness for the given (solved) constraint. Five possibilities are taken into account. 1. The constraint is solved by a .NET-declared method or an F#-declared method 2. The constraint is solved by an F# record field @@ -26398,6 +27090,29 @@ Get the signature for the value's XML documentation Compile a pattern into a decision tree and a set of targets. + + + Checks to run after all inference is complete. + + + + + Checks to run after all inference is complete, but before defaults are applied and internal unknowns solved + + + + + This table stores all unsolved, ungeneralized trait constraints, indexed by free type variable. + That is, there will be one entry in this table for each free type variable in + each outstanding, unsolved, ungeneralized trait constraint. Constraints are removed from the table and resolved + each time a solution to an index variable is found. + + + + + The function used to freshen values we encounter during trait constraint solving + + Add a post-inference check to run at the end of inference @@ -26565,74 +27280,6 @@ Get the signature for the value's XML documentation The entry point to resolve the overloading for an entire call - - - Given a method, which may be generic, make new inference type variables for - its generic parameters, and ensure that the constraints the new type variables are adjusted. - - Returns the inference type variables as a list of types. - - - - - Given a set of type parameters, make new inference type variables for - each and ensure that the constraints on the new type variables are adjusted. - - Returns the inference type variables as a list of types. - - - - - Given a set of type parameters, make new inference type variables for - each and ensure that the constraints on the new type variables are adjusted. - - Returns - 1. the new type parameters - 2. the instantiation mapping old type parameters to inference variables - 3. the inference type variables as a list of types. - - - - - Given a set of formal type parameters and their constraints, make new inference type variables for - each and ensure that the constraints on the new type variables are adjusted to refer to these. - - Returns - 1. the new type parameters - 2. the instantiation mapping old type parameters to inference variables - 3. the inference type variables as a list of types. - - - - - Create a list of inference type variables, one for each element in the input list - - - - - Create an inference type variable representing an error condition when checking a measure - - - - - Create an inference type variable representing an error condition when checking an expression - - - - - Create an inference type variable for the kind of a byref pointer - - - - - Create an inference type variable - - - - - Create a type variable representing the use of a "_" in F# code - - Solves constraints using a mutable constraint-solver state @@ -26723,7 +27370,7 @@ Get the signature for the value's XML documentation Perform the TailCall analysis on the optimized TAST for a file. The TAST is traversed analogously to the PostInferenceChecks phase. - For functions that are annotated with the [<TailCall>] attribute, a warning is emmitted if they are called in a + For functions that are annotated with the [<TailCall>] attribute, a warning is emitted if they are called in a non-tailrecursive manner in the recursive scope of the function. The ModuleOrNamespaceContents aren't mutated in any way by performing this check. @@ -26820,7 +27467,7 @@ Get the signature for the value's XML documentation - Represents the flags passsed to TcPat regarding the binding location + Represents the flags passed to TcPat regarding the binding location @@ -26926,7 +27573,7 @@ Get the signature for the value's XML documentation - Is the an implicit constructor or an explicit one? + Is there an implicit constructor or an explicit one? @@ -26962,12 +27609,45 @@ Get the signature for the value's XML documentation have completed before fields are accessed. + + + Determine if a syntactic expression inside 'seq { ... }' or '[...]' counts as a "simple sequence + of semicolon separated values". For example [1;2;3]. + 'acceptDeprecated' is true for the '[ ... ]' case, where we allow the syntax '[ if g then t else e ]' but ask it to be parenthesized + + + + + Check if a computation or sequence expression is syntactically free of 'yield' (though not yield!) + + + + + Constrain two types to be equal within this type checking context + + + + + Invoke pattern match compilation + + + + + simplified version of TcVal used in calls to BuildMethodCall (typrelns.fs) + this function is used on typechecking step for making calls to provided methods and on optimization step (for the same purpose). + + Represents a recursive binding after it has been both checked and generalized, but before initialization recursion has been rewritten + + + Represents a pattern that is used in a true match clause e.g. | pat -> expr + + Represents a recursive binding after it has been both checked and generalized and after @@ -27138,11 +27818,6 @@ Get the signature for the value's XML documentation let (x: struct (int * int)) = (3,4) - - - Constrain two types to be equal within this type checking context - - Given the declaration of a function or member, complete the processing of its ValReprInfo @@ -27161,17 +27836,17 @@ Get the signature for the value's XML documentation Check a specification of a value or member in a signature or an abstract member - + Check a syntactic type (with error recovery) - + Check a syntactic type or unit of measure - + Check a syntactic type @@ -27181,7 +27856,7 @@ Get the signature for the value's XML documentation Check a collection of type parameters declarations - + Check a set of explicitly declared constraints on type parameters @@ -27213,7 +27888,7 @@ Get the signature for the value's XML documentation - Get the binding for the implicit safe initialziation check value if it is being used + Get the binding for the implicit safe initialization check value if it is being used @@ -27226,7 +27901,7 @@ Get the signature for the value's XML documentation Check a set of let bindings in a class or module - + Check a pattern being used as a pattern match @@ -27271,10 +27946,9 @@ Get the signature for the value's XML documentation Check a syntactic expression and convert it to a typed tree expression - + - Converts 'a..b' to a call to the '(..)' operator in FSharp.Core - Converts 'a..b..c' to a call to the '(.. ..)' operator in FSharp.Core + Check record names and types for cases like cases like `query { for ... join(for x in f(). }` @@ -27294,7 +27968,7 @@ Get the signature for the value's XML documentation Check a constant value, e.g. a literal - + Check a set of attributes which can only target specific elements @@ -27346,13 +28020,13 @@ Get the signature for the value's XML documentation Produce a post-generalization type scheme for a simple type where no type inference generalization - is appplied. + is applied. Return a new environment suitable for processing declarations in the interior of a module definition - given that the accumulator for the module type already exisits. + given that the accumulator for the module type already exists. @@ -27435,19 +28109,14 @@ Get the signature for the value's XML documentation The functions must iterate the actual bindings and process them to the overall result. - - - Invoke pattern match compilation - - Get the expression resulting from turning an expression into an enumerable value, e.g. at 'for' loops - + - Compute the available access rights and module/entity compilation path for a paricular location in code + Compute the available access rights and module/entity compilation path for a particular location in code @@ -27463,7 +28132,7 @@ Get the signature for the value's XML documentation - After inference, view a ValSchem in a canonical way. + After inference, view a ValScheme in a canonical way. @@ -27584,22 +28253,42 @@ Get the signature for the value's XML documentation Given an environment, compute the set of trait solutions which must appear before - the current location, not after (to prevent use-before definitiosn and + the current location, not after (to prevent use-before definitions and forward calls via type inference filling in trait solutions). Given an environment, compute the set of inference type variables which may not be - generalised, because they appear somewhere in the types of the constructs availabe + generalised, because they appear somewhere in the types of the constructs available in the environment. - + Check a set of simple patterns, e.g. the declarations of parameters for an implicit constructor. + + + This case is used for computation expressions which are sequence expressions. Technically the code path is different because it + typechecks rather than doing a shallow syntactic translation, and generates calls into the Seq.* library + and helpers rather than to the builder methods (there is actually no builder for 'seq' in the library). + These are later detected by state machine compilation. + + Also "ienumerable extraction" is performed on arguments to "for". + + + + + Sequence expressions checking + + + + + Sequence expressions checking + + Represents a single group of bindings in a class with an implicit constructor @@ -27719,7 +28408,7 @@ Get the signature for the value's XML documentation Record any unconstrained type parameters generalized for the outer members as "free choices" in the let bindings - + Check and elaborate the "left hand side" of the implicit class construction syntax. @@ -27797,7 +28486,7 @@ Get the signature for the value's XML documentation Saving and re-reading optimization information - + Optimize one implementation file in the given environment @@ -28098,17 +28787,17 @@ Get the signature for the value's XML documentation e.g. if they use SuppressUnmanagedCodeSecurityAttribute - + Functional update - + Functional creation of a value, immediate - + Functional creation of a value, using delayed reading via a metadata index, for ilread.fs @@ -28326,6 +29015,11 @@ Get the signature for the value's XML documentation Do not use this + + + Indicates the type parameter allows ref struct, i.e. an anti constraint. + + Indicates the type argument must have a public nullary constructor. @@ -28392,6 +29086,16 @@ Get the signature for the value's XML documentation Method parameters and return values. + + + Already computed + + + + + Computed by ilread.fs based on metadata index + + Represents the efficiency-oriented storage of ILAttributes in another item. @@ -28772,7 +29476,7 @@ Get the signature for the value's XML documentation Checks if an assembly resolution may represent a primary assembly that actually contains the - definition of Sytem.Object. Note that the chosen target primary assembly may not actually be the one + definition of System.Object. Note that the chosen target primary assembly may not actually be the one that contains the definition of System.Object - it is just the one we are choosing to emit for. @@ -28917,7 +29621,7 @@ Get the signature for the value's XML documentation if one doesn't exist already. - + Injecting code into existing code blocks. A branch will be added from the given instructions to the (unique) entry of @@ -28935,7 +29639,7 @@ Get the signature for the value's XML documentation idiom. - + Make a type definition. @@ -29320,7 +30024,7 @@ Get the signature for the value's XML documentation - Write a binary to an array of bytes auitable for dynamic loading. + Write a binary to an array of bytes suitable for dynamic loading. @@ -29773,7 +30477,7 @@ Get the signature for the value's XML documentation - The help messages for this dependency manager inster + The help messages for this dependency manager instance @@ -29793,7 +30497,7 @@ Get the signature for the value's XML documentation - Succeded? + Succeeded? @@ -29915,7 +30619,7 @@ Get the signature for the value's XML documentation - Allow forking and subsuequent modification of the TcConfig via a new TcConfigBuilder + Allow forking and subsequent modification of the TcConfig via a new TcConfigBuilder @@ -30043,7 +30747,7 @@ Get the signature for the value's XML documentation - Indicates if the assembly has an F# signature data attribute auitable for use with this version of F# tooling + Indicates if the assembly has an F# signature data attribute suitable for use with this version of F# tooling @@ -30222,11 +30926,21 @@ Get the signature for the value's XML documentation Determine if an IL resource attached to an F# assembly is an F# quotation data resource for reflected definitions + + + Determine if an IL resource attached to an F# assembly is an F# optimization data resource (data stream B) + + Determine if an IL resource attached to an F# assembly is an F# optimization data resource + + + Determine if an IL resource attached to an F# assembly is an F# signature data resource (data stream B) + + Determine if an IL resource attached to an F# assembly is an F# signature data resource @@ -30298,19 +31012,9 @@ Get the signature for the value's XML documentation Output all of a diagnostic to a buffer, including range - - - Indicates if a diagnostic should be reported as an error - - - - - Indicates if a diagnostic should be reported as a warning - - - + - Indicates if a diagnostic should be reported as an informational + Compute new severity according to the various diagnostics options @@ -30385,7 +31089,7 @@ Get the signature for the value's XML documentation - Contains logic to prepare, post-process, filter and emit compiler diagnsotics + Contains logic to prepare, post-process, filter and emit compiler diagnostics @@ -30431,6 +31135,12 @@ Get the signature for the value's XML documentation File identifiers and its content extract for dependency resolution + + + A single identifier that could be the name of a module. + Example use-case: `let x = nameof Foo` where `Foo` is a module. + + Being explicit about nested modules allows for easier reasoning what namespaces (paths) are open. @@ -30530,11 +31240,16 @@ Get the signature for the value's XML documentation A Directed Acyclic Graph (DAG) of arbitrary nodes. - + Create a simple Mermaid graph and save it under the path specified. + + + Create a simple Mermaid graph + + Print the contents of the graph to the standard output. @@ -30545,12 +31260,22 @@ Get the signature for the value's XML documentation Create a reverse of the graph. + + + Get a sub-graph of the graph containing only the nodes reachable from the given node. + + Create a transitive closure of the graph in O(n^2) time (but parallelize it). The resulting graph contains edge A -> C iff the input graph contains a (directed) non-zero length path from A to C. + + + Get all nodes of the graph. + + Build the graph. @@ -30588,7 +31313,7 @@ Get the signature for the value's XML documentation The file order is used by the resolution algorithm to remove edges not allowed by the language. - Ie. if file B preceeds file A, the resulting graph will not contain edge B -> A. + Ie. if file B precedes file A, the resulting graph will not contain edge B -> A. Hence this function cannot, as it stands, be used to help create a "reasonable" file ordering for an unordered set of files. @@ -30621,7 +31346,7 @@ Get the signature for the value's XML documentation A generic method to generate results for a graph of work items in parallel. - Processes leaves first, and after each node has been processed, schedules any now unblocked dependants. + Processes leaves first, and after each node has been processed, schedules any now unblocked dependents. Returns a list of results, one per item. Uses the Thread Pool to schedule work. @@ -30668,6 +31393,43 @@ Get the signature for the value's XML documentation State used to de-deduplicate module names along a list of file names + + + An artificial node that will add the earlier processed signature information to the TcEnvFromImpls. + Dependents on this type of node will perceive that a file is known in both TcEnvFromSignatures and TcEnvFromImpls. + Even though the actual implementation file was not type-checked. + + + + + A real physical file in the current project. + This can be either an implementation or a signature file. + + + + + Auxiliary type for re-using signature information in TcEnvFromImpls. + + TcState has two typing environments: TcEnvFromSignatures && TcEnvFromImpls + When type checking a file, depending on the type (implementation or signature), it will use one of these typing environments (TcEnv). + Checking a file will populate the respective TcEnv. + + When a file has a dependencies, the information of the signature file in case a pair (implementation file backed by a signature) will suffice to type-check that file. + Example: if `B.fs` has a dependency on `A`, the information of `A.fsi` is enough for `B.fs` to type-check, on condition that information is available in the TcEnvFromImpls. + We introduce a special ArtificialImplFile node in the graph to satisfy this. `B.fs -> [ A.fsi ]` becomes `B.fs -> [ ArtificialImplFile A ]. + The `ArtificialImplFile A` node will duplicate the signature information which A.fsi provided earlier. + Processing a `ArtificialImplFile` node will add the information from the TcEnvFromSignatures to the TcEnvFromImpls. + This means `A` will be known in both TcEnvs and therefor `B.fs` can be type-checked. + By doing this, we can speed up the graph processing as type checking a signature file is less expensive than its implementation counterpart. + + When we need to actually type-check an implementation file backed by a signature, we cannot have the duplicate information of the signature file present in TcEnvFromImpls. + Example `A.fs -> [ A.fsi ]`. An implementation file always depends on its signature. + Type-checking `A.fs` will add the actual information to TcEnvFromImpls and we do not depend on the `ArtificialImplFile A` for `A.fs`. + + In order to deal correctly with the `ArtificialImplFile` logic, we need to transform the resolved graph to contain the additional pair nodes. + After we have type-checked the graph, we exclude the ArtificialImplFile nodes as they are not actual physical files in our project. + + Check a single input and finish the checking @@ -30806,7 +31568,7 @@ Get the signature for the value's XML documentation - The resolved pacakge references along with the ranges of the #r positions in each file. + The resolved package references along with the ranges of the #r positions in each file. @@ -31048,7 +31810,7 @@ Get the signature for the value's XML documentation - Indicates if attribute matchies the full name of the given type parameter + Indicates if attribute matches the full name of the given type parameter @@ -31081,6 +31843,11 @@ Get the signature for the value's XML documentation Indicates if the type is a struct tuple type. The GenericArguments property returns the elements of the tuple type. + + + Indicates this type is assumed to support the null value + + Indicates if the type is a measure type. @@ -31111,6 +31878,11 @@ Get the signature for the value's XML documentation Indicates if the type is constructed using a named entity, including array and byref types + + + Indicates this type is known to have a null annotation + + Get the generic parameter data for a generic parameter type @@ -31649,7 +32421,7 @@ Get the signature for the value's XML documentation - Check if this method has an entrpoint that accepts witness arguments and if so return + Check if this method has an entrypoint that accepts witness arguments and if so return the name of that entrypoint and information about the additional witness arguments @@ -31847,7 +32619,7 @@ Get the signature for the value's XML documentation - Indicates if the the method required by the constraint must be static + Indicates if the method required by the constraint must be static @@ -32427,6 +33199,11 @@ Get the signature for the value's XML documentation Get the generic parameters, possibly including unit-of-measure parameters + + + Get the generic parameters, possibly including unit-of-measure parameters + + Get the full name of the type or module @@ -32642,7 +33419,7 @@ Get the signature for the value's XML documentation Gets the display name for the symbol. Double backticks are added if the name is not a valid identifier. - For FSharpParameter symbols without a name for the paramater, this returns "````" + For FSharpParameter symbols without a name for the parameter, this returns "````" @@ -33253,6 +34030,16 @@ Get the signature for the value's XML documentation https://learn.microsoft.com/dotnet/core/diagnostics/distributed-tracing-concepts?source=recommendations + + + Range of the signature type identifier. + + + + + Range of the implementation type identifier. + + Argument identifier range within signature file @@ -34394,6 +35181,11 @@ Get the signature for the value's XML documentation Represents the syntax tree for a 'val' definition in an abstract slot or a signature file + + + Represents one or two access modifier(s) in a property signature + + Gets the syntax range of this construct @@ -34728,6 +35520,11 @@ Get the signature for the value's XML documentation Gets the syntax range of this construct + + + Is a pattern used in a true match clause e.g. | pat -> expr + + Represents a clause in a 'match' expression @@ -34922,6 +35719,16 @@ Get the signature for the value's XML documentation Represents a syntax tree for simple F# patterns + + + Gets the trivia associated with this construct + + + + + Gets the syntax range of this construct + + F# syntax: f?x @@ -35370,6 +36177,11 @@ Get the signature for the value's XML documentation F# syntax: const expr, used in static parameters to type providers + + + F# syntax: null, used in parameters to type providers + + F# syntax: 1, "abc" etc, used in parameters to type providers @@ -35495,6 +36307,11 @@ Get the signature for the value's XML documentation F# syntax is 'typar: comparison + + + F# syntax is 'typar : null + + F# syntax is 'typar: null @@ -35960,9 +36777,20 @@ Get the signature for the value's XML documentation path helps to track AST nodes that were passed during traversal + + + Represents the set of ancestor nodes traversed before reaching + the current node in a traversal of the untyped abstract syntax tree. + + + + + The range of the syntax node, inclusive of its contents. + + - Used to track route during traversal of syntax using SyntaxTraversal.Traverse + Represents a major syntax node in the untyped abstract syntax tree. @@ -36076,7 +36904,7 @@ Get the signature for the value's XML documentation In any cases it is used it probably indicates that text is being generated which: 1. does not contain double-backticks for non-identifiers - 2. does not put parentheses arounf operators or active pattern names + 2. does not put parentheses around operators or active pattern names If the text is immediately in quotes, this is generally ok, e.g. @@ -36187,6 +37015,278 @@ Get the signature for the value's XML documentation Anything to do with special names of identifiers and other lexical rules + + + Applies the given function to each node of the AST and its context (path) + down to a given position, returning Some x for the last (deepest) node + for which the function returns Some x for some value x, otherwise None. + Traversal is short-circuited if no matching node is found through the given position. + + The function to apply to each node and its context to derive an optional value. + The position in the input file down to which to apply the function. + The AST to search. + The last (deepest) value for which the function returns Some, or None if no matching node is found. + + + let range = + (pos, parsedInput) + ||> ParsedInput.tryPickLast (fun path node -> + match node, path with + | FuncIdent range -> Some range + | _ -> None) + + + + + + Applies the given function to each node of the AST and its context (path) + down to a given position, returning Some x for the first node + for which the function returns Some x for some value x, otherwise None. + Traversal is short-circuited if no matching node is found through the given position. + + The function to apply to each node and its context to derive an optional value. + The position in the input file down to which to apply the function. + The AST to search. + The first value for which the function returns Some, or None if no matching node is found. + + + let range = + (pos, parsedInput) ||> ParsedInput.tryPick (fun _path node -> + match node with + | SyntaxNode.SynExpr (SynExpr.InterpolatedString (range = range)) when + rangeContainsPos range pos + -> Some range + | _ -> None) + + + + + + Dives to the deepest node that contains the given position, + returning the node and its path if found, or None if no + node contains the position. + + The position in the input file down to which to dive. + The AST to search. + The deepest node containing the given position, along with the path taken through the node's ancestors to find it. + + + + Applies a function to each node of the AST and its context (path) + until the folder returns None, threading an accumulator through the computation. + + The function to use to update the state given each node and its context, or to stop traversal by returning None. + The initial state. + The AST to fold over. + The final state. + + + + Applies a function to each node of the AST and its context (path), + threading an accumulator through the computation. + + The function to use to update the state given each node and its context. + The initial state. + The AST to fold over. + The final state. + + + let unnecessaryParentheses = + (HashSet Range.comparer, parsedInput) ||> ParsedInput.fold (fun acc path node -> + match node with + | SyntaxNode.SynExpr (SynExpr.Paren (expr = inner; rightParenRange = Some _; range = range)) when + not (SynExpr.shouldBeParenthesizedInContext getLineString path inner) + -> + ignore (acc.Add range) + acc + + | SyntaxNode.SynPat (SynPat.Paren (inner, range)) when + not (SynPat.shouldBeParenthesizedInContext path inner) + -> + ignore (acc.Add range) + acc + + | _ -> acc) + + + + + + Applies the given predicate to each node of the AST and its context (path) + down to a given position, returning true if a matching node is found, otherwise false. + Traversal is short-circuited if no matching node is found through the given position. + + The predicate to match each node against. + The position in the input file down to which to apply the function. + The AST to search. + True if a matching node is found, or false if no matching node is found. + + + let isInTypeDefn = + (pos, parsedInput) + ||> ParsedInput.exists (fun _path node -> + match node with + | SyntaxNode.SynTypeDefn _ -> true + | _ -> false) + + + + + + Holds operations for working with the + untyped abstract syntax tree (). + + + + + Applies the given function to each node of the AST and its context (path) + down to a given position, returning Some x for the last (deepest) node + for which the function returns Some x for some value x, otherwise None. + Traversal is short-circuited if no matching node is found through the given position. + + The function to apply to each node and its context to derive an optional value. + The position in the input file down to which to apply the function. + The AST to search. + The last (deepest) value for which the function returns Some, or None if no matching node is found. + + + let range = + (pos, ast) + ||> SyntaxNodes.tryPickLast (fun path node -> + match node, path with + | FuncIdent range -> Some range + | _ -> None) + + + + + + Applies the given function to each node of the AST and its context (path) + down to a given position, returning Some x for the first node + for which the function returns Some x for some value x, otherwise None. + Traversal is short-circuited if no matching node is found through the given position. + + The function to apply to each node and its context to derive an optional value. + The position in the input file down to which to apply the function. + The AST to search. + The first value for which the function returns Some, or None if no matching node is found. + + + let range = + (pos, ast) ||> SyntaxNodes.tryPick (fun _path node -> + match node with + | SyntaxNode.SynExpr (SynExpr.InterpolatedString (range = range)) when + rangeContainsPos range pos + -> Some range + | _ -> None) + + + + + + Dives to the deepest node that contains the given position, + returning the node and its path if found, or None if no + node contains the position. + + The position in the input file down to which to dive. + The AST to search. + The deepest node containing the given position, along with the path taken through the node's ancestors to find it. + + + + Applies a function to each node of the AST and its context (path) + until the folder returns None, threading an accumulator through the computation. + + The function to use to update the state given each node and its context, or to stop traversal by returning None. + The initial state. + The AST to fold over. + The final state. + + + + Applies a function to each node of the AST and its context (path), + threading an accumulator through the computation. + + The function to use to update the state given each node and its context. + The initial state. + The AST to fold over. + The final state. + + + let unnecessaryParentheses = + (HashSet Range.comparer, ast) ||> SyntaxNodes.fold (fun acc path node -> + match node with + | SyntaxNode.SynExpr (SynExpr.Paren (expr = inner; rightParenRange = Some _; range = range)) when + not (SynExpr.shouldBeParenthesizedInContext getLineString path inner) + -> + ignore (acc.Add range) + acc + + | SyntaxNode.SynPat (SynPat.Paren (inner, range)) when + not (SynPat.shouldBeParenthesizedInContext path inner) + -> + ignore (acc.Add range) + acc + + | _ -> acc) + + + + + + Applies the given predicate to each node of the AST and its context (path) + down to a given position, returning true if a matching node is found, otherwise false. + Traversal is short-circuited if no matching node is found through the given position. + + The predicate to match each node against. + The position in the input file down to which to apply the function. + The AST to search. + True if a matching node is found, or false if no matching node is found. + + + let isInTypeDefn = + (pos, ast) + ||> SyntaxNodes.exists (fun _path node -> + match node with + | SyntaxNode.SynTypeDefn _ -> true + | _ -> false) + + + + + + Holds operations for working with the untyped abstract syntax tree. + + + + + Extracts the , if any, + from the given . + + + + + Holds operations for working with s + in the untyped abstract syntax tree (AST). + + + + + Returns true if the given expression should be parenthesized in the given context, otherwise false. + + A function for getting the text of a given source line. + The expression's ancestor nodes. + The expression to check. + True if the given expression should be parenthesized in the given context, otherwise false. + + + + Returns true if the given pattern should be parenthesized in the given context, otherwise false. + + The pattern's ancestor nodes. + The pattern to check. + True if the given pattern should be parenthesized in the given context, otherwise false. + A kind that determines what range in a source's text is semantically classified as after type-checking. @@ -36997,7 +38097,7 @@ Get the signature for the value's XML documentation These methods are very old and are mostly to do with extracting "long identifier islands" A.B.C - from F# source code, an approach taken from pre-F# VS samples for implementing intelliense. + from F# source code, an approach taken from pre-F# VS samples for implementing intellisense. This code should really no longer be needed since the language service has access to parsed F# source code ASTs. However, the long identifiers are still passed back to GetDeclarations and friends in the @@ -37060,7 +38160,7 @@ Get the signature for the value's XML documentation - Stores the range for a construct, the sub-range that should be collapsed for outlinging, + Stores the range for a construct, the sub-range that should be collapsed for outlining, a tag for the construct type, and a tag for the collapse style @@ -37081,17 +38181,6 @@ Get the signature for the value's XML documentation Returns outlining ranges for given parsed input. - - - Gets the ranges of all unnecessary pairs of parentheses in a file. - - Note that this may include pairs of nested ranges each of whose - lack of necessity depends on the other's presence, such - that it is valid to remove either set of parentheses but not both, e.g.: - - (x.M(y)).N → (x.M y).N ↮ x.M(y).N - - Get all unused declarations in a file @@ -37591,7 +38680,7 @@ Get the signature for the value's XML documentation Get or set the floating point format used in the output of the interactive session. - Gets or sets a the current event loop being used to process interactions. + Gets or sets the current event loop being used to process interactions. The command line arguments after ignoring the arguments relevant to the interactive @@ -37628,7 +38717,7 @@ Get the signature for the value's XML documentation Get or set the floating point format used in the output of the interactive session. - Gets or sets a the current event loop being used to process interactions. + Gets or sets the current event loop being used to process interactions. The command line arguments after ignoring the arguments relevant to the interactive @@ -37862,7 +38951,7 @@ Get the signature for the value's XML documentation This is safe for use from non-compiler threads but the objects returned must in many cases be accessed only from the compiler thread. - + Create the incremental builder @@ -38090,7 +39179,7 @@ Get the signature for the value's XML documentation Given the position of an expression, attempts to find the range of the - '!' in a derefence operation of that expression, like: + '!' in a dereference operation of that expression, like: '!expr', '!(expr)', etc. @@ -38300,7 +39389,7 @@ Get the signature for the value's XML documentation Internal constructor - + Internal constructor @@ -38458,7 +39547,7 @@ Get the signature for the value's XML documentation Lays out and returns the formatted signature for the typechecked file as source text. - + Internal constructor - check a file and collect errors @@ -38664,7 +39753,7 @@ Get the signature for the value's XML documentation - This is the unique identifier for the project, it is case sensitive. If it's None, will key off of ProjectFileName in our caching. + This is the unique identifier for the project, it is case-sensitive. If it's None, will key off of ProjectFileName in our caching. @@ -38699,6 +39788,41 @@ Get the signature for the value's XML documentation Delays the creation of an ILModuleReader + + + Try to get recent approximate type check results for a file. + + + + + Parse and typecheck the whole project. + + + + + Parses and checks the source file and returns untyped AST and check results. + + + + + Fetch the parse information from the background compiler (which checks w.r.t. the FileSystem API) + + + + + Fetch the check information from the background compiler (which checks w.r.t. the FileSystem API) + + + + + Type-check the result obtained by parsing, but only if the antecedent type checking context is available. + + + + + Type-check the result obtained by parsing. Force the evaluation of the antecedent type checking context if needed. + + Notify the host that a project has been fully checked in the background (using file contents provided by the file system API) @@ -38768,7 +39892,7 @@ Get the signature for the value's XML documentation The path for the file. The file name is also as a module name for implicit top level modules (e.g. in scripts). The source to be parsed. Parsing options for the project or script. - Store the parse in a size-limited cache assocaited with the FSharpChecker. Default: true + Store the parse in a size-limited cache associated with the FSharpChecker. Default: true An optional string used for tracing compiler operations associated with this request. @@ -38779,7 +39903,7 @@ Get the signature for the value's XML documentation The path for the file. The file name is used as a module name for implicit top level modules (e.g. in scripts). The source to be parsed. Parsing options for the project or script. - Store the parse in a size-limited cache assocaited with the FSharpChecker. Default: true + Store the parse in a size-limited cache associated with the FSharpChecker. Default: true An optional string used for tracing compiler operations associated with this request. @@ -38846,6 +39970,12 @@ Get the signature for the value's XML documentation Parsing options for the project or script. An optional string used for tracing compiler operations associated with this request. + + + This function is called when the configuration is known to have changed for reasons not encoded in the projectSnapshot. + For example, dependent references may have been deleted or created. + + This function is called when the configuration is known to have changed for reasons not encoded in the ProjectOptions. @@ -38859,6 +39989,22 @@ Get the signature for the value's XML documentation This function is called when the entire environment is known to have changed for reasons not encoded in the ProjectOptions of any project/compilation. + + Used to differentiate between scripts, to consider each script a separate project. Also used in formatted error messages. + The source for the file. + DocumentSource to load any additional files. + Is the preview compiler enabled. + Indicates when the script was loaded into the editing environment, + so that an 'unload' and 'reload' action will cause the script to be considered as a new project, + so that references are re-resolved. + Other flags for compilation. + Add a default reference to the FSharp.Compiler.Interactive.Settings library. + Use the implicit references from the .NET SDK. + Set up compilation and analysis for .NET Framework scripts. + Override the .NET SDK used for default references. + An optional unique stamp for the options. + An optional string used for tracing compiler operations associated with this request. + For a given script file, get the FSharpProjectOptions implied by the #load closure. @@ -38916,6 +40062,15 @@ Get the signature for the value's XML documentation Indicates that parsing should assume the INTERACTIVE define and related settings Indicates that compilation should assume the EDITING define and related settings + + + Get semantic classification for a file. + + + The file name for the file. + The project snapshot for which we want to get the semantic classification. + An optional string used for tracing compiler operations associated with this request. + Get semantic classification for a file. @@ -38975,17 +40130,18 @@ Get the signature for the value's XML documentation Indicate whether name suggestion should be enabled Indicate whether all symbol uses should be kept in background checking Indicates whether a table of symbol keys should be kept for background compilation - Indicates whether to perform partial type checking. Cannot be set to true if keepAssmeblyContents is true. If set to true, can cause duplicate type-checks when richer information on a file is needed, but can skip background type-checking entirely on implementation files with signature files. + Indicates whether to perform partial type checking. Cannot be set to true if keepAssemblyContents is true. If set to true, can cause duplicate type-checks when richer information on a file is needed, but can skip background type-checking entirely on implementation files with signature files. Indicates whether to resolve references in parallel. When set to true we create a set of all identifiers for each parsed file which can be used to speed up finding references. Default: FileSystem. You can use Custom source to provide a function that will return the source for a given file path instead of reading it from the file system. Note that with this option the FSharpChecker will also not monitor the file system for file changes. It will expect to be notified of changes via the NotifyFileChanged method. - Default: true. Indicates whether to keep parsing results in a cache. + Default: false. Indicates whether we use a new experimental background compiler. This does not yet support all features Compile using the given flags. Source files names are resolved via the FileSystem API. The output file must be given by a -o flag. The first argument is ignored and can just be "fsc.exe". + The method returns the collected diagnostics, and (possibly) a terminating exception. The command line arguments for the project build. @@ -39060,6 +40216,230 @@ Get the signature for the value's XML documentation Used for unit testing + + + Diagnostics handler for parsing & type checking while processing a single file + + + + + Create a new snapshot with given source files replacing files in this snapshot with the same name. Other files remain unchanged. + + + + + A snapshot of an F# project. This type contains all the necessary information for type checking a project. + + + + + An identifier of an F# project. This serves to identify the same project as it changes over time and enables us to clear obsolete data from caches. + + + + + A reference to an ILModuleReader. + + The fully qualified path to the output of the referenced project. This should be the same value as the -r reference in the project options for this referenced project. + A function that calculates a last-modified timestamp for this reference. This will be used to determine if the reference is up-to-date. + A function that creates an ILModuleReader for reading module data. + + + + A reference to any portable executable, including F#. The stream is owned by this reference. + The stream will be automatically disposed when there are no references to FSharpReferencedProject and is GC collected. + Once the stream is evaluated, the function that constructs the stream will no longer be referenced by anything. + If the stream evaluation throws an exception, it will be automatically handled. + + A function that calculates a last-modified timestamp for this reference. This will be used to determine if the reference is up-to-date. + A function that opens a Portable Executable data stream for reading. + + + + A reference to an F# project. The physical data for it is stored/cached inside of the compiler service. + + The fully qualified path to the output of the referenced project. This should be the same value as the -r reference in the project options for this referenced project. + Snapshot of the referenced F# project + + + + The fully qualified path to the output of the referenced project. This should be the same value as the -r + reference in the project options for this referenced project. + + + + + Creates a reference for an F# project. The physical data for it is stored/cached inside of the compiler service. + + The fully qualified path to the output of the referenced project. This should be the same value as the -r reference in the project options for this referenced project. + The project snapshot for this F# project + + + + All required information for compiling a project except the source files. It's kept separate so it can be reused + for different stages of a project snapshot and also between changes to the source files. + + + + + Project snapshot with file sources loaded + + + + + Project snapshot with filenames and versions given as initial input + + + + + A key including the public surface or signature for this snapshot + + + + + Version for parsing - doesn't include any references because they don't affect parsing (...right?) + + + + + A key for this snapshot but without file versions. So it will be the same across any in-file changes. + + + + + A key including the public surface or signature for this snapshot and the last file (even if it's not a signature file) + + + + + A full key for this snapshot, any change will cause this to change. + + + + + Create a new snapshot with source files only up to the given file name (inclusive) + + + + + Create a new snapshot with source files only up to the given index (inclusive) + + + + + Create a new snapshot with given source files replacing files in this snapshot with the same name. Other files remain unchanged. + + + + + Create a new snapshot with only source files at the given indexes + + + + + The newest last modified time of any file in this snapshot including the project file + + + + + A snapshot of an F# project. The source file type can differ based on which stage of compilation the snapshot is used for. + + + + + An on-disk reference needed for project compilation. + + + + + A source file snapshot with parsed syntax tree + + + + + A source file snapshot with loaded source text. + + + + + A snapshot of an F# source file. + + + + + A common interface for an F# source file snapshot that can be used across all stages (lazy, source loaded, parsed) + + + + + If a symbol is an attribute check if given set of names contains its name without the Attribute suffix + + + + + Determine whether two (fileName,sourceText,options) keys should be identical w.r.t. resource usage + + + + + Determine whether two (fileName,sourceText,options) keys should be identical w.r.t. checking + + + + + Determine whether two (fileName,sourceText,options) keys should be identical w.r.t. parsing + + + + + Determine whether two (fileName,options) keys should be identical w.r.t. resource usage + + + + + Determine whether two (fileName,options) keys are identical w.r.t. affect on checking + + + + + A dependency graph for a project - it will contain all files in the project + + + + + A dependency graph for a single file - it will be missing files which this file does not depend on + + + + + Things we need to start parsing and checking files for a given project snapshot + + + + + Accumulated diagnostics, last file first + + + + + Disambiguation table for module names + + + + + Accumulated diagnostics, last file first + + + + + Disambiguation table for module names + + + + + Accumulated results of type checking. The minimum amount of state in order to continue type-checking following files. + + test if an arg is a path to fsc.exe diff --git a/lib/fcs/FSharp.Core.dll b/lib/fcs/FSharp.Core.dll index 8066a77219..7d4ac67211 100644 Binary files a/lib/fcs/FSharp.Core.dll and b/lib/fcs/FSharp.Core.dll differ diff --git a/lib/fcs/FSharp.Core.xml b/lib/fcs/FSharp.Core.xml index a3439f5fdf..a86df95410 100644 --- a/lib/fcs/FSharp.Core.xml +++ b/lib/fcs/FSharp.Core.xml @@ -2,6 +2,23 @@ FSharp.Core + + Gets the name of the method on the builder to use to construct the collection. + This should match the metadata name of the target method. For example, this might be ".ctor" if targeting the type's constructor. + + + Gets the type of the builder to use to construct the collection. + + + Initialize the attribute to refer to the method on the type. + The type of the builder to use to construct the collection. + The name of the method on the builder to use to construct the collection. + + must refer to a static method that accepts a single parameter of + type and returns an instance of the collection being built containing + a copy of the data from that span. In future releases of .NET, additional patterns may be supported. + + Specifies the types of members that are dynamically accessed. @@ -952,7 +969,7 @@ open System.Collections.Generic - let dict = new Dictionary<int[],int>(HashIdentity.Structural) + let dict = new Dictionary<int array,int>(HashIdentity.Structural) let arr1 = [| 1;2;3 |] let arr2 = [| 1;2;3 |] @@ -963,7 +980,7 @@ - Get an implementation of equality semantics semantics using limited structural equality and structural hashing. + Get an implementation of equality semantics using limited structural equality and structural hashing. The limit on the number of hashing operations used. @@ -1011,7 +1028,7 @@ open System.Collections.Generic - let dict = new Dictionary<int[],int>(HashIdentity.Structural) + let dict = new Dictionary<int array,int>(HashIdentity.Structural) let arr1 = [| 1;2;3 |] let arr2 = [| 1;2;3 |] @@ -1074,6 +1091,280 @@ Common notions of value ordering implementing the interface, for constructing sorted data structures and performing sorting operations. + + + Returns a random sample of elements from the given sequence with the specified randomizer function, each element can be selected only once. + + + The randomizer function, must return a float number from [0.0..1.0) range. + The number of elements to return. + The input sequence. + + A sequence of randomly selected elements from the input sequence. + + Thrown when the input sequence is null. + Thrown when the input sequence is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input sequence. + Thrown when the randomizer function returns a number outside the range [0.0..1.0). + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomSampleBy Random.Shared.NextDouble 3 + + Can evaluate to seq { 3; 1; 2 }. + + + + + Returns a random sample of elements from the given sequence with the specified Random instance, each element can be selected only once. + + + The Random instance. + The number of elements to return. + The input sequence. + + A sequence of randomly selected elements from the input sequence. + + Thrown when the input sequence is null. + Thrown when the random argument is null. + Thrown when the input sequence is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input sequence. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomSampleWith Random.Shared 3 + + Can evaluate to seq { 3; 1; 2 }. + + + + + Returns a random sample of elements from the given sequence, each element can be selected only once. + + + The number of elements to return. + The input sequence. + + A sequence of randomly selected elements from the input sequence. + + Thrown when the input sequence is null. + Thrown when the input sequence is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input sequence. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomSample 3 + + Can evaluate to seq { 3; 1; 2 }. + + + + + Returns a sequence of random elements from the given sequence with the specified randomizer function, each element can be selected multiple times. + + + The randomizer function, must return a float number from [0.0..1.0) range. + The number of elements to return. + The input sequence. + + A sequence of randomly selected elements from the input sequence. + + Thrown when the input sequence is null. + Thrown when the input sequence is empty. + Thrown when count is less than 0. + Thrown when the randomizer function returns a number outside the range [0.0..1.0). + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomChoicesBy Random.Shared.NextDouble 3 + + Can evaluate to seq { 3; 1; 3 }. + + + + + Returns a sequence of random elements from the given sequence with the specified Random instance, each element can be selected multiple times. + + + The Random instance. + The number of elements to return. + The input sequence. + + A sequence of randomly selected elements from the input sequence. + + Thrown when the input sequence is null. + Thrown when the random argument is null. + Thrown when the input sequence is empty. + Thrown when count is less than 0. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomChoicesWith Random.Shared 3 + + Can evaluate to seq { 3; 1; 3 }. + + + + + Returns an sequence of random elements from the given sequence, each element can be selected multiple times. + + + The number of elements to return. + The input sequence. + + A sequence of randomly selected elements from the input sequence. + + Thrown when the input sequence is null. + Thrown when the input sequence is empty. + Thrown when count is less than 0. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomChoices 3 + + Can evaluate to seq { 3; 1; 3 }. + + + + + Returns a random element from the given sequence with the specified randomizer function. + + + The randomizer function, must return a float number from [0.0..1.0) range. + The input sequence. + + A randomly selected element from the input sequence. + + Thrown when the input sequence is null. + Thrown when the input sequence is empty. + Thrown when the randomizer function returns a number outside the range [0.0..1.0). + + + + let inputs = seq { 0; 1; 2; 3; 4 } + let randomizer = Random.Shared.NextDouble + + inputs |> Seq.randomChoiceBy randomizer + + Can evaluate to 3. + + + + + Returns a random element from the given sequence with the specified Random instance. + + + The Random instance. + The input sequence. + + A randomly selected element from the input array. + + Thrown when the input sequence is null. + Thrown when the random argument is null. + Thrown when the input sequence is empty. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomChoiceWith Random.Shared + + Can evaluate to 3. + + + + + Returns a random element from the given sequence. + + + The input sequence. + + A randomly selected element from the input sequence. + + Thrown when the input sequence is null. + Thrown when the input sequence is empty. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomChoice + + Can evaluate to 3. + + + + Return a new sequence shuffled in a random order with the specified randomizer function. + + The randomizer function, must return a float number from [0.0..1.0) range. + The input sequence. + + The result sequence. + Thrown when the input sequence is null. + Thrown when the randomizer function returns a number outside the range [0.0..1.0). + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomShuffleBy Random.Shared.NextDouble + + Can evaluate to seq { 0; 2; 4; 3; 1 }. + + + + Return a new sequence shuffled in a random order with the specified Random instance. + + The Random instance. + The input sequence. + + The result sequence. + + Thrown when the input sequence is null. + Thrown when the random argument is null. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomShuffleWith Random.Shared + + Can evaluate to seq { 0; 2; 4; 3; 1 }. + + + + Return a new sequence shuffled in a random order. + + The input sequence. + + The result sequence. + + Thrown when the input sequence is null. + + + + let inputs = seq { 0; 1; 2; 3; 4 } + + inputs |> Seq.randomShuffle + + Can evaluate to seq { 0; 2; 4; 3; 1 }. + + Return a new sequence with new items inserted before the given index. @@ -1891,7 +2182,7 @@ | In i -> acc + i | Out o -> acc - o) - Evaluates to a sequence yielding the same results as seq { 2; 1; 3; 0 } by processing each input from back to front. Note 0 is the intial + Evaluates to a sequence yielding the same results as seq { 2; 1; 3; 0 } by processing each input from back to front. Note 0 is the initial state, 3 the next state, 1 the next state, and 2 the final state, and the states are produced from back to front. @@ -1920,7 +2211,7 @@ | In i -> acc + i | Out o -> acc - o) - Evaluates to a sequence yielding the same results as seq { 0; 1; -1; 2 }. Note 0 is the intial + Evaluates to a sequence yielding the same results as seq { 0; 1; -1; 2 }. Note 0 is the initial state, 1 the next state, -1 the next state, and 2 the final state. @@ -2035,7 +2326,7 @@ let readonlyView = input |> Seq.readonly - (readonlyView :?> int[]).[1] <- 4 + (readonlyView :?> int array).[1] <- 4 Throws an InvalidCastException. @@ -2703,7 +2994,7 @@ Thrown when the input sequence is null. - + let inputs = ["banana"] @@ -2712,7 +3003,7 @@ Evaluates to Some banana - + let inputs = ["pear"; "banana"] @@ -2721,7 +3012,7 @@ Evaluates to None - + [] |> Seq.tryExactlyOne @@ -2738,7 +3029,7 @@ Thrown when the input sequence is null. Thrown when the input does not have precisely one element. - + let inputs = ["banana"] @@ -2747,7 +3038,7 @@ Evaluates to banana - + let inputs = ["pear"; "banana"] @@ -2756,7 +3047,7 @@ Throws ArgumentException - + [] |> Seq.exactlyOne @@ -3878,137 +4169,380 @@ Contains operations for working with values of type . - - Return a new list with new items inserted before the given index. + + Returns a random sample of elements from the given list using the specified randomizer function, each element can be selected only once. - The index where the items should be inserted. - The values to insert. + The randomizer function, must return a float number from [0.0..1.0) range. + The number of elements to return. The input list. - - The result list. - Thrown when index is below 0 or greater than source.Length. + A list of randomly selected elements from the input list. - + Thrown when the input list is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input list. + Thrown when the randomizer function returns a value outside the range [0, 1). + + - let inputs = [ 0; 1; 2 ] + let inputs = [ 0; 1; 2; 3; 4 ] - inputs |> List.insertManyAt 1 [ 8; 9 ] - Evaluates to [ 0; 8; 9; 1; 2 ]. + inputs |> List.randomSampleBy Random.Shared.NextDouble 3 + Can evaluate to [ 3; 1; 2 ]. - - Return a new list with a new item inserted before the given index. + + Returns a random sample of elements from the given list with the specified Random instance, each element can be selected only once. - The index where the item should be inserted. - The value to insert. + The Random instance. + The number of elements to return. The input list. - - The result list. - Thrown when index is below 0 or greater than source.Length. + A list of randomly selected elements from the input list. - + Thrown when the random argument is null. + Thrown when the input list is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input list. + + - let inputs = [ 0; 1; 2 ] + let inputs = [ 0; 1; 2; 3; 4 ] - inputs |> List.insertAt 1 9 + inputs |> List.randomSampleWith Random.Shared 3 - Evaluates to [ 0; 9; 1; 2 ]. + Can evaluate to [ 3; 1; 2 ]. - - Return a new list with the item at a given index set to the new value. + + Returns a random sample of elements from the given list, each element can be selected only once. - The index of the item to be replaced. - The new value. + The number of elements to return. The input list. - The result list. + A list of randomly selected elements from the input list. - Thrown when index is outside 0..source.Length - 1 + Thrown when the input list is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input list. - + - let inputs = [ 0; 1; 2 ] + let inputs = [ 0; 1; 2; 3; 4 ] - inputs |> List.updateAt 1 9 + inputs |> List.randomSample 3 - Evaluates to [ 0; 9; 2 ]. + Can evaluate to [ 3; 1; 2 ]. - - Return a new list with the number of items starting at a given index removed. + + Returns a list of random elements from the given list using the specified randomizer function. - The index of the item to be removed. - The number of items to remove. + The randomizer function, must return a float number from [0.0..1.0) range. + The number of elements to return. The input list. - The result list. + A list of randomly selected elements from the input list. - Thrown when index is outside 0..source.Length - count + Thrown when the input list is empty. + Thrown when count is less than 0. + Thrown when the randomizer function returns a value outside the range [0, 1). - + - let inputs = [ 0; 1; 2; 3 ] + let inputs = [ 0; 1; 2; 3; 4 ] - inputs |> List.removeManyAt 1 2 + inputs |> List.randomChoicesBy Random.Shared.NextDouble 3 - Evaluates to [ 0; 3 ]. + Can evaluate to [ 3; 1; 3 ]. - - Return a new list with the item at a given index removed. + + Returns a list of random elements from the given list with the specified Random instance, each element can be selected multiple times. - The index of the item to be removed. + The Random instance. + The number of elements to return. The input list. - The result list. + A list of randomly selected elements from the input list. - Thrown when index is outside 0..source.Length - 1 + Thrown when the random argument is null. + Thrown when the input list is empty. + Thrown when count is less than 0. - + - let inputs = [ 0; 1; 2 ] + let inputs = [ 0; 1; 2; 3; 4 ] - inputs |> List.removeAt 1 + inputs |> Array.randomChoicesWith Random.Shared 3 - let inputs = [ 0; 2 ] + Can evaluate to [ 3; 1; 3 ]. - - Combines the three lists into a list of triples. The lists must have equal lengths. + + Returns a list of random elements from the given list. - The first input list. - The second input list. - The third input list. + The number of elements to return. + The input list. - A single list containing triples of matching elements from the input lists. + A list of randomly selected elements from the input list. - + Thrown when the input list is empty. + Thrown when count is less than 0. + + - let numbers = [1; 2] - let names = ["one"; "two"] - let roman = ["I"; "II"] + let inputs = [ 0; 1; 2; 3; 4 ] - List.zip3 numbers names roman + inputs |> List.randomChoices 3 - Evaluates to [(1, "one", "I"); (2, "two", "II")]. + Can evaluate to [ 3; 1; 3 ]. - - Combines the two lists into a list of pairs. The two lists must have equal lengths. + + Returns a random element from the given list using the specified randomizer function. - The first input list. - The second input list. + The randomizer function, must return a float number from [0.0..1.0) range. + The input list. - A single list containing pairs of matching elements from the input lists. + A randomly selected element from the input list. - + Thrown when the input list is empty. + Thrown when the randomizer function returns a value outside the range [0, 1). + + - let numbers = [1; 2] - let names = ["one"; "two"] + let inputs = [ 0; 1; 2; 3; 4 ] + + inputs |> List.randomChoiceBy Random.Shared.NextDouble + + Can evaluate to 3. + + + + Returns a random element from the given list with the specified Random instance, each element can be selected multiple times. + + The Random instance. + The input list. + + A randomly selected element from the input list. + + Thrown when the random argument is null. + Thrown when the input list is empty. + + + + let inputs = [ 0; 1; 2; 3; 4 ] + + inputs |> List.randomChoiceWith Random.Shared + + Can evaluate to 3. + + + + Returns a random element from the given list. + + The input list. + + A randomly selected element from the input list. + + Thrown when the input list is empty. + + + + let inputs = [ 0; 1; 2; 3; 4 ] + + inputs |> List.randomChoice + + Can evaluate to 3. + + + + Return a new list shuffled in a random order using the specified randomizer function. + + The randomizer function, must return a float number from [0.0..1.0) range. + The input list. + + The result list. + + Thrown when the randomizer function returns a value outside the range [0, 1). + + + + let inputs = [ 0; 1; 2; 3; 4 ] + + inputs |> List.randomShuffleBy Random.Shared.NextDouble + + Can evaluate to [ 0; 2; 4; 3; 1 ]. + + + + Return a new list shuffled in a random order with the specified Random instance. + + The Random instance. + The input list. + + The result list. + + Thrown when the random argument is null. + + + + let inputs = [ 0; 1; 2; 3; 4 ] + + inputs |> List.randomShuffleWith Random.Shared + + Can evaluate to [ 0; 2; 4; 3; 1 ]. + + + + Return a new list shuffled in a random order. + + The input list. + + The result list. + + + + let inputs = [ 0; 1; 2; 3; 4 ] + + inputs |> List.randomShuffle + Can evaluate to [ 0; 2; 4; 3; 1 ]. + + + + + Return a new list with new items inserted before the given index. + + The index where the items should be inserted. + The values to insert. + The input list. + + The result list. + + Thrown when index is below 0 or greater than source.Length. + + + + let inputs = [ 0; 1; 2 ] + + inputs |> List.insertManyAt 1 [ 8; 9 ] + Evaluates to [ 0; 8; 9; 1; 2 ]. + + + + + Return a new list with a new item inserted before the given index. + + The index where the item should be inserted. + The value to insert. + The input list. + + The result list. + + Thrown when index is below 0 or greater than source.Length. + + + + let inputs = [ 0; 1; 2 ] + + inputs |> List.insertAt 1 9 + + Evaluates to [ 0; 9; 1; 2 ]. + + + + Return a new list with the item at a given index set to the new value. + + The index of the item to be replaced. + The new value. + The input list. + + The result list. + + Thrown when index is outside 0..source.Length - 1 + + + + let inputs = [ 0; 1; 2 ] + + inputs |> List.updateAt 1 9 + + Evaluates to [ 0; 9; 2 ]. + + + + Return a new list with the number of items starting at a given index removed. + + The index of the item to be removed. + The number of items to remove. + The input list. + + The result list. + + Thrown when index is outside 0..source.Length - count + + + + let inputs = [ 0; 1; 2; 3 ] + + inputs |> List.removeManyAt 1 2 + + Evaluates to [ 0; 3 ]. + + + + Return a new list with the item at a given index removed. + + The index of the item to be removed. + The input list. + + The result list. + + Thrown when index is outside 0..source.Length - 1 + + + + let inputs = [ 0; 1; 2 ] + + inputs |> List.removeAt 1 + + let inputs = [ 0; 2 ] + + + + Combines the three lists into a list of triples. The lists must have equal lengths. + + The first input list. + The second input list. + The third input list. + + A single list containing triples of matching elements from the input lists. + + + + let numbers = [1; 2] + let names = ["one"; "two"] + let roman = ["I"; "II"] + + List.zip3 numbers names roman + + Evaluates to [(1, "one", "I"); (2, "two", "II")]. + + + + Combines the two lists into a list of pairs. The two lists must have equal lengths. + + The first input list. + The second input list. + + A single list containing pairs of matching elements from the input lists. + + + + let numbers = [1; 2] + let names = ["one"; "two"] List.zip numbers names @@ -5690,7 +6224,7 @@ | Tails, Tails -> acc + 1 | _ -> acc) - Evaluates to 1. Note acc is a commonly used abbreviation for "accumulator". + Evaluates to 2. Note acc is a commonly used abbreviation for "accumulator". @@ -6309,143 +6843,450 @@ { Name = "Squidward" Happiness = MostOfTheTimeGrumpy } ] - candidatesForTheTrip - |> List.choose takeJustHappyPersons - - Evaluates to + candidatesForTheTrip + |> List.choose takeJustHappyPersons + + Evaluates to + + [ "SpongeBob"; "Patrick" ] + + + + + + let input3: int option list = [] + + input3 |> List.choose id + Evaluates to: + empty list + + + + + + let input4: string option list = [None; None] + + input4 |> List.choose id + Evaluates to + empty list + + + + + Using the identity function id (is defined like fun x -> x): + + + let input5 = [ Some 1; None; Some 3; None ] + + input5 |> List.choose id // evaluates [1; 3] + + + + + + Returns the average of values in a list generated by applying a function to each element of the list. + + The function to transform the list elements into the values to be averaged. + The input list. + + Thrown when the list is empty. + + The resulting average. + + Calculate average age of persons by extracting their age from a record type. + + type People = { Name: string; Age: int } + + let getAgeAsFloat person = float person.Age + + let people = + [ { Name = "Kirk"; Age = 26 } + { Name = "Spock"; Age = 90 } + { Name = "McCoy"; Age = 37 } ] + + people |> List.averageBy getAgeAsFloat + + Evaluates to + + 51.0 + + + + + Returns the average of the values in a non-empty list. + + The input list. + + Thrown when the input list is empty. + + The resulting average. + + + + [1.0 .. 9.0] |> List.average + + Evaluates to + + 5.0 + + + + + Returns a new list that contains the elements of the first list + followed by elements of the second list. + + The first input list. + The second input list. + + The resulting list. + + + + List.append [ 1..3 ] [ 4..7 ] + + [ 4..7 ] |> List.append [ 1..3 ] + + Evaluates to + + [ 1; 2; 3; 4; 5; 6; 7 ] + + + + + Returns a new list that contains all pairings of elements from two lists. + + The first input list. + The second input list. + + The resulting list of pairs. + + + + let people = [ "Kirk"; "Spock"; "McCoy" ] + let numbers = [ 1; 2 ] + + people |> List.allPairs numbers + + Evaluates to + + [ (1, "Kirk"); (1, "Spock"); (1, "McCoy"); (2, "Kirk"); (2, "Spock"); (2, "McCoy") ] + + + + + Contains operations for working with values of type . + + Operations for collections such as lists, arrays, sets, maps and sequences. See also + F# Collection Types in the F# Language Guide. + + + + Returns a random sample of elements from the given array using the specified randomizer function, each element can be selected only once. + + The randomizer function, must return a float number from [0.0..1.0) range. + The number of elements to return. + The input array. + + An array of randomly selected elements from the input array. + + Thrown when the input array is null. + Thrown when the input array is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input array. + Thrown when the randomizer function returns a value outside the range [0, 1). + + + + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomSampleBy Random.Shared.NextDouble 3 + + Can evaluate to [| 3; 1; 2 |]. + + + + Returns a random sample of elements from the given array with the specified Random instance, each element can be selected only once. + + The Random instance. + The number of elements to return. + The input array. + + An array of randomly selected elements from the input array. + + Thrown when the input array is null. + Thrown when the random argument is null. + Thrown when the input array is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input array. + + + + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomSampleWith Random.Shared 3 + + Can evaluate to [| 3; 1; 2 |]. + + + + Returns a random sample of elements from the given array, each element can be selected only once. + + The number of elements to return. + The input array. + + An array of randomly selected elements from the input array. + + Thrown when the input array is null. + Thrown when the input array is empty. + Thrown when count is less than 0. + Thrown when count is greater than the length of the input array. + + + + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomSample 3 + + Can evaluate to [| 3; 1; 2 |]. + + + + Returns an array of random elements from the given array using the specified randomizer function, each element can be selected multiple times. + + The randomizer function, must return a float number from [0.0..1.0) range. + The number of elements to return. + The input array. + + An array of randomly selected elements from the input array. + + Thrown when the input array is null. + Thrown when the input array is empty. + Thrown when count is less than 0. + Thrown when the randomizer function returns a value outside the range [0, 1). + + + + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomChoicesBy Random.Shared.NextDouble 3 + + Can evaluate to [| 3; 1; 3 |]. + + + + Returns an array of random elements from the given array with the specified Random instance, each element can be selected multiple times. + + The Random instance. + The number of elements to return. + The input array. + + An array of randomly selected elements from the input array. + + Thrown when the input array is null. + Thrown when the random argument is null. + Thrown when the input array is empty. + Thrown when count is less than 0. + + + + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomChoicesWith Random.Shared 3 + + Can evaluate to [| 3; 1; 3 |]. + + + + Returns an array of random elements from the given array, each element can be selected multiple times. + + The number of elements to return. + The input array. + + An array of randomly selected elements from the input array. + + Thrown when the input array is null. + Thrown when the input array is empty. + Thrown when count is less than 0. + + + + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomChoices 3 + + Can evaluate to [| 3; 1; 3 |]. + + + + Returns a random element from the given array using the specified randomizer function. + + The randomizer function, must return a float number from [0.0..1.0) range. + The input array. + + A randomly selected element from the input array. + + Thrown when the input array is null. + Thrown when the input array is empty. + Thrown when the randomizer function returns a value outside the range [0, 1). + + - [ "SpongeBob"; "Patrick" ] + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomChoiceBy Random.Shared.NextDouble + Can evaluate to 3. + + + Returns a random element from the given array with the specified Random instance. - + The Random instance. + The input array. + + A randomly selected element from the input array. + + Thrown when the input array is null. + Thrown when the random argument is null. + Thrown when the input array is empty. + + - let input3: int option list = [] + let inputs = [| 0; 1; 2; 3; 4 |] - input3 |> List.choose id - Evaluates to: - empty list + inputs |> Array.randomChoiceWith Random.Shared + Can evaluate to 3. + + + Returns a random element from the given array. - + The input array. + + A randomly selected element from the input array. + + Thrown when the input array is null. + Thrown when the input array is empty. + + - let input4: string option list = [None; None] + let inputs = [| 0; 1; 2; 3; 4 |] - input4 |> List.choose id - Evaluates to - empty list + inputs |> Array.randomChoice + Can evaluate to 3. - - - Using the identity function id (is defined like fun x -> x): + + + Sorts input array in a random order using the specified randomizer function by mutating the array in-place. + + The randomizer function, must return a float number from [0.0..1.0) range. + The input array. + + Thrown when the input array is null. + Thrown when the randomizer function returns a value outside the range [0, 1). + + - - let input5 = [ Some 1; None; Some 3; None ] + let inputs = [| 0; 1; 2; 3; 4 |] - input5 |> List.choose id // evaluates [1; 3] + inputs |> Array.randomShuffleInPlaceBy Random.Shared.NextDouble + After evaluation array can contain [| 0; 2; 4; 3; 1 |]. - - - Returns the average of values in a list generated by applying a function to each element of the list. + + Sorts input array in a random order with the specified Random instance by mutating the array in-place. - The function to transform the list elements into the values to be averaged. - The input list. + The input array. + The Random instance. - Thrown when the list is empty. + Thrown when the input array is null. - The resulting average. - - Calculate average age of persons by extracting their age from a record type. + - type People = { Name: string; Age: int } + let inputs = [| 0; 1; 2; 3; 4 |] - let getAgeAsFloat person = float person.Age + inputs |> Array.randomShuffleInPlaceWith Random.Shared + + After evaluation array can contain [| 0; 2; 4; 3; 1 |]. + + + + Sorts input array in a random order by mutating the array in-place. - let people = - [ { Name = "Kirk"; Age = 26 } - { Name = "Spock"; Age = 90 } - { Name = "McCoy"; Age = 37 } ] + The input array. - people |> List.averageBy getAgeAsFloat - - Evaluates to + Thrown when the input array is null. + + - 51.0 + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomShuffleInPlace + After evaluation array can contain [| 0; 2; 4; 3; 1 |]. - - Returns the average of the values in a non-empty list. + + Return a new array shuffled in a random order using the specified randomizer function. - The input list. + The randomizer function, must return a float number from [0.0..1.0) range. + The input array. - Thrown when the input list is empty. + The result array. - The resulting average. - - - - [1.0 .. 9.0] |> List.average - - Evaluates to + Thrown when the input array is null. + Thrown when the randomizer function returns a value outside the range [0, 1). + + - 5.0 + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomShuffleBy Random.Shared.NextDouble + Can evaluate to [| 0; 2; 4; 3; 1 |]. - - Returns a new list that contains the elements of the first list - followed by elements of the second list. + + Return a new array shuffled in a random order with the specified Random instance. - The first input list. - The second input list. + The Random instance. + The input array. - The resulting list. - - - - List.append [ 1..3 ] [ 4..7 ] - - [ 4..7 ] |> List.append [ 1..3 ] - - Evaluates to + The result array. + + Thrown when the input array is null. + Thrown when the random argument is null. + + - [ 1; 2; 3; 4; 5; 6; 7 ] + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomShuffleWith Random.Shared + Can evaluate to [| 0; 2; 4; 3; 1 |]. - - Returns a new list that contains all pairings of elements from two lists. + + Return a new array shuffled in a random order. - The first input list. - The second input list. + The input array. - The resulting list of pairs. - - - - let people = [ "Kirk"; "Spock"; "McCoy" ] - let numbers = [ 1; 2 ] + The result array. - people |> List.allPairs numbers - - Evaluates to + Thrown when the input array is null. + + - [ (1, "Kirk"); (1, "Spock"); (1, "McCoy"); (2, "Kirk"); (2, "Spock"); (2, "McCoy") ] + let inputs = [| 0; 1; 2; 3; 4 |] + + inputs |> Array.randomShuffle + Can evaluate to [| 0; 2; 4; 3; 1 |]. - - Contains operations for working with values of type . - - Operations for collections such as lists, arrays, sets, maps and sequences. See also - F# Collection Types in the F# Language Guide. - - Return a new array with new items inserted before the given index. @@ -7398,7 +8239,7 @@ | In i -> acc + i | Out o -> acc - o) - Evaluates to [|2; 1; 3; 0|] by processing each input from back to front. Note 0 is the intial + Evaluates to [|2; 1; 3; 0|] by processing each input from back to front. Note 0 is the initial state, 3 the next state, 1 the next state, and 2 the final state. @@ -7426,7 +8267,7 @@ | In i -> acc + i | Out o -> acc - o) - Evaluates to [|0; 1; -1; 2|]. Note 0 is the intial + Evaluates to [|0; 1; -1; 2|]. Note 0 is the initial state, 1 the next state, -1 the next state, and 2 the final state. @@ -7629,7 +8470,7 @@ - let inputs: string[]= [| |] + let inputs: string array= [| |] inputs |> Array.minBy (fun s -> s.Length) @@ -7659,7 +8500,7 @@ - let inputs: int[]= [| |] + let inputs: int array= [| |] inputs |> Array.min @@ -7690,7 +8531,7 @@ - let inputs: string[]= [| |] + let inputs: string array= [| |] inputs |> Array.maxBy (fun s -> s.Length) @@ -7720,7 +8561,7 @@ - let inputs: int[]= [| |] + let inputs: int array= [| |] inputs |> Array.max @@ -8140,7 +8981,7 @@ - let arr : int[] = Array.zeroCreate 4 + let arr : int array = Array.zeroCreate 4 Evaluates to [| 0; 0; 0; 0 |] @@ -8755,7 +9596,7 @@ - let inputs: int[] = [| |] + let inputs: int array = [| |] inputs |> Array.tryExactlyOne @@ -8792,7 +9633,7 @@ - let inputs: int[] = [| |] + let inputs: int array = [| |] inputs |> Array.exactlyOne @@ -9043,7 +9884,7 @@ - let inputs : int[] = [| |] + let inputs : int array = [| |] inputs |> Array.tryHead @@ -9249,7 +10090,7 @@ - type Foo = { Bar: int[] } + type Foo = { Bar: int array } let input = [| {Bar = [| 1; 2 |]}; {Bar = [| 3; 4 |]} |] @@ -9326,7 +10167,7 @@ type Foo = { Bar: float } - let input : Foo[] = [| |] + let input : Foo array = [| |] input |> Array.averageBy (fun foo -> foo.Bar) @@ -9780,13 +10621,13 @@ The input array. - 'U[] + 'U array Thrown when the input array is null. - type Foo = { Bar: int[] } + type Foo = { Bar: int array } let input = [| {Bar = [| 1; 2 |]}; {Bar = [| 3; 4 |]} |] @@ -9864,7 +10705,7 @@ type Foo = { Bar: float } - let input : Foo[] = [| |] + let input : Foo array = [| |] input |> Array.Parallel.averageBy (fun foo -> foo.Bar) @@ -9956,7 +10797,7 @@ - let inputs: string[]= [| |] + let inputs: string array= [| |] inputs |> Array.Parallel.minBy (fun s -> s.Length) @@ -9986,7 +10827,7 @@ - let inputs: int[]= [| |] + let inputs: int array= [| |] inputs |> Array.Parallel.min @@ -10017,7 +10858,7 @@ - let inputs: string[]= [| |] + let inputs: string array= [| |] inputs |> Array.Parallel.maxBy (fun s -> s.Length) @@ -10047,7 +10888,7 @@ - let inputs: int[]= [| |] + let inputs: int array= [| |] inputs |> Array.Parallel.max @@ -11291,7 +12132,7 @@ let array = Set.toArray set printfn$ "The set is {set} and type is {array.GetType().Name}" - The sample evaluates to the following output: The set is [|1; 2; 3|] and type is System.Int32[] + The sample evaluates to the following output: The set is [|1; 2; 3|] and type is System.Int32 array @@ -12905,7 +13746,7 @@ Type-carrying quoted expressions. Expressions are generated either - by quotations in source text or programatically + by quotations in source text or programmatically Returns type of an expression. @@ -13223,7 +14064,7 @@ Expr.TryGetReflectedDefinition(methInfoAtString) Evaluates to a quotation with the same structure as <@ fun (x: string) -> (x, x) @>, which is the implementation of the - generic method f instanatiated at type string. + generic method f instantiated at type string. @@ -13962,7 +14803,7 @@ The resulting expression. - In this example, we show how to use a witness to cosntruct an `op_Addition` call for a type that doesn't support addition directly: + In this example, we show how to use a witness to construct an `op_Addition` call for a type that doesn't support addition directly: open FSharp.Quotations open FSharp.Quotations.Patterns @@ -14095,7 +14936,7 @@ The resulting expression. - + open FSharp.Quotations @@ -14269,8 +15110,8 @@ | _ -> failwith "unexpected" Evaluates implExpr to a quotation with the same structure as <@ fun (x: C<int>) (v: int) -> () @>, which is the implementation of the - setter for the property Count. Note that the correct generic instantaition has been applied to the implementation to reflect - the the type at the callsite. + setter for the property Count. Note that the correct generic instantiation has been applied to the implementation to reflect + the type at the callsite. @@ -14299,8 +15140,8 @@ | _ -> failwith "unexpected" Evaluates implExpr to a quotation with the same structure as <@ fun (x: C<int>) () -> x @>, which is the implementation of the - property Identity. Note that the correct generic instantaition has been applied to the implementation to reflect - the the type at the callsite. + property Identity. Note that the correct generic instantiation has been applied to the implementation to reflect + the type at the callsite. @@ -14328,8 +15169,8 @@ | _ -> failwith "unexpected" Evaluates implExpr to a quotation with the same structure as <@ fun (x: int) -> (x, x) @>, which is the implementation of the - method f. Note that the correct generic instantaition has been applied to the implementation to reflect - the the type at the callsite. + method f. Note that the correct generic instantiation has been applied to the implementation to reflect + the type at the callsite. @@ -15246,7 +16087,7 @@ result in the generation of unverifiable code. - Library functionality for native interopability. See + Library functionality for native interoperability. See also F# External Functions in the F# Language Guide. @@ -15764,7 +16605,7 @@ If no cancellation token is provided then the default cancellation token is used. - You may prefer using this method if you want to achive a similar behviour to async await in C# as + You may prefer using this method if you want to achieve a similar behavior to async await in C# as async computation starts on the current thread with an ability to return a result. @@ -16689,12 +17530,12 @@ - Specifies a unit of task code which excuted using try/with semantics + Specifies a unit of task code which executed using try/with semantics - Specifies a unit of task code which excuted using try/finally semantics + Specifies a unit of task code which executed using try/finally semantics @@ -16837,6 +17678,22 @@ + + Creates and starts an agent immediately on the current operating system thread. The body + function is used to generate the asynchronous computation executed by the agent. + + The function to produce an asynchronous computation that will be executed + as the read loop for the MailboxProcessor when StartImmediately is called. + A flag denotes will be thrown exception + when is called + after disposed. + An optional cancellation token for the body. + Defaults to Async.DefaultCancellationToken. + + The created MailboxProcessor. + + + Creates and starts an agent immediately on the current operating system thread. The body function is used to generate the asynchronous computation executed by the agent. @@ -16855,6 +17712,22 @@ + + Creates and starts an agent. The body function is used to generate the asynchronous + computation executed by the agent. + + The function to produce an asynchronous computation that will be executed + as the read loop for the MailboxProcessor when Start is called. + A flag denoting that an exception will be thrown + when is called + after has been disposed. + An optional cancellation token for the body. + Defaults to Async.DefaultCancellationToken. + + The created MailboxProcessor. + + + Creates and starts an agent. The body function is used to generate the asynchronous computation executed by the agent. @@ -16959,6 +17832,23 @@ + + Creates an agent. The body function is used to generate the asynchronous + computation executed by the agent. This function is not executed until + Start is called. + + The function to produce an asynchronous computation that will be executed + as the read loop for the MailboxProcessor when Start is called. + A flag denoting that an exception will be thrown + when is called + after has been disposed. + An optional cancellation token for the body. + Defaults to Async.DefaultCancellationToken. + + The created MailboxProcessor. + + + Creates an agent. The body function is used to generate the asynchronous computation executed by the agent. This function is not executed until @@ -17131,7 +18021,7 @@ The number of bytes to read. - An asynchronous computation that returns the read byte[] when run. + An asynchronous computation that returns the read byte array when run. @@ -19472,7 +20362,7 @@ ByRef and Pointer Types - Single dimensional, zero-based arrays, written int[], string[] etc. + Single dimensional, zero-based arrays, written int array, string array etc. Use the values in the module to manipulate values of this type, or the notation arr.[x] to get/set array @@ -19711,7 +20601,7 @@ - Single dimensional, zero-based arrays, written int[], string[] etc. + Single dimensional, zero-based arrays, written int array, string array etc. Use the values in the Array module to manipulate values of this type, or the notation arr.[x] to get/set array @@ -19835,6 +20725,12 @@ Basic Types + + An abbreviation for the CLI type or null. + With the 'nullable reference types' feature, this is an alias to 'obj | null'. + + Basic Types + An abbreviation for the CLI type . @@ -20533,6 +21429,19 @@ + + Warning message displayed when the annotated function is used with a value known to be without null + + + Creates an instance of the attribute + The message displayed when the annotated function is used with a value known to be without null + WarnOnWithoutNullArgumentAttribute + + + When used in a compilation with null-checking enabled, indicates that a function is meant to be used only with potentially-nullable values and warns accordingly. + + Attributes + Creates an instance of the attribute NoCompilerInliningAttribute @@ -21007,6 +21916,10 @@ Indicates if the custom operation supports the use of 'into' immediately after the use of the operation in a query or other computation expression to consume the results of the operation + + Create an instance of attribute with empty name + CustomOperationAttribute + Creates an instance of the attribute CustomOperationAttribute @@ -21513,7 +22426,7 @@ Bad format specifier (after {0}) - + Bad format specifier (precision) @@ -21531,7 +22444,7 @@ Expected a precision argument - + Bad integer supplied to dynamic formatter @@ -22793,7 +23706,7 @@ otherwise raise an exception. Calls . The exit code to use. - + Never returns. @@ -22852,7 +23765,7 @@ let l1 = ['a'; 'b'; 'c'] let l2 = ['d'; 'e'; 'f'] - l1 @ l2 // Evalulates to ['a'; 'b'; 'c'; 'd'; 'e'; 'f'] + l1 @ l2 // Evaluates to ['a'; 'b'; 'c'; 'd'; 'e'; 'f'] @@ -22943,8 +23856,8 @@ - id 12 // Evaulates to 12 - id "abc" // Evaulates to "abc" + id 12 // Evaluates to 12 + id "abc" // Evaluates to "abc" @@ -22972,6 +23885,13 @@ + + Throw a System.ArgumentNullException if the given value is null exception + + The argument name. + + The result value. + Throw a exception @@ -23033,6 +23953,33 @@ + + Asserts that the value is non-null. + In a future revision of nullness support this may be unified with 'withNull'. + The value to check. + True when value is null, false otherwise. + + + Asserts that the value is non-null. + The value to check. + True when value is null, false otherwise. + + + Asserts that the value is non-null. + In a future revision of nullness support this may be unified with 'nonNull'. + The value to check. + True when value is null, false otherwise. + + + Asserts that the value is non-null. + The value to check. + The value when it is not null. If the value is null an exception is raised. + + + Get the null value for a value type. + In a future revision of nullness support this may be unified with 'null'. + The null value for a value type. + Determines whether the given value is not null. @@ -23040,6 +23987,34 @@ True when value is not null, false otherwise. + + Determines whether the given value is null. + In a future revision of nullness support this may be unified with 'isNull'. + The value to check. + True when value is null, false otherwise. + + + When used in a pattern checks the given value is not null. + In a future revision of nullness support this may be unified with 'NonNullQuick'. + The value to check. + The non-null value. + + + When used in a pattern checks the given value is not null. + The value to check. + The non-null value. + + + Determines whether the given value is null. + In a future revision of nullness support this may be unified with 'Null|NonNull'. + The value to check. + A choice indicating whether the value is null or not-null. + + + Determines whether the given value is null. + The value to check. + A choice indicating whether the value is null or not-null. + Determines whether the given value is null. @@ -23319,6 +24294,18 @@ + + Used to specify a default value for an nullable value argument in the implementation of a function + The default value of the argument. + A nullable value representing the argument. + The argument value. If it is null, the defaultValue is returned. + + + Used to specify a default value for a nullable reference argument in the implementation of a function + The default value of the argument. + A nullable value representing the argument. + The argument value. If it is null, the defaultValue is returned. + Apply a function to three values, the values being a triple on the right, the function on the left @@ -23534,7 +24521,7 @@ The result of the comparison. - + 5 > 1 // Evaluates to true 5 > 5 // Evaluates to false @@ -23738,7 +24725,7 @@ 2 + 2 // Evaluates to 4 - "Hello " + "Word" // Evaluates to "Hello World" + "Hello " + "World" // Evaluates to "Hello World" @@ -24066,6 +25053,16 @@ A module of comparison and equality operators that are statically resolved, but which are not fully generic and do not make structural comparison. Opening this module may make code that relies on structural or generic comparison no longer compile. + + When used in a pattern forgets 'nullness' of the value without any runtime check. This is an unsafe operation, as null check is being skipped and null value can be returned. + The value to retype from ('T | null) to 'T . + The non-null value. + + + Unsafely retypes the value from ('T | null) to 'T without doing any null check at runtime. This is an unsafe operation. + The possibly nullable value. + The same value as in the input. + Perform generic hashing on a value where the type of the value is not statically required to satisfy the 'equality' constraint. @@ -25672,6 +26669,34 @@ Represents the types of byrefs in F# 4.5+ ByRef and Pointer Types + + Convert a value option to an option. + + The input value option. + + The resulting option. + + + + ValueSome 42 |> ValueOption.toOption // evaluates to Some 42 + (ValueNone: int voption) |> ValueOption.toOption // evaluates to None + + + + + Convert an option to a value option. + + The input option. + + The resulting value option. + + + + Some 42 |> ValueOption.ofOption // evaluates to ValueSome 42 + (None: int option) |> ValueOption.ofOption // evaluates to ValueNone + + + Convert an option to a potentially null value. @@ -26090,6 +27115,34 @@ Options + + Convert an option to a value option. + + The input option. + + The resulting value option. + + + + Some 42 |> Option.toValueOption // evaluates to ValueSome 42 + (None: int option) |> Option.toValueOption // evaluates to ValueNone + + + + + Convert a value option to an option. + + The input value option. + + The resulting option. + + + + ValueSome 42 |> Option.ofValueOption // evaluates to Some 42 + (ValueNone: int voption) |> Option.ofValueOption // evaluates to None + + + Convert an option to a potentially null value. @@ -26630,7 +27683,7 @@ - fold f inp s evaluates to match inp with Error _ -> s | Ok x -> f x s. + foldBack f inp s evaluates to match inp with Error _ -> s | Ok x -> f x s. A function to update the state data when given a value from an result. The input result. @@ -26872,7 +27925,7 @@ The input string. Numbering the characters and printing the associated ASCII code - for each characater in the input string + for each character in the input string let input = "Hello" input |> String.iteri (fun i c -> printfn "%d. %c %d" (i + 1) c (int c)) @@ -26893,7 +27946,7 @@ The function to be applied to each character of the string. The input string. - Printing the ASCII code for each characater in the string + Printing the ASCII code for each character in the string let input = "Hello" input |> String.iter (fun c -> printfn "%c %d" c (int c)) diff --git a/lib/fcs/FSharp.DependencyManager.Nuget.dll b/lib/fcs/FSharp.DependencyManager.Nuget.dll index 0193fe3816..db39fefa69 100644 Binary files a/lib/fcs/FSharp.DependencyManager.Nuget.dll and b/lib/fcs/FSharp.DependencyManager.Nuget.dll differ diff --git a/lib/fcs/FSharp.DependencyManager.Nuget.xml b/lib/fcs/FSharp.DependencyManager.Nuget.xml index 67156e73be..9a9ceb9447 100644 --- a/lib/fcs/FSharp.DependencyManager.Nuget.xml +++ b/lib/fcs/FSharp.DependencyManager.Nuget.xml @@ -74,7 +74,7 @@ - PackageManager can not reference the System Package '%s' + PackageManager cannot reference the System Package '%s' (Originally from FSDependencyManager.txt:2) @@ -107,7 +107,7 @@ - Succeded? + Succeeded? @@ -135,7 +135,7 @@ the dependency manager will be able to probe and resolve any native dependencies required by the nuget package. - This path is also equivant to + This path is also equivalent to #I @"c:\somepath\to\packages\ResolvedPackage\1.1.1\" diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index 300447dcbd..7c8cefe18b 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -3,7 +3,7 @@ $([System.IO.Path]::GetDirectoryName($(DirectoryBuildTargetsPath))) --analyzers-path "$(PkgG-Research_FSharp_Analyzers)/analyzers/dotnet/fs" $(FSharpAnalyzersOtherFlags) --analyzers-path "$(PkgIonide_Analyzers)/analyzers/dotnet/fs" - $(FSharpAnalyzersOtherFlags) --analyzers-path "$(CodeRoot)/Fable.Analyzers/bin/Release/net6.0" + $(FSharpAnalyzersOtherFlags) --analyzers-path "$(CodeRoot)/Fable.Analyzers/bin/Release/net8.0" $(CodeRoot)/reports/ $(FSharpAnalyzersOtherFlags) --code-root "$(CodeRoot)" $(FSharpAnalyzersOtherFlags) --report "$(SarifOutput)$(MSBuildProjectName)-$(TargetFramework).sarif" diff --git a/src/Fable.Analyzers/Fable.Analyzers.fsproj b/src/Fable.Analyzers/Fable.Analyzers.fsproj index e0aeb37f89..dcf459116c 100644 --- a/src/Fable.Analyzers/Fable.Analyzers.fsproj +++ b/src/Fable.Analyzers/Fable.Analyzers.fsproj @@ -1,7 +1,7 @@  - net6.0 + net8.0 true diff --git a/src/Fable.Build/Fable.Build.fsproj b/src/Fable.Build/Fable.Build.fsproj index 79fd611144..b7bd5294d8 100644 --- a/src/Fable.Build/Fable.Build.fsproj +++ b/src/Fable.Build/Fable.Build.fsproj @@ -43,14 +43,11 @@ - - - + - - + diff --git a/src/Fable.Build/FableLibrary/Core.fs b/src/Fable.Build/FableLibrary/Core.fs index 06680fcbb7..21d0114ff5 100644 --- a/src/Fable.Build/FableLibrary/Core.fs +++ b/src/Fable.Build/FableLibrary/Core.fs @@ -7,8 +7,6 @@ open Build.Utils open Build.Utils open System.Diagnostics open SimpleExec -open Spectre.Console -open SpectreCoff /// /// Building fable-library is similar enough for all the targets @@ -50,19 +48,21 @@ type BuildFableLibrary default _.CopyStage() = () member this.Run(?skipIfExist: bool) = + let toConsole (s: string) = System.Console.WriteLine(s) + let skipIfExist = defaultArg skipIfExist false if skipIfExist && Directory.Exists outDir then - Calm "Skipping Fable build stage" |> toConsole + "Skipping Fable build stage" |> toConsole else - Calm "Cleaning build directory" |> toConsole + "Cleaning build directory" |> toConsole if Directory.Exists buildDir then Directory.Delete(buildDir, true) - Calm "Building Fable.Library" |> toConsole + "Building Fable.Library" |> toConsole let args = CmdLine.appendRaw sourceDir @@ -77,8 +77,8 @@ type BuildFableLibrary Command.Fable(args) - Calm "Copy stage" |> toConsole + "Copy stage" |> toConsole this.CopyStage() - Calm "Post Fable build stage" |> toConsole + "Post Fable build stage" |> toConsole this.PostFableBuildStage() diff --git a/src/Fable.Build/Main.fs b/src/Fable.Build/Main.fs index db0ae5a746..e7cfd23695 100644 --- a/src/Fable.Build/Main.fs +++ b/src/Fable.Build/Main.fs @@ -1,7 +1,6 @@ module Build.Main open Build.FableLibrary -open Spectre.Console // This is a basic help message, as the CLI parser is not a "real" CLI parser // For now, it is enough as this is just a dev tool @@ -156,5 +155,5 @@ let main argv = 0 with e -> - AnsiConsole.WriteException(e) + System.Console.Write(e.ToString()) 1 diff --git a/src/Fable.Cli/CHANGELOG.md b/src/Fable.Cli/CHANGELOG.md index 015ba4917c..4f7d2f0573 100644 --- a/src/Fable.Cli/CHANGELOG.md +++ b/src/Fable.Cli/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## 5.0.0-alpha.1 - 2024-11-24 + +### Added + +* [All] Add `--legacyCracker` as a fallback + +### Changed + +* [All] Make MSBuildCracker the default +* [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive +* [All] Move TargetFramework to `net8.0` + ## 4.24.0 - 2024-11-19 ### Added diff --git a/src/Fable.Cli/Entry.fs b/src/Fable.Cli/Entry.fs index 0b81bff9b0..c52b1f99d8 100644 --- a/src/Fable.Cli/Entry.fs +++ b/src/Fable.Cli/Entry.fs @@ -114,6 +114,10 @@ let knownCliArgs () = "" "Support for TypeScript, Python, Rust, Php and Dart is experimental." ] + [ "--legacyCracker" ], + [ + "Use this if you have issues with the new MSBuild Cracker released in Fable 5" + ] // Hidden args [ "--precompiledLib" ], [] @@ -123,7 +127,6 @@ let knownCliArgs () = [ "--trimRootModule" ], [] [ "--fableLib" ], [] [ "--replace" ], [] - [ "--test:MSBuildCracker" ], [] ] let printKnownCliArgs () = @@ -268,7 +271,7 @@ type Runner = args.Value("--precompiledLib") |> Option.map normalizeAbsolutePath let fableLib = args.Value "--fableLib" |> Option.map Path.normalizePath - let useMSBuildForCracking = args.FlagOr("--test:MSBuildCracker", false) + let useMSBuildForCracking = args.FlagOr("--legacyCracker", true) do! match watch, outDir, fableLib with @@ -311,7 +314,7 @@ type Runner = |> List.append [ "FABLE_COMPILER" - "FABLE_COMPILER_4" + "FABLE_COMPILER_5" match language with | Php -> "FABLE_COMPILER_PHP" | Rust -> "FABLE_COMPILER_RUST" diff --git a/src/Fable.Cli/Fable.Cli.fsproj b/src/Fable.Cli/Fable.Cli.fsproj index 968982b326..5f610fb6ee 100644 --- a/src/Fable.Cli/Fable.Cli.fsproj +++ b/src/Fable.Cli/Fable.Cli.fsproj @@ -3,7 +3,7 @@ true Exe - net6.0 + net8.0 4.24.0 ## Added @@ -58,9 +58,9 @@ - - - + + + diff --git a/src/Fable.Cli/Main.fs b/src/Fable.Cli/Main.fs index 7df47cdf21..db283a69ae 100644 --- a/src/Fable.Cli/Main.fs +++ b/src/Fable.Cli/Main.fs @@ -1192,16 +1192,17 @@ let private compilationCycle (state: State) (changes: ISet) = Log.always ("Generating assembly...") - let! (diagnostics, exitCode), ms = + let! (diagnostics, result), ms = Performance.measureAsync <| fun _ -> fableCompiler.CompileToFile(dllPath) Log.always ($"Assembly generated in {ms}ms") - if exitCode <> 0 then + match result with + | Some ex -> getFSharpDiagnostics diagnostics |> logErrors cliArgs.RootDir - - return exitCode - else + Log.error (ex.Message) + return 1 + | None -> Log.always ($"Saving precompiled info...") let! fableProj = fableCompiler.GetFableProject() diff --git a/src/Fable.Compiler/CHANGELOG.md b/src/Fable.Compiler/CHANGELOG.md index b1421e7a08..66bfe68a39 100644 --- a/src/Fable.Compiler/CHANGELOG.md +++ b/src/Fable.Compiler/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## 5.0.0-alpha.1 - 2024-11-24 + +### Added + +* [All] Add `--legacyCracker` as a fallback + +### Changed + +* [All] Make MSBuildCracker the default +* [All] Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive +* [All] Move TargetFramework to `net8.0` + ## 4.0.0-alpha-016 - 2024-11-19 ### Changed diff --git a/src/Fable.Compiler/Fable.Compiler.fsproj b/src/Fable.Compiler/Fable.Compiler.fsproj index 0eafb0af17..be14f72166 100644 --- a/src/Fable.Compiler/Fable.Compiler.fsproj +++ b/src/Fable.Compiler/Fable.Compiler.fsproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 true true true @@ -40,8 +40,8 @@ - - + + diff --git a/src/Fable.PublishUtils/Fable.PublishUtils.fsproj b/src/Fable.PublishUtils/Fable.PublishUtils.fsproj index 6b4b1a9602..80c363771d 100644 --- a/src/Fable.PublishUtils/Fable.PublishUtils.fsproj +++ b/src/Fable.PublishUtils/Fable.PublishUtils.fsproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 Major true 2.4.0 diff --git a/src/Fable.Transforms/Rust/Replacements.fs b/src/Fable.Transforms/Rust/Replacements.fs index bc957b9ed0..c054b7ea0a 100644 --- a/src/Fable.Transforms/Rust/Replacements.fs +++ b/src/Fable.Transforms/Rust/Replacements.fs @@ -342,6 +342,8 @@ let emitFormat (com: ICompiler) r t (args: Expr list) macro = | [ StringTempl(fmt, args); Value(NewArray(ArrayValues restArgs, _, _), _) ] -> (emitRawString fmt) :: args @ restArgs | (StringTempl(fmt, args)) :: restArgs -> (emitRawString fmt) :: args @ restArgs + | [ ExprTypeAs(String, str); Value(NewArray(ArrayValues restArgs, _, _), _) ] -> + (emitRawString "{0}") :: str :: restArgs | _ -> (emitRawString "{0}") :: args let unboxedArgs = args |> FSharp2Fable.Util.unboxBoxedArgs diff --git a/src/fable-compiler-js/CHANGELOG.md b/src/fable-compiler-js/CHANGELOG.md index 65188681dd..ff6f0f8e7d 100644 --- a/src/fable-compiler-js/CHANGELOG.md +++ b/src/fable-compiler-js/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +* Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive + ## 1.2.2 - 2024-05-24 ### Fixed diff --git a/src/fable-compiler-js/src/ProjectParser.fs b/src/fable-compiler-js/src/ProjectParser.fs index 1cef5469ed..c8c3d3f4d3 100644 --- a/src/fable-compiler-js/src/ProjectParser.fs +++ b/src/fable-compiler-js/src/ProjectParser.fs @@ -111,7 +111,7 @@ let parseCompilerOptions projectXml = |> Seq.append [ "FABLE_COMPILER" - "FABLE_COMPILER_4" + "FABLE_COMPILER_5" "FABLE_COMPILER_JAVASCRIPT" "NPM_PACKAGE_FABLE_COMPILER_JAVASCRIPT" ] @@ -206,7 +206,7 @@ let parseProjectScript projectFilePath = let otherOptions = [| "--define:FABLE_COMPILER" - "--define:FABLE_COMPILER_4" + "--define:FABLE_COMPILER_5" "--define:FABLE_COMPILER_JAVASCRIPT" "--define:NPM_PACKAGE_FABLE_COMPILER_JAVASCRIPT" |] diff --git a/src/fable-standalone/CHANGELOG.md b/src/fable-standalone/CHANGELOG.md index b90ca7503e..5e5b951f15 100644 --- a/src/fable-standalone/CHANGELOG.md +++ b/src/fable-standalone/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +* Replace `FABLE_COMPILER_4` with `FABLE_COMPILER_5` as the compiler directive + ## 1.12.0 - 2024-11-19 * Fable 4.24.0 diff --git a/src/fable-standalone/test/bench-compiler/ProjectParser.fs b/src/fable-standalone/test/bench-compiler/ProjectParser.fs index 1cef5469ed..c8c3d3f4d3 100644 --- a/src/fable-standalone/test/bench-compiler/ProjectParser.fs +++ b/src/fable-standalone/test/bench-compiler/ProjectParser.fs @@ -111,7 +111,7 @@ let parseCompilerOptions projectXml = |> Seq.append [ "FABLE_COMPILER" - "FABLE_COMPILER_4" + "FABLE_COMPILER_5" "FABLE_COMPILER_JAVASCRIPT" "NPM_PACKAGE_FABLE_COMPILER_JAVASCRIPT" ] @@ -206,7 +206,7 @@ let parseProjectScript projectFilePath = let otherOptions = [| "--define:FABLE_COMPILER" - "--define:FABLE_COMPILER_4" + "--define:FABLE_COMPILER_5" "--define:FABLE_COMPILER_JAVASCRIPT" "--define:NPM_PACKAGE_FABLE_COMPILER_JAVASCRIPT" |] diff --git a/src/fable-standalone/test/bench-compiler/package.json b/src/fable-standalone/test/bench-compiler/package.json index e44bf4ac94..df71edf8ae 100644 --- a/src/fable-standalone/test/bench-compiler/package.json +++ b/src/fable-standalone/test/bench-compiler/package.json @@ -12,7 +12,7 @@ "prebuild-cli-js": "npm run clean && FABLE=fable-cli npm run build-lib-ts", "build-cli-js": "npm run fable-cli -- bench-compiler.fsproj --outDir ./out-node --fableLib ./out-lib-js", "postbuild-cli-js": "npm run rollup-bundle", - "build-cli-rust": "npm run fable-cli -- bench-compiler.fsproj --outDir ./out-rust --lang Rust --noCache --test:MSBuildCracker", + "build-cli-rust": "npm run fable-cli -- bench-compiler.fsproj --outDir ./out-rust --lang Rust --noCache", "fable": "dotnet run -c Release --project bench-compiler.fsproj", "prebuild-js": "npm run clean && FABLE=fable npm run build-lib-ts", diff --git a/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi b/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi index d2b349327e..2475f68f3a 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi +++ b/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi @@ -28,7 +28,7 @@ type internal FSharpSource = abstract TimeStamp: DateTime /// Gets the internal text container. Text may be on-disk, in a stream, or a source text. - abstract internal GetTextContainer: unit -> Async + abstract GetTextContainer: unit -> Async #if !FABLE_COMPILER /// Creates a FSharpSource from disk. Only used internally. diff --git a/tests/Js/Main/MiscTests.fs b/tests/Js/Main/MiscTests.fs index c6f5909eaf..587cc43552 100644 --- a/tests/Js/Main/MiscTests.fs +++ b/tests/Js/Main/MiscTests.fs @@ -537,9 +537,12 @@ let tests = x <- x + 4 #endif #if FABLE_COMPILER_5 + x <- x + 8 + #endif + #if FABLE_COMPILER_6 x <- x + 16 #endif - equal 5 x + equal 9 x testCase "Can check compiler version at runtime" <| fun _ -> Compiler.majorMinorVersion >= 4.0 |> equal true diff --git a/tests/Python/TestMisc.fs b/tests/Python/TestMisc.fs index 74c35b5bd3..95ed3e3df8 100644 --- a/tests/Python/TestMisc.fs +++ b/tests/Python/TestMisc.fs @@ -507,8 +507,11 @@ let ``test can check compiler version with constant`` () = #if FABLE_COMPILER_JAVASCRIPT x <- x + 16 #endif + #if FABLE_COMPILER_5 + x <- x + 32 + #endif - equal 13 x + equal 41 x [] let ``test Can check compiler version at runtime`` () = diff --git a/tests/Rust/tests/src/MiscTests.fs b/tests/Rust/tests/src/MiscTests.fs index 6472f748a7..0082fee724 100644 --- a/tests/Rust/tests/src/MiscTests.fs +++ b/tests/Rust/tests/src/MiscTests.fs @@ -560,9 +560,15 @@ let ``Can check compiler version with constant`` () = x <- x + 4 #endif #if FABLE_COMPILER_5 + x <- x + 8 + #endif + #if FABLE_COMPILER_6 x <- x + 16 #endif - equal 5 x + #if FABLE_COMPILER_RUST + x <- x + 32 + #endif + equal 41 x // [] // let ``Can check compiler version at runtime`` () =