diff --git a/DEVGUIDE.md b/DEVGUIDE.md
index d7f8318118c..0f1a3e4c376 100644
--- a/DEVGUIDE.md
+++ b/DEVGUIDE.md
@@ -99,9 +99,6 @@ To build and test Visual F# IDE Tools, install these requirements:
- Under the "Windows" workloads, select ".NET desktop development"
- Select "F# language support" under the optional components
- Under the "Other Toolsets" workloads, select "Visual Studio extension development"
- - Under the "Individual components" tab select "Windows 10 SDK" as shown below (needed for compiling RC resource, see #2556): \
- 
- - Failing to install this will lead to error FS0193: Could not find file visualfsharp\vsintegration\src\FSharp.ProjectSystem.FSharp\obj\net40\ProjectResources.rc.res.
Steps to build:
@@ -195,7 +192,7 @@ For **Release**:
#### Notes on the Windows .NET Framework build
-1. The `update.cmd` script adds required strong name validation skips, and NGens the compiler and libraries. This requires admin privileges.
+1. The `update.cmd` script adds required strong name validation skips and NGens the compiler and libraries. This requires admin privileges.
1. The compiler binaries produced are "private" and strong-named signed with a test key.
1. Some additional tools are required to build the compiler, notably `fslex.exe`, `fsyacc.exe`, `FSharp.PowerPack.Build.Tasks.dll`, `FsSrGen.exe`, `FSharp.SRGen.Build.Tasks.dll`, and the other tools found in the `lkg` directory.
1. The overall bootstrapping process executes as follows
diff --git a/DotnetCLIToolsVersion.txt b/DotnetCLIToolsVersion.txt
index 0286f3da097..07fe0f906a8 100644
--- a/DotnetCLIToolsVersion.txt
+++ b/DotnetCLIToolsVersion.txt
@@ -1 +1 @@
-2.0.0-preview2-006502
+2.0.3-servicing-007056
diff --git a/PublishToBlob.proj b/PublishToBlob.proj
new file mode 100644
index 00000000000..21dbb9300e0
--- /dev/null
+++ b/PublishToBlob.proj
@@ -0,0 +1,35 @@
+
+
+
+
+
+ Microsoft.DotNet.Build.Tasks.Feed
+
+ 1.0.0-prerelease-02219-01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
index b1cd4283bcd..617c8a4bece 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,8 @@ For historical reasons this repository is called "visualfsharp" and currently al
| | Ubuntu (Build) | Windows (Debug Build) | Windows (Release Tests 1) | Windows (Release Tests 2) | Windows (Release Tests 3) |
|:----------:|:----------------:|:----------------:|:------------------:|:-----------------------:|:---------------------:|
|**master** |[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ubuntu14.04/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/debug_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ci_part1_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ci_part2_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/master/job/release_ci_part3_windows_nt/)|
-|**vs2017-rtm** |[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/vs2017-rtm/job/release_ubuntu14.04/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/vs2017-rtm/job/debug_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/vs2017-rtm/job/release_ci_part1_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/vs2017-rtm/job/release_ci_part2_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/vs2017-rtm/job/release_ci_part3_windows_nt/)|
+|**dev15.5** |[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ubuntu14.04/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/debug_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ci_part1_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ci_part2_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.5/job/release_ci_part3_windows_nt/)|
+|**dev15.6** |[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ubuntu14.04/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/debug_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ci_part1_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ci_part2_windows_nt/)|[](https://ci2.dot.net/job/Microsoft_visualfsharp/job/dev15.6/job/release_ci_part3_windows_nt/)|
## Help improve the Quality of the Tools by Using the Nightly Releases of Visual F# Tools
diff --git a/VisualFSharp.sln b/VisualFSharp.sln
index 90a1a3a4e0a..0e584f0c9fa 100644
--- a/VisualFSharp.sln
+++ b/VisualFSharp.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.27005.2
+VisualStudioVersion = 15.0.27102.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Private", "src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}"
EndProject
@@ -96,14 +96,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleProject", "vsintegra
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryProject", "vsintegration\ProjectTemplates\LibraryProject\LibraryProject.csproj", "{01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCore78Project", "vsintegration\ProjectTemplates\NetCore78Project\NetCore78Project.csproj", "{1A8DBF70-4178-4AE3-AF5F-39DDD5692210}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCore259Project", "vsintegration\ProjectTemplates\NetCore259Project\NetCore259Project.csproj", "{D9D95330-3626-4199-B7AF-17B8E4AF6D87}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCoreProject", "vsintegration\ProjectTemplates\NetCoreProject\NetCoreProject.csproj", "{5B739CF3-1116-4EB4-B598-6C16BEA81CE5}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortableLibraryProject", "vsintegration\ProjectTemplates\PortableLibraryProject\PortableLibraryProject.csproj", "{DB374A0C-7560-479F-9B21-D37C81F7624F}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TutorialProject", "vsintegration\ProjectTemplates\TutorialProject\TutorialProject.csproj", "{2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ItemTemplates", "ItemTemplates", "{F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}"
@@ -564,54 +556,6 @@ Global
{01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|Any CPU.Build.0 = Release|Any CPU
{01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|x86.ActiveCfg = Release|Any CPU
{01678CDA-A11F-4DEE-9344-2EDF91CF1AE7}.Release|x86.Build.0 = Release|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Debug|x86.Build.0 = Debug|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Proto|x86.ActiveCfg = Proto|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Proto|x86.Build.0 = Proto|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Release|Any CPU.Build.0 = Release|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Release|x86.ActiveCfg = Release|Any CPU
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}.Release|x86.Build.0 = Release|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Debug|x86.Build.0 = Debug|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Proto|x86.ActiveCfg = Proto|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Proto|x86.Build.0 = Proto|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Release|Any CPU.Build.0 = Release|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Release|x86.ActiveCfg = Release|Any CPU
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}.Release|x86.Build.0 = Release|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Debug|x86.Build.0 = Debug|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Proto|x86.ActiveCfg = Proto|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Proto|x86.Build.0 = Proto|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Release|Any CPU.Build.0 = Release|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Release|x86.ActiveCfg = Release|Any CPU
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}.Release|x86.Build.0 = Release|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Debug|x86.Build.0 = Debug|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Proto|x86.ActiveCfg = Proto|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Proto|x86.Build.0 = Proto|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Release|Any CPU.Build.0 = Release|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Release|x86.ActiveCfg = Release|Any CPU
- {DB374A0C-7560-479F-9B21-D37C81F7624F}.Release|x86.Build.0 = Release|Any CPU
{2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -858,10 +802,6 @@ Global
{F7876C9B-FB6A-4EFB-B058-D6967DB75FB2} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
{604F0DAA-2D33-48DD-B162-EDF0B672803D} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
{01678CDA-A11F-4DEE-9344-2EDF91CF1AE7} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
- {DB374A0C-7560-479F-9B21-D37C81F7624F} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
{2FACEE44-48BD-40B5-A2EE-B54A0C9BB7C4} = {C9B1D3F5-4971-4F04-9C26-37E3AC809AB4}
{F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
{6BA13AA4-C25F-480F-856B-8E8000299A72} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
diff --git a/build-everything.proj b/build-everything.proj
index 2a6e2320e80..b171c83ae04 100644
--- a/build-everything.proj
+++ b/build-everything.proj
@@ -84,28 +84,32 @@
+
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/build.cmd b/build.cmd
index 7431a36c19e..88c6be98fa1 100644
--- a/build.cmd
+++ b/build.cmd
@@ -4,13 +4,13 @@ rem Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt
setlocal enableDelayedExpansion
:ARGUMENTS_VALIDATION
-
-if /I "%1" == "--help" (goto :USAGE)
+if /I "%1" == "--help" (goto :USAGE)
if /I "%1" == "/help" (goto :USAGE)
if /I "%1" == "/h" (goto :USAGE)
if /I "%1" == "/?" (goto :USAGE)
goto :ARGUMENTS_OK
+
:USAGE
echo Build and run a subset of test suites
@@ -22,7 +22,7 @@ echo ^
echo ^
echo ^
echo ^
-echo ^
+echo ^
echo ^
echo ^
echo.
@@ -78,13 +78,11 @@ set TEST_VS_IDEUNIT_SUITE=0
set INCLUDE_TEST_SPEC_NUNIT=
set INCLUDE_TEST_TAGS=
-set PUBLISH_VSIX=0
-set MYGET_APIKEY=
-
REM ------------------ Parse all arguments -----------------------
set _autoselect=1
set _autoselect_tests=0
+set no_test=0
set /a counter=0
for /l %%x in (1 1 9) do (
set /a counter=!counter!+1
@@ -95,6 +93,10 @@ for %%i in (%BUILD_FSC_DEFAULT%) do ( call :PROCESS_ARG %%i )
REM apply defaults
+if /i "%_buildexit%" == "1" (
+ exit /B %_buildexitvalue%
+)
+
if /i "%_autoselect%" == "1" (
set BUILD_NET40_FSHARP_CORE=1
set BUILD_NET40=1
@@ -132,6 +134,12 @@ set ARG2=%~2
if "%ARG%" == "1" if "%2" == "" (set ARG=default)
if "%2" == "" if not "%ARG%" == "default" goto :EOF
+rem Do no work
+if /i "%ARG%" == "none" (
+ set _buildexit=1
+ set _buildexitvalue=0
+)
+
if /i "%ARG%" == "net40-lib" (
set _autoselect=0
set BUILD_NET40_FSHARP_CORE=1
@@ -206,7 +214,6 @@ if /i "%ARG%" == "microbuild" (
set TEST_CORECLR_FSHARP_SUITE=0
set TEST_VS_IDEUNIT_SUITE=1
set CI=1
- set PUBLISH_VSIX=1
REM redirecting TEMP directories
set TEMP=%~dp0%BUILD_CONFIG%\TEMP
@@ -290,6 +297,10 @@ if /i "%ARG%" == "test" (
set _autoselect_tests=1
)
+if /i "%ARG%" == "no-test" (
+ set no_test=1
+)
+
if /i "%ARG%" == "include" (
set /a counter=!counter!+1
if "!INCLUDE_TEST_SPEC_NUNIT!" == "" ( set INCLUDE_TEST_SPEC_NUNIT=cat == %ARG2% ) else (set INCLUDE_TEST_SPEC_NUNIT=cat == %ARG2% or !INCLUDE_TEST_SPEC_NUNIT! )
@@ -375,10 +386,6 @@ if /i "%ARG%" == "init" (
set BUILD_PROTO_WITH_CORECLR_LKG=1
)
-if /i [%ARG:~0,13%] == [MYGET_APIKEY:] (
- set MYGET_APIKEY=%ARG:~13%
-)
-
goto :EOF
:: Note: "goto :EOF" returns from an in-batchfile "call" command
:: in preference to returning from the entire batch file.
@@ -389,6 +396,19 @@ REM ------------------ Report config -----------------------
REM after this point, ARG variable should not be used, use only BUILD_* or TEST_*
+REM all PB_* variables override any settings
+
+REM if the `PB_SKIPTESTS` variable is set to 'true' then no tests should be built or run, even if explicitly specified
+if /i "%PB_SKIPTESTS%" == "true" (
+ set TEST_NET40_COMPILERUNIT_SUITE=0
+ set TEST_NET40_COREUNIT_SUITE=0
+ set TEST_NET40_FSHARP_SUITE=0
+ set TEST_NET40_FSHARPQA_SUITE=0
+ set TEST_CORECLR_COREUNIT_SUITE=0
+ set TEST_CORECLR_FSHARP_SUITE=0
+ set TEST_VS_IDEUNIT_SUITE=0
+)
+
echo Build/Tests configuration:
echo.
echo BUILD_PROTO=%BUILD_PROTO%
@@ -404,6 +424,9 @@ echo BUILD_NUGET=%BUILD_NUGET%
echo BUILD_CONFIG=%BUILD_CONFIG%
echo BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%
echo.
+echo PB_SKIPTESTS=%PB_SKIPTESTS%
+echo PB_RESTORESOURCE=%PB_RESTORESOURCE%
+echo.
echo TEST_NET40_COMPILERUNIT_SUITE=%TEST_NET40_COMPILERUNIT_SUITE%
echo TEST_NET40_COREUNIT_SUITE=%TEST_NET40_COREUNIT_SUITE%
echo TEST_NET40_FSHARP_SUITE=%TEST_NET40_FSHARP_SUITE%
@@ -413,8 +436,6 @@ echo TEST_CORECLR_FSHARP_SUITE=%TEST_CORECLR_FSHARP_SUITE%
echo TEST_VS_IDEUNIT_SUITE=%TEST_VS_IDEUNIT_SUITE%
echo INCLUDE_TEST_SPEC_NUNIT=%INCLUDE_TEST_SPEC_NUNIT%
echo INCLUDE_TEST_TAGS=%INCLUDE_TEST_TAGS%
-echo PUBLISH_VSIX=%PUBLISH_VSIX%
-echo MYGET_APIKEY=%MYGET_APIKEY%
echo TEMP=%TEMP%
:: load Visual Studio 2017 developer command prompt if VS150COMNTOOLS is not set
@@ -457,7 +478,7 @@ echo.
echo ---------------- Done with arguments, starting preparation -----------------
-set BuildToolsPackage=Microsoft.VSSDK.BuildTools.15.0.26201
+set BuildToolsPackage=Microsoft.VSSDK.BuildTools.15.1.192
if "%VSSDKInstall%"=="" (
set VSSDKInstall=%~dp0packages\%BuildToolsPackage%\tools\vssdk
)
@@ -548,18 +569,33 @@ if "%RestorePackages%" == "true" (
cd..
@if ERRORLEVEL 1 echo Error: Paket restore failed && goto :failure
- %_ngenexe% install %_nugetexe% /nologo
+ %_ngenexe% install %_nugetexe% /nologo
+ set _nugetoptions=-PackagesDirectory packages -ConfigFile %_nugetconfig%
+ if not "%PB_RESTORESOURCE%" == "" (
+ set _nugetoptions=!_nugetoptions! -Source %PB_RESTORESOURCE%
+ )
+
+ echo _nugetoptions=!_nugetoptions!
- %_nugetexe% restore packages.config -PackagesDirectory packages -ConfigFile %_nugetconfig%
+ %_nugetexe% restore packages.config !_nugetoptions!
@if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
if "%BUILD_VS%" == "1" (
- %_nugetexe% restore vsintegration\packages.config -PackagesDirectory packages -ConfigFile %_nugetconfig%
+ %_nugetexe% restore vsintegration\packages.config !_nugetoptions!
@if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
)
if "%BUILD_SETUP%" == "1" (
- %_nugetexe% restore setup\packages.config -PackagesDirectory packages -ConfigFile %_nugetconfig%
+ %_nugetexe% restore setup\packages.config !_nugetoptions!
+ @if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
+ )
+
+ set restore_fsharp_suite=0
+ if "%TEST_NET40_FSHARP_SUITE%" == "1" set restore_fsharp_suite=1
+ if "%TEST_CORECLR_FSHARP_SUITE%" == "1" set restore_fsharp_suite=1
+
+ if "!restore_fsharp_suite!" == "1" (
+ %_nugetexe% restore tests\fsharp\packages.config !_nugetoptions!
@if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
)
)
@@ -662,16 +698,6 @@ if not "%OSARCH%"=="x86" set REGEXE32BIT=%WINDIR%\syswow64\reg.exe
echo SDK environment vars from Registry
echo ==================================
-::See https://stackoverflow.com/a/17113667/111575 on 2^>NUL for suppressing the error "ERROR: The system was unable to find the specified registry key or value." from reg.exe, this fixes #3619
- FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.2\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\WOW6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder 2^>NUL') DO SET WINSDKNETFXTOOLS=%%B
-
-set PATH=%PATH%;%WINSDKNETFXTOOLS%
for /d %%i in (%WINDIR%\Microsoft.NET\Framework\v4.0.?????) do set CORDIR=%%i
set PATH=%PATH%;%CORDIR%
@@ -679,7 +705,6 @@ set REGEXE32BIT=reg.exe
IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%\sn.exe" set SNEXE32=%WINSDKNETFXTOOLS%sn.exe
IF NOT DEFINED SNEXE64 IF EXIST "%WINSDKNETFXTOOLS%x64\sn.exe" set SNEXE64=%WINSDKNETFXTOOLS%x64\sn.exe
-IF NOT DEFINED ildasm IF EXIST "%WINSDKNETFXTOOLS%\ildasm.exe" set ildasm=%WINSDKNETFXTOOLS%ildasm.exe
echo.
echo SDK environment vars
@@ -687,11 +712,12 @@ echo =======================
echo WINSDKNETFXTOOLS: %WINSDKNETFXTOOLS%
echo SNEXE32: %SNEXE32%
echo SNEXE64: %SNEXE64%
-echo ILDASM: %ILDASM%
echo
if "%TEST_NET40_COMPILERUNIT_SUITE%" == "0" if "%TEST_NET40_COREUNIT_SUITE%" == "0" if "%TEST_CORECLR_COREUNIT_SUITE%" == "0" if "%TEST_VS_IDEUNIT_SUITE%" == "0" if "%TEST_NET40_FSHARP_SUITE%" == "0" if "%TEST_NET40_FSHARPQA_SUITE%" == "0" goto :success
+if "%no_test%" == "1" goto :success
+
echo ---------------- Done with update, starting tests -----------------------
if NOT "%INCLUDE_TEST_SPEC_NUNIT%" == "" (
@@ -886,7 +912,7 @@ if "%TEST_CORECLR_FSHARP_SUITE%" == "1" (
set OUTPUTFILE=
set ERRORFILE=
set XMLFILE=!RESULTSDIR!\test-coreclr-fsharp-results.xml
- echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.Unittests\FSharp.Core.Unittests.dll" !WHERE_ARG_NUNIT!
+ echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Tests.FSharpSuite.DrivingCoreCLR\FSharp.Tests.FSharpSuite.DrivingCoreCLR.dll" !WHERE_ARG_NUNIT!
"%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Tests.FSharpSuite.DrivingCoreCLR\FSharp.Tests.FSharpSuite.DrivingCoreCLR.dll" !WHERE_ARG_NUNIT!
if errorlevel 1 (
@@ -931,17 +957,6 @@ if "%TEST_VS_IDEUNIT_SUITE%" == "1" (
)
)
-REM ---------------- publish-vsix -----------------------
-
-if "%PUBLISH_VSIX%" == "1" (
- if not "%MYGET_APIKEY%" == "" (
- powershell -noprofile -executionPolicy ByPass -file "%~dp0setup\publish-assets.ps1" -binariesPath "%~dp0%BUILD_CONFIG%" -branchName "%BUILD_SOURCEBRANCH%" -apiKey "%MYGET_APIKEY%"
- if errorlevel 1 goto :failure
- ) else (
- echo No MyGet API key specified, skipping package publish.
- )
-)
-
goto :success
REM ------ exit -------------------------------------
:failure
diff --git a/build.sh b/build.sh
index 561a129c522..3d70ffc3ff6 100755
--- a/build.sh
+++ b/build.sh
@@ -29,7 +29,7 @@ build.sh ^
^
^
^
- ^
+ ^
^
^
@@ -104,6 +104,7 @@ export INCLUDE_TEST_TAGS=
# Set up variables used to determine whether we'll automatically select which
# targets to build/run/test. NOTE: These aren't exported, they're only used by this script.
+no_test=0
_autoselect=1
_autoselect_tests=0
@@ -138,6 +139,11 @@ do
"nobuild")
export BUILD_PHASE=0
;;
+ "none")
+ _autoselect=0
+ export _buildexit=1
+ export _buildexitVALUE=0
+ ;;
"all")
_autoselect=0
export BUILD_PROTO=1
@@ -245,6 +251,9 @@ do
"test")
_autoselect_tests=1
;;
+ "no-test")
+ no_test=1
+ ;;
"include")
failwith "The 'include' option is not (yet) supported by this script."
#export /a counter=!counter!+1
@@ -320,6 +329,10 @@ do
esac
done
+if [ $_buildexit -eq 1 ]; then
+ exit $_buildexitvalue
+fi
+
# Apply defaults, if necessary.
if [ $_autoselect -eq 1 ]; then
export BUILD_NET40=1
@@ -350,6 +363,18 @@ if [ $_autoselect_tests -eq 1 ]; then
fi
fi
+# If the `PB_SKIPTESTS` variable is set to 'true' then no tests should be built or run, even if explicitly specified
+if [ $PB_SKIPTESTS -eq "true" ]; then
+ export TEST_NET40_COMPILERUNIT_SUITE=0
+ export TEST_NET40_COREUNIT_SUITE=0
+ export TEST_NET40_FSHARP_SUITE=0
+ export TEST_NET40_FSHARPQA_SUITE=0
+ export TEST_CORECLR_COREUNIT_SUITE=0
+ export TEST_CORECLR_FSHARP_SUITE=0
+ export TEST_PORTABLE_COREUNIT_SUITE=0
+ export TEST_VS_IDEUNIT_SUITE=0
+fi
+
#
# Report config
#
@@ -367,6 +392,9 @@ printf "BUILD_SETUP=%s\n" "$BUILD_SETUP"
printf "BUILD_CONFIG=%s\n" "$BUILD_CONFIG"
printf "BUILD_PUBLICSIGN=%s\n" "$BUILD_PUBLICSIGN"
printf "\n"
+printf "PB_SKIPTESTS=%s\n" "$PB_SKIPTESTS"
+printf "PB_RESTORESOURCE=%s\n" "$PB_RESTORESOURCE"
+printf "\n"
printf "TEST_NET40_COMPILERUNIT_SUITE=%s\n" "$TEST_NET40_COMPILERUNIT_SUITE"
printf "TEST_NET40_COREUNIT_SUITE=%s\n" "$TEST_NET40_COREUNIT_SUITE"
printf "TEST_NET40_FSHARP_SUITE=%s\n" "$TEST_NET40_FSHARP_SUITE"
@@ -419,21 +447,26 @@ if [ "${RestorePackages:-true}" = 'true' ]; then
if [ $exit_code -ne 0 ]; then
exit $exit_code
fi
-
- eval "$_nugetexe restore packages.config -PackagesDirectory packages -ConfigFile $_nugetconfig"
+
+ _nugetoptions="-PackagesDirectory packages -ConfigFile $_nugetconfig"
+ if [ "$PB_RESTORESOURCE" != "" ]; then
+ _nugetoptions="$_nugetoptions -Source $PB_RESTORESOURCE"
+ fi
+
+ eval "$_nugetexe restore packages.config $_nugetoptions"
if [ $? -ne 0 ]; then
failwith "Nuget restore failed"
fi
if [ "$BUILD_VS" = '1' ]; then
- eval "$_nugetexe restore vsintegration/packages.config -PackagesDirectory packages -ConfigFile $_nugetconfig"
+ eval "$_nugetexe restore vsintegration/packages.config $_nugetoptions"
if [ $? -ne 0 ]; then
failwith "Nuget restore failed"
fi
fi
if [ "$BUILD_SETUP" = '1' ]; then
- eval "$_nugetexe restore setup/packages.config -PackagesDirectory packages -ConfigFile $_nugetconfig"
+ eval "$_nugetexe restore setup/packages.config $_nugetoptions"
if [ $? -ne 0 ]; then
failwith "Nuget restore failed"
fi
@@ -530,6 +563,11 @@ if [ "$TEST_NET40_COMPILERUNIT_SUITE" = '0' ] && [ "$TEST_PORTABLE_COREUNIT_SUIT
exit 0
fi
+if [ $no_test -eq 1 ]; then
+ # Successful build; not running tests so exit now.
+ exit 0
+fi
+
build_status "Done with update, starting tests"
if [ -n "$INCLUDE_TEST_SPEC_NUNIT" ]; then
diff --git a/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj b/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj
index 058a83e551e..71f5341bb71 100644
--- a/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj
+++ b/fcs/FSharp.Compiler.Service.Tests.netcore/FSharp.Compiler.Service.Tests.netcore.fsproj
@@ -1,4 +1,4 @@
-
+netcoreapp1.0$(DefineConstants);DOTNETCORE;FX_ATLEAST_45;FX_ATLEAST_PORTABLE;FX_NO_RUNTIMEENVIRONMENT;FX_RESHAPED_REFLECTION;TODO_REWORK_ASSEMBLY_LOAD;
@@ -42,6 +42,7 @@
+
diff --git a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
index d53494b86f2..8686318fe23 100644
--- a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
+++ b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
@@ -17,7 +17,6 @@
LIBRARY58;75v4.6
- EXTENSIONTYPING;$(DefineConstants)false..\..\$(Configuration)\fcs\net45\true
diff --git a/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj b/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj
index cbf108a68e4..0ebd29eea3d 100644
--- a/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj
+++ b/fcs/FSharp.Compiler.Service.netstandard/FSharp.Compiler.Service.netstandard.fsproj
@@ -13,6 +13,7 @@
$(DefineConstants);COMPILER_SERVICE$(DefineConstants);COMPILER_SERVICE_ASSUMES_FSHARP_CORE_4_4_0_0$(DefineConstants);EXTENSIBLE_DUMPER
+ $(DefineConstants);NO_EXTENSIONTYPING$(DefineConstants);FSHARP_CORE_4_5$(DefineConstants);FX_PORTABLE_OR_NETSTANDARD$(DefineConstants);FX_ATLEAST_PORTABLE
@@ -62,7 +63,6 @@
$(DefineConstants);NO_LOGGING_GUI$(DefineConstants);FX_RESHAPED_MSBUILD$(DefineConstants);SIGNED
- $(DefineConstants);STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY$(DefineConstants);TODO_REWORK_ASSEMBLY_LOAD$(DefineConstants);TODO_REWORK_SERVER$(NoWarn);44;69;65;54;61;75;62;9;2003;
@@ -536,6 +536,12 @@
Symbols/Exprs.fs
+
+ Symbols/SymbolPatterns.fsi
+
+
+ Symbols/SymbolPatterns.fs
+
Service/IncrementalBuild.fsi
@@ -632,6 +638,12 @@
Service/ServiceStructure.fs
+
+ Service/ServiceAnalysis.fsi
+
+
+ Service/ServiceAnalysis.fs
+
Service/fsi.fsi
@@ -640,7 +652,7 @@
-
+
diff --git a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
index fa10b3664ea..eebbaa0a931 100644
--- a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
+++ b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
@@ -24,7 +24,6 @@
v4.5
- $(DefineConstants);EXTENSIONTYPING$(DefineConstants);CROSS_PLATFORM_COMPILER$(DefineConstants);ENABLE_MONO_SUPPORT$(DefineConstants);COMPILER
@@ -512,6 +511,12 @@
Symbols/Exprs.fs
+
+ Symbols/SymbolPatterns.fsi
+
+
+ Symbols/SymbolPatterns.fs
+
Service/IncrementalBuild.fsi
@@ -608,6 +613,12 @@
Service/ServiceStructure.fs
+
+ Service/ServiceAnalysis.fsi
+
+
+ Service/ServiceAnalysis.fs
+
Service/fsi.fsi
@@ -623,7 +634,7 @@
- $(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.PortablePdb.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.PortablePdb.1.2.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll$(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.dll
diff --git a/fcs/fcs.props b/fcs/fcs.props
index f1d16e7c8c9..88fb2f42ac1 100644
--- a/fcs/fcs.props
+++ b/fcs/fcs.props
@@ -9,5 +9,8 @@
$(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\toolsfsi.exe
+ 1.3.1
+ {HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
\ No newline at end of file
diff --git a/fcs/samples/FscExe/FscExe.fsproj b/fcs/samples/FscExe/FscExe.fsproj
index e0ef6ebd4da..946034ec67c 100644
--- a/fcs/samples/FscExe/FscExe.fsproj
+++ b/fcs/samples/FscExe/FscExe.fsproj
@@ -15,7 +15,6 @@
$(NoWarn);62;44FscExeFscExe
- EXTENSIONTYPING;$(DefineConstants)COMPILER;$(DefineConstants)FX_RESIDENT_COMPILER;$(DefineConstants)true
diff --git a/init-tools.cmd b/init-tools.cmd
index 111c8c80dee..e8aaa61b92f 100644
--- a/init-tools.cmd
+++ b/init-tools.cmd
@@ -26,6 +26,12 @@ if [%1]==[force] (
if exist "%PACKAGES_DIR%microsoft.dotnet.buildtools" rmdir /S /Q "%PACKAGES_DIR%microsoft.dotnet.buildtools"
)
+set /p DOTNET_TOOLS_VERSION=< "%~dp0DotnetCLIToolsVersion.txt"
+if not exist "%DOTNET_TOOLS_PATH%\sdk\%DOTNET_TOOLS_VERSION%" (
+ :: dotnet cli doesn't yet exist, delete the semaphore
+ del "%BUILD_TOOLS_SEMAPHORE%" >NUL 2>&1
+)
+
:: If sempahore exists do nothing
if exist "%BUILD_TOOLS_SEMAPHORE%" (
echo Tools are already initialized.
@@ -44,7 +50,6 @@ if NOT exist "%PROJECT_JSON_PATH%" mkdir "%PROJECT_JSON_PATH%"
echo %PROJECT_JSON_CONTENTS% > "%PROJECT_JSON_FILE%"
echo Running %0 > "%INIT_TOOLS_LOG%"
-set /p DOTNET_TOOLS_VERSION=< "%~dp0DotnetCLIToolsVersion.txt"
if exist "%DOTNET_TOOLS_PATH%" goto :afterdotnettoolsrestore
echo Installing dotnet OLD VERSION OF THE cli...
diff --git a/netci.groovy b/netci.groovy
index ddf51e05e7d..2b6118e7dcb 100644
--- a/netci.groovy
+++ b/netci.groovy
@@ -21,6 +21,7 @@ def static getBuildJobName(def configuration, def os) {
// Linux
configurations = ['Release', 'Release_fcs' ];
}
+
configurations.each { configuration ->
def lowerConfiguration = configuration.toLowerCase()
@@ -38,7 +39,7 @@ def static getBuildJobName(def configuration, def os) {
def buildCommand = '';
def buildFlavor= '';
- if (configuration == "Release_fcs") {
+ if (configuration == "Release_fcs" && branch != "dev15.5") {
// Build and test FCS NuGet package
buildPath = "./fcs/"
buildFlavor = ""
@@ -68,7 +69,7 @@ def static getBuildJobName(def configuration, def os) {
build_args = "net40"
}
else {
- build_args = "ci"
+ build_args = "none"
}
}
@@ -102,13 +103,14 @@ ${buildPath}build.cmd ${buildFlavor} ${build_args}""")
Utilities.setMachineAffinity(newJob, os, affinity)
Utilities.standardJobSetup(newJob, project, isPullRequest, "*/${branch}")
-
- Utilities.addArchival(newJob, "tests/TestResults/*.*", "", skipIfNoTestFiles, false)
- if (configuration == "Release_fcs") {
- Utilities.addArchival(newJob, "Release/**")
- }
- else {
- Utilities.addArchival(newJob, "${buildFlavor}/**")
+ if (build_args != "none") {
+ Utilities.addArchival(newJob, "tests/TestResults/*.*", "", skipIfNoTestFiles, false)
+ if (configuration == "Release_fcs") {
+ Utilities.addArchival(newJob, "Release/fcs/**")
+ }
+ else {
+ Utilities.addArchival(newJob, "${buildFlavor}/**")
+ }
}
if (isPullRequest) {
Utilities.addGithubPRTriggerForBranch(newJob, branch, "${os} ${configuration} Build")
diff --git a/packages.config b/packages.config
index ff5ad0ff98d..955d8c12ad5 100644
--- a/packages.config
+++ b/packages.config
@@ -11,10 +11,13 @@
+
+
+
-
+
@@ -29,7 +32,7 @@
-
+
diff --git a/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs b/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs
index 78ed9289055..c9d7182c018 100644
--- a/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs
+++ b/setup/FSharp.SDK/component-groups/Compiler_Redist.wxs
@@ -175,15 +175,15 @@
-
+
-
+
-
+
diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
index 9bb6cfc0a8c..ee35fedc9a3 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
@@ -18,34 +18,6 @@ folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplate
file source="$(BinariesFolder)\net40\bin\ProjectTemplates\LibraryProject\Library1.fs"
file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\LibraryProject\Script.fsx"
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\NetCore259Project"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\NetCore259Project\AssemblyInfo.fs"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCore259Project\NETCore259PortableLibrary.vstemplate"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCore259Project\PortableLibrary.fsproj"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCore259Project\PortableLibrary1.fs"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\NetCore259Project\Script.fsx"
-
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\NetCore78Project"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\NetCore78Project\AssemblyInfo.fs"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCore78Project\NETCore78PortableLibrary.vstemplate"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCore78Project\PortableLibrary.fsproj"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCore78Project\PortableLibrary1.fs"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\NetCore78Project\Script.fsx"
-
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\NetCoreProject"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\NetCoreProject\AssemblyInfo.fs"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCoreProject\NETCore7PortableLibrary.vstemplate"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCoreProject\PortableLibrary.fsproj"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\NetCoreProject\PortableLibrary1.fs"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\NetCoreProject\Script.fsx"
-
-folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\PortableLibraryProject"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\PortableLibraryProject\AssemblyInfo.fs"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\PortableLibraryProject\PortableLibrary.fsproj"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\PortableLibraryProject\PortableLibrary.vstemplate"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\PortableLibraryProject\PortableLibrary1.fs"
- file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\PortableLibraryProject\Script.fsx"
-
folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\ProjectTemplates\FSharp\$(LocaleId)\TutorialProject"
file source="$(BinariesFolder)\net40\bin\ProjectTemplates\TutorialProject\Tutorial.fsproj"
file source="$(BinariesFolder)\net40\bin\localize\$(LocaleCode)\ProjectTemplates\TutorialProject\Tutorial.fsx"
diff --git a/setup/fsharp-setup-build.proj b/setup/fsharp-setup-build.proj
index df93c2e6f50..b1c5ee70a2c 100644
--- a/setup/fsharp-setup-build.proj
+++ b/setup/fsharp-setup-build.proj
@@ -57,22 +57,26 @@
+
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+ Properties="LocaleCode=%(WixSetupProjects.LocaleCode);LocaleId=%(WixSetupProjects.LocaleId);LocaleParentCulture=%(WixSetupProjects.LocaleParentCulture);LocaleSpecificCulture=%(WixSetupProjects.LocaleSpecificCulture);IsLangPack=%(WixSetupProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);$(CustomProps)" />
+ Properties="IsLangPack=%(VsixProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);OutputPath=$(InsertionDir);$(CustomProps)" />
+ Properties="LocaleCode=%(SwixSetupProjects.LocaleCode);LocaleId=%(SwixSetupProjects.LocaleId);LocaleParentCulture=%(SwixSetupProjects.LocaleParentCulture);LocaleSpecificCulture=%(SwixSetupProjects.LocaleSpecificCulture);IsLangPack=%(SwixSetupProjects.IsLangPack);FSharpPackageVersion=$(FSharpPackageVersion);$(CustomProps)" />
+ Targets="Build"
+ Properties="$(CustomProps)" />
diff --git a/setup/packages.config b/setup/packages.config
index aded14292c8..036cb400855 100644
--- a/setup/packages.config
+++ b/setup/packages.config
@@ -1,9 +1,9 @@
-
-
-
+
+
+
diff --git a/setup/publish-assets.ps1 b/setup/publish-assets.ps1
index 74808732cc3..40e0d166ce2 100644
--- a/setup/publish-assets.ps1
+++ b/setup/publish-assets.ps1
@@ -30,7 +30,7 @@ try {
"microbuild" {
$requestUrl = "https://dotnet.myget.org/F/fsharp/vsix/upload"
}
- "microbuild-dev15-rtm" {
+ "microbuild-dev15.5" {
$requestUrl = "https://dotnet.myget.org/F/fsharp-preview/vsix/upload"
}
default {
diff --git a/src/FSharpSource.Profiles.targets b/src/FSharpSource.Profiles.targets
index adafba0eae3..f5725f270ff 100644
--- a/src/FSharpSource.Profiles.targets
+++ b/src/FSharpSource.Profiles.targets
@@ -3,7 +3,6 @@
- $(DefineConstants);CROSS_PLATFORM_COMPILER$(DefineConstants);PREFERRED_UI_LANG$(DefineConstants);ENABLE_MONO_SUPPORT$(DefineConstants);BE_SECURITY_TRANSPARENT
diff --git a/src/FSharpSource.Settings.targets b/src/FSharpSource.Settings.targets
index 7f964f14beb..75071b1ca49 100644
--- a/src/FSharpSource.Settings.targets
+++ b/src/FSharpSource.Settings.targets
@@ -36,7 +36,7 @@
15.015.0.262011.3.1
- Microsoft.VSSDK.BuildTools.15.0.26201
+ Microsoft.VSSDK.BuildTools.15.1.19215.3.2315.3.15
@@ -49,9 +49,21 @@
4.1.204.1.214.2.4
+
+ 3.5.0
+ 3.5.0.0
+ $(FSharpSourcesRoot)\..\packages\NUnit.$(NUnitVersion)\lib\net45
+ $(FSharpSourcesRoot)\..\packages\NUnit.ConsoleRunner\$(NUnitVersion)\tools\
+
+
+
+ true
+ $(FSharpSourcesRoot)\fsharp\msft.pubkey
+ true
+ true
-
+ truefalsetrue
@@ -134,11 +146,6 @@
fslex.exefsyacc.exe
-
-
- v12.0
- 12.0.0.0
-
$(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools
diff --git a/src/FSharpSource.targets b/src/FSharpSource.targets
index f9e54f501f7..844848dc4c7 100644
--- a/src/FSharpSource.targets
+++ b/src/FSharpSource.targets
@@ -25,24 +25,11 @@
fs
-
-
-
- $(OtherFlags) --keyfile:"$(FSharpSourcesRoot)\fsharp\test.snk"
- STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY;$(DefineConstants)
- true
- $(FSCoreVersion)
- fs
-
-
- $(OtherFlags) --delaysign+
- $(OtherFlags) --publicsign+
- $(OtherFlags) --keyfile:"$(FSharpSourcesRoot)\fsharp\msft.pubkey"
- STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY;$(DefineConstants)
+ truetrue$(FSCoreVersion)
@@ -57,7 +44,6 @@
true$(FSharpSourcesRoot)\fsharp\msft.pubkey
- STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY;$(DefineConstants)truetrue$(FSCoreVersion)
@@ -88,7 +74,7 @@
NO_STRONG_NAMES;$(DefineConstants)
-
+ MSBUILD_AT_LEAST_14;$(DefineConstants)
@@ -99,10 +85,6 @@
$(FSharpSourcesRoot)\..\packages
- 3.5.0
- 3.5.0.0
- $(FSharpSourcesRoot)\..\packages\NUnit.$(NUnitVersion)\lib\net45
- $(FSharpSourcesRoot)\..\packages\NUnit.ConsoleRunner\$(NUnitVersion)\tools\2.6.22.6.2.0$(FSharpSourcesRoot)\..\packages\FsCheck.$(FsCheckVersion)\lib\
@@ -156,7 +138,7 @@
$(FSharpSourcesRoot)\..\$(Configuration)\$(ProtoFlavour)\bin
- $(FSharpSourcesRoot)\..\Tools\dotnet20\sdk\2.0.0-preview2-006502\FSharp
+ $(FSharpSourcesRoot)\..\Tools\dotnet20\sdk\2.0.3-servicing-007056\FSharp..\packages\FSharp.Compiler.Tools.4.1.27\tools\Microsoft.FSharp.Targets
diff --git a/src/absil/il.fs b/src/absil/il.fs
index 22e7a396a5d..1bed3442a9b 100644
--- a/src/absil/il.fs
+++ b/src/absil/il.fs
@@ -3656,7 +3656,7 @@ let computeILRefs modul =
{ AssemblyReferences = Seq.fold (fun acc x -> x::acc) [] s.refsA
ModuleReferences = Seq.fold (fun acc x -> x::acc) [] s.refsM }
-let tspan = System.TimeSpan(System.DateTime.Now.Ticks - System.DateTime(2000,1,1).Ticks)
+let tspan = System.TimeSpan(System.DateTime.UtcNow.Ticks - System.DateTime(2000,1,1).Ticks)
let parseILVersion (vstr : string) =
// matches "v1.2.3.4" or "1.2.3.4". Note, if numbers are missing, returns -1 (not 0).
@@ -3667,7 +3667,7 @@ let parseILVersion (vstr : string) =
// account for wildcards
if versionComponents.Length > 2 then
let defaultBuild = (uint16)tspan.Days % System.UInt16.MaxValue - 1us
- let defaultRevision = (uint16)(System.DateTime.Now.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us
+ let defaultRevision = (uint16)(System.DateTime.UtcNow.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us
if versionComponents.[2] = "*" then
if versionComponents.Length > 3 then
failwith "Invalid version format"
diff --git a/src/absil/il.fsi b/src/absil/il.fsi
index 8b4743bb72b..a4621052292 100644
--- a/src/absil/il.fsi
+++ b/src/absil/il.fsi
@@ -287,7 +287,7 @@ type ILTypeRef =
member QualifiedName: string
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member QualifiedNameWithNoShortPrimaryAssembly: string
#endif
diff --git a/src/absil/illib.fs b/src/absil/illib.fs
index 79e244402f0..976cc1ac2ea 100644
--- a/src/absil/illib.fs
+++ b/src/absil/illib.fs
@@ -1257,6 +1257,7 @@ module Shim =
abstract FileStreamReadShim: fileName:string -> System.IO.Stream
abstract FileStreamCreateShim: fileName:string -> System.IO.Stream
abstract FileStreamWriteExistingShim: fileName:string -> System.IO.Stream
+
/// Take in a filename with an absolute path, and return the same filename
/// but canonicalized with respect to extra path separators (e.g. C:\\\\foo.txt)
/// and '..' portions
@@ -1264,6 +1265,8 @@ module Shim =
abstract IsPathRootedShim: path:string -> bool
abstract IsInvalidPathShim: filename:string -> bool
abstract GetTempPathShim : unit -> string
+
+ /// Utc time of the last modification
abstract GetLastWriteTimeShim: fileName:string -> System.DateTime
abstract SafeExists: fileName:string -> bool
abstract FileDelete: fileName:string -> unit
@@ -1303,7 +1306,7 @@ module Shim =
member __.GetTempPathShim() = System.IO.Path.GetTempPath()
- member __.GetLastWriteTimeShim (fileName:string) = File.GetLastWriteTime fileName
+ member __.GetLastWriteTimeShim (fileName:string) = File.GetLastWriteTimeUtc fileName
member __.SafeExists (fileName:string) = System.IO.File.Exists fileName
member __.FileDelete (fileName:string) = System.IO.File.Delete fileName
diff --git a/src/absil/ilread.fs b/src/absil/ilread.fs
index 647d30457eb..f4ea49effee 100644
--- a/src/absil/ilread.fs
+++ b/src/absil/ilread.fs
@@ -3206,50 +3206,50 @@ and seekReadManifestResources ctxt () =
yield r ])
-and seekReadNestedExportedTypes ctxt parentIdx =
+and seekReadNestedExportedTypes ctxt (exported: _ array) (nested: Lazy<_ array>) parentIdx =
mkILNestedExportedTypesLazy
(lazy
- [ for i = 1 to ctxt.getNumRows TableNames.ExportedType do
- let (flags, _tok, nameIdx, namespaceIdx, implIdx) = seekReadExportedTypeRow ctxt i
- if not (isTopTypeDef flags) then
- let (TaggedIndex(tag, idx) ) = implIdx
- //let isTopTypeDef = (idx = 0 || tag <> i_ExportedType)
- //if not isTopTypeDef then
- match tag with
- | tag when tag = i_ExportedType && idx = parentIdx ->
- let nm = readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx)
- yield
- { Name=nm
- Access=(match typeAccessOfFlags flags with ILTypeDefAccess.Nested n -> n | _ -> failwith "non-nested access for a nested type described as being in an auxiliary module")
- Nested=seekReadNestedExportedTypes ctxt i
- CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_ExportedType, i)) }
- | _ -> () ])
-
+ nested.Force().[parentIdx-1]
+ |> List.map (fun i ->
+ let (flags, _tok, nameIdx, namespaceIdx, _implIdx) = exported.[i-1]
+ { Name = readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx)
+ Access = (match typeAccessOfFlags flags with
+ | ILTypeDefAccess.Nested n -> n
+ | _ -> failwith "non-nested access for a nested type described as being in an auxiliary module")
+ Nested = seekReadNestedExportedTypes ctxt exported nested i
+ CustomAttrs = seekReadCustomAttrs ctxt (TaggedIndex(hca_ExportedType, i)) }
+ ))
+
and seekReadTopExportedTypes ctxt () =
mkILExportedTypesLazy
(lazy
- let res = ref []
- for i = 1 to ctxt.getNumRows TableNames.ExportedType do
- let (flags, _tok, nameIdx, namespaceIdx, implIdx) = seekReadExportedTypeRow ctxt i
- if isTopTypeDef flags then
- let (TaggedIndex(tag, _idx) ) = implIdx
-
- // the nested types will be picked up by their enclosing types
- if tag <> i_ExportedType then
- let nm = readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx)
-
- let scoref = seekReadImplAsScopeRef ctxt implIdx
-
- let entry =
- { ScopeRef=scoref
- Name=nm
- IsForwarder = ((flags &&& 0x00200000) <> 0)
- Access=typeAccessOfFlags flags
- Nested=seekReadNestedExportedTypes ctxt i
- CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_ExportedType, i)) }
- res := entry :: !res
- done
- List.rev !res)
+ let numRows = ctxt.getNumRows TableNames.ExportedType
+ let exported = [| for i in 1..numRows -> seekReadExportedTypeRow ctxt i |]
+
+ // add each nested type id to their parent's children list
+ let nested = lazy (
+ let nested = [| for _i in 1..numRows -> [] |]
+ for i = 1 to numRows do
+ let (flags,_,_,_,TaggedIndex(tag, idx)) = exported.[i-1]
+ if not (isTopTypeDef flags) && (tag = i_ExportedType) then
+ nested.[idx-1] <- i :: nested.[idx-1]
+ nested)
+
+ // return top exported types
+ [ for i = 1 to numRows do
+ let (flags, _tok, nameIdx, namespaceIdx, implIdx) = exported.[i-1]
+ let (TaggedIndex(tag, _idx)) = implIdx
+
+ // if not a nested type
+ if (isTopTypeDef flags) && (tag <> i_ExportedType) then
+ yield
+ { ScopeRef = seekReadImplAsScopeRef ctxt implIdx
+ Name = readBlobHeapAsTypeName ctxt (nameIdx, namespaceIdx)
+ IsForwarder = ((flags &&& 0x00200000) <> 0)
+ Access = typeAccessOfFlags flags
+ Nested = seekReadNestedExportedTypes ctxt exported nested i
+ CustomAttrs = seekReadCustomAttrs ctxt (TaggedIndex(hca_ExportedType, i)) }
+ ])
#if !FX_NO_PDB_READER
let getPdbReader opts infile =
@@ -3984,7 +3984,7 @@ let OpenILModuleReaderAfterReadingAllBytes infile opts =
opts.pdbPath.IsSome), true
with e ->
System.Diagnostics.Debug.Assert(false, sprintf "Failed to compute key in OpenILModuleReaderAfterReadingAllBytes cache for '%s'. Falling back to uncached." infile)
- ("", System.DateTime.Now, ILScopeRef.Local, false), false
+ ("", System.DateTime.UtcNow, ILScopeRef.Local, false), false
let cacheResult =
if not succeeded then None // Fall back to uncached.
diff --git a/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Service.dll.fs b/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Service.dll.fs
index 2ff140f9a17..19ad354e749 100644
--- a/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Service.dll.fs
+++ b/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Service.dll.fs
@@ -36,25 +36,7 @@ open System.Runtime.InteropServices
[]
[]
#endif
-#if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-#endif
-#if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY
[]
[]
[]
@@ -69,7 +51,6 @@ open System.Runtime.InteropServices
[]
[]
[]
-#endif
// Until dotnet sdk can version assemblies, use this
#if BUILD_FROM_SOURCE
diff --git a/src/buildfromsource.cmd b/src/buildfromsource.cmd
index b18f616f0cb..3cb67b19a34 100644
--- a/src/buildfromsource.cmd
+++ b/src/buildfromsource.cmd
@@ -3,11 +3,6 @@
set __scriptpath=%~dp0
rem build tools
-dotnet restore %__scriptpath%buildtools\fssrgen\fssrgen.fsproj
-if ERRORLEVEL 1 echo Error: failed && goto :failure
-dotnet publish %__scriptpath%buildtools\fssrgen\fssrgen.fsproj -o %__scriptpath%..\Tools\fssrgen
-if ERRORLEVEL 1 echo Error: failed && goto :failure
-
dotnet restore %__scriptpath%buildtools\fslex\fslex.fsproj
if ERRORLEVEL 1 echo Error: failed && goto :failure
dotnet publish %__scriptpath%buildtools\fslex\fslex.fsproj -o %__scriptpath%..\Tools\fslex
@@ -20,7 +15,7 @@ if ERRORLEVEL 1 echo Error: failed && goto :failure
rem build and pack tools
dotnet restore %__scriptpath%buildfromsource\FSharp.Compiler.nuget\FSharp.Compiler.nuget.fsproj
if ERRORLEVEL 1 echo Error: failed && goto :failure
-dotnet pack %__scriptpath%buildfromsource\FSharp.Compiler.nuget\FSharp.Compiler.nuget.fsproj -c debug
+dotnet pack %__scriptpath%buildfromsource\FSharp.Compiler.nuget\FSharp.Compiler.nuget.fsproj -c Release
if ERRORLEVEL 1 echo Error: failed && goto :failure
goto :success
diff --git a/src/buildfromsource.sh b/src/buildfromsource.sh
index ac21542c307..b12189ad0ae 100755
--- a/src/buildfromsource.sh
+++ b/src/buildfromsource.sh
@@ -3,8 +3,6 @@
__scriptpath=$(cd "$(dirname "$0")"; pwd -P)
# build tools
-dotnet restore $__scriptpath/buildtools/fssrgen/fssrgen.fsproj
-dotnet publish $__scriptpath/buildtools/fssrgen/fssrgen.fsproj -o $__scriptpath/../Tools/fssrgen
dotnet restore $__scriptpath/buildtools/fslex/fslex.fsproj
dotnet publish $__scriptpath/buildtools/fslex/fslex.fsproj -o $__scriptpath/../Tools/fslex
dotnet restore $__scriptpath/buildtools/fsyacc/fsyacc.fsproj
@@ -22,4 +20,4 @@ dotnet publish $__scriptpath/buildfromsource/Fsc/Fsc.fsproj
# build and pack tools
dotnet restore $__scriptpath/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
-dotnet pack $__scriptpath/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj -c release
+dotnet pack $__scriptpath/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj -c Release
diff --git a/src/buildfromsource/BuildFromSource.targets b/src/buildfromsource/BuildFromSource.targets
index a42e1bd56de..e69d5959276 100644
--- a/src/buildfromsource/BuildFromSource.targets
+++ b/src/buildfromsource/BuildFromSource.targets
@@ -43,55 +43,12 @@
Condition="'$(DesignTimeBuild)' != 'true'">
-
-
- $([System.Text.RegularExpressions.Regex]::Replace($([System.IO.File]::ReadAllText("%(CopyAndSubstituteText.FullPath)")), "%(CopyAndSubstituteText.Pattern1)", "%(CopyAndSubstituteText.Replacement1)"))
-
-
- $([System.Text.RegularExpressions.Regex]::Replace($(FileText), "%(CopyAndSubstituteText.Pattern2)", "%(CopyAndSubstituteText.Replacement2)"))
-
-
-
-
-
-
-
-
-
-
-
- $(MSBuildThisFileDirectory)../../Tools/fssrgen/fssrgen.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %(FsSrGen.Filename)
- Resx
- false
-
+
+ $([System.Text.RegularExpressions.Regex]::Replace($([System.IO.File]::ReadAllText("%(CopyAndSubstituteText.FullPath)")), "%(CopyAndSubstituteText.Pattern1)", "%(CopyAndSubstituteText.Replacement1)"))
+ $([System.Text.RegularExpressions.Regex]::Replace($(FileText), "%(CopyAndSubstituteText.Pattern2)", "%(CopyAndSubstituteText.Replacement2)"))
+
+
diff --git a/src/buildfromsource/FSharp.Build/FSBuild.fs b/src/buildfromsource/FSharp.Build/FSBuild.fs
new file mode 100644
index 00000000000..f4e36cd07a1
--- /dev/null
+++ b/src/buildfromsource/FSharp.Build/FSBuild.fs
@@ -0,0 +1,125 @@
+// This is a generated file; the original input is 'FSBuild.txt'
+namespace FSBuild
+
+open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators
+open Microsoft.FSharp.Reflection
+open System.Reflection
+// (namespaces below for specific case of using the tool to compile FSharp.Core itself)
+open Microsoft.FSharp.Core
+open Microsoft.FSharp.Core.Operators
+open Microsoft.FSharp.Text
+open Microsoft.FSharp.Collections
+open Printf
+
+type internal SR private() =
+
+ // BEGIN BOILERPLATE
+
+ static let getCurrentAssembly () =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ typeof.GetTypeInfo().Assembly
+ #else
+ System.Reflection.Assembly.GetExecutingAssembly()
+ #endif
+
+ static let getTypeInfo (t: System.Type) =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ t.GetTypeInfo()
+ #else
+ t
+ #endif
+
+ static let resources = lazy (new System.Resources.ResourceManager("FSBuild", getCurrentAssembly()))
+
+ static let GetString(name:string) =
+ let s = resources.Value.GetString(name, System.Globalization.CultureInfo.CurrentUICulture)
+ #if DEBUG
+ if null = s then
+ System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name)
+ #endif
+ s
+
+ static let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) =
+ FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl)
+
+ static let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition()
+
+ static let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer)
+ static let isFunctionType (ty1:System.Type) =
+ isNamedType(ty1) && getTypeInfo(ty1).IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC)
+
+ static let rec destFunTy (ty:System.Type) =
+ if isFunctionType ty then
+ ty, ty.GetGenericArguments()
+ else
+ match getTypeInfo(ty).BaseType with
+ | null -> failwith "destFunTy: not a function type"
+ | b -> destFunTy b
+
+ static let buildFunctionForOneArgPat (ty: System.Type) impl =
+ let _,tys = destFunTy ty
+ let rty = tys.[1]
+ // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"')
+ mkFunctionValue tys (fun inp -> impl rty inp)
+
+ static let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj =
+ match fmt.[i] with
+ | '%' -> go args ty (i+1)
+ | 'd'
+ | 'f'
+ | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1))
+ | _ -> failwith "bad format specifier"
+
+ // newlines and tabs get converted to strings when read from a resource file
+ // this will preserve their original intention
+ static let postProcessString (s : string) =
+ s.Replace("\\n","\n").Replace("\\t","\t").Replace("\\r","\r").Replace("\\\"", "\"")
+
+ static let createMessageString (messageString : string) (fmt : Printf.StringFormat<'T>) : 'T =
+ let fmt = fmt.Value // here, we use the actual error string, as opposed to the one stored as fmt
+ let len = fmt.Length
+
+ /// Function to capture the arguments and then run.
+ let rec capture args ty i =
+ if i >= len || (fmt.[i] = '%' && i+1 >= len) then
+ let b = new System.Text.StringBuilder()
+ b.AppendFormat(messageString, [| for x in List.rev args -> x |]) |> ignore
+ box(b.ToString())
+ // REVIEW: For these purposes, this should be a nop, but I'm leaving it
+ // in incase we ever decide to support labels for the error format string
+ // E.g., "%s%d"
+ elif System.Char.IsSurrogatePair(fmt,i) then
+ capture args ty (i+2)
+ else
+ match fmt.[i] with
+ | '%' ->
+ let i = i+1
+ capture1 fmt i args ty capture
+ | _ ->
+ capture args ty (i+1)
+
+ (unbox (capture [] (typeof<'T>) 0) : 'T)
+
+ static let mutable swallowResourceText = false
+
+ static let GetStringFunc((messageID : string),(fmt : Printf.StringFormat<'T>)) : 'T =
+ if swallowResourceText then
+ sprintf fmt
+ else
+ let mutable messageString = GetString(messageID)
+ messageString <- postProcessString messageString
+ createMessageString messageString fmt
+
+ /// If set to true, then all error messages will just return the filled 'holes' delimited by ',,,'s - this is for language-neutral testing (e.g. localization-invariant baselines).
+ static member SwallowResourceText with get () = swallowResourceText
+ and set (b) = swallowResourceText <- b
+ // END BOILERPLATE
+
+ /// ToolPath is unknown; specify the path to fsc.exe as the ToolPath property.
+ /// (Originally from FSBuild.txt:2)
+ static member toolpathUnknown() = (GetStringFunc("toolpathUnknown",",,,") )
+
+ /// Call this method once to validate that all known resources are valid; throws if not
+ static member RunStartupValidation() =
+ ignore(GetString("toolpathUnknown"))
+ ()
diff --git a/src/buildfromsource/FSharp.Build/FSBuild.resx b/src/buildfromsource/FSharp.Build/FSBuild.resx
new file mode 100644
index 00000000000..8ea57effe4b
--- /dev/null
+++ b/src/buildfromsource/FSharp.Build/FSBuild.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ToolPath is unknown; specify the path to fsc.exe as the ToolPath property.
+
+
\ No newline at end of file
diff --git a/src/buildfromsource/FSharp.Build/FSharp.Build.fsproj b/src/buildfromsource/FSharp.Build/FSharp.Build.fsproj
index 0d7c7c06cc3..0bbcd502150 100644
--- a/src/buildfromsource/FSharp.Build/FSharp.Build.fsproj
+++ b/src/buildfromsource/FSharp.Build/FSharp.Build.fsproj
@@ -13,17 +13,19 @@
-
+
+ FSBuild.resx
+
+
-
+
- Microsoft.FSharp.Targets
diff --git a/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSInteractiveSettings.fs b/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSInteractiveSettings.fs
new file mode 100644
index 00000000000..bc255ecfc74
--- /dev/null
+++ b/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSInteractiveSettings.fs
@@ -0,0 +1,121 @@
+// This is a generated file; the original input is '..\FSInteractiveSettings.txt'
+namespace FSInteractiveSettings
+
+open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators
+open Microsoft.FSharp.Reflection
+open System.Reflection
+// (namespaces below for specific case of using the tool to compile FSharp.Core itself)
+open Microsoft.FSharp.Core
+open Microsoft.FSharp.Core.Operators
+open Microsoft.FSharp.Text
+open Microsoft.FSharp.Collections
+open Printf
+
+type internal SR private() =
+
+ // BEGIN BOILERPLATE
+
+ static let getCurrentAssembly () =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ typeof.GetTypeInfo().Assembly
+ #else
+ System.Reflection.Assembly.GetExecutingAssembly()
+ #endif
+
+ static let getTypeInfo (t: System.Type) =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ t.GetTypeInfo()
+ #else
+ t
+ #endif
+
+ static let resources = lazy (new System.Resources.ResourceManager("FSInteractiveSettings", getCurrentAssembly()))
+
+ static let GetString(name:string) =
+ let s = resources.Value.GetString(name, System.Globalization.CultureInfo.CurrentUICulture)
+ #if DEBUG
+ if null = s then
+ System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name)
+ #endif
+ s
+
+ static let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) =
+ FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl)
+
+ static let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition()
+
+ static let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer)
+ static let isFunctionType (ty1:System.Type) =
+ isNamedType(ty1) && getTypeInfo(ty1).IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC)
+
+ static let rec destFunTy (ty:System.Type) =
+ if isFunctionType ty then
+ ty, ty.GetGenericArguments()
+ else
+ match getTypeInfo(ty).BaseType with
+ | null -> failwith "destFunTy: not a function type"
+ | b -> destFunTy b
+
+ static let buildFunctionForOneArgPat (ty: System.Type) impl =
+ let _,tys = destFunTy ty
+ let rty = tys.[1]
+ // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"')
+ mkFunctionValue tys (fun inp -> impl rty inp)
+
+ static let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj =
+ match fmt.[i] with
+ | '%' -> go args ty (i+1)
+ | 'd'
+ | 'f'
+ | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1))
+ | _ -> failwith "bad format specifier"
+
+ // newlines and tabs get converted to strings when read from a resource file
+ // this will preserve their original intention
+ static let postProcessString (s : string) =
+ s.Replace("\\n","\n").Replace("\\t","\t").Replace("\\r","\r").Replace("\\\"", "\"")
+
+ static let createMessageString (messageString : string) (fmt : Printf.StringFormat<'T>) : 'T =
+ let fmt = fmt.Value // here, we use the actual error string, as opposed to the one stored as fmt
+ let len = fmt.Length
+
+ /// Function to capture the arguments and then run.
+ let rec capture args ty i =
+ if i >= len || (fmt.[i] = '%' && i+1 >= len) then
+ let b = new System.Text.StringBuilder()
+ b.AppendFormat(messageString, [| for x in List.rev args -> x |]) |> ignore
+ box(b.ToString())
+ // REVIEW: For these purposes, this should be a nop, but I'm leaving it
+ // in incase we ever decide to support labels for the error format string
+ // E.g., "%s%d"
+ elif System.Char.IsSurrogatePair(fmt,i) then
+ capture args ty (i+2)
+ else
+ match fmt.[i] with
+ | '%' ->
+ let i = i+1
+ capture1 fmt i args ty capture
+ | _ ->
+ capture args ty (i+1)
+
+ (unbox (capture [] (typeof<'T>) 0) : 'T)
+
+ static let mutable swallowResourceText = false
+
+ static let GetStringFunc((messageID : string),(fmt : Printf.StringFormat<'T>)) : 'T =
+ if swallowResourceText then
+ sprintf fmt
+ else
+ let mutable messageString = GetString(messageID)
+ messageString <- postProcessString messageString
+ createMessageString messageString fmt
+
+ /// If set to true, then all error messages will just return the filled 'holes' delimited by ',,,'s - this is for language-neutral testing (e.g. localization-invariant baselines).
+ static member SwallowResourceText with get () = swallowResourceText
+ and set (b) = swallowResourceText <- b
+ // END BOILERPLATE
+
+
+ /// Call this method once to validate that all known resources are valid; throws if not
+ static member RunStartupValidation() =
+ ()
diff --git a/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSInteractiveSettings.resx b/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSInteractiveSettings.resx
new file mode 100644
index 00000000000..62a9bb5b850
--- /dev/null
+++ b/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSInteractiveSettings.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj b/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
index cc34966a10c..e8a37a4ac28 100644
--- a/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
+++ b/src/buildfromsource/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
@@ -9,13 +9,15 @@
$(NoWarn);45;55;62;75;1182;1204truetrue
- EXTENSIONTYPING;$(DefineConstants)$(OtherFlags) --maxerrors:20 --extraoptimizationloops:1
-
+
+ FSInteractiveSettings.resx
+
+
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs b/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs
new file mode 100644
index 00000000000..abc321272d5
--- /dev/null
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs
@@ -0,0 +1,5701 @@
+// This is a generated file; the original input is '..\FSComp.txt'
+namespace FSComp
+
+open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators
+open Microsoft.FSharp.Reflection
+open System.Reflection
+// (namespaces below for specific case of using the tool to compile FSharp.Core itself)
+open Microsoft.FSharp.Core
+open Microsoft.FSharp.Core.Operators
+open Microsoft.FSharp.Text
+open Microsoft.FSharp.Collections
+open Printf
+
+type internal SR private() =
+
+ // BEGIN BOILERPLATE
+
+ static let getCurrentAssembly () =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ typeof.GetTypeInfo().Assembly
+ #else
+ System.Reflection.Assembly.GetExecutingAssembly()
+ #endif
+
+ static let getTypeInfo (t: System.Type) =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ t.GetTypeInfo()
+ #else
+ t
+ #endif
+
+ static let resources = lazy (new System.Resources.ResourceManager("FSComp", getCurrentAssembly()))
+
+ static let GetString(name:string) =
+ let s = resources.Value.GetString(name, System.Globalization.CultureInfo.CurrentUICulture)
+ #if DEBUG
+ if null = s then
+ System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name)
+ #endif
+ s
+
+ static let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) =
+ FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl)
+
+ static let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition()
+
+ static let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer)
+ static let isFunctionType (ty1:System.Type) =
+ isNamedType(ty1) && getTypeInfo(ty1).IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC)
+
+ static let rec destFunTy (ty:System.Type) =
+ if isFunctionType ty then
+ ty, ty.GetGenericArguments()
+ else
+ match getTypeInfo(ty).BaseType with
+ | null -> failwith "destFunTy: not a function type"
+ | b -> destFunTy b
+
+ static let buildFunctionForOneArgPat (ty: System.Type) impl =
+ let _,tys = destFunTy ty
+ let rty = tys.[1]
+ // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"')
+ mkFunctionValue tys (fun inp -> impl rty inp)
+
+ static let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj =
+ match fmt.[i] with
+ | '%' -> go args ty (i+1)
+ | 'd'
+ | 'f'
+ | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1))
+ | _ -> failwith "bad format specifier"
+
+ // newlines and tabs get converted to strings when read from a resource file
+ // this will preserve their original intention
+ static let postProcessString (s : string) =
+ s.Replace("\\n","\n").Replace("\\t","\t").Replace("\\r","\r").Replace("\\\"", "\"")
+
+ static let createMessageString (messageString : string) (fmt : Printf.StringFormat<'T>) : 'T =
+ let fmt = fmt.Value // here, we use the actual error string, as opposed to the one stored as fmt
+ let len = fmt.Length
+
+ /// Function to capture the arguments and then run.
+ let rec capture args ty i =
+ if i >= len || (fmt.[i] = '%' && i+1 >= len) then
+ let b = new System.Text.StringBuilder()
+ b.AppendFormat(messageString, [| for x in List.rev args -> x |]) |> ignore
+ box(b.ToString())
+ // REVIEW: For these purposes, this should be a nop, but I'm leaving it
+ // in incase we ever decide to support labels for the error format string
+ // E.g., "%s%d"
+ elif System.Char.IsSurrogatePair(fmt,i) then
+ capture args ty (i+2)
+ else
+ match fmt.[i] with
+ | '%' ->
+ let i = i+1
+ capture1 fmt i args ty capture
+ | _ ->
+ capture args ty (i+1)
+
+ (unbox (capture [] (typeof<'T>) 0) : 'T)
+
+ static let mutable swallowResourceText = false
+
+ static let GetStringFunc((messageID : string),(fmt : Printf.StringFormat<'T>)) : 'T =
+ if swallowResourceText then
+ sprintf fmt
+ else
+ let mutable messageString = GetString(messageID)
+ messageString <- postProcessString messageString
+ createMessageString messageString fmt
+
+ /// If set to true, then all error messages will just return the filled 'holes' delimited by ',,,'s - this is for language-neutral testing (e.g. localization-invariant baselines).
+ static member SwallowResourceText with get () = swallowResourceText
+ and set (b) = swallowResourceText <- b
+ // END BOILERPLATE
+
+ /// The namespace '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:4)
+ static member undefinedNameNamespace(a0 : System.String) = (GetStringFunc("undefinedNameNamespace",",,,%s,,,") a0)
+ /// The namespace or module '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:5)
+ static member undefinedNameNamespaceOrModule(a0 : System.String) = (GetStringFunc("undefinedNameNamespaceOrModule",",,,%s,,,") a0)
+ /// The field, constructor or member '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:6)
+ static member undefinedNameFieldConstructorOrMember(a0 : System.String) = (GetStringFunc("undefinedNameFieldConstructorOrMember",",,,%s,,,") a0)
+ /// The value, constructor, namespace or type '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:7)
+ static member undefinedNameValueConstructorNamespaceOrType(a0 : System.String) = (GetStringFunc("undefinedNameValueConstructorNamespaceOrType",",,,%s,,,") a0)
+ /// The value or constructor '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:8)
+ static member undefinedNameValueOfConstructor(a0 : System.String) = (GetStringFunc("undefinedNameValueOfConstructor",",,,%s,,,") a0)
+ /// The value, namespace, type or module '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:9)
+ static member undefinedNameValueNamespaceTypeOrModule(a0 : System.String) = (GetStringFunc("undefinedNameValueNamespaceTypeOrModule",",,,%s,,,") a0)
+ /// The constructor, module or namespace '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:10)
+ static member undefinedNameConstructorModuleOrNamespace(a0 : System.String) = (GetStringFunc("undefinedNameConstructorModuleOrNamespace",",,,%s,,,") a0)
+ /// The type '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:11)
+ static member undefinedNameType(a0 : System.String) = (GetStringFunc("undefinedNameType",",,,%s,,,") a0)
+ /// The type '%s' is not defined in '%s'.
+ /// (Originally from ..\FSComp.txt:12)
+ static member undefinedNameTypeIn(a0 : System.String, a1 : System.String) = (GetStringFunc("undefinedNameTypeIn",",,,%s,,,%s,,,") a0 a1)
+ /// The record label or namespace '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:13)
+ static member undefinedNameRecordLabelOrNamespace(a0 : System.String) = (GetStringFunc("undefinedNameRecordLabelOrNamespace",",,,%s,,,") a0)
+ /// The record label '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:14)
+ static member undefinedNameRecordLabel(a0 : System.String) = (GetStringFunc("undefinedNameRecordLabel",",,,%s,,,") a0)
+ /// Maybe you want one of the following:
+ /// (Originally from ..\FSComp.txt:15)
+ static member undefinedNameSuggestionsIntro() = (GetStringFunc("undefinedNameSuggestionsIntro",",,,") )
+ /// The type parameter %s is not defined.
+ /// (Originally from ..\FSComp.txt:16)
+ static member undefinedNameTypeParameter(a0 : System.String) = (GetStringFunc("undefinedNameTypeParameter",",,,%s,,,") a0)
+ /// The pattern discriminator '%s' is not defined.
+ /// (Originally from ..\FSComp.txt:17)
+ static member undefinedNamePatternDiscriminator(a0 : System.String) = (GetStringFunc("undefinedNamePatternDiscriminator",",,,%s,,,") a0)
+ /// Replace with '%s'
+ /// (Originally from ..\FSComp.txt:18)
+ static member replaceWithSuggestion(a0 : System.String) = (GetStringFunc("replaceWithSuggestion",",,,%s,,,") a0)
+ /// Add . for indexer access.
+ /// (Originally from ..\FSComp.txt:19)
+ static member addIndexerDot() = (GetStringFunc("addIndexerDot",",,,") )
+ /// All elements of a list constructor expression must have the same type. This expression was expected to have type '%s', but here has type '%s'.
+ /// (Originally from ..\FSComp.txt:20)
+ static member listElementHasWrongType(a0 : System.String, a1 : System.String) = (GetStringFunc("listElementHasWrongType",",,,%s,,,%s,,,") a0 a1)
+ /// All elements of an array constructor expression must have the same type. This expression was expected to have type '%s', but here has type '%s'.
+ /// (Originally from ..\FSComp.txt:21)
+ static member arrayElementHasWrongType(a0 : System.String, a1 : System.String) = (GetStringFunc("arrayElementHasWrongType",",,,%s,,,%s,,,") a0 a1)
+ /// The 'if' expression is missing an 'else' branch. The 'then' branch has type '%s'. Because 'if' is an expression, and not a statement, add an 'else' branch which returns a value of the same type.
+ /// (Originally from ..\FSComp.txt:22)
+ static member missingElseBranch(a0 : System.String) = (GetStringFunc("missingElseBranch",",,,%s,,,") a0)
+ /// The 'if' expression needs to have type '%s' to satisfy context type requirements. It currently has type '%s'.
+ /// (Originally from ..\FSComp.txt:23)
+ static member ifExpression(a0 : System.String, a1 : System.String) = (GetStringFunc("ifExpression",",,,%s,,,%s,,,") a0 a1)
+ /// All branches of an 'if' expression must have the same type. This expression was expected to have type '%s', but here has type '%s'.
+ /// (Originally from ..\FSComp.txt:24)
+ static member elseBranchHasWrongType(a0 : System.String, a1 : System.String) = (GetStringFunc("elseBranchHasWrongType",",,,%s,,,%s,,,") a0 a1)
+ /// All branches of a pattern match expression must have the same type. This expression was expected to have type '%s', but here has type '%s'.
+ /// (Originally from ..\FSComp.txt:25)
+ static member followingPatternMatchClauseHasWrongType(a0 : System.String, a1 : System.String) = (GetStringFunc("followingPatternMatchClauseHasWrongType",",,,%s,,,%s,,,") a0 a1)
+ /// A pattern match guard must be of type 'bool', but this 'when' expression is of type '%s'.
+ /// (Originally from ..\FSComp.txt:26)
+ static member patternMatchGuardIsNotBool(a0 : System.String) = (GetStringFunc("patternMatchGuardIsNotBool",",,,%s,,,") a0)
+ /// A ';' is used to separate field values in records. Consider replacing ',' with ';'.
+ /// (Originally from ..\FSComp.txt:27)
+ static member commaInsteadOfSemicolonInRecord() = (GetStringFunc("commaInsteadOfSemicolonInRecord",",,,") )
+ /// The '!' operator is used to dereference a ref cell. Consider using 'not expr' here.
+ /// (Originally from ..\FSComp.txt:28)
+ static member derefInsteadOfNot() = (GetStringFunc("derefInsteadOfNot",",,,") )
+ /// The non-generic type '%s' does not expect any type arguments, but here is given %d type argument(s)
+ /// (Originally from ..\FSComp.txt:29)
+ static member buildUnexpectedTypeArgs(a0 : System.String, a1 : System.Int32) = (GetStringFunc("buildUnexpectedTypeArgs",",,,%s,,,%d,,,") a0 a1)
+ /// Consider using 'return!' instead of 'return'.
+ /// (Originally from ..\FSComp.txt:30)
+ static member returnUsedInsteadOfReturnBang() = (GetStringFunc("returnUsedInsteadOfReturnBang",",,,") )
+ /// Consider using 'yield!' instead of 'yield'.
+ /// (Originally from ..\FSComp.txt:31)
+ static member yieldUsedInsteadOfYieldBang() = (GetStringFunc("yieldUsedInsteadOfYieldBang",",,,") )
+ /// \nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface.
+ /// (Originally from ..\FSComp.txt:32)
+ static member tupleRequiredInAbstractMethod() = (GetStringFunc("tupleRequiredInAbstractMethod",",,,") )
+ /// Invalid warning number '%s'
+ /// (Originally from ..\FSComp.txt:33)
+ static member buildInvalidWarningNumber(a0 : System.String) = (203, GetStringFunc("buildInvalidWarningNumber",",,,%s,,,") a0)
+ /// Invalid version string '%s'
+ /// (Originally from ..\FSComp.txt:34)
+ static member buildInvalidVersionString(a0 : System.String) = (204, GetStringFunc("buildInvalidVersionString",",,,%s,,,") a0)
+ /// Invalid version file '%s'
+ /// (Originally from ..\FSComp.txt:35)
+ static member buildInvalidVersionFile(a0 : System.String) = (205, GetStringFunc("buildInvalidVersionFile",",,,%s,,,") a0)
+ /// Microsoft (R) F# Compiler version %s
+ /// (Originally from ..\FSComp.txt:36)
+ static member buildProductName(a0 : System.String) = (GetStringFunc("buildProductName",",,,%s,,,") a0)
+ /// F# Compiler for F# %s
+ /// (Originally from ..\FSComp.txt:37)
+ static member buildProductNameCommunity(a0 : System.String) = (GetStringFunc("buildProductNameCommunity",",,,%s,,,") a0)
+ /// Problem with filename '%s': %s
+ /// (Originally from ..\FSComp.txt:38)
+ static member buildProblemWithFilename(a0 : System.String, a1 : System.String) = (206, GetStringFunc("buildProblemWithFilename",",,,%s,,,%s,,,") a0 a1)
+ /// No inputs specified
+ /// (Originally from ..\FSComp.txt:39)
+ static member buildNoInputsSpecified() = (207, GetStringFunc("buildNoInputsSpecified",",,,") )
+ /// The '--pdb' option requires the '--debug' option to be used
+ /// (Originally from ..\FSComp.txt:40)
+ static member buildPdbRequiresDebug() = (209, GetStringFunc("buildPdbRequiresDebug",",,,") )
+ /// The search directory '%s' is invalid
+ /// (Originally from ..\FSComp.txt:41)
+ static member buildInvalidSearchDirectory(a0 : System.String) = (210, GetStringFunc("buildInvalidSearchDirectory",",,,%s,,,") a0)
+ /// The search directory '%s' could not be found
+ /// (Originally from ..\FSComp.txt:42)
+ static member buildSearchDirectoryNotFound(a0 : System.String) = (211, GetStringFunc("buildSearchDirectoryNotFound",",,,%s,,,") a0)
+ /// '%s' is not a valid filename
+ /// (Originally from ..\FSComp.txt:43)
+ static member buildInvalidFilename(a0 : System.String) = (212, GetStringFunc("buildInvalidFilename",",,,%s,,,") a0)
+ /// '%s' is not a valid assembly name
+ /// (Originally from ..\FSComp.txt:44)
+ static member buildInvalidAssemblyName(a0 : System.String) = (213, GetStringFunc("buildInvalidAssemblyName",",,,%s,,,") a0)
+ /// Unrecognized privacy setting '%s' for managed resource, valid options are 'public' and 'private'
+ /// (Originally from ..\FSComp.txt:45)
+ static member buildInvalidPrivacy(a0 : System.String) = (214, GetStringFunc("buildInvalidPrivacy",",,,%s,,,") a0)
+ /// Multiple references to '%s.dll' are not permitted
+ /// (Originally from ..\FSComp.txt:46)
+ static member buildMultipleReferencesNotAllowed(a0 : System.String) = (215, GetStringFunc("buildMultipleReferencesNotAllowed",",,,%s,,,") a0)
+ /// Could not read version from mscorlib.dll
+ /// (Originally from ..\FSComp.txt:47)
+ static member buildCouldNotReadVersionInfoFromMscorlib() = (GetStringFunc("buildCouldNotReadVersionInfoFromMscorlib",",,,") )
+ /// Unable to read assembly '%s'
+ /// (Originally from ..\FSComp.txt:48)
+ static member buildCannotReadAssembly(a0 : System.String) = (218, GetStringFunc("buildCannotReadAssembly",",,,%s,,,") a0)
+ /// Assembly resolution failure at or near this location
+ /// (Originally from ..\FSComp.txt:49)
+ static member buildAssemblyResolutionFailed() = (220, GetStringFunc("buildAssemblyResolutionFailed",",,,") )
+ /// The declarations in this file will be placed in an implicit module '%s' based on the file name '%s'. However this is not a valid F# identifier, so the contents will not be accessible from other files. Consider renaming the file or adding a 'module' or 'namespace' declaration at the top of the file.
+ /// (Originally from ..\FSComp.txt:50)
+ static member buildImplicitModuleIsNotLegalIdentifier(a0 : System.String, a1 : System.String) = (221, GetStringFunc("buildImplicitModuleIsNotLegalIdentifier",",,,%s,,,%s,,,") a0 a1)
+ /// Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'. Only the last source file of an application may omit such a declaration.
+ /// (Originally from ..\FSComp.txt:51)
+ static member buildMultiFileRequiresNamespaceOrModule() = (222, GetStringFunc("buildMultiFileRequiresNamespaceOrModule",",,,") )
+ /// Files in libraries or multiple-file applications must begin with a namespace or module declaration. When using a module declaration at the start of a file the '=' sign is not allowed. If this is a top-level module, consider removing the = to resolve this error.
+ /// (Originally from ..\FSComp.txt:52)
+ static member noEqualSignAfterModule() = (222, GetStringFunc("noEqualSignAfterModule",",,,") )
+ /// This file contains multiple declarations of the form 'module SomeNamespace.SomeModule'. Only one declaration of this form is permitted in a file. Change your file to use an initial namespace declaration and/or use 'module ModuleName = ...' to define your modules.
+ /// (Originally from ..\FSComp.txt:53)
+ static member buildMultipleToplevelModules() = (223, GetStringFunc("buildMultipleToplevelModules",",,,") )
+ /// Option requires parameter: %s
+ /// (Originally from ..\FSComp.txt:54)
+ static member buildOptionRequiresParameter(a0 : System.String) = (224, GetStringFunc("buildOptionRequiresParameter",",,,%s,,,") a0)
+ /// Source file '%s' could not be found
+ /// (Originally from ..\FSComp.txt:55)
+ static member buildCouldNotFindSourceFile(a0 : System.String) = (225, GetStringFunc("buildCouldNotFindSourceFile",",,,%s,,,") a0)
+ /// The file extension of '%s' is not recognized. Source files must have extension .fs, .fsi, .fsx, .fsscript, .ml or .mli.
+ /// (Originally from ..\FSComp.txt:56)
+ static member buildInvalidSourceFileExtension(a0 : System.String) = (226, GetStringFunc("buildInvalidSourceFileExtension",",,,%s,,,") a0)
+ /// Could not resolve assembly '%s'
+ /// (Originally from ..\FSComp.txt:57)
+ static member buildCouldNotResolveAssembly(a0 : System.String) = (227, GetStringFunc("buildCouldNotResolveAssembly",",,,%s,,,") a0)
+ /// Could not resolve assembly '%s' required by '%s'
+ /// (Originally from ..\FSComp.txt:58)
+ static member buildCouldNotResolveAssemblyRequiredByFile(a0 : System.String, a1 : System.String) = (228, GetStringFunc("buildCouldNotResolveAssemblyRequiredByFile",",,,%s,,,%s,,,") a0 a1)
+ /// Error opening binary file '%s': %s
+ /// (Originally from ..\FSComp.txt:59)
+ static member buildErrorOpeningBinaryFile(a0 : System.String, a1 : System.String) = (229, GetStringFunc("buildErrorOpeningBinaryFile",",,,%s,,,%s,,,") a0 a1)
+ /// The F#-compiled DLL '%s' needs to be recompiled to be used with this version of F#
+ /// (Originally from ..\FSComp.txt:60)
+ static member buildDifferentVersionMustRecompile(a0 : System.String) = (231, GetStringFunc("buildDifferentVersionMustRecompile",",,,%s,,,") a0)
+ /// Invalid directive. Expected '#I \"\"'.
+ /// (Originally from ..\FSComp.txt:61)
+ static member buildInvalidHashIDirective() = (232, GetStringFunc("buildInvalidHashIDirective",",,,") )
+ /// Invalid directive. Expected '#r \"\"'.
+ /// (Originally from ..\FSComp.txt:62)
+ static member buildInvalidHashrDirective() = (233, GetStringFunc("buildInvalidHashrDirective",",,,") )
+ /// Invalid directive. Expected '#load \"\" ... \"\"'.
+ /// (Originally from ..\FSComp.txt:63)
+ static member buildInvalidHashloadDirective() = (234, GetStringFunc("buildInvalidHashloadDirective",",,,") )
+ /// Invalid directive. Expected '#time', '#time \"on\"' or '#time \"off\"'.
+ /// (Originally from ..\FSComp.txt:64)
+ static member buildInvalidHashtimeDirective() = (235, GetStringFunc("buildInvalidHashtimeDirective",",,,") )
+ /// Directives inside modules are ignored
+ /// (Originally from ..\FSComp.txt:65)
+ static member buildDirectivesInModulesAreIgnored() = (236, GetStringFunc("buildDirectivesInModulesAreIgnored",",,,") )
+ /// A signature for the file or module '%s' has already been specified
+ /// (Originally from ..\FSComp.txt:66)
+ static member buildSignatureAlreadySpecified(a0 : System.String) = (237, GetStringFunc("buildSignatureAlreadySpecified",",,,%s,,,") a0)
+ /// An implementation of file or module '%s' has already been given. Compilation order is significant in F# because of type inference. You may need to adjust the order of your files to place the signature file before the implementation. In Visual Studio files are type-checked in the order they appear in the project file, which can be edited manually or adjusted using the solution explorer.
+ /// (Originally from ..\FSComp.txt:67)
+ static member buildImplementationAlreadyGivenDetail(a0 : System.String) = (238, GetStringFunc("buildImplementationAlreadyGivenDetail",",,,%s,,,") a0)
+ /// An implementation of the file or module '%s' has already been given
+ /// (Originally from ..\FSComp.txt:68)
+ static member buildImplementationAlreadyGiven(a0 : System.String) = (239, GetStringFunc("buildImplementationAlreadyGiven",",,,%s,,,") a0)
+ /// The signature file '%s' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.
+ /// (Originally from ..\FSComp.txt:69)
+ static member buildSignatureWithoutImplementation(a0 : System.String) = (240, GetStringFunc("buildSignatureWithoutImplementation",",,,%s,,,") a0)
+ /// '%s' is not a valid integer argument
+ /// (Originally from ..\FSComp.txt:70)
+ static member buildArgInvalidInt(a0 : System.String) = (241, GetStringFunc("buildArgInvalidInt",",,,%s,,,") a0)
+ /// '%s' is not a valid floating point argument
+ /// (Originally from ..\FSComp.txt:71)
+ static member buildArgInvalidFloat(a0 : System.String) = (242, GetStringFunc("buildArgInvalidFloat",",,,%s,,,") a0)
+ /// Unrecognized option: '%s'
+ /// (Originally from ..\FSComp.txt:72)
+ static member buildUnrecognizedOption(a0 : System.String) = (243, GetStringFunc("buildUnrecognizedOption",",,,%s,,,") a0)
+ /// Invalid module or namespace name
+ /// (Originally from ..\FSComp.txt:73)
+ static member buildInvalidModuleOrNamespaceName() = (244, GetStringFunc("buildInvalidModuleOrNamespaceName",",,,") )
+ /// Error reading/writing metadata for the F# compiled DLL '%s'. Was the DLL compiled with an earlier version of the F# compiler? (error: '%s').
+ /// (Originally from ..\FSComp.txt:74)
+ static member pickleErrorReadingWritingMetadata(a0 : System.String, a1 : System.String) = (GetStringFunc("pickleErrorReadingWritingMetadata",",,,%s,,,%s,,,") a0 a1)
+ /// The type/module '%s' is not a concrete module or type
+ /// (Originally from ..\FSComp.txt:75)
+ static member tastTypeOrModuleNotConcrete(a0 : System.String) = (245, GetStringFunc("tastTypeOrModuleNotConcrete",",,,%s,,,") a0)
+ /// The type '%s' has an inline assembly code representation
+ /// (Originally from ..\FSComp.txt:76)
+ static member tastTypeHasAssemblyCodeRepresentation(a0 : System.String) = (GetStringFunc("tastTypeHasAssemblyCodeRepresentation",",,,%s,,,") a0)
+ /// A namespace and a module named '%s' both occur in two parts of this assembly
+ /// (Originally from ..\FSComp.txt:77)
+ static member tastNamespaceAndModuleWithSameNameInAssembly(a0 : System.String) = (247, GetStringFunc("tastNamespaceAndModuleWithSameNameInAssembly",",,,%s,,,") a0)
+ /// Two modules named '%s' occur in two parts of this assembly
+ /// (Originally from ..\FSComp.txt:78)
+ static member tastTwoModulesWithSameNameInAssembly(a0 : System.String) = (248, GetStringFunc("tastTwoModulesWithSameNameInAssembly",",,,%s,,,") a0)
+ /// Two type definitions named '%s' occur in namespace '%s' in two parts of this assembly
+ /// (Originally from ..\FSComp.txt:79)
+ static member tastDuplicateTypeDefinitionInAssembly(a0 : System.String, a1 : System.String) = (249, GetStringFunc("tastDuplicateTypeDefinitionInAssembly",",,,%s,,,%s,,,") a0 a1)
+ /// A module and a type definition named '%s' occur in namespace '%s' in two parts of this assembly
+ /// (Originally from ..\FSComp.txt:80)
+ static member tastConflictingModuleAndTypeDefinitionInAssembly(a0 : System.String, a1 : System.String) = (250, GetStringFunc("tastConflictingModuleAndTypeDefinitionInAssembly",",,,%s,,,%s,,,") a0 a1)
+ /// Invalid member signature encountered because of an earlier error
+ /// (Originally from ..\FSComp.txt:81)
+ static member tastInvalidMemberSignature() = (251, GetStringFunc("tastInvalidMemberSignature",",,,") )
+ /// This value does not have a valid property setter type
+ /// (Originally from ..\FSComp.txt:82)
+ static member tastValueDoesNotHaveSetterType() = (252, GetStringFunc("tastValueDoesNotHaveSetterType",",,,") )
+ /// Invalid form for a property getter. At least one '()' argument is required when using the explicit syntax.
+ /// (Originally from ..\FSComp.txt:83)
+ static member tastInvalidFormForPropertyGetter() = (253, GetStringFunc("tastInvalidFormForPropertyGetter",",,,") )
+ /// Invalid form for a property setter. At least one argument is required.
+ /// (Originally from ..\FSComp.txt:84)
+ static member tastInvalidFormForPropertySetter() = (254, GetStringFunc("tastInvalidFormForPropertySetter",",,,") )
+ /// Unexpected use of a byref-typed variable
+ /// (Originally from ..\FSComp.txt:85)
+ static member tastUnexpectedByRef() = (255, GetStringFunc("tastUnexpectedByRef",",,,") )
+ /// A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'
+ /// (Originally from ..\FSComp.txt:86)
+ static member tastValueMustBeLocalAndMutable() = (256, GetStringFunc("tastValueMustBeLocalAndMutable",",,,") )
+ /// Invalid mutation of a constant expression. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...'.
+ /// (Originally from ..\FSComp.txt:87)
+ static member tastInvalidMutationOfConstant() = (257, GetStringFunc("tastInvalidMutationOfConstant",",,,") )
+ /// The value has been copied to ensure the original is not mutated by this operation or because the copy is implicit when returning a struct from a member and another member is then accessed
+ /// (Originally from ..\FSComp.txt:88)
+ static member tastValueHasBeenCopied() = (GetStringFunc("tastValueHasBeenCopied",",,,") )
+ /// Recursively defined values cannot appear directly as part of the construction of a tuple value within a recursive binding
+ /// (Originally from ..\FSComp.txt:89)
+ static member tastRecursiveValuesMayNotBeInConstructionOfTuple() = (259, GetStringFunc("tastRecursiveValuesMayNotBeInConstructionOfTuple",",,,") )
+ /// Recursive values cannot appear directly as a construction of the type '%s' within a recursive binding. This feature has been removed from the F# language. Consider using a record instead.
+ /// (Originally from ..\FSComp.txt:90)
+ static member tastRecursiveValuesMayNotAppearInConstructionOfType(a0 : System.String) = (260, GetStringFunc("tastRecursiveValuesMayNotAppearInConstructionOfType",",,,%s,,,") a0)
+ /// Recursive values cannot be directly assigned to the non-mutable field '%s' of the type '%s' within a recursive binding. Consider using a mutable field instead.
+ /// (Originally from ..\FSComp.txt:91)
+ static member tastRecursiveValuesMayNotBeAssignedToNonMutableField(a0 : System.String, a1 : System.String) = (261, GetStringFunc("tastRecursiveValuesMayNotBeAssignedToNonMutableField",",,,%s,,,%s,,,") a0 a1)
+ /// Unexpected decode of AutoOpenAttribute
+ /// (Originally from ..\FSComp.txt:92)
+ static member tastUnexpectedDecodeOfAutoOpenAttribute() = (GetStringFunc("tastUnexpectedDecodeOfAutoOpenAttribute",",,,") )
+ /// Unexpected decode of InternalsVisibleToAttribute
+ /// (Originally from ..\FSComp.txt:93)
+ static member tastUnexpectedDecodeOfInternalsVisibleToAttribute() = (GetStringFunc("tastUnexpectedDecodeOfInternalsVisibleToAttribute",",,,") )
+ /// Unexpected decode of InterfaceDataVersionAttribute
+ /// (Originally from ..\FSComp.txt:94)
+ static member tastUnexpectedDecodeOfInterfaceDataVersionAttribute() = (GetStringFunc("tastUnexpectedDecodeOfInterfaceDataVersionAttribute",",,,") )
+ /// Active patterns cannot return more than 7 possibilities
+ /// (Originally from ..\FSComp.txt:95)
+ static member tastActivePatternsLimitedToSeven() = (265, GetStringFunc("tastActivePatternsLimitedToSeven",",,,") )
+ /// This is not a valid constant expression or custom attribute value
+ /// (Originally from ..\FSComp.txt:96)
+ static member tastNotAConstantExpression() = (267, GetStringFunc("tastNotAConstantExpression",",,,") )
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe mutability attributes differ
+ /// (Originally from ..\FSComp.txt:97)
+ static member ValueNotContainedMutabilityAttributesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityAttributesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe names differ
+ /// (Originally from ..\FSComp.txt:98)
+ static member ValueNotContainedMutabilityNamesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityNamesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe compiled names differ
+ /// (Originally from ..\FSComp.txt:99)
+ static member ValueNotContainedMutabilityCompiledNamesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityCompiledNamesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe display names differ
+ /// (Originally from ..\FSComp.txt:100)
+ static member ValueNotContainedMutabilityDisplayNamesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityDisplayNamesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\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:101)
+ static member ValueNotContainedMutabilityAccessibilityMore(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityAccessibilityMore",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe inline flags differ
+ /// (Originally from ..\FSComp.txt:102)
+ static member ValueNotContainedMutabilityInlineFlagsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityInlineFlagsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe literal constant values and/or attributes differ
+ /// (Originally from ..\FSComp.txt:103)
+ static member ValueNotContainedMutabilityLiteralConstantValuesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityLiteralConstantValuesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is a type function and the other is not. The signature requires explicit type parameters if they are present in the implementation.
+ /// (Originally from ..\FSComp.txt:104)
+ static member ValueNotContainedMutabilityOneIsTypeFunction(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityOneIsTypeFunction",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe respective type parameter counts differ
+ /// (Originally from ..\FSComp.txt:105)
+ static member ValueNotContainedMutabilityParameterCountsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityParameterCountsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe types differ
+ /// (Originally from ..\FSComp.txt:106)
+ static member ValueNotContainedMutabilityTypesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityTypesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is an extension member and the other is not
+ /// (Originally from ..\FSComp.txt:107)
+ static member ValueNotContainedMutabilityExtensionsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityExtensionsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nAn arity was not inferred for this value
+ /// (Originally from ..\FSComp.txt:108)
+ static member ValueNotContainedMutabilityArityNotInferred(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityArityNotInferred",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe number of generic parameters in the signature and implementation differ (the signature declares %s but the implementation declares %s
+ /// (Originally from ..\FSComp.txt:109)
+ static member ValueNotContainedMutabilityGenericParametersDiffer(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String, a4 : System.String) = (GetStringFunc("ValueNotContainedMutabilityGenericParametersDiffer",",,,%s,,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3 a4)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe generic parameters in the signature and implementation have different kinds. Perhaps there is a missing [] attribute.
+ /// (Originally from ..\FSComp.txt:110)
+ static member ValueNotContainedMutabilityGenericParametersAreDifferentKinds(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityGenericParametersAreDifferentKinds",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe arities in the signature and implementation differ. The signature specifies that '%s' is function definition or lambda expression accepting at least %s argument(s), but the implementation is a computed function value. To declare that a computed function value is a permitted implementation simply parenthesize its type in the signature, e.g.\n\tval %s: int -> (int -> int)\ninstead of\n\tval %s: int -> int -> int.
+ /// (Originally from ..\FSComp.txt:111)
+ static member ValueNotContainedMutabilityAritiesDiffer(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String, a4 : System.String, a5 : System.String, a6 : System.String) = (GetStringFunc("ValueNotContainedMutabilityAritiesDiffer",",,,%s,,,%s,,,%s,,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3 a4 a5 a6)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe CLI member names differ
+ /// (Originally from ..\FSComp.txt:112)
+ static member ValueNotContainedMutabilityDotNetNamesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityDotNetNamesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is static and the other isn't
+ /// (Originally from ..\FSComp.txt:113)
+ static member ValueNotContainedMutabilityStaticsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityStaticsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is virtual and the other isn't
+ /// (Originally from ..\FSComp.txt:114)
+ static member ValueNotContainedMutabilityVirtualsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityVirtualsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is abstract and the other isn't
+ /// (Originally from ..\FSComp.txt:115)
+ static member ValueNotContainedMutabilityAbstractsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityAbstractsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is final and the other isn't
+ /// (Originally from ..\FSComp.txt:116)
+ static member ValueNotContainedMutabilityFinalsDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityFinalsDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is marked as an override and the other isn't
+ /// (Originally from ..\FSComp.txt:117)
+ static member ValueNotContainedMutabilityOverridesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityOverridesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is a constructor/property and the other is not
+ /// (Originally from ..\FSComp.txt:118)
+ static member ValueNotContainedMutabilityOneIsConstructor(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityOneIsConstructor",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe compiled representation of this method is as a static member but the signature indicates its compiled representation is as an instance member
+ /// (Originally from ..\FSComp.txt:119)
+ static member ValueNotContainedMutabilityStaticButInstance(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityStaticButInstance",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe compiled representation of this method is as an instance member, but the signature indicates its compiled representation is as a static member
+ /// (Originally from ..\FSComp.txt:120)
+ static member ValueNotContainedMutabilityInstanceButStatic(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ValueNotContainedMutabilityInstanceButStatic",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions in the signature and implementation are not compatible because the names differ. The type is called '%s' in the signature file but '%s' in implementation.
+ /// (Originally from ..\FSComp.txt:121)
+ static member DefinitionsInSigAndImplNotCompatibleNamesDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (290, GetStringFunc("DefinitionsInSigAndImplNotCompatibleNamesDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the respective type parameter counts differ
+ /// (Originally from ..\FSComp.txt:122)
+ static member DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer(a0 : System.String, a1 : System.String) = (291, GetStringFunc("DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the accessibility specified in the signature is more than that specified in the implementation
+ /// (Originally from ..\FSComp.txt:123)
+ static member DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer(a0 : System.String, a1 : System.String) = (292, GetStringFunc("DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the signature requires that the type supports the interface %s but the interface has not been implemented
+ /// (Originally from ..\FSComp.txt:124)
+ static member DefinitionsInSigAndImplNotCompatibleMissingInterface(a0 : System.String, a1 : System.String, a2 : System.String) = (293, GetStringFunc("DefinitionsInSigAndImplNotCompatibleMissingInterface",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation says this type may use nulls as a representation but the signature does not
+ /// (Originally from ..\FSComp.txt:125)
+ static member DefinitionsInSigAndImplNotCompatibleImplementationSaysNull(a0 : System.String, a1 : System.String) = (294, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplementationSaysNull",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation says this type may use nulls as an extra value but the signature does not
+ /// (Originally from ..\FSComp.txt:126)
+ static member DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2(a0 : System.String, a1 : System.String) = (294, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the signature says this type may use nulls as a representation but the implementation does not
+ /// (Originally from ..\FSComp.txt:127)
+ static member DefinitionsInSigAndImplNotCompatibleSignatureSaysNull(a0 : System.String, a1 : System.String) = (295, GetStringFunc("DefinitionsInSigAndImplNotCompatibleSignatureSaysNull",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the signature says this type may use nulls as an extra value but the implementation does not
+ /// (Originally from ..\FSComp.txt:128)
+ static member DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2(a0 : System.String, a1 : System.String) = (295, GetStringFunc("DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation type is sealed but the signature implies it is not. Consider adding the [] attribute to the signature.
+ /// (Originally from ..\FSComp.txt:129)
+ static member DefinitionsInSigAndImplNotCompatibleImplementationSealed(a0 : System.String, a1 : System.String) = (296, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplementationSealed",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation type is not sealed but signature implies it is. Consider adding the [] attribute to the implementation.
+ /// (Originally from ..\FSComp.txt:130)
+ static member DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed(a0 : System.String, a1 : System.String) = (297, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation is an abstract class but the signature is not. Consider adding the [] attribute to the signature.
+ /// (Originally from ..\FSComp.txt:131)
+ static member DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract(a0 : System.String, a1 : System.String) = (298, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the signature is an abstract class but the implementation is not. Consider adding the [] attribute to the implementation.
+ /// (Originally from ..\FSComp.txt:132)
+ static member DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract(a0 : System.String, a1 : System.String) = (299, GetStringFunc("DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the types have different base types
+ /// (Originally from ..\FSComp.txt:133)
+ static member DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes(a0 : System.String, a1 : System.String) = (300, GetStringFunc("DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the number of %ss differ
+ /// (Originally from ..\FSComp.txt:134)
+ static member DefinitionsInSigAndImplNotCompatibleNumbersDiffer(a0 : System.String, a1 : System.String, a2 : System.String) = (301, GetStringFunc("DefinitionsInSigAndImplNotCompatibleNumbersDiffer",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the signature defines the %s '%s' but the implementation does not (or does, but not in the same order)
+ /// (Originally from ..\FSComp.txt:135)
+ static member DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (302, GetStringFunc("DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation defines the %s '%s' but the signature does not (or does, but not in the same order)
+ /// (Originally from ..\FSComp.txt:136)
+ static member DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (303, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the implementation defines a struct but the signature defines a type with a hidden representation
+ /// (Originally from ..\FSComp.txt:137)
+ static member DefinitionsInSigAndImplNotCompatibleImplDefinesStruct(a0 : System.String, a1 : System.String) = (304, GetStringFunc("DefinitionsInSigAndImplNotCompatibleImplDefinesStruct",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because a CLI type representation is being hidden by a signature
+ /// (Originally from ..\FSComp.txt:138)
+ static member DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden(a0 : System.String, a1 : System.String) = (305, GetStringFunc("DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because a type representation is being hidden by a signature
+ /// (Originally from ..\FSComp.txt:139)
+ static member DefinitionsInSigAndImplNotCompatibleTypeIsHidden(a0 : System.String, a1 : System.String) = (306, GetStringFunc("DefinitionsInSigAndImplNotCompatibleTypeIsHidden",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the types are of different kinds
+ /// (Originally from ..\FSComp.txt:140)
+ static member DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind(a0 : System.String, a1 : System.String) = (307, GetStringFunc("DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the IL representations differ
+ /// (Originally from ..\FSComp.txt:141)
+ static member DefinitionsInSigAndImplNotCompatibleILDiffer(a0 : System.String, a1 : System.String) = (308, GetStringFunc("DefinitionsInSigAndImplNotCompatibleILDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the representations differ
+ /// (Originally from ..\FSComp.txt:142)
+ static member DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer(a0 : System.String, a1 : System.String) = (309, GetStringFunc("DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the field %s was present in the implementation but not in the signature
+ /// (Originally from ..\FSComp.txt:143)
+ static member DefinitionsInSigAndImplNotCompatibleFieldWasPresent(a0 : System.String, a1 : System.String, a2 : System.String) = (311, GetStringFunc("DefinitionsInSigAndImplNotCompatibleFieldWasPresent",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the order of the fields is different in the signature and implementation
+ /// (Originally from ..\FSComp.txt:144)
+ static member DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer(a0 : System.String, a1 : System.String) = (312, GetStringFunc("DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the field %s was required by the signature but was not specified by the implementation
+ /// (Originally from ..\FSComp.txt:145)
+ static member DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(a0 : System.String, a1 : System.String, a2 : System.String) = (313, GetStringFunc("DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the field '%s' was present in the implementation but not in the signature. Struct types must now reveal their fields in the signature for the type, though the fields may still be labelled 'private' or 'internal'.
+ /// (Originally from ..\FSComp.txt:146)
+ static member DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig(a0 : System.String, a1 : System.String, a2 : System.String) = (314, GetStringFunc("DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the abstract member '%s' was required by the signature but was not specified by the implementation
+ /// (Originally from ..\FSComp.txt:147)
+ static member DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl(a0 : System.String, a1 : System.String, a2 : System.String) = (315, GetStringFunc("DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the abstract member '%s' was present in the implementation but not in the signature
+ /// (Originally from ..\FSComp.txt:148)
+ static member DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig(a0 : System.String, a1 : System.String, a2 : System.String) = (316, GetStringFunc("DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The %s definitions for type '%s' in the signature and implementation are not compatible because the signature declares a %s while the implementation declares a %s
+ /// (Originally from ..\FSComp.txt:149)
+ static member DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (317, GetStringFunc("DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// 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:150)
+ static member DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (318, GetStringFunc("DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// 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:151)
+ static member DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig(a0 : System.String, a1 : System.String) = (319, GetStringFunc("DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig",",,,%s,,,%s,,,") a0 a1)
+ /// 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:152)
+ static member DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation(a0 : System.String, a1 : System.String) = (320, GetStringFunc("DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe names differ
+ /// (Originally from ..\FSComp.txt:153)
+ static member ModuleContainsConstructorButNamesDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("ModuleContainsConstructorButNamesDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe respective number of data fields differ
+ /// (Originally from ..\FSComp.txt:154)
+ static member ModuleContainsConstructorButDataFieldsDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("ModuleContainsConstructorButDataFieldsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe types of the fields differ
+ /// (Originally from ..\FSComp.txt:155)
+ static member ModuleContainsConstructorButTypesOfFieldsDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("ModuleContainsConstructorButTypesOfFieldsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:156)
+ static member ModuleContainsConstructorButAccessibilityDiffers(a0 : System.String, a1 : System.String) = (GetStringFunc("ModuleContainsConstructorButAccessibilityDiffers",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the field\n %s \nbut its signature specifies\n %s \nThe names differ
+ /// (Originally from ..\FSComp.txt:157)
+ static member FieldNotContainedNamesDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("FieldNotContainedNamesDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:158)
+ static member FieldNotContainedAccessibilitiesDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("FieldNotContainedAccessibilitiesDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'static' modifiers differ
+ /// (Originally from ..\FSComp.txt:159)
+ static member FieldNotContainedStaticsDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("FieldNotContainedStaticsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'mutable' modifiers differ
+ /// (Originally from ..\FSComp.txt:160)
+ static member FieldNotContainedMutablesDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("FieldNotContainedMutablesDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'literal' modifiers differ
+ /// (Originally from ..\FSComp.txt:161)
+ static member FieldNotContainedLiteralsDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("FieldNotContainedLiteralsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// The module contains the field\n %s \nbut its signature specifies\n %s \nThe types differ
+ /// (Originally from ..\FSComp.txt:162)
+ static member FieldNotContainedTypesDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("FieldNotContainedTypesDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:163)
+ static member typrelCannotResolveImplicitGenericInstantiation(a0 : System.String, a1 : System.String) = (331, GetStringFunc("typrelCannotResolveImplicitGenericInstantiation",",,,%s,,,%s,,,") a0 a1)
+ /// Could not resolve the ambiguity inherent in the use of the operator '%s' at or near this program point. Consider using type annotations to resolve the ambiguity.
+ /// (Originally from ..\FSComp.txt:164)
+ static member typrelCannotResolveAmbiguityInOverloadedOperator(a0 : System.String) = (332, GetStringFunc("typrelCannotResolveAmbiguityInOverloadedOperator",",,,%s,,,") a0)
+ /// Could not resolve the ambiguity inherent in the use of a 'printf'-style format string
+ /// (Originally from ..\FSComp.txt:165)
+ static member typrelCannotResolveAmbiguityInPrintf() = (333, GetStringFunc("typrelCannotResolveAmbiguityInPrintf",",,,") )
+ /// 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:166)
+ static member typrelCannotResolveAmbiguityInEnum() = (334, GetStringFunc("typrelCannotResolveAmbiguityInEnum",",,,") )
+ /// 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:167)
+ static member typrelCannotResolveAmbiguityInDelegate() = (335, GetStringFunc("typrelCannotResolveAmbiguityInDelegate",",,,") )
+ /// Invalid value
+ /// (Originally from ..\FSComp.txt:168)
+ static member typrelInvalidValue() = (337, GetStringFunc("typrelInvalidValue",",,,") )
+ /// The signature and implementation are not compatible because the respective type parameter counts differ
+ /// (Originally from ..\FSComp.txt:169)
+ static member typrelSigImplNotCompatibleParamCountsDiffer() = (338, GetStringFunc("typrelSigImplNotCompatibleParamCountsDiffer",",,,") )
+ /// 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:170)
+ static member typrelSigImplNotCompatibleCompileTimeRequirementsDiffer() = (339, GetStringFunc("typrelSigImplNotCompatibleCompileTimeRequirementsDiffer",",,,") )
+ /// 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:171)
+ static member typrelSigImplNotCompatibleConstraintsDiffer(a0 : System.String, a1 : System.String) = (340, GetStringFunc("typrelSigImplNotCompatibleConstraintsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:172)
+ static member typrelSigImplNotCompatibleConstraintsDifferRemove(a0 : System.String, a1 : System.String) = (341, GetStringFunc("typrelSigImplNotCompatibleConstraintsDifferRemove",",,,%s,,,%s,,,") a0 a1)
+ /// The type '%s' implements 'System.IComparable'. Consider also adding an explicit override for 'Object.Equals'
+ /// (Originally from ..\FSComp.txt:173)
+ static member typrelTypeImplementsIComparableShouldOverrideObjectEquals(a0 : System.String) = (342, GetStringFunc("typrelTypeImplementsIComparableShouldOverrideObjectEquals",",,,%s,,,") a0)
+ /// 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:174)
+ static member typrelTypeImplementsIComparableDefaultObjectEqualsProvided(a0 : System.String) = (343, GetStringFunc("typrelTypeImplementsIComparableDefaultObjectEqualsProvided",",,,%s,,,") a0)
+ /// 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:175)
+ static member typrelExplicitImplementationOfGetHashCodeOrEquals(a0 : System.String) = (344, GetStringFunc("typrelExplicitImplementationOfGetHashCodeOrEquals",",,,%s,,,") a0)
+ /// 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:176)
+ static member typrelExplicitImplementationOfGetHashCode(a0 : System.String) = (345, GetStringFunc("typrelExplicitImplementationOfGetHashCode",",,,%s,,,") a0)
+ /// 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:177)
+ static member typrelExplicitImplementationOfEquals(a0 : System.String) = (346, GetStringFunc("typrelExplicitImplementationOfEquals",",,,%s,,,") a0)
+ /// 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:178)
+ static member ExceptionDefsNotCompatibleHiddenBySignature(a0 : System.String, a1 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleHiddenBySignature",",,,%s,,,%s,,,") a0 a1)
+ /// 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:179)
+ static member ExceptionDefsNotCompatibleDotNetRepresentationsDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleDotNetRepresentationsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:180)
+ static member ExceptionDefsNotCompatibleAbbreviationHiddenBySignature(a0 : System.String, a1 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleAbbreviationHiddenBySignature",",,,%s,,,%s,,,") a0 a1)
+ /// 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:181)
+ static member ExceptionDefsNotCompatibleSignaturesDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleSignaturesDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:182)
+ static member ExceptionDefsNotCompatibleExceptionDeclarationsDiffer(a0 : System.String, a1 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleExceptionDeclarationsDiffer",",,,%s,,,%s,,,") a0 a1)
+ /// 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:183)
+ static member ExceptionDefsNotCompatibleFieldInSigButNotImpl(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleFieldInSigButNotImpl",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:184)
+ static member ExceptionDefsNotCompatibleFieldInImplButNotSig(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleFieldInImplButNotSig",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:185)
+ static member ExceptionDefsNotCompatibleFieldOrderDiffers(a0 : System.String, a1 : System.String) = (GetStringFunc("ExceptionDefsNotCompatibleFieldOrderDiffers",",,,%s,,,%s,,,") a0 a1)
+ /// The namespace or module attributes differ between signature and implementation
+ /// (Originally from ..\FSComp.txt:186)
+ static member typrelModuleNamespaceAttributesDifferInSigAndImpl() = (355, GetStringFunc("typrelModuleNamespaceAttributesDifferInSigAndImpl",",,,") )
+ /// This method is over-constrained in its type parameters
+ /// (Originally from ..\FSComp.txt:187)
+ static member typrelMethodIsOverconstrained() = (356, GetStringFunc("typrelMethodIsOverconstrained",",,,") )
+ /// No implementations of '%s' had the correct number of arguments and type parameters. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:188)
+ static member typrelOverloadNotFound(a0 : System.String, a1 : System.String) = (357, GetStringFunc("typrelOverloadNotFound",",,,%s,,,%s,,,") a0 a1)
+ /// The override for '%s' was ambiguous
+ /// (Originally from ..\FSComp.txt:189)
+ static member typrelOverrideWasAmbiguous(a0 : System.String) = (358, GetStringFunc("typrelOverrideWasAmbiguous",",,,%s,,,") a0)
+ /// More than one override implements '%s'
+ /// (Originally from ..\FSComp.txt:190)
+ static member typrelMoreThenOneOverride(a0 : System.String) = (359, GetStringFunc("typrelMoreThenOneOverride",",,,%s,,,") a0)
+ /// The method '%s' is sealed and cannot be overridden
+ /// (Originally from ..\FSComp.txt:191)
+ static member typrelMethodIsSealed(a0 : System.String) = (360, GetStringFunc("typrelMethodIsSealed",",,,%s,,,") a0)
+ /// The override '%s' implements more than one abstract slot, e.g. '%s' and '%s'
+ /// (Originally from ..\FSComp.txt:192)
+ static member typrelOverrideImplementsMoreThenOneSlot(a0 : System.String, a1 : System.String, a2 : System.String) = (361, GetStringFunc("typrelOverrideImplementsMoreThenOneSlot",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Duplicate or redundant interface
+ /// (Originally from ..\FSComp.txt:193)
+ static member typrelDuplicateInterface() = (362, GetStringFunc("typrelDuplicateInterface",",,,") )
+ /// The interface '%s' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface.
+ /// (Originally from ..\FSComp.txt:194)
+ static member typrelNeedExplicitImplementation(a0 : System.String) = (363, GetStringFunc("typrelNeedExplicitImplementation",",,,%s,,,") a0)
+ /// A named argument has been assigned more than one value
+ /// (Originally from ..\FSComp.txt:195)
+ static member typrelNamedArgumentHasBeenAssignedMoreThenOnce() = (364, GetStringFunc("typrelNamedArgumentHasBeenAssignedMoreThenOnce",",,,") )
+ /// No implementation was given for '%s'
+ /// (Originally from ..\FSComp.txt:196)
+ static member typrelNoImplementationGiven(a0 : System.String) = (365, GetStringFunc("typrelNoImplementationGiven",",,,%s,,,") a0)
+ /// 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:197)
+ static member typrelNoImplementationGivenWithSuggestion(a0 : System.String) = (366, GetStringFunc("typrelNoImplementationGivenWithSuggestion",",,,%s,,,") a0)
+ /// The member '%s' does not have the correct number of arguments. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:198)
+ static member typrelMemberDoesNotHaveCorrectNumberOfArguments(a0 : System.String, a1 : System.String) = (367, GetStringFunc("typrelMemberDoesNotHaveCorrectNumberOfArguments",",,,%s,,,%s,,,") a0 a1)
+ /// The member '%s' does not have the correct number of method type parameters. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:199)
+ static member typrelMemberDoesNotHaveCorrectNumberOfTypeParameters(a0 : System.String, a1 : System.String) = (368, GetStringFunc("typrelMemberDoesNotHaveCorrectNumberOfTypeParameters",",,,%s,,,%s,,,") a0 a1)
+ /// The member '%s' does not have the correct kinds of generic parameters. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:200)
+ static member typrelMemberDoesNotHaveCorrectKindsOfGenericParameters(a0 : System.String, a1 : System.String) = (369, GetStringFunc("typrelMemberDoesNotHaveCorrectKindsOfGenericParameters",",,,%s,,,%s,,,") a0 a1)
+ /// The member '%s' cannot be used to implement '%s'. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:201)
+ static member typrelMemberCannotImplement(a0 : System.String, a1 : System.String, a2 : System.String) = (370, GetStringFunc("typrelMemberCannotImplement",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Error while parsing embedded IL
+ /// (Originally from ..\FSComp.txt:202)
+ static member astParseEmbeddedILError() = (371, GetStringFunc("astParseEmbeddedILError",",,,") )
+ /// Error while parsing embedded IL type
+ /// (Originally from ..\FSComp.txt:203)
+ static member astParseEmbeddedILTypeError() = (372, GetStringFunc("astParseEmbeddedILTypeError",",,,") )
+ /// This indexer notation has been removed from the F# language
+ /// (Originally from ..\FSComp.txt:204)
+ static member astDeprecatedIndexerNotation() = (GetStringFunc("astDeprecatedIndexerNotation",",,,") )
+ /// Invalid expression on left of assignment
+ /// (Originally from ..\FSComp.txt:205)
+ static member astInvalidExprLeftHandOfAssignment() = (374, GetStringFunc("astInvalidExprLeftHandOfAssignment",",,,") )
+ /// 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:206)
+ static member augNoRefEqualsOnStruct() = (376, GetStringFunc("augNoRefEqualsOnStruct",",,,") )
+ /// This type uses an invalid mix of the attributes 'NoEquality', 'ReferenceEquality', 'StructuralEquality', 'NoComparison' and 'StructuralComparison'
+ /// (Originally from ..\FSComp.txt:207)
+ static member augInvalidAttrs() = (377, GetStringFunc("augInvalidAttrs",",,,") )
+ /// The 'NoEquality' attribute must be used in conjunction with the 'NoComparison' attribute
+ /// (Originally from ..\FSComp.txt:208)
+ static member augNoEqualityNeedsNoComparison() = (378, GetStringFunc("augNoEqualityNeedsNoComparison",",,,") )
+ /// The 'StructuralComparison' attribute must be used in conjunction with the 'StructuralEquality' attribute
+ /// (Originally from ..\FSComp.txt:209)
+ static member augStructCompNeedsStructEquality() = (379, GetStringFunc("augStructCompNeedsStructEquality",",,,") )
+ /// The 'StructuralEquality' attribute must be used in conjunction with the 'NoComparison' or 'StructuralComparison' attributes
+ /// (Originally from ..\FSComp.txt:210)
+ static member augStructEqNeedsNoCompOrStructComp() = (380, GetStringFunc("augStructEqNeedsNoCompOrStructComp",",,,") )
+ /// A type cannot have both the 'ReferenceEquality' and 'StructuralEquality' or 'StructuralComparison' attributes
+ /// (Originally from ..\FSComp.txt:211)
+ static member augTypeCantHaveRefEqAndStructAttrs() = (381, GetStringFunc("augTypeCantHaveRefEqAndStructAttrs",",,,") )
+ /// Only record, union, exception and struct types may be augmented with the 'ReferenceEquality', 'StructuralEquality' and 'StructuralComparison' attributes
+ /// (Originally from ..\FSComp.txt:212)
+ static member augOnlyCertainTypesCanHaveAttrs() = (382, GetStringFunc("augOnlyCertainTypesCanHaveAttrs",",,,") )
+ /// A type with attribute 'ReferenceEquality' cannot have an explicit implementation of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'
+ /// (Originally from ..\FSComp.txt:213)
+ static member augRefEqCantHaveObjEquals() = (383, GetStringFunc("augRefEqCantHaveObjEquals",",,,") )
+ /// 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:214)
+ static member augCustomEqNeedsObjEquals() = (384, GetStringFunc("augCustomEqNeedsObjEquals",",,,") )
+ /// 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:215)
+ static member augCustomCompareNeedsIComp() = (385, GetStringFunc("augCustomCompareNeedsIComp",",,,") )
+ /// 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:216)
+ static member augNoEqNeedsNoObjEquals() = (386, GetStringFunc("augNoEqNeedsNoObjEquals",",,,") )
+ /// 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:217)
+ static member augNoCompCantImpIComp() = (386, GetStringFunc("augNoCompCantImpIComp",",,,") )
+ /// The 'CustomEquality' attribute must be used in conjunction with the 'NoComparison' or 'CustomComparison' attributes
+ /// (Originally from ..\FSComp.txt:218)
+ static member augCustomEqNeedsNoCompOrCustomComp() = (387, GetStringFunc("augCustomEqNeedsNoCompOrCustomComp",",,,") )
+ /// Positional specifiers are not permitted in format strings
+ /// (Originally from ..\FSComp.txt:219)
+ static member forPositionalSpecifiersNotPermitted() = (GetStringFunc("forPositionalSpecifiersNotPermitted",",,,") )
+ /// Missing format specifier
+ /// (Originally from ..\FSComp.txt:220)
+ static member forMissingFormatSpecifier() = (GetStringFunc("forMissingFormatSpecifier",",,,") )
+ /// '%s' flag set twice
+ /// (Originally from ..\FSComp.txt:221)
+ static member forFlagSetTwice(a0 : System.String) = (GetStringFunc("forFlagSetTwice",",,,%s,,,") a0)
+ /// Prefix flag (' ' or '+') set twice
+ /// (Originally from ..\FSComp.txt:222)
+ static member forPrefixFlagSpacePlusSetTwice() = (GetStringFunc("forPrefixFlagSpacePlusSetTwice",",,,") )
+ /// The # formatting modifier is invalid in F#
+ /// (Originally from ..\FSComp.txt:223)
+ static member forHashSpecifierIsInvalid() = (GetStringFunc("forHashSpecifierIsInvalid",",,,") )
+ /// Bad precision in format specifier
+ /// (Originally from ..\FSComp.txt:224)
+ static member forBadPrecision() = (GetStringFunc("forBadPrecision",",,,") )
+ /// Bad width in format specifier
+ /// (Originally from ..\FSComp.txt:225)
+ static member forBadWidth() = (GetStringFunc("forBadWidth",",,,") )
+ /// '%s' format does not support '0' flag
+ /// (Originally from ..\FSComp.txt:226)
+ static member forDoesNotSupportZeroFlag(a0 : System.String) = (GetStringFunc("forDoesNotSupportZeroFlag",",,,%s,,,") a0)
+ /// Precision missing after the '.'
+ /// (Originally from ..\FSComp.txt:227)
+ static member forPrecisionMissingAfterDot() = (GetStringFunc("forPrecisionMissingAfterDot",",,,") )
+ /// '%s' format does not support precision
+ /// (Originally from ..\FSComp.txt:228)
+ static member forFormatDoesntSupportPrecision(a0 : System.String) = (GetStringFunc("forFormatDoesntSupportPrecision",",,,%s,,,") a0)
+ /// 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:229)
+ static member forBadFormatSpecifier() = (GetStringFunc("forBadFormatSpecifier",",,,") )
+ /// 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:230)
+ static member forLIsUnnecessary() = (GetStringFunc("forLIsUnnecessary",",,,") )
+ /// 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:231)
+ static member forHIsUnnecessary() = (GetStringFunc("forHIsUnnecessary",",,,") )
+ /// '%s' does not support prefix '%s' flag
+ /// (Originally from ..\FSComp.txt:232)
+ static member forDoesNotSupportPrefixFlag(a0 : System.String, a1 : System.String) = (GetStringFunc("forDoesNotSupportPrefixFlag",",,,%s,,,%s,,,") a0 a1)
+ /// Bad format specifier: '%s'
+ /// (Originally from ..\FSComp.txt:233)
+ static member forBadFormatSpecifierGeneral(a0 : System.String) = (GetStringFunc("forBadFormatSpecifierGeneral",",,,%s,,,") a0)
+ /// System.Environment.Exit did not exit
+ /// (Originally from ..\FSComp.txt:234)
+ static member elSysEnvExitDidntExit() = (GetStringFunc("elSysEnvExitDidntExit",",,,") )
+ /// The treatment of this operator is now handled directly by the F# compiler and its meaning cannot be redefined
+ /// (Originally from ..\FSComp.txt:235)
+ static member elDeprecatedOperator() = (GetStringFunc("elDeprecatedOperator",",,,") )
+ /// 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:236)
+ static member chkProtectedOrBaseCalled() = (405, GetStringFunc("chkProtectedOrBaseCalled",",,,") )
+ /// 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:237)
+ static member chkByrefUsedInInvalidWay(a0 : System.String) = (406, GetStringFunc("chkByrefUsedInInvalidWay",",,,%s,,,") a0)
+ /// 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:238)
+ static member chkBaseUsedInInvalidWay() = (408, GetStringFunc("chkBaseUsedInInvalidWay",",,,") )
+ /// The variable '%s' is used in an invalid way
+ /// (Originally from ..\FSComp.txt:239)
+ static member chkVariableUsedInInvalidWay(a0 : System.String) = (GetStringFunc("chkVariableUsedInInvalidWay",",,,%s,,,") a0)
+ /// The type '%s' is less accessible than the value, member or type '%s' it is used in.
+ /// (Originally from ..\FSComp.txt:240)
+ static member chkTypeLessAccessibleThanType(a0 : System.String, a1 : System.String) = (410, GetStringFunc("chkTypeLessAccessibleThanType",",,,%s,,,%s,,,") a0 a1)
+ /// 'System.Void' can only be used as 'typeof' in F#
+ /// (Originally from ..\FSComp.txt:241)
+ static member chkSystemVoidOnlyInTypeof() = (411, GetStringFunc("chkSystemVoidOnlyInTypeof",",,,") )
+ /// A type instantiation involves a byref type. This is not permitted by the rules of Common IL.
+ /// (Originally from ..\FSComp.txt:242)
+ static member chkErrorUseOfByref() = (412, GetStringFunc("chkErrorUseOfByref",",,,") )
+ /// Calls to 'reraise' may only occur directly in a handler of a try-with
+ /// (Originally from ..\FSComp.txt:243)
+ static member chkErrorContainsCallToRethrow() = (413, GetStringFunc("chkErrorContainsCallToRethrow",",,,") )
+ /// Expression-splicing operators may only be used within quotations
+ /// (Originally from ..\FSComp.txt:244)
+ static member chkSplicingOnlyInQuotations() = (414, GetStringFunc("chkSplicingOnlyInQuotations",",,,") )
+ /// First-class uses of the expression-splicing operator are not permitted
+ /// (Originally from ..\FSComp.txt:245)
+ static member chkNoFirstClassSplicing() = (415, GetStringFunc("chkNoFirstClassSplicing",",,,") )
+ /// First-class uses of the address-of operators are not permitted
+ /// (Originally from ..\FSComp.txt:246)
+ static member chkNoFirstClassAddressOf() = (416, GetStringFunc("chkNoFirstClassAddressOf",",,,") )
+ /// First-class uses of the 'reraise' function is not permitted
+ /// (Originally from ..\FSComp.txt:247)
+ static member chkNoFirstClassRethrow() = (417, GetStringFunc("chkNoFirstClassRethrow",",,,") )
+ /// The byref typed value '%s' cannot be used at this point
+ /// (Originally from ..\FSComp.txt:248)
+ static member chkNoByrefAtThisPoint(a0 : System.String) = (418, GetStringFunc("chkNoByrefAtThisPoint",",,,%s,,,") a0)
+ /// 'base' values may only be used to make direct calls to the base implementations of overridden members
+ /// (Originally from ..\FSComp.txt:249)
+ static member chkLimitationsOfBaseKeyword() = (419, GetStringFunc("chkLimitationsOfBaseKeyword",",,,") )
+ /// Object constructors cannot directly use try/with and try/finally prior to the initialization of the object. This includes constructs such as 'for x in ...' that may elaborate to uses of these constructs. This is a limitation imposed by Common IL.
+ /// (Originally from ..\FSComp.txt:250)
+ static member chkObjCtorsCantUseExceptionHandling() = (420, GetStringFunc("chkObjCtorsCantUseExceptionHandling",",,,") )
+ /// The address of the variable '%s' cannot be used at this point
+ /// (Originally from ..\FSComp.txt:251)
+ static member chkNoAddressOfAtThisPoint(a0 : System.String) = (421, GetStringFunc("chkNoAddressOfAtThisPoint",",,,%s,,,") a0)
+ /// The address of the static field '%s' cannot be used at this point
+ /// (Originally from ..\FSComp.txt:252)
+ static member chkNoAddressStaticFieldAtThisPoint(a0 : System.String) = (422, GetStringFunc("chkNoAddressStaticFieldAtThisPoint",",,,%s,,,") a0)
+ /// The address of the field '%s' cannot be used at this point
+ /// (Originally from ..\FSComp.txt:253)
+ static member chkNoAddressFieldAtThisPoint(a0 : System.String) = (423, GetStringFunc("chkNoAddressFieldAtThisPoint",",,,%s,,,") a0)
+ /// The address of an array element cannot be used at this point
+ /// (Originally from ..\FSComp.txt:254)
+ static member chkNoAddressOfArrayElementAtThisPoint() = (424, GetStringFunc("chkNoAddressOfArrayElementAtThisPoint",",,,") )
+ /// The type of a first-class function cannot contain byrefs
+ /// (Originally from ..\FSComp.txt:255)
+ static member chkFirstClassFuncNoByref() = (425, GetStringFunc("chkFirstClassFuncNoByref",",,,") )
+ /// A method return type would contain byrefs which is not permitted
+ /// (Originally from ..\FSComp.txt:256)
+ static member chkReturnTypeNoByref() = (426, GetStringFunc("chkReturnTypeNoByref",",,,") )
+ /// Invalid custom attribute value (not a constant or literal)
+ /// (Originally from ..\FSComp.txt:257)
+ static member chkInvalidCustAttrVal() = (428, GetStringFunc("chkInvalidCustAttrVal",",,,") )
+ /// The attribute type '%s' has 'AllowMultiple=false'. Multiple instances of this attribute cannot be attached to a single language element.
+ /// (Originally from ..\FSComp.txt:258)
+ static member chkAttrHasAllowMultiFalse(a0 : System.String) = (429, GetStringFunc("chkAttrHasAllowMultiFalse",",,,%s,,,") a0)
+ /// 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:259)
+ static member chkMemberUsedInInvalidWay(a0 : System.String, a1 : System.String, a2 : System.String) = (430, GetStringFunc("chkMemberUsedInInvalidWay",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// A byref typed value would be stored here. Top-level let-bound byref values are not permitted.
+ /// (Originally from ..\FSComp.txt:260)
+ static member chkNoByrefAsTopValue() = (431, GetStringFunc("chkNoByrefAsTopValue",",,,") )
+ /// [] terms cannot contain uses of the prefix splice operator '%%'
+ /// (Originally from ..\FSComp.txt:261)
+ static member chkReflectedDefCantSplice() = (432, GetStringFunc("chkReflectedDefCantSplice",",,,") )
+ /// A function labeled with the 'EntryPointAttribute' attribute must be the last declaration in the last file in the compilation sequence.
+ /// (Originally from ..\FSComp.txt:262)
+ static member chkEntryPointUsage() = (433, GetStringFunc("chkEntryPointUsage",",,,") )
+ /// compiled form of the union case
+ /// (Originally from ..\FSComp.txt:263)
+ static member chkUnionCaseCompiledForm() = (GetStringFunc("chkUnionCaseCompiledForm",",,,") )
+ /// default augmentation of the union case
+ /// (Originally from ..\FSComp.txt:264)
+ static member chkUnionCaseDefaultAugmentation() = (GetStringFunc("chkUnionCaseDefaultAugmentation",",,,") )
+ /// The property '%s' has the same name as a method in type '%s'.
+ /// (Originally from ..\FSComp.txt:265)
+ static member chkPropertySameNameMethod(a0 : System.String, a1 : System.String) = (434, GetStringFunc("chkPropertySameNameMethod",",,,%s,,,%s,,,") a0 a1)
+ /// 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:266)
+ static member chkGetterSetterDoNotMatchAbstract(a0 : System.String, a1 : System.String) = (435, GetStringFunc("chkGetterSetterDoNotMatchAbstract",",,,%s,,,%s,,,") a0 a1)
+ /// 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:267)
+ static member chkPropertySameNameIndexer(a0 : System.String, a1 : System.String) = (436, GetStringFunc("chkPropertySameNameIndexer",",,,%s,,,%s,,,") a0 a1)
+ /// A type would store a byref typed value. This is not permitted by Common IL.
+ /// (Originally from ..\FSComp.txt:268)
+ static member chkCantStoreByrefValue() = (437, GetStringFunc("chkCantStoreByrefValue",",,,") )
+ /// Duplicate method. The method '%s' has the same name and signature as another method in type '%s'.
+ /// (Originally from ..\FSComp.txt:270)
+ static member chkDuplicateMethod(a0 : System.String, a1 : System.String) = (438, GetStringFunc("chkDuplicateMethod",",,,%s,,,%s,,,") a0 a1)
+ /// 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:271)
+ static member chkDuplicateMethodWithSuffix(a0 : System.String, a1 : System.String) = (438, GetStringFunc("chkDuplicateMethodWithSuffix",",,,%s,,,%s,,,") a0 a1)
+ /// 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:272)
+ static member chkDuplicateMethodCurried(a0 : System.String, a1 : System.String) = (439, GetStringFunc("chkDuplicateMethodCurried",",,,%s,,,%s,,,") a0 a1)
+ /// Methods with curried arguments cannot declare 'out', 'ParamArray', 'optional', 'ReflectedDefinition', 'byref', 'CallerLineNumber', 'CallerMemberName', or 'CallerFilePath' arguments
+ /// (Originally from ..\FSComp.txt:273)
+ static member chkCurriedMethodsCantHaveOutParams() = (440, GetStringFunc("chkCurriedMethodsCantHaveOutParams",",,,") )
+ /// Duplicate property. The property '%s' has the same name and signature as another property in type '%s'.
+ /// (Originally from ..\FSComp.txt:274)
+ static member chkDuplicateProperty(a0 : System.String, a1 : System.String) = (441, GetStringFunc("chkDuplicateProperty",",,,%s,,,%s,,,") a0 a1)
+ /// 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:275)
+ static member chkDuplicatePropertyWithSuffix(a0 : System.String, a1 : System.String) = (441, GetStringFunc("chkDuplicatePropertyWithSuffix",",,,%s,,,%s,,,") a0 a1)
+ /// Duplicate method. The abstract method '%s' has the same name and signature as an abstract method in an inherited type.
+ /// (Originally from ..\FSComp.txt:276)
+ static member chkDuplicateMethodInheritedType(a0 : System.String) = (442, GetStringFunc("chkDuplicateMethodInheritedType",",,,%s,,,") a0)
+ /// 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:277)
+ static member chkDuplicateMethodInheritedTypeWithSuffix(a0 : System.String) = (442, GetStringFunc("chkDuplicateMethodInheritedTypeWithSuffix",",,,%s,,,") a0)
+ /// 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:278)
+ static member chkMultipleGenericInterfaceInstantiations(a0 : System.String, a1 : System.String) = (443, GetStringFunc("chkMultipleGenericInterfaceInstantiations",",,,%s,,,%s,,,") a0 a1)
+ /// 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:279)
+ static member chkValueWithDefaultValueMustHaveDefaultValue() = (444, GetStringFunc("chkValueWithDefaultValueMustHaveDefaultValue",",,,") )
+ /// The type abbreviation contains byrefs. This is not permitted by F#.
+ /// (Originally from ..\FSComp.txt:280)
+ static member chkNoByrefInTypeAbbrev() = (445, GetStringFunc("chkNoByrefInTypeAbbrev",",,,") )
+ /// 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:281)
+ static member crefBoundVarUsedInSplice(a0 : System.String) = (446, GetStringFunc("crefBoundVarUsedInSplice",",,,%s,,,") a0)
+ /// Quotations cannot contain uses of generic expressions
+ /// (Originally from ..\FSComp.txt:282)
+ static member crefQuotationsCantContainGenericExprs() = (447, GetStringFunc("crefQuotationsCantContainGenericExprs",",,,") )
+ /// 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:283)
+ static member crefQuotationsCantContainGenericFunctions() = (448, GetStringFunc("crefQuotationsCantContainGenericFunctions",",,,") )
+ /// Quotations cannot contain object expressions
+ /// (Originally from ..\FSComp.txt:284)
+ static member crefQuotationsCantContainObjExprs() = (449, GetStringFunc("crefQuotationsCantContainObjExprs",",,,") )
+ /// Quotations cannot contain expressions that take the address of a field
+ /// (Originally from ..\FSComp.txt:285)
+ static member crefQuotationsCantContainAddressOf() = (450, GetStringFunc("crefQuotationsCantContainAddressOf",",,,") )
+ /// Quotations cannot contain expressions that fetch static fields
+ /// (Originally from ..\FSComp.txt:286)
+ static member crefQuotationsCantContainStaticFieldRef() = (451, GetStringFunc("crefQuotationsCantContainStaticFieldRef",",,,") )
+ /// Quotations cannot contain inline assembly code or pattern matching on arrays
+ /// (Originally from ..\FSComp.txt:287)
+ static member crefQuotationsCantContainInlineIL() = (452, GetStringFunc("crefQuotationsCantContainInlineIL",",,,") )
+ /// Quotations cannot contain descending for loops
+ /// (Originally from ..\FSComp.txt:288)
+ static member crefQuotationsCantContainDescendingForLoops() = (453, GetStringFunc("crefQuotationsCantContainDescendingForLoops",",,,") )
+ /// Quotations cannot contain expressions that fetch union case indexes
+ /// (Originally from ..\FSComp.txt:289)
+ static member crefQuotationsCantFetchUnionIndexes() = (454, GetStringFunc("crefQuotationsCantFetchUnionIndexes",",,,") )
+ /// Quotations cannot contain expressions that set union case fields
+ /// (Originally from ..\FSComp.txt:290)
+ static member crefQuotationsCantSetUnionFields() = (455, GetStringFunc("crefQuotationsCantSetUnionFields",",,,") )
+ /// Quotations cannot contain expressions that set fields in exception values
+ /// (Originally from ..\FSComp.txt:291)
+ static member crefQuotationsCantSetExceptionFields() = (456, GetStringFunc("crefQuotationsCantSetExceptionFields",",,,") )
+ /// Quotations cannot contain expressions that require byref pointers
+ /// (Originally from ..\FSComp.txt:292)
+ static member crefQuotationsCantRequireByref() = (457, GetStringFunc("crefQuotationsCantRequireByref",",,,") )
+ /// 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:293)
+ static member crefQuotationsCantCallTraitMembers() = (458, GetStringFunc("crefQuotationsCantCallTraitMembers",",,,") )
+ /// Quotations cannot contain this kind of constant
+ /// (Originally from ..\FSComp.txt:294)
+ static member crefQuotationsCantContainThisConstant() = (459, GetStringFunc("crefQuotationsCantContainThisConstant",",,,") )
+ /// Quotations cannot contain this kind of pattern match
+ /// (Originally from ..\FSComp.txt:295)
+ static member crefQuotationsCantContainThisPatternMatch() = (460, GetStringFunc("crefQuotationsCantContainThisPatternMatch",",,,") )
+ /// Quotations cannot contain array pattern matching
+ /// (Originally from ..\FSComp.txt:296)
+ static member crefQuotationsCantContainArrayPatternMatching() = (461, GetStringFunc("crefQuotationsCantContainArrayPatternMatching",",,,") )
+ /// Quotations cannot contain this kind of type
+ /// (Originally from ..\FSComp.txt:297)
+ static member crefQuotationsCantContainThisType() = (462, GetStringFunc("crefQuotationsCantContainThisType",",,,") )
+ /// The declared type parameter '%s' cannot be used here since the type parameter cannot be resolved at compile time
+ /// (Originally from ..\FSComp.txt:298)
+ static member csTypeCannotBeResolvedAtCompileTime(a0 : System.String) = (GetStringFunc("csTypeCannotBeResolvedAtCompileTime",",,,%s,,,") a0)
+ /// 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:299)
+ static member csCodeLessGeneric() = (464, GetStringFunc("csCodeLessGeneric",",,,") )
+ /// Type inference problem too complicated (maximum iteration depth reached). Consider adding further type annotations.
+ /// (Originally from ..\FSComp.txt:300)
+ static member csTypeInferenceMaxDepth() = (465, GetStringFunc("csTypeInferenceMaxDepth",",,,") )
+ /// Expected arguments to an instance member
+ /// (Originally from ..\FSComp.txt:301)
+ static member csExpectedArguments() = (GetStringFunc("csExpectedArguments",",,,") )
+ /// This indexer expects %d arguments but is here given %d
+ /// (Originally from ..\FSComp.txt:302)
+ static member csIndexArgumentMismatch(a0 : System.Int32, a1 : System.Int32) = (GetStringFunc("csIndexArgumentMismatch",",,,%d,,,%d,,,") a0 a1)
+ /// 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:303)
+ static member csExpectTypeWithOperatorButGivenFunction(a0 : System.String) = (GetStringFunc("csExpectTypeWithOperatorButGivenFunction",",,,%s,,,") a0)
+ /// Expecting a type supporting the operator '%s' but given a tuple type
+ /// (Originally from ..\FSComp.txt:304)
+ static member csExpectTypeWithOperatorButGivenTuple(a0 : System.String) = (GetStringFunc("csExpectTypeWithOperatorButGivenTuple",",,,%s,,,") a0)
+ /// None of the types '%s' support the operator '%s'
+ /// (Originally from ..\FSComp.txt:305)
+ static member csTypesDoNotSupportOperator(a0 : System.String, a1 : System.String) = (GetStringFunc("csTypesDoNotSupportOperator",",,,%s,,,%s,,,") a0 a1)
+ /// The type '%s' does not support the operator '%s'
+ /// (Originally from ..\FSComp.txt:306)
+ static member csTypeDoesNotSupportOperator(a0 : System.String, a1 : System.String) = (GetStringFunc("csTypeDoesNotSupportOperator",",,,%s,,,%s,,,") a0 a1)
+ /// None of the types '%s' support the operator '%s'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.
+ /// (Originally from ..\FSComp.txt:307)
+ static member csTypesDoNotSupportOperatorNullable(a0 : System.String, a1 : System.String) = (GetStringFunc("csTypesDoNotSupportOperatorNullable",",,,%s,,,%s,,,") a0 a1)
+ /// The type '%s' does not support the operator '%s'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.
+ /// (Originally from ..\FSComp.txt:308)
+ static member csTypeDoesNotSupportOperatorNullable(a0 : System.String, a1 : System.String) = (GetStringFunc("csTypeDoesNotSupportOperatorNullable",",,,%s,,,%s,,,") a0 a1)
+ /// The type '%s' does not support a conversion to the type '%s'
+ /// (Originally from ..\FSComp.txt:309)
+ static member csTypeDoesNotSupportConversion(a0 : System.String, a1 : System.String) = (GetStringFunc("csTypeDoesNotSupportConversion",",,,%s,,,%s,,,") a0 a1)
+ /// The type '%s' has a method '%s' (full name '%s'), but the method is static
+ /// (Originally from ..\FSComp.txt:310)
+ static member csMethodFoundButIsStatic(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("csMethodFoundButIsStatic",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The type '%s' has a method '%s' (full name '%s'), but the method is not static
+ /// (Originally from ..\FSComp.txt:311)
+ static member csMethodFoundButIsNotStatic(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("csMethodFoundButIsNotStatic",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The constraints 'struct' and 'not struct' are inconsistent
+ /// (Originally from ..\FSComp.txt:312)
+ static member csStructConstraintInconsistent() = (472, GetStringFunc("csStructConstraintInconsistent",",,,") )
+ /// The type '%s' does not have 'null' as a proper value
+ /// (Originally from ..\FSComp.txt:313)
+ static member csTypeDoesNotHaveNull(a0 : System.String) = (GetStringFunc("csTypeDoesNotHaveNull",",,,%s,,,") a0)
+ /// The type '%s' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'.
+ /// (Originally from ..\FSComp.txt:314)
+ static member csNullableTypeDoesNotHaveNull(a0 : System.String) = (GetStringFunc("csNullableTypeDoesNotHaveNull",",,,%s,,,") a0)
+ /// The type '%s' does not support the 'comparison' constraint because it has the 'NoComparison' attribute
+ /// (Originally from ..\FSComp.txt:315)
+ static member csTypeDoesNotSupportComparison1(a0 : System.String) = (GetStringFunc("csTypeDoesNotSupportComparison1",",,,%s,,,") a0)
+ /// The type '%s' does not support the 'comparison' constraint. For example, it does not support the 'System.IComparable' interface
+ /// (Originally from ..\FSComp.txt:316)
+ static member csTypeDoesNotSupportComparison2(a0 : System.String) = (GetStringFunc("csTypeDoesNotSupportComparison2",",,,%s,,,") a0)
+ /// The type '%s' does not support the 'comparison' constraint because it is a record, union or struct with one or more structural element types which do not support the 'comparison' constraint. Either avoid the use of comparison with this type, or add the 'StructuralComparison' attribute to the type to determine which field type does not support comparison
+ /// (Originally from ..\FSComp.txt:317)
+ static member csTypeDoesNotSupportComparison3(a0 : System.String) = (GetStringFunc("csTypeDoesNotSupportComparison3",",,,%s,,,") a0)
+ /// The type '%s' does not support the 'equality' constraint because it has the 'NoEquality' attribute
+ /// (Originally from ..\FSComp.txt:318)
+ static member csTypeDoesNotSupportEquality1(a0 : System.String) = (GetStringFunc("csTypeDoesNotSupportEquality1",",,,%s,,,") a0)
+ /// The type '%s' does not support the 'equality' constraint because it is a function type
+ /// (Originally from ..\FSComp.txt:319)
+ static member csTypeDoesNotSupportEquality2(a0 : System.String) = (GetStringFunc("csTypeDoesNotSupportEquality2",",,,%s,,,") a0)
+ /// The type '%s' does not support the 'equality' constraint because it is a record, union or struct with one or more structural element types which do not support the 'equality' constraint. Either avoid the use of equality with this type, or add the 'StructuralEquality' attribute to the type to determine which field type does not support equality
+ /// (Originally from ..\FSComp.txt:320)
+ static member csTypeDoesNotSupportEquality3(a0 : System.String) = (GetStringFunc("csTypeDoesNotSupportEquality3",",,,%s,,,") a0)
+ /// The type '%s' is not a CLI enum type
+ /// (Originally from ..\FSComp.txt:321)
+ static member csTypeIsNotEnumType(a0 : System.String) = (GetStringFunc("csTypeIsNotEnumType",",,,%s,,,") a0)
+ /// The type '%s' has a non-standard delegate type
+ /// (Originally from ..\FSComp.txt:322)
+ static member csTypeHasNonStandardDelegateType(a0 : System.String) = (GetStringFunc("csTypeHasNonStandardDelegateType",",,,%s,,,") a0)
+ /// The type '%s' is not a CLI delegate type
+ /// (Originally from ..\FSComp.txt:323)
+ static member csTypeIsNotDelegateType(a0 : System.String) = (GetStringFunc("csTypeIsNotDelegateType",",,,%s,,,") a0)
+ /// This type parameter cannot be instantiated to 'Nullable'. This is a restriction imposed in order to ensure the meaning of 'null' in some CLI languages is not confusing when used in conjunction with 'Nullable' values.
+ /// (Originally from ..\FSComp.txt:324)
+ static member csTypeParameterCannotBeNullable() = (GetStringFunc("csTypeParameterCannotBeNullable",",,,") )
+ /// A generic construct requires that the type '%s' is a CLI or F# struct type
+ /// (Originally from ..\FSComp.txt:325)
+ static member csGenericConstructRequiresStructType(a0 : System.String) = (GetStringFunc("csGenericConstructRequiresStructType",",,,%s,,,") a0)
+ /// A generic construct requires that the type '%s' is an unmanaged type
+ /// (Originally from ..\FSComp.txt:326)
+ static member csGenericConstructRequiresUnmanagedType(a0 : System.String) = (GetStringFunc("csGenericConstructRequiresUnmanagedType",",,,%s,,,") a0)
+ /// The type '%s' is not compatible with any of the types %s, arising from the use of a printf-style format string
+ /// (Originally from ..\FSComp.txt:327)
+ static member csTypeNotCompatibleBecauseOfPrintf(a0 : System.String, a1 : System.String) = (GetStringFunc("csTypeNotCompatibleBecauseOfPrintf",",,,%s,,,%s,,,") a0 a1)
+ /// A generic construct requires that the type '%s' have reference semantics, but it does not, i.e. it is a struct
+ /// (Originally from ..\FSComp.txt:328)
+ static member csGenericConstructRequiresReferenceSemantics(a0 : System.String) = (GetStringFunc("csGenericConstructRequiresReferenceSemantics",",,,%s,,,") a0)
+ /// A generic construct requires that the type '%s' be non-abstract
+ /// (Originally from ..\FSComp.txt:329)
+ static member csGenericConstructRequiresNonAbstract(a0 : System.String) = (GetStringFunc("csGenericConstructRequiresNonAbstract",",,,%s,,,") a0)
+ /// A generic construct requires that the type '%s' have a public default constructor
+ /// (Originally from ..\FSComp.txt:330)
+ static member csGenericConstructRequiresPublicDefaultConstructor(a0 : System.String) = (GetStringFunc("csGenericConstructRequiresPublicDefaultConstructor",",,,%s,,,") a0)
+ /// Type instantiation length mismatch
+ /// (Originally from ..\FSComp.txt:331)
+ static member csTypeInstantiationLengthMismatch() = (483, GetStringFunc("csTypeInstantiationLengthMismatch",",,,") )
+ /// Optional arguments not permitted here
+ /// (Originally from ..\FSComp.txt:332)
+ static member csOptionalArgumentNotPermittedHere() = (484, GetStringFunc("csOptionalArgumentNotPermittedHere",",,,") )
+ /// %s is not a static member
+ /// (Originally from ..\FSComp.txt:333)
+ static member csMemberIsNotStatic(a0 : System.String) = (485, GetStringFunc("csMemberIsNotStatic",",,,%s,,,") a0)
+ /// %s is not an instance member
+ /// (Originally from ..\FSComp.txt:334)
+ static member csMemberIsNotInstance(a0 : System.String) = (486, GetStringFunc("csMemberIsNotInstance",",,,%s,,,") a0)
+ /// Argument length mismatch
+ /// (Originally from ..\FSComp.txt:335)
+ static member csArgumentLengthMismatch() = (487, GetStringFunc("csArgumentLengthMismatch",",,,") )
+ /// The argument types don't match
+ /// (Originally from ..\FSComp.txt:336)
+ static member csArgumentTypesDoNotMatch() = (488, GetStringFunc("csArgumentTypesDoNotMatch",",,,") )
+ /// This method expects a CLI 'params' parameter in this position. 'params' is a way of passing a variable number of arguments to a method in languages such as C#. Consider passing an array for this argument
+ /// (Originally from ..\FSComp.txt:337)
+ static member csMethodExpectsParams() = (489, GetStringFunc("csMethodExpectsParams",",,,") )
+ /// The member or object constructor '%s' is not %s
+ /// (Originally from ..\FSComp.txt:338)
+ static member csMemberIsNotAccessible(a0 : System.String, a1 : System.String) = (490, GetStringFunc("csMemberIsNotAccessible",",,,%s,,,%s,,,") a0 a1)
+ /// The member or object constructor '%s' is not %s. Private members may only be accessed from within the declaring type. Protected members may only be accessed from an extending type and cannot be accessed from inner lambda expressions.
+ /// (Originally from ..\FSComp.txt:339)
+ static member csMemberIsNotAccessible2(a0 : System.String, a1 : System.String) = (491, GetStringFunc("csMemberIsNotAccessible2",",,,%s,,,%s,,,") a0 a1)
+ /// %s is not a static method
+ /// (Originally from ..\FSComp.txt:340)
+ static member csMethodIsNotAStaticMethod(a0 : System.String) = (492, GetStringFunc("csMethodIsNotAStaticMethod",",,,%s,,,") a0)
+ /// %s is not an instance method
+ /// (Originally from ..\FSComp.txt:341)
+ static member csMethodIsNotAnInstanceMethod(a0 : System.String) = (493, GetStringFunc("csMethodIsNotAnInstanceMethod",",,,%s,,,") a0)
+ /// The member or object constructor '%s' has no argument or settable return property '%s'. %s.
+ /// (Originally from ..\FSComp.txt:342)
+ static member csMemberHasNoArgumentOrReturnProperty(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("csMemberHasNoArgumentOrReturnProperty",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The object constructor '%s' has no argument or settable return property '%s'. %s.
+ /// (Originally from ..\FSComp.txt:343)
+ static member csCtorHasNoArgumentOrReturnProperty(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("csCtorHasNoArgumentOrReturnProperty",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The required signature is %s
+ /// (Originally from ..\FSComp.txt:344)
+ static member csRequiredSignatureIs(a0 : System.String) = (495, GetStringFunc("csRequiredSignatureIs",",,,%s,,,") a0)
+ /// The member or object constructor '%s' requires %d argument(s). The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:345)
+ static member csMemberSignatureMismatch(a0 : System.String, a1 : System.Int32, a2 : System.String) = (496, GetStringFunc("csMemberSignatureMismatch",",,,%s,,,%d,,,%s,,,") a0 a1 a2)
+ /// The member or object constructor '%s' requires %d additional argument(s). The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:346)
+ static member csMemberSignatureMismatch2(a0 : System.String, a1 : System.Int32, a2 : System.String) = (497, GetStringFunc("csMemberSignatureMismatch2",",,,%s,,,%d,,,%s,,,") a0 a1 a2)
+ /// The member or object constructor '%s' requires %d argument(s). The required signature is '%s'. Some names for missing arguments are %s.
+ /// (Originally from ..\FSComp.txt:347)
+ static member csMemberSignatureMismatch3(a0 : System.String, a1 : System.Int32, a2 : System.String, a3 : System.String) = (498, GetStringFunc("csMemberSignatureMismatch3",",,,%s,,,%d,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// The member or object constructor '%s' requires %d additional argument(s). The required signature is '%s'. Some names for missing arguments are %s.
+ /// (Originally from ..\FSComp.txt:348)
+ static member csMemberSignatureMismatch4(a0 : System.String, a1 : System.Int32, a2 : System.String, a3 : System.String) = (499, GetStringFunc("csMemberSignatureMismatch4",",,,%s,,,%d,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// The member or object constructor '%s' requires %d argument(s) but is here given %d unnamed and %d named argument(s). The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:349)
+ static member csMemberSignatureMismatchArityNamed(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.Int32, a4 : System.String) = (500, GetStringFunc("csMemberSignatureMismatchArityNamed",",,,%s,,,%d,,,%d,,,%d,,,%s,,,") a0 a1 a2 a3 a4)
+ /// The member or object constructor '%s' takes %d argument(s) but is here given %d. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:350)
+ static member csMemberSignatureMismatchArity(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.String) = (501, GetStringFunc("csMemberSignatureMismatchArity",",,,%s,,,%d,,,%d,,,%s,,,") a0 a1 a2 a3)
+ /// The object constructor '%s' takes %d argument(s) but is here given %d. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:351)
+ static member csCtorSignatureMismatchArity(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.String) = (501, GetStringFunc("csCtorSignatureMismatchArity",",,,%s,,,%d,,,%d,,,%s,,,") a0 a1 a2 a3)
+ /// The object constructor '%s' takes %d argument(s) but is here given %d. The required signature is '%s'. If some of the arguments are meant to assign values to properties, consider separating those arguments with a comma (',').
+ /// (Originally from ..\FSComp.txt:352)
+ static member csCtorSignatureMismatchArityProp(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.String) = (501, GetStringFunc("csCtorSignatureMismatchArityProp",",,,%s,,,%d,,,%d,,,%s,,,") a0 a1 a2 a3)
+ /// The member or object constructor '%s' takes %d type argument(s) but is here given %d. The required signature is '%s'.
+ /// (Originally from ..\FSComp.txt:353)
+ static member csMemberSignatureMismatchArityType(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.String) = (502, GetStringFunc("csMemberSignatureMismatchArityType",",,,%s,,,%d,,,%d,,,%s,,,") a0 a1 a2 a3)
+ /// A member or object constructor '%s' taking %d arguments is not accessible from this code location. All accessible versions of method '%s' take %d arguments.
+ /// (Originally from ..\FSComp.txt:354)
+ static member csMemberNotAccessible(a0 : System.String, a1 : System.Int32, a2 : System.String, a3 : System.Int32) = (503, GetStringFunc("csMemberNotAccessible",",,,%s,,,%d,,,%s,,,%d,,,") a0 a1 a2 a3)
+ /// Incorrect generic instantiation. No %s member named '%s' takes %d generic arguments.
+ /// (Originally from ..\FSComp.txt:355)
+ static member csIncorrectGenericInstantiation(a0 : System.String, a1 : System.String, a2 : System.Int32) = (504, GetStringFunc("csIncorrectGenericInstantiation",",,,%s,,,%s,,,%d,,,") a0 a1 a2)
+ /// The member or object constructor '%s' does not take %d argument(s). An overload was found taking %d arguments.
+ /// (Originally from ..\FSComp.txt:356)
+ static member csMemberOverloadArityMismatch(a0 : System.String, a1 : System.Int32, a2 : System.Int32) = (505, GetStringFunc("csMemberOverloadArityMismatch",",,,%s,,,%d,,,%d,,,") a0 a1 a2)
+ /// No %s member or object constructor named '%s' takes %d arguments
+ /// (Originally from ..\FSComp.txt:357)
+ static member csNoMemberTakesTheseArguments(a0 : System.String, a1 : System.String, a2 : System.Int32) = (506, GetStringFunc("csNoMemberTakesTheseArguments",",,,%s,,,%s,,,%d,,,") a0 a1 a2)
+ /// No %s member or object constructor named '%s' takes %d arguments. Note the call to this member also provides %d named arguments.
+ /// (Originally from ..\FSComp.txt:358)
+ static member csNoMemberTakesTheseArguments2(a0 : System.String, a1 : System.String, a2 : System.Int32, a3 : System.Int32) = (507, GetStringFunc("csNoMemberTakesTheseArguments2",",,,%s,,,%s,,,%d,,,%d,,,") a0 a1 a2 a3)
+ /// No %s member or object constructor named '%s' takes %d arguments. The named argument '%s' doesn't correspond to any argument or settable return property for any overload.
+ /// (Originally from ..\FSComp.txt:359)
+ static member csNoMemberTakesTheseArguments3(a0 : System.String, a1 : System.String, a2 : System.Int32, a3 : System.String) = (508, GetStringFunc("csNoMemberTakesTheseArguments3",",,,%s,,,%s,,,%d,,,%s,,,") a0 a1 a2 a3)
+ /// Method or object constructor '%s' not found
+ /// (Originally from ..\FSComp.txt:360)
+ static member csMethodNotFound(a0 : System.String) = (509, GetStringFunc("csMethodNotFound",",,,%s,,,") a0)
+ /// No overloads match for method '%s'.
+ /// (Originally from ..\FSComp.txt:361)
+ static member csNoOverloadsFound(a0 : System.String) = (GetStringFunc("csNoOverloadsFound",",,,%s,,,") a0)
+ /// A unique overload for method '%s' could not be determined based on type information prior to this program point. A type annotation may be needed.
+ /// (Originally from ..\FSComp.txt:362)
+ static member csMethodIsOverloaded(a0 : System.String) = (GetStringFunc("csMethodIsOverloaded",",,,%s,,,") a0)
+ /// Candidates: %s
+ /// (Originally from ..\FSComp.txt:363)
+ static member csCandidates(a0 : System.String) = (GetStringFunc("csCandidates",",,,%s,,,") a0)
+ /// The available overloads are shown below.
+ /// (Originally from ..\FSComp.txt:364)
+ static member csSeeAvailableOverloads() = (GetStringFunc("csSeeAvailableOverloads",",,,") )
+ /// Accessibility modifiers are not permitted on 'do' bindings, but '%s' was given.
+ /// (Originally from ..\FSComp.txt:365)
+ static member parsDoCannotHaveVisibilityDeclarations(a0 : System.String) = (512, GetStringFunc("parsDoCannotHaveVisibilityDeclarations",",,,%s,,,") a0)
+ /// End of file in #if section begun at or after here
+ /// (Originally from ..\FSComp.txt:366)
+ static member parsEofInHashIf() = (513, GetStringFunc("parsEofInHashIf",",,,") )
+ /// End of file in string begun at or before here
+ /// (Originally from ..\FSComp.txt:367)
+ static member parsEofInString() = (514, GetStringFunc("parsEofInString",",,,") )
+ /// End of file in verbatim string begun at or before here
+ /// (Originally from ..\FSComp.txt:368)
+ static member parsEofInVerbatimString() = (515, GetStringFunc("parsEofInVerbatimString",",,,") )
+ /// End of file in comment begun at or before here
+ /// (Originally from ..\FSComp.txt:369)
+ static member parsEofInComment() = (516, GetStringFunc("parsEofInComment",",,,") )
+ /// End of file in string embedded in comment begun at or before here
+ /// (Originally from ..\FSComp.txt:370)
+ static member parsEofInStringInComment() = (517, GetStringFunc("parsEofInStringInComment",",,,") )
+ /// End of file in verbatim string embedded in comment begun at or before here
+ /// (Originally from ..\FSComp.txt:371)
+ static member parsEofInVerbatimStringInComment() = (518, GetStringFunc("parsEofInVerbatimStringInComment",",,,") )
+ /// End of file in IF-OCAML section begun at or before here
+ /// (Originally from ..\FSComp.txt:372)
+ static member parsEofInIfOcaml() = (519, GetStringFunc("parsEofInIfOcaml",",,,") )
+ /// End of file in directive begun at or before here
+ /// (Originally from ..\FSComp.txt:373)
+ static member parsEofInDirective() = (520, GetStringFunc("parsEofInDirective",",,,") )
+ /// No #endif found for #if or #else
+ /// (Originally from ..\FSComp.txt:374)
+ static member parsNoHashEndIfFound() = (521, GetStringFunc("parsNoHashEndIfFound",",,,") )
+ /// Attributes have been ignored in this construct
+ /// (Originally from ..\FSComp.txt:375)
+ static member parsAttributesIgnored() = (522, GetStringFunc("parsAttributesIgnored",",,,") )
+ /// 'use' bindings are not permitted in primary constructors
+ /// (Originally from ..\FSComp.txt:376)
+ static member parsUseBindingsIllegalInImplicitClassConstructors() = (523, GetStringFunc("parsUseBindingsIllegalInImplicitClassConstructors",",,,") )
+ /// 'use' bindings are not permitted in modules and are treated as 'let' bindings
+ /// (Originally from ..\FSComp.txt:377)
+ static member parsUseBindingsIllegalInModules() = (524, GetStringFunc("parsUseBindingsIllegalInModules",",,,") )
+ /// An integer for loop must use a simple identifier
+ /// (Originally from ..\FSComp.txt:378)
+ static member parsIntegerForLoopRequiresSimpleIdentifier() = (525, GetStringFunc("parsIntegerForLoopRequiresSimpleIdentifier",",,,") )
+ /// At most one 'with' augmentation is permitted
+ /// (Originally from ..\FSComp.txt:379)
+ static member parsOnlyOneWithAugmentationAllowed() = (526, GetStringFunc("parsOnlyOneWithAugmentationAllowed",",,,") )
+ /// A semicolon is not expected at this point
+ /// (Originally from ..\FSComp.txt:380)
+ static member parsUnexpectedSemicolon() = (527, GetStringFunc("parsUnexpectedSemicolon",",,,") )
+ /// Unexpected end of input
+ /// (Originally from ..\FSComp.txt:381)
+ static member parsUnexpectedEndOfFile() = (528, GetStringFunc("parsUnexpectedEndOfFile",",,,") )
+ /// Accessibility modifiers are not permitted here, but '%s' was given.
+ /// (Originally from ..\FSComp.txt:382)
+ static member parsUnexpectedVisibilityDeclaration(a0 : System.String) = (529, GetStringFunc("parsUnexpectedVisibilityDeclaration",",,,%s,,,") a0)
+ /// Only '#' compiler directives may occur prior to the first 'namespace' declaration
+ /// (Originally from ..\FSComp.txt:383)
+ static member parsOnlyHashDirectivesAllowed() = (530, GetStringFunc("parsOnlyHashDirectivesAllowed",",,,") )
+ /// Accessibility modifiers should come immediately prior to the identifier naming a construct
+ /// (Originally from ..\FSComp.txt:384)
+ static member parsVisibilityDeclarationsShouldComePriorToIdentifier() = (531, GetStringFunc("parsVisibilityDeclarationsShouldComePriorToIdentifier",",,,") )
+ /// Files should begin with either a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule', but not both. To define a module within a namespace use 'module SomeModule = ...'
+ /// (Originally from ..\FSComp.txt:385)
+ static member parsNamespaceOrModuleNotBoth() = (532, GetStringFunc("parsNamespaceOrModuleNotBoth",",,,") )
+ /// A module abbreviation must be a simple name, not a path
+ /// (Originally from ..\FSComp.txt:386)
+ static member parsModuleAbbreviationMustBeSimpleName() = (534, GetStringFunc("parsModuleAbbreviationMustBeSimpleName",",,,") )
+ /// Ignoring attributes on module abbreviation
+ /// (Originally from ..\FSComp.txt:387)
+ static member parsIgnoreAttributesOnModuleAbbreviation() = (535, GetStringFunc("parsIgnoreAttributesOnModuleAbbreviation",",,,") )
+ /// The '%s' accessibility attribute is not allowed on module abbreviation. Module abbreviations are always private.
+ /// (Originally from ..\FSComp.txt:388)
+ static member parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate(a0 : System.String) = (536, GetStringFunc("parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate",",,,%s,,,") a0)
+ /// The '%s' visibility attribute is not allowed on module abbreviation. Module abbreviations are always private.
+ /// (Originally from ..\FSComp.txt:389)
+ static member parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate(a0 : System.String) = (537, GetStringFunc("parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate",",,,%s,,,") a0)
+ /// Unclosed block
+ /// (Originally from ..\FSComp.txt:390)
+ static member parsUnClosedBlockInHashLight() = (538, GetStringFunc("parsUnClosedBlockInHashLight",",,,") )
+ /// Unmatched 'begin' or 'struct'
+ /// (Originally from ..\FSComp.txt:391)
+ static member parsUnmatchedBeginOrStruct() = (539, GetStringFunc("parsUnmatchedBeginOrStruct",",,,") )
+ /// A module name must be a simple name, not a path
+ /// (Originally from ..\FSComp.txt:392)
+ static member parsModuleDefnMustBeSimpleName() = (541, GetStringFunc("parsModuleDefnMustBeSimpleName",",,,") )
+ /// Unexpected empty type moduleDefn list
+ /// (Originally from ..\FSComp.txt:393)
+ static member parsUnexpectedEmptyModuleDefn() = (542, GetStringFunc("parsUnexpectedEmptyModuleDefn",",,,") )
+ /// Attributes should be placed before 'val'
+ /// (Originally from ..\FSComp.txt:394)
+ static member parsAttributesMustComeBeforeVal() = (GetStringFunc("parsAttributesMustComeBeforeVal",",,,") )
+ /// Attributes are not permitted on interface implementations
+ /// (Originally from ..\FSComp.txt:395)
+ static member parsAttributesAreNotPermittedOnInterfaceImplementations() = (543, GetStringFunc("parsAttributesAreNotPermittedOnInterfaceImplementations",",,,") )
+ /// Syntax error
+ /// (Originally from ..\FSComp.txt:396)
+ static member parsSyntaxError() = (544, GetStringFunc("parsSyntaxError",",,,") )
+ /// Augmentations are not permitted on delegate type moduleDefns
+ /// (Originally from ..\FSComp.txt:397)
+ static member parsAugmentationsIllegalOnDelegateType() = (545, GetStringFunc("parsAugmentationsIllegalOnDelegateType",",,,") )
+ /// Unmatched 'class', 'interface' or 'struct'
+ /// (Originally from ..\FSComp.txt:398)
+ static member parsUnmatchedClassInterfaceOrStruct() = (546, GetStringFunc("parsUnmatchedClassInterfaceOrStruct",",,,") )
+ /// A type definition requires one or more members or other declarations. If you intend to define an empty class, struct or interface, then use 'type ... = class end', 'interface end' or 'struct end'.
+ /// (Originally from ..\FSComp.txt:399)
+ static member parsEmptyTypeDefinition() = (547, GetStringFunc("parsEmptyTypeDefinition",",,,") )
+ /// Unmatched 'with' or badly formatted 'with' block
+ /// (Originally from ..\FSComp.txt:400)
+ static member parsUnmatchedWith() = (550, GetStringFunc("parsUnmatchedWith",",,,") )
+ /// 'get', 'set' or 'get,set' required
+ /// (Originally from ..\FSComp.txt:401)
+ static member parsGetOrSetRequired() = (551, GetStringFunc("parsGetOrSetRequired",",,,") )
+ /// Only class types may take value arguments
+ /// (Originally from ..\FSComp.txt:402)
+ static member parsOnlyClassCanTakeValueArguments() = (552, GetStringFunc("parsOnlyClassCanTakeValueArguments",",,,") )
+ /// Unmatched 'begin'
+ /// (Originally from ..\FSComp.txt:403)
+ static member parsUnmatchedBegin() = (553, GetStringFunc("parsUnmatchedBegin",",,,") )
+ /// Invalid declaration syntax
+ /// (Originally from ..\FSComp.txt:404)
+ static member parsInvalidDeclarationSyntax() = (554, GetStringFunc("parsInvalidDeclarationSyntax",",,,") )
+ /// 'get' and/or 'set' required
+ /// (Originally from ..\FSComp.txt:405)
+ static member parsGetAndOrSetRequired() = (555, GetStringFunc("parsGetAndOrSetRequired",",,,") )
+ /// Type annotations on property getters and setters must be given after the 'get()' or 'set(v)', e.g. 'with get() : string = ...'
+ /// (Originally from ..\FSComp.txt:406)
+ static member parsTypeAnnotationsOnGetSet() = (556, GetStringFunc("parsTypeAnnotationsOnGetSet",",,,") )
+ /// A getter property is expected to be a function, e.g. 'get() = ...' or 'get(index) = ...'
+ /// (Originally from ..\FSComp.txt:407)
+ static member parsGetterMustHaveAtLeastOneArgument() = (557, GetStringFunc("parsGetterMustHaveAtLeastOneArgument",",,,") )
+ /// Multiple accessibilities given for property getter or setter
+ /// (Originally from ..\FSComp.txt:408)
+ static member parsMultipleAccessibilitiesForGetSet() = (558, GetStringFunc("parsMultipleAccessibilitiesForGetSet",",,,") )
+ /// Property setters must be defined using 'set value = ', 'set idx value = ' or 'set (idx1,...,idxN) value = ... '
+ /// (Originally from ..\FSComp.txt:409)
+ static member parsSetSyntax() = (559, GetStringFunc("parsSetSyntax",",,,") )
+ /// Interfaces always have the same visibility as the enclosing type
+ /// (Originally from ..\FSComp.txt:410)
+ static member parsInterfacesHaveSameVisibilityAsEnclosingType() = (560, GetStringFunc("parsInterfacesHaveSameVisibilityAsEnclosingType",",,,") )
+ /// Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.
+ /// (Originally from ..\FSComp.txt:411)
+ static member parsAccessibilityModsIllegalForAbstract() = (561, GetStringFunc("parsAccessibilityModsIllegalForAbstract",",,,") )
+ /// Attributes are not permitted on 'inherit' declarations
+ /// (Originally from ..\FSComp.txt:412)
+ static member parsAttributesIllegalOnInherit() = (562, GetStringFunc("parsAttributesIllegalOnInherit",",,,") )
+ /// Accessibility modifiers are not permitted on an 'inherits' declaration
+ /// (Originally from ..\FSComp.txt:413)
+ static member parsVisibilityIllegalOnInherit() = (563, GetStringFunc("parsVisibilityIllegalOnInherit",",,,") )
+ /// 'inherit' declarations cannot have 'as' bindings. To access members of the base class when overriding a method, the syntax 'base.SomeMember' may be used; 'base' is a keyword. Remove this 'as' binding.
+ /// (Originally from ..\FSComp.txt:414)
+ static member parsInheritDeclarationsCannotHaveAsBindings() = (564, GetStringFunc("parsInheritDeclarationsCannotHaveAsBindings",",,,") )
+ /// Attributes are not allowed here
+ /// (Originally from ..\FSComp.txt:415)
+ static member parsAttributesIllegalHere() = (565, GetStringFunc("parsAttributesIllegalHere",",,,") )
+ /// Accessibility modifiers are not permitted in this position for type abbreviations
+ /// (Originally from ..\FSComp.txt:416)
+ static member parsTypeAbbreviationsCannotHaveVisibilityDeclarations() = (566, GetStringFunc("parsTypeAbbreviationsCannotHaveVisibilityDeclarations",",,,") )
+ /// Accessibility modifiers are not permitted in this position for enum types
+ /// (Originally from ..\FSComp.txt:417)
+ static member parsEnumTypesCannotHaveVisibilityDeclarations() = (567, GetStringFunc("parsEnumTypesCannotHaveVisibilityDeclarations",",,,") )
+ /// All enum fields must be given values
+ /// (Originally from ..\FSComp.txt:418)
+ static member parsAllEnumFieldsRequireValues() = (568, GetStringFunc("parsAllEnumFieldsRequireValues",",,,") )
+ /// Accessibility modifiers are not permitted on inline assembly code types
+ /// (Originally from ..\FSComp.txt:419)
+ static member parsInlineAssemblyCannotHaveVisibilityDeclarations() = (569, GetStringFunc("parsInlineAssemblyCannotHaveVisibilityDeclarations",",,,") )
+ /// Unexpected identifier: '%s'
+ /// (Originally from ..\FSComp.txt:420)
+ static member parsUnexpectedIdentifier(a0 : System.String) = (571, GetStringFunc("parsUnexpectedIdentifier",",,,%s,,,") a0)
+ /// Accessibility modifiers are not permitted on union cases. Use 'type U = internal ...' or 'type U = private ...' to give an accessibility to the whole representation.
+ /// (Originally from ..\FSComp.txt:421)
+ static member parsUnionCasesCannotHaveVisibilityDeclarations() = (572, GetStringFunc("parsUnionCasesCannotHaveVisibilityDeclarations",",,,") )
+ /// Accessibility modifiers are not permitted on enumeration fields
+ /// (Originally from ..\FSComp.txt:422)
+ static member parsEnumFieldsCannotHaveVisibilityDeclarations() = (573, GetStringFunc("parsEnumFieldsCannotHaveVisibilityDeclarations",",,,") )
+ /// Consider using a separate record type instead
+ /// (Originally from ..\FSComp.txt:423)
+ static member parsConsiderUsingSeparateRecordType() = (GetStringFunc("parsConsiderUsingSeparateRecordType",",,,") )
+ /// Accessibility modifiers are not permitted on record fields. Use 'type R = internal ...' or 'type R = private ...' to give an accessibility to the whole representation.
+ /// (Originally from ..\FSComp.txt:424)
+ static member parsRecordFieldsCannotHaveVisibilityDeclarations() = (575, GetStringFunc("parsRecordFieldsCannotHaveVisibilityDeclarations",",,,") )
+ /// The declaration form 'let ... and ...' for non-recursive bindings is not used in F# code. Consider using a sequence of 'let' bindings
+ /// (Originally from ..\FSComp.txt:425)
+ static member parsLetAndForNonRecBindings() = (576, GetStringFunc("parsLetAndForNonRecBindings",",,,") )
+ /// Unmatched '('
+ /// (Originally from ..\FSComp.txt:426)
+ static member parsUnmatchedParen() = (583, GetStringFunc("parsUnmatchedParen",",,,") )
+ /// Successive patterns should be separated by spaces or tupled
+ /// (Originally from ..\FSComp.txt:427)
+ static member parsSuccessivePatternsShouldBeSpacedOrTupled() = (584, GetStringFunc("parsSuccessivePatternsShouldBeSpacedOrTupled",",,,") )
+ /// No matching 'in' found for this 'let'
+ /// (Originally from ..\FSComp.txt:428)
+ static member parsNoMatchingInForLet() = (586, GetStringFunc("parsNoMatchingInForLet",",,,") )
+ /// Error in the return expression for this 'let'. Possible incorrect indentation.
+ /// (Originally from ..\FSComp.txt:429)
+ static member parsErrorInReturnForLetIncorrectIndentation() = (587, GetStringFunc("parsErrorInReturnForLetIncorrectIndentation",",,,") )
+ /// The block following this '%s' is unfinished. Every code block is an expression and must have a result. '%s' cannot be the final code element in a block. Consider giving this block an explicit result.
+ /// (Originally from ..\FSComp.txt:430)
+ static member parsExpectedExpressionAfterLet(a0 : System.String, a1 : System.String) = (588, GetStringFunc("parsExpectedExpressionAfterLet",",,,%s,,,%s,,,") a0 a1)
+ /// Incomplete conditional. Expected 'if then ' or 'if then else '.
+ /// (Originally from ..\FSComp.txt:431)
+ static member parsIncompleteIf() = (589, GetStringFunc("parsIncompleteIf",",,,") )
+ /// 'assert' may not be used as a first class value. Use 'assert ' instead.
+ /// (Originally from ..\FSComp.txt:432)
+ static member parsAssertIsNotFirstClassValue() = (590, GetStringFunc("parsAssertIsNotFirstClassValue",",,,") )
+ /// Identifier expected
+ /// (Originally from ..\FSComp.txt:433)
+ static member parsIdentifierExpected() = (594, GetStringFunc("parsIdentifierExpected",",,,") )
+ /// 'in' or '=' expected
+ /// (Originally from ..\FSComp.txt:434)
+ static member parsInOrEqualExpected() = (595, GetStringFunc("parsInOrEqualExpected",",,,") )
+ /// The use of '->' in sequence and computation expressions is limited to the form 'for pat in expr -> expr'. Use the syntax 'for ... in ... do ... yield...' to generate elements in more complex sequence expressions.
+ /// (Originally from ..\FSComp.txt:435)
+ static member parsArrowUseIsLimited() = (596, GetStringFunc("parsArrowUseIsLimited",",,,") )
+ /// Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized
+ /// (Originally from ..\FSComp.txt:436)
+ static member parsSuccessiveArgsShouldBeSpacedOrTupled() = (597, GetStringFunc("parsSuccessiveArgsShouldBeSpacedOrTupled",",,,") )
+ /// Unmatched '['
+ /// (Originally from ..\FSComp.txt:437)
+ static member parsUnmatchedBracket() = (598, GetStringFunc("parsUnmatchedBracket",",,,") )
+ /// Missing qualification after '.'
+ /// (Originally from ..\FSComp.txt:438)
+ static member parsMissingQualificationAfterDot() = (599, GetStringFunc("parsMissingQualificationAfterDot",",,,") )
+ /// In F# code you may use 'expr.[expr]'. A type annotation may be required to indicate the first expression is an array
+ /// (Originally from ..\FSComp.txt:439)
+ static member parsParenFormIsForML() = (GetStringFunc("parsParenFormIsForML",",,,") )
+ /// Mismatched quotation, beginning with '%s'
+ /// (Originally from ..\FSComp.txt:440)
+ static member parsMismatchedQuote(a0 : System.String) = (601, GetStringFunc("parsMismatchedQuote",",,,%s,,,") a0)
+ /// Unmatched '%s'
+ /// (Originally from ..\FSComp.txt:441)
+ static member parsUnmatched(a0 : System.String) = (602, GetStringFunc("parsUnmatched",",,,%s,,,") a0)
+ /// Unmatched '[|'
+ /// (Originally from ..\FSComp.txt:442)
+ static member parsUnmatchedBracketBar() = (603, GetStringFunc("parsUnmatchedBracketBar",",,,") )
+ /// Unmatched '{'
+ /// (Originally from ..\FSComp.txt:443)
+ static member parsUnmatchedBrace() = (604, GetStringFunc("parsUnmatchedBrace",",,,") )
+ /// Field bindings must have the form 'id = expr;'
+ /// (Originally from ..\FSComp.txt:444)
+ static member parsFieldBinding() = (609, GetStringFunc("parsFieldBinding",",,,") )
+ /// This member is not permitted in an object implementation
+ /// (Originally from ..\FSComp.txt:445)
+ static member parsMemberIllegalInObjectImplementation() = (610, GetStringFunc("parsMemberIllegalInObjectImplementation",",,,") )
+ /// Missing function body
+ /// (Originally from ..\FSComp.txt:446)
+ static member parsMissingFunctionBody() = (611, GetStringFunc("parsMissingFunctionBody",",,,") )
+ /// Syntax error in labelled type argument
+ /// (Originally from ..\FSComp.txt:447)
+ static member parsSyntaxErrorInLabeledType() = (613, GetStringFunc("parsSyntaxErrorInLabeledType",",,,") )
+ /// Unexpected infix operator in type expression
+ /// (Originally from ..\FSComp.txt:448)
+ static member parsUnexpectedInfixOperator() = (615, GetStringFunc("parsUnexpectedInfixOperator",",,,") )
+ /// The syntax '(typ,...,typ) ident' is not used in F# code. Consider using 'ident' instead
+ /// (Originally from ..\FSComp.txt:449)
+ static member parsMultiArgumentGenericTypeFormDeprecated() = (GetStringFunc("parsMultiArgumentGenericTypeFormDeprecated",",,,") )
+ /// Invalid literal in type
+ /// (Originally from ..\FSComp.txt:450)
+ static member parsInvalidLiteralInType() = (618, GetStringFunc("parsInvalidLiteralInType",",,,") )
+ /// Unexpected infix operator in unit-of-measure expression. Legal operators are '*', '/' and '^'.
+ /// (Originally from ..\FSComp.txt:451)
+ static member parsUnexpectedOperatorForUnitOfMeasure() = (619, GetStringFunc("parsUnexpectedOperatorForUnitOfMeasure",",,,") )
+ /// Unexpected integer literal in unit-of-measure expression
+ /// (Originally from ..\FSComp.txt:452)
+ static member parsUnexpectedIntegerLiteralForUnitOfMeasure() = (620, GetStringFunc("parsUnexpectedIntegerLiteralForUnitOfMeasure",",,,") )
+ /// Syntax error: unexpected type parameter specification
+ /// (Originally from ..\FSComp.txt:453)
+ static member parsUnexpectedTypeParameter() = (621, GetStringFunc("parsUnexpectedTypeParameter",",,,") )
+ /// Mismatched quotation operator name, beginning with '%s'
+ /// (Originally from ..\FSComp.txt:454)
+ static member parsMismatchedQuotationName(a0 : System.String) = (622, GetStringFunc("parsMismatchedQuotationName",",,,%s,,,") a0)
+ /// Active pattern case identifiers must begin with an uppercase letter
+ /// (Originally from ..\FSComp.txt:455)
+ static member parsActivePatternCaseMustBeginWithUpperCase() = (623, GetStringFunc("parsActivePatternCaseMustBeginWithUpperCase",",,,") )
+ /// The '|' character is not permitted in active pattern case identifiers
+ /// (Originally from ..\FSComp.txt:456)
+ static member parsActivePatternCaseContainsPipe() = (624, GetStringFunc("parsActivePatternCaseContainsPipe",",,,") )
+ /// Denominator must not be 0 in unit-of-measure exponent
+ /// (Originally from ..\FSComp.txt:457)
+ static member parsIllegalDenominatorForMeasureExponent() = (625, GetStringFunc("parsIllegalDenominatorForMeasureExponent",",,,") )
+ /// No '=' symbol should follow a 'namespace' declaration
+ /// (Originally from ..\FSComp.txt:458)
+ static member parsNoEqualShouldFollowNamespace() = (GetStringFunc("parsNoEqualShouldFollowNamespace",",,,") )
+ /// The syntax 'module ... = struct .. end' is not used in F# code. Consider using 'module ... = begin .. end'
+ /// (Originally from ..\FSComp.txt:459)
+ static member parsSyntaxModuleStructEndDeprecated() = (GetStringFunc("parsSyntaxModuleStructEndDeprecated",",,,") )
+ /// The syntax 'module ... : sig .. end' is not used in F# code. Consider using 'module ... = begin .. end'
+ /// (Originally from ..\FSComp.txt:460)
+ static member parsSyntaxModuleSigEndDeprecated() = (GetStringFunc("parsSyntaxModuleSigEndDeprecated",",,,") )
+ /// A static field was used where an instance field is expected
+ /// (Originally from ..\FSComp.txt:461)
+ static member tcStaticFieldUsedWhenInstanceFieldExpected() = (627, GetStringFunc("tcStaticFieldUsedWhenInstanceFieldExpected",",,,") )
+ /// Method '%s' is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:462)
+ static member tcMethodNotAccessible(a0 : System.String) = (629, GetStringFunc("tcMethodNotAccessible",",,,%s,,,") a0)
+ /// Implicit product of measures following /
+ /// (Originally from ..\FSComp.txt:464)
+ static member tcImplicitMeasureFollowingSlash() = (632, GetStringFunc("tcImplicitMeasureFollowingSlash",",,,") )
+ /// Unexpected SynMeasure.Anon
+ /// (Originally from ..\FSComp.txt:465)
+ static member tcUnexpectedMeasureAnon() = (633, GetStringFunc("tcUnexpectedMeasureAnon",",,,") )
+ /// Non-zero constants cannot have generic units. For generic zero, write 0.0<_>.
+ /// (Originally from ..\FSComp.txt:466)
+ static member tcNonZeroConstantCannotHaveGenericUnit() = (634, GetStringFunc("tcNonZeroConstantCannotHaveGenericUnit",",,,") )
+ /// In sequence expressions, results are generated using 'yield'
+ /// (Originally from ..\FSComp.txt:467)
+ static member tcSeqResultsUseYield() = (635, GetStringFunc("tcSeqResultsUseYield",",,,") )
+ /// Unexpected big rational constant
+ /// (Originally from ..\FSComp.txt:468)
+ static member tcUnexpectedBigRationalConstant() = (GetStringFunc("tcUnexpectedBigRationalConstant",",,,") )
+ /// Units-of-measure supported only on float, float32, decimal and signed integer types
+ /// (Originally from ..\FSComp.txt:469)
+ static member tcInvalidTypeForUnitsOfMeasure() = (636, GetStringFunc("tcInvalidTypeForUnitsOfMeasure",",,,") )
+ /// Unexpected Const_uint16array
+ /// (Originally from ..\FSComp.txt:470)
+ static member tcUnexpectedConstUint16Array() = (GetStringFunc("tcUnexpectedConstUint16Array",",,,") )
+ /// Unexpected Const_bytearray
+ /// (Originally from ..\FSComp.txt:471)
+ static member tcUnexpectedConstByteArray() = (GetStringFunc("tcUnexpectedConstByteArray",",,,") )
+ /// A parameter with attributes must also be given a name, e.g. '[] Name : Type'
+ /// (Originally from ..\FSComp.txt:472)
+ static member tcParameterRequiresName() = (640, GetStringFunc("tcParameterRequiresName",",,,") )
+ /// Return values cannot have names
+ /// (Originally from ..\FSComp.txt:473)
+ static member tcReturnValuesCannotHaveNames() = (641, GetStringFunc("tcReturnValuesCannotHaveNames",",,,") )
+ /// MemberKind.PropertyGetSet only expected in parse trees
+ /// (Originally from ..\FSComp.txt:474)
+ static member tcMemberKindPropertyGetSetNotExpected() = (GetStringFunc("tcMemberKindPropertyGetSetNotExpected",",,,") )
+ /// Namespaces cannot contain values. Consider using a module to hold your value declarations.
+ /// (Originally from ..\FSComp.txt:475)
+ static member tcNamespaceCannotContainValues() = (201, GetStringFunc("tcNamespaceCannotContainValues",",,,") )
+ /// Namespaces cannot contain extension members except in the same file and namespace declaration group where the type is defined. Consider using a module to hold declarations of extension members.
+ /// (Originally from ..\FSComp.txt:476)
+ static member tcNamespaceCannotContainExtensionMembers() = (644, GetStringFunc("tcNamespaceCannotContainExtensionMembers",",,,") )
+ /// Multiple visibility attributes have been specified for this identifier
+ /// (Originally from ..\FSComp.txt:477)
+ static member tcMultipleVisibilityAttributes() = (645, GetStringFunc("tcMultipleVisibilityAttributes",",,,") )
+ /// Multiple visibility attributes have been specified for this identifier. 'let' bindings in classes are always private, as are any 'let' bindings inside expressions.
+ /// (Originally from ..\FSComp.txt:478)
+ static member tcMultipleVisibilityAttributesWithLet() = (646, GetStringFunc("tcMultipleVisibilityAttributesWithLet",",,,") )
+ /// The name '(%s)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name '%s' instead.
+ /// (Originally from ..\FSComp.txt:479)
+ static member tcInvalidMethodNameForRelationalOperator(a0 : System.String, a1 : System.String) = (GetStringFunc("tcInvalidMethodNameForRelationalOperator",",,,%s,,,%s,,,") a0 a1)
+ /// The name '(%s)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name '%s' instead.
+ /// (Originally from ..\FSComp.txt:480)
+ static member tcInvalidMethodNameForEquality(a0 : System.String, a1 : System.String) = (GetStringFunc("tcInvalidMethodNameForEquality",",,,%s,,,%s,,,") a0 a1)
+ /// The name '(%s)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name '%s' instead.
+ /// (Originally from ..\FSComp.txt:481)
+ static member tcInvalidMemberName(a0 : System.String, a1 : System.String) = (GetStringFunc("tcInvalidMemberName",",,,%s,,,%s,,,") a0 a1)
+ /// The name '(%s)' should not be used as a member name because it is given a standard definition in the F# library over fixed types
+ /// (Originally from ..\FSComp.txt:482)
+ static member tcInvalidMemberNameFixedTypes(a0 : System.String) = (GetStringFunc("tcInvalidMemberNameFixedTypes",",,,%s,,,") a0)
+ /// The '%s' operator should not normally be redefined. To define overloaded comparison semantics for a particular type, implement the 'System.IComparable' interface in the definition of that type.
+ /// (Originally from ..\FSComp.txt:483)
+ static member tcInvalidOperatorDefinitionRelational(a0 : System.String) = (GetStringFunc("tcInvalidOperatorDefinitionRelational",",,,%s,,,") a0)
+ /// The '%s' operator should not normally be redefined. To define equality semantics for a type, override the 'Object.Equals' member in the definition of that type.
+ /// (Originally from ..\FSComp.txt:484)
+ static member tcInvalidOperatorDefinitionEquality(a0 : System.String) = (GetStringFunc("tcInvalidOperatorDefinitionEquality",",,,%s,,,") a0)
+ /// The '%s' operator should not normally be redefined. Consider using a different operator name
+ /// (Originally from ..\FSComp.txt:485)
+ static member tcInvalidOperatorDefinition(a0 : System.String) = (GetStringFunc("tcInvalidOperatorDefinition",",,,%s,,,") a0)
+ /// The '%s' operator cannot be redefined. Consider using a different operator name
+ /// (Originally from ..\FSComp.txt:486)
+ static member tcInvalidIndexOperatorDefinition(a0 : System.String) = (GetStringFunc("tcInvalidIndexOperatorDefinition",",,,%s,,,") a0)
+ /// Expected module or namespace parent %s
+ /// (Originally from ..\FSComp.txt:487)
+ static member tcExpectModuleOrNamespaceParent(a0 : System.String) = (GetStringFunc("tcExpectModuleOrNamespaceParent",",,,%s,,,") a0)
+ /// The struct, record or union type '%s' implements the interface 'System.IComparable' explicitly. You must apply the 'CustomComparison' attribute to the type.
+ /// (Originally from ..\FSComp.txt:488)
+ static member tcImplementsIComparableExplicitly(a0 : System.String) = (647, GetStringFunc("tcImplementsIComparableExplicitly",",,,%s,,,") a0)
+ /// The struct, record or union type '%s' implements the interface 'System.IComparable<_>' explicitly. You must apply the 'CustomComparison' attribute to the type, and should also provide a consistent implementation of the non-generic interface System.IComparable.
+ /// (Originally from ..\FSComp.txt:489)
+ static member tcImplementsGenericIComparableExplicitly(a0 : System.String) = (648, GetStringFunc("tcImplementsGenericIComparableExplicitly",",,,%s,,,") a0)
+ /// The struct, record or union type '%s' implements the interface 'System.IStructuralComparable' explicitly. Apply the 'CustomComparison' attribute to the type.
+ /// (Originally from ..\FSComp.txt:490)
+ static member tcImplementsIStructuralComparableExplicitly(a0 : System.String) = (649, GetStringFunc("tcImplementsIStructuralComparableExplicitly",",,,%s,,,") a0)
+ /// This record contains fields from inconsistent types
+ /// (Originally from ..\FSComp.txt:491)
+ static member tcRecordFieldInconsistentTypes() = (656, GetStringFunc("tcRecordFieldInconsistentTypes",",,,") )
+ /// DLLImport stubs cannot be inlined
+ /// (Originally from ..\FSComp.txt:492)
+ static member tcDllImportStubsCannotBeInlined() = (657, GetStringFunc("tcDllImportStubsCannotBeInlined",",,,") )
+ /// Structs may only bind a 'this' parameter at member declarations
+ /// (Originally from ..\FSComp.txt:493)
+ static member tcStructsCanOnlyBindThisAtMemberDeclaration() = (658, GetStringFunc("tcStructsCanOnlyBindThisAtMemberDeclaration",",,,") )
+ /// Unexpected expression at recursive inference point
+ /// (Originally from ..\FSComp.txt:494)
+ static member tcUnexpectedExprAtRecInfPoint() = (659, GetStringFunc("tcUnexpectedExprAtRecInfPoint",",,,") )
+ /// This code is less generic than required by its annotations because the explicit type variable '%s' could not be generalized. It was constrained to be '%s'.
+ /// (Originally from ..\FSComp.txt:495)
+ static member tcLessGenericBecauseOfAnnotation(a0 : System.String, a1 : System.String) = (660, GetStringFunc("tcLessGenericBecauseOfAnnotation",",,,%s,,,%s,,,") a0 a1)
+ /// One or more of the explicit class or function type variables for this binding could not be generalized, because they were constrained to other types
+ /// (Originally from ..\FSComp.txt:496)
+ static member tcConstrainedTypeVariableCannotBeGeneralized() = (661, GetStringFunc("tcConstrainedTypeVariableCannotBeGeneralized",",,,") )
+ /// A generic type parameter has been used in a way that constrains it to always be '%s'
+ /// (Originally from ..\FSComp.txt:497)
+ static member tcGenericParameterHasBeenConstrained(a0 : System.String) = (662, GetStringFunc("tcGenericParameterHasBeenConstrained",",,,%s,,,") a0)
+ /// This type parameter has been used in a way that constrains it to always be '%s'
+ /// (Originally from ..\FSComp.txt:498)
+ static member tcTypeParameterHasBeenConstrained(a0 : System.String) = (663, GetStringFunc("tcTypeParameterHasBeenConstrained",",,,%s,,,") a0)
+ /// The type parameters inferred for this value are not stable under the erasure of type abbreviations. This is due to the use of type abbreviations which drop or reorder type parameters, e.g. \n\ttype taggedInt<'a> = int or\n\ttype swap<'a,'b> = 'b * 'a.\nConsider declaring the type parameters for this value explicitly, e.g.\n\tlet f<'a,'b> ((x,y) : swap<'b,'a>) : swap<'a,'b> = (y,x).
+ /// (Originally from ..\FSComp.txt:499)
+ static member tcTypeParametersInferredAreNotStable() = (664, GetStringFunc("tcTypeParametersInferredAreNotStable",",,,") )
+ /// Explicit type parameters may only be used on module or member bindings
+ /// (Originally from ..\FSComp.txt:500)
+ static member tcExplicitTypeParameterInvalid() = (665, GetStringFunc("tcExplicitTypeParameterInvalid",",,,") )
+ /// You must explicitly declare either all or no type parameters when overriding a generic abstract method
+ /// (Originally from ..\FSComp.txt:501)
+ static member tcOverridingMethodRequiresAllOrNoTypeParameters() = (666, GetStringFunc("tcOverridingMethodRequiresAllOrNoTypeParameters",",,,") )
+ /// The field labels and expected type of this record expression or pattern do not uniquely determine a corresponding record type
+ /// (Originally from ..\FSComp.txt:502)
+ static member tcFieldsDoNotDetermineUniqueRecordType() = (667, GetStringFunc("tcFieldsDoNotDetermineUniqueRecordType",",,,") )
+ /// The field '%s' appears twice in this record expression or pattern
+ /// (Originally from ..\FSComp.txt:503)
+ static member tcFieldAppearsTwiceInRecord(a0 : System.String) = (668, GetStringFunc("tcFieldAppearsTwiceInRecord",",,,%s,,,") a0)
+ /// Unknown union case
+ /// (Originally from ..\FSComp.txt:504)
+ static member tcUnknownUnion() = (669, GetStringFunc("tcUnknownUnion",",,,") )
+ /// This code is not sufficiently generic. The type variable %s could not be generalized because it would escape its scope.
+ /// (Originally from ..\FSComp.txt:505)
+ static member tcNotSufficientlyGenericBecauseOfScope(a0 : System.String) = (670, GetStringFunc("tcNotSufficientlyGenericBecauseOfScope",",,,%s,,,") a0)
+ /// A property cannot have explicit type parameters. Consider using a method instead.
+ /// (Originally from ..\FSComp.txt:506)
+ static member tcPropertyRequiresExplicitTypeParameters() = (671, GetStringFunc("tcPropertyRequiresExplicitTypeParameters",",,,") )
+ /// A constructor cannot have explicit type parameters. Consider using a static construction method instead.
+ /// (Originally from ..\FSComp.txt:507)
+ static member tcConstructorCannotHaveTypeParameters() = (672, GetStringFunc("tcConstructorCannotHaveTypeParameters",",,,") )
+ /// This instance member needs a parameter to represent the object being invoked. Make the member static or use the notation 'member x.Member(args) = ...'.
+ /// (Originally from ..\FSComp.txt:508)
+ static member tcInstanceMemberRequiresTarget() = (673, GetStringFunc("tcInstanceMemberRequiresTarget",",,,") )
+ /// Unexpected source-level property specification in syntax tree
+ /// (Originally from ..\FSComp.txt:509)
+ static member tcUnexpectedPropertyInSyntaxTree() = (674, GetStringFunc("tcUnexpectedPropertyInSyntaxTree",",,,") )
+ /// A static initializer requires an argument
+ /// (Originally from ..\FSComp.txt:510)
+ static member tcStaticInitializerRequiresArgument() = (675, GetStringFunc("tcStaticInitializerRequiresArgument",",,,") )
+ /// An object constructor requires an argument
+ /// (Originally from ..\FSComp.txt:511)
+ static member tcObjectConstructorRequiresArgument() = (676, GetStringFunc("tcObjectConstructorRequiresArgument",",,,") )
+ /// This static member should not have a 'this' parameter. Consider using the notation 'member Member(args) = ...'.
+ /// (Originally from ..\FSComp.txt:512)
+ static member tcStaticMemberShouldNotHaveThis() = (677, GetStringFunc("tcStaticMemberShouldNotHaveThis",",,,") )
+ /// An explicit static initializer should use the syntax 'static new(args) = expr'
+ /// (Originally from ..\FSComp.txt:513)
+ static member tcExplicitStaticInitializerSyntax() = (678, GetStringFunc("tcExplicitStaticInitializerSyntax",",,,") )
+ /// An explicit object constructor should use the syntax 'new(args) = expr'
+ /// (Originally from ..\FSComp.txt:514)
+ static member tcExplicitObjectConstructorSyntax() = (679, GetStringFunc("tcExplicitObjectConstructorSyntax",",,,") )
+ /// Unexpected source-level property specification
+ /// (Originally from ..\FSComp.txt:515)
+ static member tcUnexpectedPropertySpec() = (680, GetStringFunc("tcUnexpectedPropertySpec",",,,") )
+ /// This form of object expression is not used in F#. Use 'member this.MemberName ... = ...' to define member implementations in object expressions.
+ /// (Originally from ..\FSComp.txt:516)
+ static member tcObjectExpressionFormDeprecated() = (GetStringFunc("tcObjectExpressionFormDeprecated",",,,") )
+ /// Invalid declaration
+ /// (Originally from ..\FSComp.txt:517)
+ static member tcInvalidDeclaration() = (682, GetStringFunc("tcInvalidDeclaration",",,,") )
+ /// Attributes are not allowed within patterns
+ /// (Originally from ..\FSComp.txt:518)
+ static member tcAttributesInvalidInPatterns() = (683, GetStringFunc("tcAttributesInvalidInPatterns",",,,") )
+ /// The generic function '%s' must be given explicit type argument(s)
+ /// (Originally from ..\FSComp.txt:519)
+ static member tcFunctionRequiresExplicitTypeArguments(a0 : System.String) = (685, GetStringFunc("tcFunctionRequiresExplicitTypeArguments",",,,%s,,,") a0)
+ /// The method or function '%s' should not be given explicit type argument(s) because it does not declare its type parameters explicitly
+ /// (Originally from ..\FSComp.txt:520)
+ static member tcDoesNotAllowExplicitTypeArguments(a0 : System.String) = (686, GetStringFunc("tcDoesNotAllowExplicitTypeArguments",",,,%s,,,") a0)
+ /// This value, type or method expects %d type parameter(s) but was given %d
+ /// (Originally from ..\FSComp.txt:521)
+ static member tcTypeParameterArityMismatch(a0 : System.Int32, a1 : System.Int32) = (687, GetStringFunc("tcTypeParameterArityMismatch",",,,%d,,,%d,,,") a0 a1)
+ /// The default, zero-initializing constructor of a struct type may only be used if all the fields of the struct type admit default initialization
+ /// (Originally from ..\FSComp.txt:522)
+ static member tcDefaultStructConstructorCall() = (688, GetStringFunc("tcDefaultStructConstructorCall",",,,") )
+ /// Couldn't find Dispose on IDisposable, or it was overloaded
+ /// (Originally from ..\FSComp.txt:523)
+ static member tcCouldNotFindIDisposable() = (GetStringFunc("tcCouldNotFindIDisposable",",,,") )
+ /// This value is not a literal and cannot be used in a pattern
+ /// (Originally from ..\FSComp.txt:524)
+ static member tcNonLiteralCannotBeUsedInPattern() = (689, GetStringFunc("tcNonLiteralCannotBeUsedInPattern",",,,") )
+ /// This field is readonly
+ /// (Originally from ..\FSComp.txt:525)
+ static member tcFieldIsReadonly() = (690, GetStringFunc("tcFieldIsReadonly",",,,") )
+ /// Named arguments must appear after all other arguments
+ /// (Originally from ..\FSComp.txt:526)
+ static member tcNameArgumentsMustAppearLast() = (691, GetStringFunc("tcNameArgumentsMustAppearLast",",,,") )
+ /// This function value is being used to construct a delegate type whose signature includes a byref argument. You must use an explicit lambda expression taking %d arguments.
+ /// (Originally from ..\FSComp.txt:527)
+ static member tcFunctionRequiresExplicitLambda(a0 : System.Int32) = (692, GetStringFunc("tcFunctionRequiresExplicitLambda",",,,%d,,,") a0)
+ /// The type '%s' is not a type whose values can be enumerated with this syntax, i.e. is not compatible with either seq<_>, IEnumerable<_> or IEnumerable and does not have a GetEnumerator method
+ /// (Originally from ..\FSComp.txt:528)
+ static member tcTypeCannotBeEnumerated(a0 : System.String) = (693, GetStringFunc("tcTypeCannotBeEnumerated",",,,%s,,,") a0)
+ /// This recursive binding uses an invalid mixture of recursive forms
+ /// (Originally from ..\FSComp.txt:529)
+ static member tcInvalidMixtureOfRecursiveForms() = (695, GetStringFunc("tcInvalidMixtureOfRecursiveForms",",,,") )
+ /// This is not a valid object construction expression. Explicit object constructors must either call an alternate constructor or initialize all fields of the object and specify a call to a super class constructor.
+ /// (Originally from ..\FSComp.txt:530)
+ static member tcInvalidObjectConstructionExpression() = (696, GetStringFunc("tcInvalidObjectConstructionExpression",",,,") )
+ /// Invalid constraint
+ /// (Originally from ..\FSComp.txt:531)
+ static member tcInvalidConstraint() = (697, GetStringFunc("tcInvalidConstraint",",,,") )
+ /// Invalid constraint: the type used for the constraint is sealed, which means the constraint could only be satisfied by at most one solution
+ /// (Originally from ..\FSComp.txt:532)
+ static member tcInvalidConstraintTypeSealed() = (698, GetStringFunc("tcInvalidConstraintTypeSealed",",,,") )
+ /// An 'enum' constraint must be of the form 'enum'
+ /// (Originally from ..\FSComp.txt:533)
+ static member tcInvalidEnumConstraint() = (699, GetStringFunc("tcInvalidEnumConstraint",",,,") )
+ /// 'new' constraints must take one argument of type 'unit' and return the constructed type
+ /// (Originally from ..\FSComp.txt:534)
+ static member tcInvalidNewConstraint() = (700, GetStringFunc("tcInvalidNewConstraint",",,,") )
+ /// This property has an invalid type. Properties taking multiple indexer arguments should have types of the form 'ty1 * ty2 -> ty3'. Properties returning functions should have types of the form '(ty1 -> ty2)'.
+ /// (Originally from ..\FSComp.txt:535)
+ static member tcInvalidPropertyType() = (701, GetStringFunc("tcInvalidPropertyType",",,,") )
+ /// Expected unit-of-measure parameter, not type parameter. Explicit unit-of-measure parameters must be marked with the [] attribute.
+ /// (Originally from ..\FSComp.txt:536)
+ static member tcExpectedUnitOfMeasureMarkWithAttribute() = (702, GetStringFunc("tcExpectedUnitOfMeasureMarkWithAttribute",",,,") )
+ /// Expected type parameter, not unit-of-measure parameter
+ /// (Originally from ..\FSComp.txt:537)
+ static member tcExpectedTypeParameter() = (703, GetStringFunc("tcExpectedTypeParameter",",,,") )
+ /// Expected type, not unit-of-measure
+ /// (Originally from ..\FSComp.txt:538)
+ static member tcExpectedTypeNotUnitOfMeasure() = (704, GetStringFunc("tcExpectedTypeNotUnitOfMeasure",",,,") )
+ /// Expected unit-of-measure, not type
+ /// (Originally from ..\FSComp.txt:539)
+ static member tcExpectedUnitOfMeasureNotType() = (705, GetStringFunc("tcExpectedUnitOfMeasureNotType",",,,") )
+ /// Units-of-measure cannot be used as prefix arguments to a type. Rewrite as postfix arguments in angle brackets.
+ /// (Originally from ..\FSComp.txt:540)
+ static member tcInvalidUnitsOfMeasurePrefix() = (706, GetStringFunc("tcInvalidUnitsOfMeasurePrefix",",,,") )
+ /// Unit-of-measure cannot be used in type constructor application
+ /// (Originally from ..\FSComp.txt:541)
+ static member tcUnitsOfMeasureInvalidInTypeConstructor() = (707, GetStringFunc("tcUnitsOfMeasureInvalidInTypeConstructor",",,,") )
+ /// This control construct may only be used if the computation expression builder defines a '%s' method
+ /// (Originally from ..\FSComp.txt:542)
+ static member tcRequireBuilderMethod(a0 : System.String) = (708, GetStringFunc("tcRequireBuilderMethod",",,,%s,,,") a0)
+ /// This type has no nested types
+ /// (Originally from ..\FSComp.txt:543)
+ static member tcTypeHasNoNestedTypes() = (709, GetStringFunc("tcTypeHasNoNestedTypes",",,,") )
+ /// Unexpected %s in type expression
+ /// (Originally from ..\FSComp.txt:544)
+ static member tcUnexpectedSymbolInTypeExpression(a0 : System.String) = (711, GetStringFunc("tcUnexpectedSymbolInTypeExpression",",,,%s,,,") a0)
+ /// Type parameter cannot be used as type constructor
+ /// (Originally from ..\FSComp.txt:545)
+ static member tcTypeParameterInvalidAsTypeConstructor() = (712, GetStringFunc("tcTypeParameterInvalidAsTypeConstructor",",,,") )
+ /// Illegal syntax in type expression
+ /// (Originally from ..\FSComp.txt:546)
+ static member tcIllegalSyntaxInTypeExpression() = (713, GetStringFunc("tcIllegalSyntaxInTypeExpression",",,,") )
+ /// Anonymous unit-of-measure cannot be nested inside another unit-of-measure expression
+ /// (Originally from ..\FSComp.txt:547)
+ static member tcAnonymousUnitsOfMeasureCannotBeNested() = (714, GetStringFunc("tcAnonymousUnitsOfMeasureCannotBeNested",",,,") )
+ /// Anonymous type variables are not permitted in this declaration
+ /// (Originally from ..\FSComp.txt:548)
+ static member tcAnonymousTypeInvalidInDeclaration() = (715, GetStringFunc("tcAnonymousTypeInvalidInDeclaration",",,,") )
+ /// Unexpected / in type
+ /// (Originally from ..\FSComp.txt:549)
+ static member tcUnexpectedSlashInType() = (716, GetStringFunc("tcUnexpectedSlashInType",",,,") )
+ /// Unexpected type arguments
+ /// (Originally from ..\FSComp.txt:550)
+ static member tcUnexpectedTypeArguments() = (717, GetStringFunc("tcUnexpectedTypeArguments",",,,") )
+ /// Optional arguments are only permitted on type members
+ /// (Originally from ..\FSComp.txt:551)
+ static member tcOptionalArgsOnlyOnMembers() = (718, GetStringFunc("tcOptionalArgsOnlyOnMembers",",,,") )
+ /// Name '%s' not bound in pattern context
+ /// (Originally from ..\FSComp.txt:552)
+ static member tcNameNotBoundInPattern(a0 : System.String) = (719, GetStringFunc("tcNameNotBoundInPattern",",,,%s,,,") a0)
+ /// 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 = ' at the end of the match clause.
+ /// (Originally from ..\FSComp.txt:553)
+ static member tcInvalidNonPrimitiveLiteralInPatternMatch() = (720, GetStringFunc("tcInvalidNonPrimitiveLiteralInPatternMatch",",,,") )
+ /// Type arguments cannot be specified here
+ /// (Originally from ..\FSComp.txt:554)
+ static member tcInvalidTypeArgumentUsage() = (721, GetStringFunc("tcInvalidTypeArgumentUsage",",,,") )
+ /// Only active patterns returning exactly one result may accept arguments
+ /// (Originally from ..\FSComp.txt:555)
+ static member tcRequireActivePatternWithOneResult() = (722, GetStringFunc("tcRequireActivePatternWithOneResult",",,,") )
+ /// Invalid argument to parameterized pattern label
+ /// (Originally from ..\FSComp.txt:556)
+ static member tcInvalidArgForParameterizedPattern() = (723, GetStringFunc("tcInvalidArgForParameterizedPattern",",,,") )
+ /// Internal error. Invalid index into active pattern array
+ /// (Originally from ..\FSComp.txt:557)
+ static member tcInvalidIndexIntoActivePatternArray() = (724, GetStringFunc("tcInvalidIndexIntoActivePatternArray",",,,") )
+ /// This union case does not take arguments
+ /// (Originally from ..\FSComp.txt:558)
+ static member tcUnionCaseDoesNotTakeArguments() = (725, GetStringFunc("tcUnionCaseDoesNotTakeArguments",",,,") )
+ /// This union case takes one argument
+ /// (Originally from ..\FSComp.txt:559)
+ static member tcUnionCaseRequiresOneArgument() = (726, GetStringFunc("tcUnionCaseRequiresOneArgument",",,,") )
+ /// This union case expects %d arguments in tupled form
+ /// (Originally from ..\FSComp.txt:560)
+ static member tcUnionCaseExpectsTupledArguments(a0 : System.Int32) = (727, GetStringFunc("tcUnionCaseExpectsTupledArguments",",,,%d,,,") a0)
+ /// Field '%s' is not static
+ /// (Originally from ..\FSComp.txt:561)
+ static member tcFieldIsNotStatic(a0 : System.String) = (728, GetStringFunc("tcFieldIsNotStatic",",,,%s,,,") a0)
+ /// This field is not a literal and cannot be used in a pattern
+ /// (Originally from ..\FSComp.txt:562)
+ static member tcFieldNotLiteralCannotBeUsedInPattern() = (729, GetStringFunc("tcFieldNotLiteralCannotBeUsedInPattern",",,,") )
+ /// This is not a variable, constant, active recognizer or literal
+ /// (Originally from ..\FSComp.txt:563)
+ static member tcRequireVarConstRecogOrLiteral() = (730, GetStringFunc("tcRequireVarConstRecogOrLiteral",",,,") )
+ /// This is not a valid pattern
+ /// (Originally from ..\FSComp.txt:564)
+ static member tcInvalidPattern() = (731, GetStringFunc("tcInvalidPattern",",,,") )
+ /// Character range matches have been removed in F#. Consider using a 'when' pattern guard instead.
+ /// (Originally from ..\FSComp.txt:565)
+ static member tcUseWhenPatternGuard() = (GetStringFunc("tcUseWhenPatternGuard",",,,") )
+ /// Illegal pattern
+ /// (Originally from ..\FSComp.txt:566)
+ static member tcIllegalPattern() = (733, GetStringFunc("tcIllegalPattern",",,,") )
+ /// Syntax error - unexpected '?' symbol
+ /// (Originally from ..\FSComp.txt:567)
+ static member tcSyntaxErrorUnexpectedQMark() = (734, GetStringFunc("tcSyntaxErrorUnexpectedQMark",",,,") )
+ /// Expected %d expressions, got %d
+ /// (Originally from ..\FSComp.txt:568)
+ static member tcExpressionCountMisMatch(a0 : System.Int32, a1 : System.Int32) = (735, GetStringFunc("tcExpressionCountMisMatch",",,,%d,,,%d,,,") a0 a1)
+ /// TcExprUndelayed: delayed
+ /// (Originally from ..\FSComp.txt:569)
+ static member tcExprUndelayed() = (736, GetStringFunc("tcExprUndelayed",",,,") )
+ /// This expression form may only be used in sequence and computation expressions
+ /// (Originally from ..\FSComp.txt:570)
+ static member tcExpressionRequiresSequence() = (737, GetStringFunc("tcExpressionRequiresSequence",",,,") )
+ /// Invalid object expression. Objects without overrides or interfaces should use the expression form 'new Type(args)' without braces.
+ /// (Originally from ..\FSComp.txt:571)
+ static member tcInvalidObjectExpressionSyntaxForm() = (738, GetStringFunc("tcInvalidObjectExpressionSyntaxForm",",,,") )
+ /// Invalid object, sequence or record expression
+ /// (Originally from ..\FSComp.txt:572)
+ static member tcInvalidObjectSequenceOrRecordExpression() = (739, GetStringFunc("tcInvalidObjectSequenceOrRecordExpression",",,,") )
+ /// Invalid record, sequence or computation expression. Sequence expressions should be of the form 'seq { ... }'
+ /// (Originally from ..\FSComp.txt:573)
+ static member tcInvalidSequenceExpressionSyntaxForm() = (740, GetStringFunc("tcInvalidSequenceExpressionSyntaxForm",",,,") )
+ /// 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:574)
+ static member tcExpressionWithIfRequiresParenthesis() = (GetStringFunc("tcExpressionWithIfRequiresParenthesis",",,,") )
+ /// Unable to parse format string '%s'
+ /// (Originally from ..\FSComp.txt:575)
+ static member tcUnableToParseFormatString(a0 : System.String) = (741, GetStringFunc("tcUnableToParseFormatString",",,,%s,,,") a0)
+ /// This list expression exceeds the maximum size for list literals. Use an array for larger literals and call Array.ToList.
+ /// (Originally from ..\FSComp.txt:576)
+ static member tcListLiteralMaxSize() = (742, GetStringFunc("tcListLiteralMaxSize",",,,") )
+ /// The expression form 'expr then expr' may only be used as part of an explicit object constructor
+ /// (Originally from ..\FSComp.txt:577)
+ static member tcExpressionFormRequiresObjectConstructor() = (743, GetStringFunc("tcExpressionFormRequiresObjectConstructor",",,,") )
+ /// Named arguments cannot be given to member trait calls
+ /// (Originally from ..\FSComp.txt:578)
+ static member tcNamedArgumentsCannotBeUsedInMemberTraits() = (744, GetStringFunc("tcNamedArgumentsCannotBeUsedInMemberTraits",",,,") )
+ /// This is not a valid name for an enumeration case
+ /// (Originally from ..\FSComp.txt:579)
+ static member tcNotValidEnumCaseName() = (745, GetStringFunc("tcNotValidEnumCaseName",",,,") )
+ /// This field is not mutable
+ /// (Originally from ..\FSComp.txt:580)
+ static member tcFieldIsNotMutable() = (746, GetStringFunc("tcFieldIsNotMutable",",,,") )
+ /// 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:581)
+ static member tcConstructRequiresListArrayOrSequence() = (747, GetStringFunc("tcConstructRequiresListArrayOrSequence",",,,") )
+ /// 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:582)
+ static member tcConstructRequiresComputationExpressions() = (748, GetStringFunc("tcConstructRequiresComputationExpressions",",,,") )
+ /// This construct may only be used within sequence or computation expressions
+ /// (Originally from ..\FSComp.txt:583)
+ static member tcConstructRequiresSequenceOrComputations() = (749, GetStringFunc("tcConstructRequiresSequenceOrComputations",",,,") )
+ /// This construct may only be used within computation expressions
+ /// (Originally from ..\FSComp.txt:584)
+ static member tcConstructRequiresComputationExpression() = (750, GetStringFunc("tcConstructRequiresComputationExpression",",,,") )
+ /// Invalid indexer expression
+ /// (Originally from ..\FSComp.txt:585)
+ static member tcInvalidIndexerExpression() = (751, GetStringFunc("tcInvalidIndexerExpression",",,,") )
+ /// 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:586)
+ static member tcObjectOfIndeterminateTypeUsedRequireTypeConstraint() = (752, GetStringFunc("tcObjectOfIndeterminateTypeUsedRequireTypeConstraint",",,,") )
+ /// Cannot inherit from a variable type
+ /// (Originally from ..\FSComp.txt:587)
+ static member tcCannotInheritFromVariableType() = (753, GetStringFunc("tcCannotInheritFromVariableType",",,,") )
+ /// Calls to object constructors on type parameters cannot be given arguments
+ /// (Originally from ..\FSComp.txt:588)
+ static member tcObjectConstructorsOnTypeParametersCannotTakeArguments() = (754, GetStringFunc("tcObjectConstructorsOnTypeParametersCannotTakeArguments",",,,") )
+ /// The 'CompiledName' attribute cannot be used with this language element
+ /// (Originally from ..\FSComp.txt:589)
+ static member tcCompiledNameAttributeMisused() = (755, GetStringFunc("tcCompiledNameAttributeMisused",",,,") )
+ /// '%s' may only be used with named types
+ /// (Originally from ..\FSComp.txt:590)
+ static member tcNamedTypeRequired(a0 : System.String) = (756, GetStringFunc("tcNamedTypeRequired",",,,%s,,,") a0)
+ /// 'inherit' cannot be used on interface types. Consider implementing the interface by using 'interface ... with ... end' instead.
+ /// (Originally from ..\FSComp.txt:591)
+ static member tcInheritCannotBeUsedOnInterfaceType() = (757, GetStringFunc("tcInheritCannotBeUsedOnInterfaceType",",,,") )
+ /// 'new' cannot be used on interface types. Consider using an object expression '{ new ... with ... }' instead.
+ /// (Originally from ..\FSComp.txt:592)
+ static member tcNewCannotBeUsedOnInterfaceType() = (758, GetStringFunc("tcNewCannotBeUsedOnInterfaceType",",,,") )
+ /// 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:593)
+ static member tcAbstractTypeCannotBeInstantiated() = (759, GetStringFunc("tcAbstractTypeCannotBeInstantiated",",,,") )
+ /// 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:594)
+ static member tcIDisposableTypeShouldUseNew() = (760, GetStringFunc("tcIDisposableTypeShouldUseNew",",,,") )
+ /// '%s' may only be used to construct object types
+ /// (Originally from ..\FSComp.txt:595)
+ static member tcSyntaxCanOnlyBeUsedToCreateObjectTypes(a0 : System.String) = (761, GetStringFunc("tcSyntaxCanOnlyBeUsedToCreateObjectTypes",",,,%s,,,") a0)
+ /// 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:596)
+ static member tcConstructorRequiresCall(a0 : System.String) = (762, GetStringFunc("tcConstructorRequiresCall",",,,%s,,,") a0)
+ /// The field '%s' has been given a value, but is not present in the type '%s'
+ /// (Originally from ..\FSComp.txt:597)
+ static member tcUndefinedField(a0 : System.String, a1 : System.String) = (763, GetStringFunc("tcUndefinedField",",,,%s,,,%s,,,") a0 a1)
+ /// No assignment given for field '%s' of type '%s'
+ /// (Originally from ..\FSComp.txt:598)
+ static member tcFieldRequiresAssignment(a0 : System.String, a1 : System.String) = (764, GetStringFunc("tcFieldRequiresAssignment",",,,%s,,,%s,,,") a0 a1)
+ /// Extraneous fields have been given values
+ /// (Originally from ..\FSComp.txt:599)
+ static member tcExtraneousFieldsGivenValues() = (765, GetStringFunc("tcExtraneousFieldsGivenValues",",,,") )
+ /// Only overrides of abstract and virtual members may be specified in object expressions
+ /// (Originally from ..\FSComp.txt:600)
+ static member tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual() = (766, GetStringFunc("tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual",",,,") )
+ /// The member '%s' does not correspond to any abstract or virtual method available to override or implement.
+ /// (Originally from ..\FSComp.txt:601)
+ static member tcNoAbstractOrVirtualMemberFound(a0 : System.String) = (767, GetStringFunc("tcNoAbstractOrVirtualMemberFound",",,,%s,,,") a0)
+ /// 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:602)
+ static member tcMemberFoundIsNotAbstractOrVirtual(a0 : System.String, a1 : System.String) = (767, GetStringFunc("tcMemberFoundIsNotAbstractOrVirtual",",,,%s,,,%s,,,") a0 a1)
+ /// 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:603)
+ static member tcArgumentArityMismatch(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.String, a4 : System.String) = (768, GetStringFunc("tcArgumentArityMismatch",",,,%s,,,%d,,,%d,,,%s,,,%s,,,") a0 a1 a2 a3 a4)
+ /// 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:604)
+ static member tcArgumentArityMismatchOneOverload(a0 : System.String, a1 : System.Int32, a2 : System.Int32, a3 : System.String, a4 : System.String) = (769, GetStringFunc("tcArgumentArityMismatchOneOverload",",,,%s,,,%d,,,%d,,,%s,,,%s,,,") a0 a1 a2 a3 a4)
+ /// A simple method name is required here
+ /// (Originally from ..\FSComp.txt:605)
+ static member tcSimpleMethodNameRequired() = (770, GetStringFunc("tcSimpleMethodNameRequired",",,,") )
+ /// 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:606)
+ static member tcPredefinedTypeCannotBeUsedAsSuperType() = (771, GetStringFunc("tcPredefinedTypeCannotBeUsedAsSuperType",",,,") )
+ /// 'new' must be used with a named type
+ /// (Originally from ..\FSComp.txt:607)
+ static member tcNewMustBeUsedWithNamedType() = (772, GetStringFunc("tcNewMustBeUsedWithNamedType",",,,") )
+ /// Cannot create an extension of a sealed type
+ /// (Originally from ..\FSComp.txt:608)
+ static member tcCannotCreateExtensionOfSealedType() = (773, GetStringFunc("tcCannotCreateExtensionOfSealedType",",,,") )
+ /// No arguments may be given when constructing a record value
+ /// (Originally from ..\FSComp.txt:609)
+ static member tcNoArgumentsForRecordValue() = (774, GetStringFunc("tcNoArgumentsForRecordValue",",,,") )
+ /// Interface implementations cannot be given on construction expressions
+ /// (Originally from ..\FSComp.txt:610)
+ static member tcNoInterfaceImplementationForConstructionExpression() = (775, GetStringFunc("tcNoInterfaceImplementationForConstructionExpression",",,,") )
+ /// Object construction expressions may only be used to implement constructors in class types
+ /// (Originally from ..\FSComp.txt:611)
+ static member tcObjectConstructionCanOnlyBeUsedInClassTypes() = (776, GetStringFunc("tcObjectConstructionCanOnlyBeUsedInClassTypes",",,,") )
+ /// Only simple bindings of the form 'id = expr' can be used in construction expressions
+ /// (Originally from ..\FSComp.txt:612)
+ static member tcOnlySimpleBindingsCanBeUsedInConstructionExpressions() = (777, GetStringFunc("tcOnlySimpleBindingsCanBeUsedInConstructionExpressions",",,,") )
+ /// 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:613)
+ static member tcObjectsMustBeInitializedWithObjectExpression() = (778, GetStringFunc("tcObjectsMustBeInitializedWithObjectExpression",",,,") )
+ /// Expected an interface type
+ /// (Originally from ..\FSComp.txt:614)
+ static member tcExpectedInterfaceType() = (779, GetStringFunc("tcExpectedInterfaceType",",,,") )
+ /// Constructor expressions for interfaces do not take arguments
+ /// (Originally from ..\FSComp.txt:615)
+ static member tcConstructorForInterfacesDoNotTakeArguments() = (780, GetStringFunc("tcConstructorForInterfacesDoNotTakeArguments",",,,") )
+ /// This object constructor requires arguments
+ /// (Originally from ..\FSComp.txt:616)
+ static member tcConstructorRequiresArguments() = (781, GetStringFunc("tcConstructorRequiresArguments",",,,") )
+ /// 'new' may only be used with object constructors
+ /// (Originally from ..\FSComp.txt:617)
+ static member tcNewRequiresObjectConstructor() = (782, GetStringFunc("tcNewRequiresObjectConstructor",",,,") )
+ /// At least one override did not correctly implement its corresponding abstract member
+ /// (Originally from ..\FSComp.txt:618)
+ static member tcAtLeastOneOverrideIsInvalid() = (783, GetStringFunc("tcAtLeastOneOverrideIsInvalid",",,,") )
+ /// This numeric literal requires that a module '%s' defining functions FromZero, FromOne, FromInt32, FromInt64 and FromString be in scope
+ /// (Originally from ..\FSComp.txt:619)
+ static member tcNumericLiteralRequiresModule(a0 : System.String) = (784, GetStringFunc("tcNumericLiteralRequiresModule",",,,%s,,,") a0)
+ /// Invalid record construction
+ /// (Originally from ..\FSComp.txt:620)
+ static member tcInvalidRecordConstruction() = (785, GetStringFunc("tcInvalidRecordConstruction",",,,") )
+ /// The expression form { expr with ... } may only be used with record types. To build object types use { new Type(...) with ... }
+ /// (Originally from ..\FSComp.txt:621)
+ static member tcExpressionFormRequiresRecordTypes() = (786, GetStringFunc("tcExpressionFormRequiresRecordTypes",",,,") )
+ /// The inherited type is not an object model type
+ /// (Originally from ..\FSComp.txt:622)
+ static member tcInheritedTypeIsNotObjectModelType() = (787, GetStringFunc("tcInheritedTypeIsNotObjectModelType",",,,") )
+ /// 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:623)
+ static member tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes() = (788, GetStringFunc("tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes",",,,") )
+ /// '{ }' 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:624)
+ static member tcEmptyRecordInvalid() = (789, GetStringFunc("tcEmptyRecordInvalid",",,,") )
+ /// 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:625)
+ static member tcTypeIsNotARecordTypeNeedConstructor() = (790, GetStringFunc("tcTypeIsNotARecordTypeNeedConstructor",",,,") )
+ /// This type is not a record type
+ /// (Originally from ..\FSComp.txt:626)
+ static member tcTypeIsNotARecordType() = (791, GetStringFunc("tcTypeIsNotARecordType",",,,") )
+ /// 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:627)
+ static member tcConstructIsAmbiguousInComputationExpression() = (792, GetStringFunc("tcConstructIsAmbiguousInComputationExpression",",,,") )
+ /// 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:628)
+ static member tcConstructIsAmbiguousInSequenceExpression() = (793, GetStringFunc("tcConstructIsAmbiguousInSequenceExpression",",,,") )
+ /// 'do!' cannot be used within sequence expressions
+ /// (Originally from ..\FSComp.txt:629)
+ static member tcDoBangIllegalInSequenceExpression() = (794, GetStringFunc("tcDoBangIllegalInSequenceExpression",",,,") )
+ /// The use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead.
+ /// (Originally from ..\FSComp.txt:630)
+ static member tcUseForInSequenceExpression() = (795, GetStringFunc("tcUseForInSequenceExpression",",,,") )
+ /// 'try'/'with' cannot be used within sequence expressions
+ /// (Originally from ..\FSComp.txt:631)
+ static member tcTryIllegalInSequenceExpression() = (796, GetStringFunc("tcTryIllegalInSequenceExpression",",,,") )
+ /// In sequence expressions, multiple results are generated using 'yield!'
+ /// (Originally from ..\FSComp.txt:632)
+ static member tcUseYieldBangForMultipleResults() = (797, GetStringFunc("tcUseYieldBangForMultipleResults",",,,") )
+ /// Invalid assignment
+ /// (Originally from ..\FSComp.txt:633)
+ static member tcInvalidAssignment() = (799, GetStringFunc("tcInvalidAssignment",",,,") )
+ /// Invalid use of a type name
+ /// (Originally from ..\FSComp.txt:634)
+ static member tcInvalidUseOfTypeName() = (800, GetStringFunc("tcInvalidUseOfTypeName",",,,") )
+ /// This type has no accessible object constructors
+ /// (Originally from ..\FSComp.txt:635)
+ static member tcTypeHasNoAccessibleConstructor() = (801, GetStringFunc("tcTypeHasNoAccessibleConstructor",",,,") )
+ /// Invalid use of an interface type
+ /// (Originally from ..\FSComp.txt:638)
+ static member tcInvalidUseOfInterfaceType() = (804, GetStringFunc("tcInvalidUseOfInterfaceType",",,,") )
+ /// Invalid use of a delegate constructor. Use the syntax 'new Type(args)' or just 'Type(args)'.
+ /// (Originally from ..\FSComp.txt:639)
+ static member tcInvalidUseOfDelegate() = (805, GetStringFunc("tcInvalidUseOfDelegate",",,,") )
+ /// Property '%s' is not static
+ /// (Originally from ..\FSComp.txt:640)
+ static member tcPropertyIsNotStatic(a0 : System.String) = (806, GetStringFunc("tcPropertyIsNotStatic",",,,%s,,,") a0)
+ /// Property '%s' is not readable
+ /// (Originally from ..\FSComp.txt:641)
+ static member tcPropertyIsNotReadable(a0 : System.String) = (807, GetStringFunc("tcPropertyIsNotReadable",",,,%s,,,") a0)
+ /// This lookup cannot be used here
+ /// (Originally from ..\FSComp.txt:642)
+ static member tcLookupMayNotBeUsedHere() = (808, GetStringFunc("tcLookupMayNotBeUsedHere",",,,") )
+ /// Property '%s' is static
+ /// (Originally from ..\FSComp.txt:643)
+ static member tcPropertyIsStatic(a0 : System.String) = (809, GetStringFunc("tcPropertyIsStatic",",,,%s,,,") a0)
+ /// Property '%s' cannot be set
+ /// (Originally from ..\FSComp.txt:644)
+ static member tcPropertyCannotBeSet1(a0 : System.String) = (810, GetStringFunc("tcPropertyCannotBeSet1",",,,%s,,,") a0)
+ /// 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:645)
+ static member tcConstructorsCannotBeFirstClassValues() = (811, GetStringFunc("tcConstructorsCannotBeFirstClassValues",",,,") )
+ /// The syntax 'expr.id' may only be used with record labels, properties and fields
+ /// (Originally from ..\FSComp.txt:646)
+ static member tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields() = (812, GetStringFunc("tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields",",,,") )
+ /// Event '%s' is static
+ /// (Originally from ..\FSComp.txt:647)
+ static member tcEventIsStatic(a0 : System.String) = (813, GetStringFunc("tcEventIsStatic",",,,%s,,,") a0)
+ /// Event '%s' is not static
+ /// (Originally from ..\FSComp.txt:648)
+ static member tcEventIsNotStatic(a0 : System.String) = (814, GetStringFunc("tcEventIsNotStatic",",,,%s,,,") a0)
+ /// The named argument '%s' did not match any argument or mutable property
+ /// (Originally from ..\FSComp.txt:649)
+ static member tcNamedArgumentDidNotMatch(a0 : System.String) = (815, GetStringFunc("tcNamedArgumentDidNotMatch",",,,%s,,,") a0)
+ /// 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:650)
+ static member tcOverloadsCannotHaveCurriedArguments() = (816, GetStringFunc("tcOverloadsCannotHaveCurriedArguments",",,,") )
+ /// The unnamed arguments do not form a prefix of the arguments of the method called
+ /// (Originally from ..\FSComp.txt:651)
+ static member tcUnnamedArgumentsDoNotFormPrefix() = (GetStringFunc("tcUnnamedArgumentsDoNotFormPrefix",",,,") )
+ /// Static optimization conditionals are only for use within the F# library
+ /// (Originally from ..\FSComp.txt:652)
+ static member tcStaticOptimizationConditionalsOnlyForFSharpLibrary() = (817, GetStringFunc("tcStaticOptimizationConditionalsOnlyForFSharpLibrary",",,,") )
+ /// The corresponding formal argument is not optional
+ /// (Originally from ..\FSComp.txt:653)
+ static member tcFormalArgumentIsNotOptional() = (818, GetStringFunc("tcFormalArgumentIsNotOptional",",,,") )
+ /// Invalid optional assignment to a property or field
+ /// (Originally from ..\FSComp.txt:654)
+ static member tcInvalidOptionalAssignmentToPropertyOrField() = (819, GetStringFunc("tcInvalidOptionalAssignmentToPropertyOrField",",,,") )
+ /// A delegate constructor must be passed a single function value
+ /// (Originally from ..\FSComp.txt:655)
+ static member tcDelegateConstructorMustBePassed() = (820, GetStringFunc("tcDelegateConstructorMustBePassed",",,,") )
+ /// A binding cannot be marked both 'use' and 'rec'
+ /// (Originally from ..\FSComp.txt:656)
+ static member tcBindingCannotBeUseAndRec() = (821, GetStringFunc("tcBindingCannotBeUseAndRec",",,,") )
+ /// The 'VolatileField' attribute may only be used on 'let' bindings in classes
+ /// (Originally from ..\FSComp.txt:657)
+ static member tcVolatileOnlyOnClassLetBindings() = (823, GetStringFunc("tcVolatileOnlyOnClassLetBindings",",,,") )
+ /// Attributes are not permitted on 'let' bindings in expressions
+ /// (Originally from ..\FSComp.txt:658)
+ static member tcAttributesAreNotPermittedOnLetBindings() = (824, GetStringFunc("tcAttributesAreNotPermittedOnLetBindings",",,,") )
+ /// The 'DefaultValue' attribute may only be used on 'val' declarations
+ /// (Originally from ..\FSComp.txt:659)
+ static member tcDefaultValueAttributeRequiresVal() = (825, GetStringFunc("tcDefaultValueAttributeRequiresVal",",,,") )
+ /// The 'ConditionalAttribute' attribute may only be used on members
+ /// (Originally from ..\FSComp.txt:660)
+ static member tcConditionalAttributeRequiresMembers() = (826, GetStringFunc("tcConditionalAttributeRequiresMembers",",,,") )
+ /// This is not a valid name for an active pattern
+ /// (Originally from ..\FSComp.txt:661)
+ static member tcInvalidActivePatternName() = (827, GetStringFunc("tcInvalidActivePatternName",",,,") )
+ /// The 'EntryPointAttribute' attribute may only be used on function definitions in modules
+ /// (Originally from ..\FSComp.txt:662)
+ static member tcEntryPointAttributeRequiresFunctionInModule() = (828, GetStringFunc("tcEntryPointAttributeRequiresFunctionInModule",",,,") )
+ /// Mutable values cannot be marked 'inline'
+ /// (Originally from ..\FSComp.txt:663)
+ static member tcMutableValuesCannotBeInline() = (829, GetStringFunc("tcMutableValuesCannotBeInline",",,,") )
+ /// Mutable values cannot have generic parameters
+ /// (Originally from ..\FSComp.txt:664)
+ static member tcMutableValuesMayNotHaveGenericParameters() = (830, GetStringFunc("tcMutableValuesMayNotHaveGenericParameters",",,,") )
+ /// Mutable function values should be written 'let mutable f = (fun args -> ...)'
+ /// (Originally from ..\FSComp.txt:665)
+ static member tcMutableValuesSyntax() = (831, GetStringFunc("tcMutableValuesSyntax",",,,") )
+ /// Only functions may be marked 'inline'
+ /// (Originally from ..\FSComp.txt:666)
+ static member tcOnlyFunctionsCanBeInline() = (832, GetStringFunc("tcOnlyFunctionsCanBeInline",",,,") )
+ /// A literal value cannot be given the [] or [] attributes
+ /// (Originally from ..\FSComp.txt:667)
+ static member tcIllegalAttributesForLiteral() = (833, GetStringFunc("tcIllegalAttributesForLiteral",",,,") )
+ /// A literal value cannot be marked 'mutable'
+ /// (Originally from ..\FSComp.txt:668)
+ static member tcLiteralCannotBeMutable() = (834, GetStringFunc("tcLiteralCannotBeMutable",",,,") )
+ /// A literal value cannot be marked 'inline'
+ /// (Originally from ..\FSComp.txt:669)
+ static member tcLiteralCannotBeInline() = (835, GetStringFunc("tcLiteralCannotBeInline",",,,") )
+ /// Literal values cannot have generic parameters
+ /// (Originally from ..\FSComp.txt:670)
+ static member tcLiteralCannotHaveGenericParameters() = (836, GetStringFunc("tcLiteralCannotHaveGenericParameters",",,,") )
+ /// This is not a valid constant expression
+ /// (Originally from ..\FSComp.txt:671)
+ static member tcInvalidConstantExpression() = (837, GetStringFunc("tcInvalidConstantExpression",",,,") )
+ /// This type is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:672)
+ static member tcTypeIsInaccessible() = (838, GetStringFunc("tcTypeIsInaccessible",",,,") )
+ /// Unexpected condition in imported assembly: failed to decode AttributeUsage attribute
+ /// (Originally from ..\FSComp.txt:673)
+ static member tcUnexpectedConditionInImportedAssembly() = (839, GetStringFunc("tcUnexpectedConditionInImportedAssembly",",,,") )
+ /// Unrecognized attribute target. Valid attribute targets are 'assembly', 'module', 'type', 'method', 'property', 'return', 'param', 'field', 'event', 'constructor'.
+ /// (Originally from ..\FSComp.txt:674)
+ static member tcUnrecognizedAttributeTarget() = (840, GetStringFunc("tcUnrecognizedAttributeTarget",",,,") )
+ /// 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:675)
+ static member tcAttributeIsNotValidForLanguageElementUseDo() = (841, GetStringFunc("tcAttributeIsNotValidForLanguageElementUseDo",",,,") )
+ /// This attribute is not valid for use on this language element
+ /// (Originally from ..\FSComp.txt:676)
+ static member tcAttributeIsNotValidForLanguageElement() = (842, GetStringFunc("tcAttributeIsNotValidForLanguageElement",",,,") )
+ /// Optional arguments cannot be used in custom attributes
+ /// (Originally from ..\FSComp.txt:677)
+ static member tcOptionalArgumentsCannotBeUsedInCustomAttribute() = (843, GetStringFunc("tcOptionalArgumentsCannotBeUsedInCustomAttribute",",,,") )
+ /// This property cannot be set
+ /// (Originally from ..\FSComp.txt:678)
+ static member tcPropertyCannotBeSet0() = (844, GetStringFunc("tcPropertyCannotBeSet0",",,,") )
+ /// This property or field was not found on this custom attribute type
+ /// (Originally from ..\FSComp.txt:679)
+ static member tcPropertyOrFieldNotFoundInAttribute() = (845, GetStringFunc("tcPropertyOrFieldNotFoundInAttribute",",,,") )
+ /// A custom attribute must be a reference type
+ /// (Originally from ..\FSComp.txt:680)
+ static member tcCustomAttributeMustBeReferenceType() = (846, GetStringFunc("tcCustomAttributeMustBeReferenceType",",,,") )
+ /// The number of args for a custom attribute does not match the expected number of args for the attribute constructor
+ /// (Originally from ..\FSComp.txt:681)
+ static member tcCustomAttributeArgumentMismatch() = (847, GetStringFunc("tcCustomAttributeArgumentMismatch",",,,") )
+ /// A custom attribute must invoke an object constructor
+ /// (Originally from ..\FSComp.txt:682)
+ static member tcCustomAttributeMustInvokeConstructor() = (848, GetStringFunc("tcCustomAttributeMustInvokeConstructor",",,,") )
+ /// Attribute expressions must be calls to object constructors
+ /// (Originally from ..\FSComp.txt:683)
+ static member tcAttributeExpressionsMustBeConstructorCalls() = (849, GetStringFunc("tcAttributeExpressionsMustBeConstructorCalls",",,,") )
+ /// This attribute cannot be used in this version of F#
+ /// (Originally from ..\FSComp.txt:684)
+ static member tcUnsupportedAttribute() = (850, GetStringFunc("tcUnsupportedAttribute",",,,") )
+ /// Invalid inline specification
+ /// (Originally from ..\FSComp.txt:685)
+ static member tcInvalidInlineSpecification() = (851, GetStringFunc("tcInvalidInlineSpecification",",,,") )
+ /// 'use' bindings must be of the form 'use = '
+ /// (Originally from ..\FSComp.txt:686)
+ static member tcInvalidUseBinding() = (852, GetStringFunc("tcInvalidUseBinding",",,,") )
+ /// Abstract members are not permitted in an augmentation - they must be defined as part of the type itself
+ /// (Originally from ..\FSComp.txt:687)
+ static member tcAbstractMembersIllegalInAugmentation() = (853, GetStringFunc("tcAbstractMembersIllegalInAugmentation",",,,") )
+ /// Method overrides and interface implementations are not permitted here
+ /// (Originally from ..\FSComp.txt:688)
+ static member tcMethodOverridesIllegalHere() = (854, GetStringFunc("tcMethodOverridesIllegalHere",",,,") )
+ /// No abstract or interface member was found that corresponds to this override
+ /// (Originally from ..\FSComp.txt:689)
+ static member tcNoMemberFoundForOverride() = (855, GetStringFunc("tcNoMemberFoundForOverride",",,,") )
+ /// This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:%s
+ /// (Originally from ..\FSComp.txt:690)
+ static member tcOverrideArityMismatch(a0 : System.String) = (856, GetStringFunc("tcOverrideArityMismatch",",,,%s,,,") a0)
+ /// This method already has a default implementation
+ /// (Originally from ..\FSComp.txt:691)
+ static member tcDefaultImplementationAlreadyExists() = (857, GetStringFunc("tcDefaultImplementationAlreadyExists",",,,") )
+ /// The method implemented by this default is ambiguous
+ /// (Originally from ..\FSComp.txt:692)
+ static member tcDefaultAmbiguous() = (858, GetStringFunc("tcDefaultAmbiguous",",,,") )
+ /// No abstract property was found that corresponds to this override
+ /// (Originally from ..\FSComp.txt:693)
+ static member tcNoPropertyFoundForOverride() = (859, GetStringFunc("tcNoPropertyFoundForOverride",",,,") )
+ /// This property overrides or implements an abstract property but the abstract property doesn't have a corresponding %s
+ /// (Originally from ..\FSComp.txt:694)
+ static member tcAbstractPropertyMissingGetOrSet(a0 : System.String) = (860, GetStringFunc("tcAbstractPropertyMissingGetOrSet",",,,%s,,,") a0)
+ /// Invalid signature for set member
+ /// (Originally from ..\FSComp.txt:695)
+ static member tcInvalidSignatureForSet() = (861, GetStringFunc("tcInvalidSignatureForSet",",,,") )
+ /// This new member hides the abstract member '%s'. Rename the member or use 'override' instead.
+ /// (Originally from ..\FSComp.txt:696)
+ static member tcNewMemberHidesAbstractMember(a0 : System.String) = (864, GetStringFunc("tcNewMemberHidesAbstractMember",",,,%s,,,") a0)
+ /// 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:697)
+ static member tcNewMemberHidesAbstractMemberWithSuffix(a0 : System.String) = (864, GetStringFunc("tcNewMemberHidesAbstractMemberWithSuffix",",,,%s,,,") a0)
+ /// Interfaces cannot contain definitions of static initializers
+ /// (Originally from ..\FSComp.txt:698)
+ static member tcStaticInitializersIllegalInInterface() = (865, GetStringFunc("tcStaticInitializersIllegalInInterface",",,,") )
+ /// Interfaces cannot contain definitions of object constructors
+ /// (Originally from ..\FSComp.txt:699)
+ static member tcObjectConstructorsIllegalInInterface() = (866, GetStringFunc("tcObjectConstructorsIllegalInInterface",",,,") )
+ /// Interfaces cannot contain definitions of member overrides
+ /// (Originally from ..\FSComp.txt:700)
+ static member tcMemberOverridesIllegalInInterface() = (867, GetStringFunc("tcMemberOverridesIllegalInInterface",",,,") )
+ /// Interfaces cannot contain definitions of concrete members. You may need to define a constructor on your type to indicate that the type is a class.
+ /// (Originally from ..\FSComp.txt:701)
+ static member tcConcreteMembersIllegalInInterface() = (868, GetStringFunc("tcConcreteMembersIllegalInInterface",",,,") )
+ /// Constructors cannot be specified in exception augmentations
+ /// (Originally from ..\FSComp.txt:702)
+ static member tcConstructorsDisallowedInExceptionAugmentation() = (869, GetStringFunc("tcConstructorsDisallowedInExceptionAugmentation",",,,") )
+ /// 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:703)
+ static member tcStructsCannotHaveConstructorWithNoArguments() = (870, GetStringFunc("tcStructsCannotHaveConstructorWithNoArguments",",,,") )
+ /// Constructors cannot be defined for this type
+ /// (Originally from ..\FSComp.txt:704)
+ static member tcConstructorsIllegalForThisType() = (871, GetStringFunc("tcConstructorsIllegalForThisType",",,,") )
+ /// Recursive bindings that include member specifications can only occur as a direct augmentation of a type
+ /// (Originally from ..\FSComp.txt:705)
+ static member tcRecursiveBindingsWithMembersMustBeDirectAugmentation() = (872, GetStringFunc("tcRecursiveBindingsWithMembersMustBeDirectAugmentation",",,,") )
+ /// Only simple variable patterns can be bound in 'let rec' constructs
+ /// (Originally from ..\FSComp.txt:706)
+ static member tcOnlySimplePatternsInLetRec() = (873, GetStringFunc("tcOnlySimplePatternsInLetRec",",,,") )
+ /// Only record fields and simple, non-recursive 'let' bindings may be marked mutable
+ /// (Originally from ..\FSComp.txt:707)
+ static member tcOnlyRecordFieldsAndSimpleLetCanBeMutable() = (874, GetStringFunc("tcOnlyRecordFieldsAndSimpleLetCanBeMutable",",,,") )
+ /// This member is not sufficiently generic
+ /// (Originally from ..\FSComp.txt:708)
+ static member tcMemberIsNotSufficientlyGeneric() = (875, GetStringFunc("tcMemberIsNotSufficientlyGeneric",",,,") )
+ /// A declaration may only be the [] attribute if a constant value is also given, e.g. 'val x : int = 1'
+ /// (Originally from ..\FSComp.txt:709)
+ static member tcLiteralAttributeRequiresConstantValue() = (876, GetStringFunc("tcLiteralAttributeRequiresConstantValue",",,,") )
+ /// A declaration may only be given a value in a signature if the declaration has the [] attribute
+ /// (Originally from ..\FSComp.txt:710)
+ static member tcValueInSignatureRequiresLiteralAttribute() = (877, GetStringFunc("tcValueInSignatureRequiresLiteralAttribute",",,,") )
+ /// Thread-static and context-static variables must be static and given the [] attribute to indicate that the value is initialized to the default value on each new thread
+ /// (Originally from ..\FSComp.txt:711)
+ static member tcThreadStaticAndContextStaticMustBeStatic() = (878, GetStringFunc("tcThreadStaticAndContextStaticMustBeStatic",",,,") )
+ /// Volatile fields must be marked 'mutable' and cannot be thread-static
+ /// (Originally from ..\FSComp.txt:712)
+ static member tcVolatileFieldsMustBeMutable() = (879, GetStringFunc("tcVolatileFieldsMustBeMutable",",,,") )
+ /// Uninitialized 'val' fields must be mutable and marked with the '[]' attribute. Consider using a 'let' binding instead of a 'val' field.
+ /// (Originally from ..\FSComp.txt:713)
+ static member tcUninitializedValFieldsMustBeMutable() = (880, GetStringFunc("tcUninitializedValFieldsMustBeMutable",",,,") )
+ /// Static 'val' fields in types must be mutable, private and marked with the '[]' 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:714)
+ static member tcStaticValFieldsMustBeMutableAndPrivate() = (881, GetStringFunc("tcStaticValFieldsMustBeMutableAndPrivate",",,,") )
+ /// This field requires a name
+ /// (Originally from ..\FSComp.txt:715)
+ static member tcFieldRequiresName() = (882, GetStringFunc("tcFieldRequiresName",",,,") )
+ /// Invalid namespace, module, type or union case name
+ /// (Originally from ..\FSComp.txt:716)
+ static member tcInvalidNamespaceModuleTypeUnionName() = (883, GetStringFunc("tcInvalidNamespaceModuleTypeUnionName",",,,") )
+ /// Explicit type declarations for constructors must be of the form 'ty1 * ... * tyN -> resTy'. Parentheses may be required around 'resTy'
+ /// (Originally from ..\FSComp.txt:717)
+ static member tcIllegalFormForExplicitTypeDeclaration() = (884, GetStringFunc("tcIllegalFormForExplicitTypeDeclaration",",,,") )
+ /// Return types of union cases must be identical to the type being defined, up to abbreviations
+ /// (Originally from ..\FSComp.txt:718)
+ static member tcReturnTypesForUnionMustBeSameAsType() = (885, GetStringFunc("tcReturnTypesForUnionMustBeSameAsType",",,,") )
+ /// This is not a valid value for an enumeration literal
+ /// (Originally from ..\FSComp.txt:719)
+ static member tcInvalidEnumerationLiteral() = (886, GetStringFunc("tcInvalidEnumerationLiteral",",,,") )
+ /// The type '%s' is not an interface type
+ /// (Originally from ..\FSComp.txt:720)
+ static member tcTypeIsNotInterfaceType1(a0 : System.String) = (887, GetStringFunc("tcTypeIsNotInterfaceType1",",,,%s,,,") a0)
+ /// Duplicate specification of an interface
+ /// (Originally from ..\FSComp.txt:721)
+ static member tcDuplicateSpecOfInterface() = (888, GetStringFunc("tcDuplicateSpecOfInterface",",,,") )
+ /// A field/val declaration is not permitted here
+ /// (Originally from ..\FSComp.txt:722)
+ static member tcFieldValIllegalHere() = (889, GetStringFunc("tcFieldValIllegalHere",",,,") )
+ /// A inheritance declaration is not permitted here
+ /// (Originally from ..\FSComp.txt:723)
+ static member tcInheritIllegalHere() = (890, GetStringFunc("tcInheritIllegalHere",",,,") )
+ /// 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:724)
+ static member tcModuleRequiresQualifiedAccess(a0 : System.String) = (892, GetStringFunc("tcModuleRequiresQualifiedAccess",",,,%s,,,") a0)
+ /// 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:725)
+ static member tcOpenUsedWithPartiallyQualifiedPath(a0 : System.String) = (893, GetStringFunc("tcOpenUsedWithPartiallyQualifiedPath",",,,%s,,,") a0)
+ /// 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:726)
+ static member tcLocalClassBindingsCannotBeInline() = (894, GetStringFunc("tcLocalClassBindingsCannotBeInline",",,,") )
+ /// Type abbreviations cannot have members
+ /// (Originally from ..\FSComp.txt:727)
+ static member tcTypeAbbreviationsMayNotHaveMembers() = (895, GetStringFunc("tcTypeAbbreviationsMayNotHaveMembers",",,,") )
+ /// 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:728)
+ static member tcTypeAbbreviationsCheckedAtCompileTime() = (GetStringFunc("tcTypeAbbreviationsCheckedAtCompileTime",",,,") )
+ /// Enumerations cannot have members
+ /// (Originally from ..\FSComp.txt:729)
+ static member tcEnumerationsMayNotHaveMembers() = (896, GetStringFunc("tcEnumerationsMayNotHaveMembers",",,,") )
+ /// Measure declarations may have only static members
+ /// (Originally from ..\FSComp.txt:730)
+ static member tcMeasureDeclarationsRequireStaticMembers() = (897, GetStringFunc("tcMeasureDeclarationsRequireStaticMembers",",,,") )
+ /// Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings
+ /// (Originally from ..\FSComp.txt:731)
+ static member tcStructsMayNotContainDoBindings() = (GetStringFunc("tcStructsMayNotContainDoBindings",",,,") )
+ /// 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:732)
+ static member tcStructsMayNotContainLetBindings() = (901, GetStringFunc("tcStructsMayNotContainLetBindings",",,,") )
+ /// Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'.
+ /// (Originally from ..\FSComp.txt:733)
+ static member tcStaticLetBindingsRequireClassesWithImplicitConstructors() = (902, GetStringFunc("tcStaticLetBindingsRequireClassesWithImplicitConstructors",",,,") )
+ /// Measure declarations may have only static members: constructors are not available
+ /// (Originally from ..\FSComp.txt:734)
+ static member tcMeasureDeclarationsRequireStaticMembersNotConstructors() = (904, GetStringFunc("tcMeasureDeclarationsRequireStaticMembersNotConstructors",",,,") )
+ /// A member and a local class binding both have the name '%s'
+ /// (Originally from ..\FSComp.txt:735)
+ static member tcMemberAndLocalClassBindingHaveSameName(a0 : System.String) = (905, GetStringFunc("tcMemberAndLocalClassBindingHaveSameName",",,,%s,,,") a0)
+ /// Type abbreviations cannot have interface declarations
+ /// (Originally from ..\FSComp.txt:736)
+ static member tcTypeAbbreviationsCannotHaveInterfaceDeclaration() = (906, GetStringFunc("tcTypeAbbreviationsCannotHaveInterfaceDeclaration",",,,") )
+ /// Enumerations cannot have interface declarations
+ /// (Originally from ..\FSComp.txt:737)
+ static member tcEnumerationsCannotHaveInterfaceDeclaration() = (907, GetStringFunc("tcEnumerationsCannotHaveInterfaceDeclaration",",,,") )
+ /// This type is not an interface type
+ /// (Originally from ..\FSComp.txt:738)
+ static member tcTypeIsNotInterfaceType0() = (908, GetStringFunc("tcTypeIsNotInterfaceType0",",,,") )
+ /// All implemented interfaces should be declared on the initial declaration of the type
+ /// (Originally from ..\FSComp.txt:739)
+ static member tcAllImplementedInterfacesShouldBeDeclared() = (909, GetStringFunc("tcAllImplementedInterfacesShouldBeDeclared",",,,") )
+ /// 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:740)
+ static member tcDefaultImplementationForInterfaceHasAlreadyBeenAdded() = (910, GetStringFunc("tcDefaultImplementationForInterfaceHasAlreadyBeenAdded",",,,") )
+ /// This member is not permitted in an interface implementation
+ /// (Originally from ..\FSComp.txt:741)
+ static member tcMemberNotPermittedInInterfaceImplementation() = (911, GetStringFunc("tcMemberNotPermittedInInterfaceImplementation",",,,") )
+ /// This declaration element is not permitted in an augmentation
+ /// (Originally from ..\FSComp.txt:742)
+ static member tcDeclarationElementNotPermittedInAugmentation() = (912, GetStringFunc("tcDeclarationElementNotPermittedInAugmentation",",,,") )
+ /// Types cannot contain nested type definitions
+ /// (Originally from ..\FSComp.txt:743)
+ static member tcTypesCannotContainNestedTypes() = (913, GetStringFunc("tcTypesCannotContainNestedTypes",",,,") )
+ /// type, exception or module
+ /// (Originally from ..\FSComp.txt:744)
+ static member tcTypeExceptionOrModule() = (GetStringFunc("tcTypeExceptionOrModule",",,,") )
+ /// type or module
+ /// (Originally from ..\FSComp.txt:745)
+ static member tcTypeOrModule() = (GetStringFunc("tcTypeOrModule",",,,") )
+ /// The struct, record or union type '%s' implements the interface 'System.IStructuralEquatable' explicitly. Apply the 'CustomEquality' attribute to the type.
+ /// (Originally from ..\FSComp.txt:746)
+ static member tcImplementsIStructuralEquatableExplicitly(a0 : System.String) = (914, GetStringFunc("tcImplementsIStructuralEquatableExplicitly",",,,%s,,,") a0)
+ /// 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:747)
+ static member tcImplementsIEquatableExplicitly(a0 : System.String) = (915, GetStringFunc("tcImplementsIEquatableExplicitly",",,,%s,,,") a0)
+ /// Explicit type specifications cannot be used for exception constructors
+ /// (Originally from ..\FSComp.txt:748)
+ static member tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors() = (916, GetStringFunc("tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors",",,,") )
+ /// Exception abbreviations should not have argument lists
+ /// (Originally from ..\FSComp.txt:749)
+ static member tcExceptionAbbreviationsShouldNotHaveArgumentList() = (917, GetStringFunc("tcExceptionAbbreviationsShouldNotHaveArgumentList",",,,") )
+ /// Abbreviations for Common IL exceptions cannot take arguments
+ /// (Originally from ..\FSComp.txt:750)
+ static member tcAbbreviationsFordotNetExceptionsCannotTakeArguments() = (918, GetStringFunc("tcAbbreviationsFordotNetExceptionsCannotTakeArguments",",,,") )
+ /// Exception abbreviations must refer to existing exceptions or F# types deriving from System.Exception
+ /// (Originally from ..\FSComp.txt:751)
+ static member tcExceptionAbbreviationsMustReferToValidExceptions() = (919, GetStringFunc("tcExceptionAbbreviationsMustReferToValidExceptions",",,,") )
+ /// Abbreviations for Common IL exception types must have a matching object constructor
+ /// (Originally from ..\FSComp.txt:752)
+ static member tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor() = (920, GetStringFunc("tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor",",,,") )
+ /// Not an exception
+ /// (Originally from ..\FSComp.txt:753)
+ static member tcNotAnException() = (921, GetStringFunc("tcNotAnException",",,,") )
+ /// Invalid module name
+ /// (Originally from ..\FSComp.txt:755)
+ static member tcInvalidModuleName() = (924, GetStringFunc("tcInvalidModuleName",",,,") )
+ /// Invalid type extension
+ /// (Originally from ..\FSComp.txt:756)
+ static member tcInvalidTypeExtension() = (925, GetStringFunc("tcInvalidTypeExtension",",,,") )
+ /// The attributes of this type specify multiple kinds for the type
+ /// (Originally from ..\FSComp.txt:757)
+ static member tcAttributesOfTypeSpecifyMultipleKindsForType() = (926, GetStringFunc("tcAttributesOfTypeSpecifyMultipleKindsForType",",,,") )
+ /// The kind of the type specified by its attributes does not match the kind implied by its definition
+ /// (Originally from ..\FSComp.txt:758)
+ static member tcKindOfTypeSpecifiedDoesNotMatchDefinition() = (927, GetStringFunc("tcKindOfTypeSpecifiedDoesNotMatchDefinition",",,,") )
+ /// Measure definitions cannot have type parameters
+ /// (Originally from ..\FSComp.txt:759)
+ static member tcMeasureDefinitionsCannotHaveTypeParameters() = (928, GetStringFunc("tcMeasureDefinitionsCannotHaveTypeParameters",",,,") )
+ /// This type requires a definition
+ /// (Originally from ..\FSComp.txt:760)
+ static member tcTypeRequiresDefinition() = (929, GetStringFunc("tcTypeRequiresDefinition",",,,") )
+ /// 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:761)
+ static member tcTypeAbbreviationHasTypeParametersMissingOnType() = (GetStringFunc("tcTypeAbbreviationHasTypeParametersMissingOnType",",,,") )
+ /// Structs, interfaces, enums and delegates cannot inherit from other types
+ /// (Originally from ..\FSComp.txt:762)
+ static member tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes() = (931, GetStringFunc("tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes",",,,") )
+ /// Types cannot inherit from multiple concrete types
+ /// (Originally from ..\FSComp.txt:763)
+ static member tcTypesCannotInheritFromMultipleConcreteTypes() = (932, GetStringFunc("tcTypesCannotInheritFromMultipleConcreteTypes",",,,") )
+ /// Records, union, abbreviations and struct types cannot have the 'AllowNullLiteral' attribute
+ /// (Originally from ..\FSComp.txt:764)
+ static member tcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttribute() = (934, GetStringFunc("tcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttribute",",,,") )
+ /// 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:765)
+ static member tcAllowNullTypesMayOnlyInheritFromAllowNullTypes() = (935, GetStringFunc("tcAllowNullTypesMayOnlyInheritFromAllowNullTypes",",,,") )
+ /// Generic types cannot be given the 'StructLayout' attribute
+ /// (Originally from ..\FSComp.txt:766)
+ static member tcGenericTypesCannotHaveStructLayout() = (936, GetStringFunc("tcGenericTypesCannotHaveStructLayout",",,,") )
+ /// Only structs and classes without primary constructors may be given the 'StructLayout' attribute
+ /// (Originally from ..\FSComp.txt:767)
+ static member tcOnlyStructsCanHaveStructLayout() = (937, GetStringFunc("tcOnlyStructsCanHaveStructLayout",",,,") )
+ /// The representation of this type is hidden by the signature. It must be given an attribute such as [], [] or [] to indicate the characteristics of the type.
+ /// (Originally from ..\FSComp.txt:768)
+ static member tcRepresentationOfTypeHiddenBySignature() = (938, GetStringFunc("tcRepresentationOfTypeHiddenBySignature",",,,") )
+ /// Only classes may be given the 'AbstractClass' attribute
+ /// (Originally from ..\FSComp.txt:769)
+ static member tcOnlyClassesCanHaveAbstract() = (939, GetStringFunc("tcOnlyClassesCanHaveAbstract",",,,") )
+ /// Only types representing units-of-measure may be given the 'Measure' attribute
+ /// (Originally from ..\FSComp.txt:770)
+ static member tcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasure() = (940, GetStringFunc("tcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasure",",,,") )
+ /// Accessibility modifiers are not permitted on overrides or interface implementations
+ /// (Originally from ..\FSComp.txt:771)
+ static member tcOverridesCannotHaveVisibilityDeclarations() = (941, GetStringFunc("tcOverridesCannotHaveVisibilityDeclarations",",,,") )
+ /// Discriminated union types are always sealed
+ /// (Originally from ..\FSComp.txt:772)
+ static member tcTypesAreAlwaysSealedDU() = (942, GetStringFunc("tcTypesAreAlwaysSealedDU",",,,") )
+ /// Record types are always sealed
+ /// (Originally from ..\FSComp.txt:773)
+ static member tcTypesAreAlwaysSealedRecord() = (942, GetStringFunc("tcTypesAreAlwaysSealedRecord",",,,") )
+ /// Assembly code types are always sealed
+ /// (Originally from ..\FSComp.txt:774)
+ static member tcTypesAreAlwaysSealedAssemblyCode() = (942, GetStringFunc("tcTypesAreAlwaysSealedAssemblyCode",",,,") )
+ /// Struct types are always sealed
+ /// (Originally from ..\FSComp.txt:775)
+ static member tcTypesAreAlwaysSealedStruct() = (942, GetStringFunc("tcTypesAreAlwaysSealedStruct",",,,") )
+ /// Delegate types are always sealed
+ /// (Originally from ..\FSComp.txt:776)
+ static member tcTypesAreAlwaysSealedDelegate() = (942, GetStringFunc("tcTypesAreAlwaysSealedDelegate",",,,") )
+ /// Enum types are always sealed
+ /// (Originally from ..\FSComp.txt:777)
+ static member tcTypesAreAlwaysSealedEnum() = (942, GetStringFunc("tcTypesAreAlwaysSealedEnum",",,,") )
+ /// Interface types and delegate types cannot contain fields
+ /// (Originally from ..\FSComp.txt:778)
+ static member tcInterfaceTypesAndDelegatesCannotContainFields() = (943, GetStringFunc("tcInterfaceTypesAndDelegatesCannotContainFields",",,,") )
+ /// Abbreviated types cannot be given the 'Sealed' attribute
+ /// (Originally from ..\FSComp.txt:779)
+ static member tcAbbreviatedTypesCannotBeSealed() = (944, GetStringFunc("tcAbbreviatedTypesCannotBeSealed",",,,") )
+ /// Cannot inherit a sealed type
+ /// (Originally from ..\FSComp.txt:780)
+ static member tcCannotInheritFromSealedType() = (945, GetStringFunc("tcCannotInheritFromSealedType",",,,") )
+ /// Cannot inherit from interface type. Use interface ... with instead.
+ /// (Originally from ..\FSComp.txt:781)
+ static member tcCannotInheritFromInterfaceType() = (946, GetStringFunc("tcCannotInheritFromInterfaceType",",,,") )
+ /// Struct types cannot contain abstract members
+ /// (Originally from ..\FSComp.txt:782)
+ static member tcStructTypesCannotContainAbstractMembers() = (947, GetStringFunc("tcStructTypesCannotContainAbstractMembers",",,,") )
+ /// Interface types cannot be sealed
+ /// (Originally from ..\FSComp.txt:783)
+ static member tcInterfaceTypesCannotBeSealed() = (948, GetStringFunc("tcInterfaceTypesCannotBeSealed",",,,") )
+ /// Delegate specifications must be of the form 'typ -> typ'
+ /// (Originally from ..\FSComp.txt:784)
+ static member tcInvalidDelegateSpecification() = (949, GetStringFunc("tcInvalidDelegateSpecification",",,,") )
+ /// 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:785)
+ static member tcDelegatesCannotBeCurried() = (950, GetStringFunc("tcDelegatesCannotBeCurried",",,,") )
+ /// Literal enumerations must have type int, uint, int16, uint16, int64, uint64, byte, sbyte or char
+ /// (Originally from ..\FSComp.txt:786)
+ static member tcInvalidTypeForLiteralEnumeration() = (951, GetStringFunc("tcInvalidTypeForLiteralEnumeration",",,,") )
+ /// This type definition involves an immediate cyclic reference through an abbreviation
+ /// (Originally from ..\FSComp.txt:788)
+ static member tcTypeDefinitionIsCyclic() = (953, GetStringFunc("tcTypeDefinitionIsCyclic",",,,") )
+ /// This type definition involves an immediate cyclic reference through a struct field or inheritance relation
+ /// (Originally from ..\FSComp.txt:789)
+ static member tcTypeDefinitionIsCyclicThroughInheritance() = (954, GetStringFunc("tcTypeDefinitionIsCyclicThroughInheritance",",,,") )
+ /// 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 '[] attribute to the type definition in the signature
+ /// (Originally from ..\FSComp.txt:790)
+ static member tcReservedSyntaxForAugmentation() = (GetStringFunc("tcReservedSyntaxForAugmentation",",,,") )
+ /// 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:791)
+ static member tcMembersThatExtendInterfaceMustBePlacedInSeparateModule() = (956, GetStringFunc("tcMembersThatExtendInterfaceMustBePlacedInSeparateModule",",,,") )
+ /// 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:792)
+ static member tcDeclaredTypeParametersForExtensionDoNotMatchOriginal(a0 : System.String) = (957, GetStringFunc("tcDeclaredTypeParametersForExtensionDoNotMatchOriginal",",,,%s,,,") a0)
+ /// Type definitions may only have one 'inherit' specification and it must be the first declaration
+ /// (Originally from ..\FSComp.txt:793)
+ static member tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit() = (959, GetStringFunc("tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit",",,,") )
+ /// 'let' and 'do' bindings must come before member and interface definitions in type definitions
+ /// (Originally from ..\FSComp.txt:794)
+ static member tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers() = (960, GetStringFunc("tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers",",,,") )
+ /// This 'inherit' declaration specifies the inherited type but no arguments. Consider supplying arguments, e.g. 'inherit BaseType(args)'.
+ /// (Originally from ..\FSComp.txt:795)
+ static member tcInheritDeclarationMissingArguments() = (961, GetStringFunc("tcInheritDeclarationMissingArguments",",,,") )
+ /// 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:796)
+ static member tcInheritConstructionCallNotPartOfImplicitSequence() = (962, GetStringFunc("tcInheritConstructionCallNotPartOfImplicitSequence",",,,") )
+ /// 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:797)
+ static member tcLetAndDoRequiresImplicitConstructionSequence() = (963, GetStringFunc("tcLetAndDoRequiresImplicitConstructionSequence",",,,") )
+ /// Type abbreviations cannot have augmentations
+ /// (Originally from ..\FSComp.txt:798)
+ static member tcTypeAbbreviationsCannotHaveAugmentations() = (964, GetStringFunc("tcTypeAbbreviationsCannotHaveAugmentations",",,,") )
+ /// The path '%s' is a namespace. A module abbreviation may not abbreviate a namespace.
+ /// (Originally from ..\FSComp.txt:799)
+ static member tcModuleAbbreviationForNamespace(a0 : System.String) = (965, GetStringFunc("tcModuleAbbreviationForNamespace",",,,%s,,,") a0)
+ /// 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:800)
+ static member tcTypeUsedInInvalidWay(a0 : System.String, a1 : System.String, a2 : System.String) = (966, GetStringFunc("tcTypeUsedInInvalidWay",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:801)
+ static member tcMemberUsedInInvalidWay(a0 : System.String, a1 : System.String, a2 : System.String) = (967, GetStringFunc("tcMemberUsedInInvalidWay",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:804)
+ static member tcAttributeAutoOpenWasIgnored(a0 : System.String, a1 : System.String) = (970, GetStringFunc("tcAttributeAutoOpenWasIgnored",",,,%s,,,%s,,,") a0 a1)
+ /// Undefined value '%s'
+ /// (Originally from ..\FSComp.txt:805)
+ static member ilUndefinedValue(a0 : System.String) = (971, GetStringFunc("ilUndefinedValue",",,,%s,,,") a0)
+ /// Label %s not found
+ /// (Originally from ..\FSComp.txt:806)
+ static member ilLabelNotFound(a0 : System.String) = (972, GetStringFunc("ilLabelNotFound",",,,%s,,,") a0)
+ /// Incorrect number of type arguments to local call
+ /// (Originally from ..\FSComp.txt:807)
+ static member ilIncorrectNumberOfTypeArguments() = (973, GetStringFunc("ilIncorrectNumberOfTypeArguments",",,,") )
+ /// Dynamic invocation of %s is not supported
+ /// (Originally from ..\FSComp.txt:808)
+ static member ilDynamicInvocationNotSupported(a0 : System.String) = (GetStringFunc("ilDynamicInvocationNotSupported",",,,%s,,,") a0)
+ /// Taking the address of a literal field is invalid
+ /// (Originally from ..\FSComp.txt:809)
+ static member ilAddressOfLiteralFieldIsInvalid() = (975, GetStringFunc("ilAddressOfLiteralFieldIsInvalid",",,,") )
+ /// 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:810)
+ static member ilAddressOfValueHereIsInvalid(a0 : System.String) = (976, GetStringFunc("ilAddressOfValueHereIsInvalid",",,,%s,,,") a0)
+ /// Custom marshallers cannot be specified in F# code. Consider using a C# helper function.
+ /// (Originally from ..\FSComp.txt:811)
+ static member ilCustomMarshallersCannotBeUsedInFSharp() = (980, GetStringFunc("ilCustomMarshallersCannotBeUsedInFSharp",",,,") )
+ /// The MarshalAs attribute could not be decoded
+ /// (Originally from ..\FSComp.txt:812)
+ static member ilMarshalAsAttributeCannotBeDecoded() = (981, GetStringFunc("ilMarshalAsAttributeCannotBeDecoded",",,,") )
+ /// 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:813)
+ static member ilSignatureForExternalFunctionContainsTypeParameters() = (982, GetStringFunc("ilSignatureForExternalFunctionContainsTypeParameters",",,,") )
+ /// The DllImport attribute could not be decoded
+ /// (Originally from ..\FSComp.txt:814)
+ static member ilDllImportAttributeCouldNotBeDecoded() = (983, GetStringFunc("ilDllImportAttributeCouldNotBeDecoded",",,,") )
+ /// Literal fields cannot be set
+ /// (Originally from ..\FSComp.txt:815)
+ static member ilLiteralFieldsCannotBeSet() = (984, GetStringFunc("ilLiteralFieldsCannotBeSet",",,,") )
+ /// GenSetStorage: %s was represented as a static method but was not an appropriate lambda expression
+ /// (Originally from ..\FSComp.txt:816)
+ static member ilStaticMethodIsNotLambda(a0 : System.String) = (985, GetStringFunc("ilStaticMethodIsNotLambda",",,,%s,,,") a0)
+ /// Mutable variables cannot escape their method
+ /// (Originally from ..\FSComp.txt:817)
+ static member ilMutableVariablesCannotEscapeMethod() = (986, GetStringFunc("ilMutableVariablesCannotEscapeMethod",",,,") )
+ /// Compiler error: unexpected unrealized value
+ /// (Originally from ..\FSComp.txt:818)
+ static member ilUnexpectedUnrealizedValue() = (987, GetStringFunc("ilUnexpectedUnrealizedValue",",,,") )
+ /// Main module of program is empty: nothing will happen when it is run
+ /// (Originally from ..\FSComp.txt:819)
+ static member ilMainModuleEmpty() = (988, GetStringFunc("ilMainModuleEmpty",",,,") )
+ /// This type cannot be used for a literal field
+ /// (Originally from ..\FSComp.txt:820)
+ static member ilTypeCannotBeUsedForLiteralField() = (989, GetStringFunc("ilTypeCannotBeUsedForLiteralField",",,,") )
+ /// Unexpected GetSet annotation on a property
+ /// (Originally from ..\FSComp.txt:821)
+ static member ilUnexpectedGetSetAnnotation() = (990, GetStringFunc("ilUnexpectedGetSetAnnotation",",,,") )
+ /// The FieldOffset attribute could not be decoded
+ /// (Originally from ..\FSComp.txt:822)
+ static member ilFieldOffsetAttributeCouldNotBeDecoded() = (991, GetStringFunc("ilFieldOffsetAttributeCouldNotBeDecoded",",,,") )
+ /// The StructLayout attribute could not be decoded
+ /// (Originally from ..\FSComp.txt:823)
+ static member ilStructLayoutAttributeCouldNotBeDecoded() = (992, GetStringFunc("ilStructLayoutAttributeCouldNotBeDecoded",",,,") )
+ /// The DefaultAugmentation attribute could not be decoded
+ /// (Originally from ..\FSComp.txt:824)
+ static member ilDefaultAugmentationAttributeCouldNotBeDecoded() = (993, GetStringFunc("ilDefaultAugmentationAttributeCouldNotBeDecoded",",,,") )
+ /// Reflected definitions cannot contain uses of the prefix splice operator '%%'
+ /// (Originally from ..\FSComp.txt:825)
+ static member ilReflectedDefinitionsCannotUseSliceOperator() = (994, GetStringFunc("ilReflectedDefinitionsCannotUseSliceOperator",",,,") )
+ /// Problem with codepage '%d': %s
+ /// (Originally from ..\FSComp.txt:826)
+ static member optsProblemWithCodepage(a0 : System.Int32, a1 : System.String) = (1000, GetStringFunc("optsProblemWithCodepage",",,,%d,,,%s,,,") a0 a1)
+ /// Copyright (c) Microsoft Corporation. All Rights Reserved.
+ /// (Originally from ..\FSComp.txt:827)
+ static member optsCopyright() = (GetStringFunc("optsCopyright",",,,") )
+ /// Freely distributed under the MIT Open Source License. https://github.com/Microsoft/visualfsharp/blob/master/License.txt
+ /// (Originally from ..\FSComp.txt:828)
+ static member optsCopyrightCommunity() = (GetStringFunc("optsCopyrightCommunity",",,,") )
+ /// Name of the output file (Short form: -o)
+ /// (Originally from ..\FSComp.txt:829)
+ static member optsNameOfOutputFile() = (GetStringFunc("optsNameOfOutputFile",",,,") )
+ /// Build a console executable
+ /// (Originally from ..\FSComp.txt:830)
+ static member optsBuildConsole() = (GetStringFunc("optsBuildConsole",",,,") )
+ /// Build a Windows executable
+ /// (Originally from ..\FSComp.txt:831)
+ static member optsBuildWindows() = (GetStringFunc("optsBuildWindows",",,,") )
+ /// Build a library (Short form: -a)
+ /// (Originally from ..\FSComp.txt:832)
+ static member optsBuildLibrary() = (GetStringFunc("optsBuildLibrary",",,,") )
+ /// Build a module that can be added to another assembly
+ /// (Originally from ..\FSComp.txt:833)
+ static member optsBuildModule() = (GetStringFunc("optsBuildModule",",,,") )
+ /// Delay-sign the assembly using only the public portion of the strong name key
+ /// (Originally from ..\FSComp.txt:834)
+ static member optsDelaySign() = (GetStringFunc("optsDelaySign",",,,") )
+ /// Public-sign the assembly using only the public portion of the strong name key, and mark the assembly as signed
+ /// (Originally from ..\FSComp.txt:835)
+ static member optsPublicSign() = (GetStringFunc("optsPublicSign",",,,") )
+ /// Write the xmldoc of the assembly to the given file
+ /// (Originally from ..\FSComp.txt:836)
+ static member optsWriteXml() = (GetStringFunc("optsWriteXml",",,,") )
+ /// Specify a strong name key file
+ /// (Originally from ..\FSComp.txt:837)
+ static member optsStrongKeyFile() = (GetStringFunc("optsStrongKeyFile",",,,") )
+ /// Specify a strong name key container
+ /// (Originally from ..\FSComp.txt:838)
+ static member optsStrongKeyContainer() = (GetStringFunc("optsStrongKeyContainer",",,,") )
+ /// Limit which platforms this code can run on: x86, Itanium, x64, anycpu32bitpreferred, or anycpu. The default is anycpu.
+ /// (Originally from ..\FSComp.txt:839)
+ static member optsPlatform() = (GetStringFunc("optsPlatform",",,,") )
+ /// Only include optimization information essential for implementing inlined constructs. Inhibits cross-module inlining but improves binary compatibility.
+ /// (Originally from ..\FSComp.txt:840)
+ static member optsNoOpt() = (GetStringFunc("optsNoOpt",",,,") )
+ /// Don't add a resource to the generated assembly containing F#-specific metadata
+ /// (Originally from ..\FSComp.txt:841)
+ static member optsNoInterface() = (GetStringFunc("optsNoInterface",",,,") )
+ /// Print the inferred interface of the assembly to a file
+ /// (Originally from ..\FSComp.txt:842)
+ static member optsSig() = (GetStringFunc("optsSig",",,,") )
+ /// Reference an assembly (Short form: -r)
+ /// (Originally from ..\FSComp.txt:843)
+ static member optsReference() = (GetStringFunc("optsReference",",,,") )
+ /// Specify a Win32 resource file (.res)
+ /// (Originally from ..\FSComp.txt:844)
+ static member optsWin32res() = (GetStringFunc("optsWin32res",",,,") )
+ /// Specify a Win32 manifest file
+ /// (Originally from ..\FSComp.txt:845)
+ static member optsWin32manifest() = (GetStringFunc("optsWin32manifest",",,,") )
+ /// Do not include the default Win32 manifest
+ /// (Originally from ..\FSComp.txt:846)
+ static member optsNowin32manifest() = (GetStringFunc("optsNowin32manifest",",,,") )
+ /// Embed all source files in the portable PDB file
+ /// (Originally from ..\FSComp.txt:847)
+ static member optsEmbedAllSource() = (GetStringFunc("optsEmbedAllSource",",,,") )
+ /// Embed specific source files in the portable PDB file
+ /// (Originally from ..\FSComp.txt:848)
+ static member optsEmbedSource() = (GetStringFunc("optsEmbedSource",",,,") )
+ /// Source link information file to embed in the portable PDB file
+ /// (Originally from ..\FSComp.txt:849)
+ static member optsSourceLink() = (GetStringFunc("optsSourceLink",",,,") )
+ /// --embed switch only supported when emitting a Portable PDB (--debug:portable or --debug:embedded)
+ /// (Originally from ..\FSComp.txt:850)
+ static member optsEmbeddedSourceRequirePortablePDBs() = (1501, GetStringFunc("optsEmbeddedSourceRequirePortablePDBs",",,,") )
+ /// --sourcelink switch only supported when emitting a Portable PDB (--debug:portable or --debug:embedded)
+ /// (Originally from ..\FSComp.txt:851)
+ static member optsSourceLinkRequirePortablePDBs() = (1502, GetStringFunc("optsSourceLinkRequirePortablePDBs",",,,") )
+ /// Source file is too large to embed in a portable PDB
+ /// (Originally from ..\FSComp.txt:852)
+ static member srcFileTooLarge() = (GetStringFunc("srcFileTooLarge",",,,") )
+ /// Embed the specified managed resource
+ /// (Originally from ..\FSComp.txt:853)
+ static member optsResource() = (GetStringFunc("optsResource",",,,") )
+ /// Link the specified resource to this assembly where the resinfo format is [,[,public|private]]
+ /// (Originally from ..\FSComp.txt:854)
+ static member optsLinkresource() = (GetStringFunc("optsLinkresource",",,,") )
+ /// Emit debug information (Short form: -g)
+ /// (Originally from ..\FSComp.txt:855)
+ static member optsDebugPM() = (GetStringFunc("optsDebugPM",",,,") )
+ /// 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:856)
+ static member optsDebug(a0 : System.String) = (GetStringFunc("optsDebug",",,,%s,,,") a0)
+ /// Enable optimizations (Short form: -O)
+ /// (Originally from ..\FSComp.txt:857)
+ static member optsOptimize() = (GetStringFunc("optsOptimize",",,,") )
+ /// Enable or disable tailcalls
+ /// (Originally from ..\FSComp.txt:858)
+ static member optsTailcalls() = (GetStringFunc("optsTailcalls",",,,") )
+ /// Produce a deterministic assembly (including module version GUID and timestamp)
+ /// (Originally from ..\FSComp.txt:859)
+ static member optsDeterministic() = (GetStringFunc("optsDeterministic",",,,") )
+ /// Enable or disable cross-module optimizations
+ /// (Originally from ..\FSComp.txt:860)
+ static member optsCrossoptimize() = (GetStringFunc("optsCrossoptimize",",,,") )
+ /// Report all warnings as errors
+ /// (Originally from ..\FSComp.txt:861)
+ static member optsWarnaserrorPM() = (GetStringFunc("optsWarnaserrorPM",",,,") )
+ /// Report specific warnings as errors
+ /// (Originally from ..\FSComp.txt:862)
+ static member optsWarnaserror() = (GetStringFunc("optsWarnaserror",",,,") )
+ /// Set a warning level (0-5)
+ /// (Originally from ..\FSComp.txt:863)
+ static member optsWarn() = (GetStringFunc("optsWarn",",,,") )
+ /// Disable specific warning messages
+ /// (Originally from ..\FSComp.txt:864)
+ static member optsNowarn() = (GetStringFunc("optsNowarn",",,,") )
+ /// Enable specific warnings that may be off by default
+ /// (Originally from ..\FSComp.txt:865)
+ static member optsWarnOn() = (GetStringFunc("optsWarnOn",",,,") )
+ /// Generate overflow checks
+ /// (Originally from ..\FSComp.txt:866)
+ static member optsChecked() = (GetStringFunc("optsChecked",",,,") )
+ /// Define conditional compilation symbols (Short form: -d)
+ /// (Originally from ..\FSComp.txt:867)
+ static member optsDefine() = (GetStringFunc("optsDefine",",,,") )
+ /// Ignore ML compatibility warnings
+ /// (Originally from ..\FSComp.txt:868)
+ static member optsMlcompatibility() = (GetStringFunc("optsMlcompatibility",",,,") )
+ /// Suppress compiler copyright message
+ /// (Originally from ..\FSComp.txt:869)
+ static member optsNologo() = (GetStringFunc("optsNologo",",,,") )
+ /// Display this usage message (Short form: -?)
+ /// (Originally from ..\FSComp.txt:870)
+ static member optsHelp() = (GetStringFunc("optsHelp",",,,") )
+ /// Read response file for more options
+ /// (Originally from ..\FSComp.txt:871)
+ static member optsResponseFile() = (GetStringFunc("optsResponseFile",",,,") )
+ /// Specify the codepage used to read source files
+ /// (Originally from ..\FSComp.txt:872)
+ static member optsCodepage() = (GetStringFunc("optsCodepage",",,,") )
+ /// Output messages in UTF-8 encoding
+ /// (Originally from ..\FSComp.txt:873)
+ static member optsUtf8output() = (GetStringFunc("optsUtf8output",",,,") )
+ /// Output messages with fully qualified paths
+ /// (Originally from ..\FSComp.txt:874)
+ static member optsFullpaths() = (GetStringFunc("optsFullpaths",",,,") )
+ /// Specify a directory for the include path which is used to resolve source files and assemblies (Short form: -I)
+ /// (Originally from ..\FSComp.txt:875)
+ static member optsLib() = (GetStringFunc("optsLib",",,,") )
+ /// Base address for the library to be built
+ /// (Originally from ..\FSComp.txt:876)
+ static member optsBaseaddress() = (GetStringFunc("optsBaseaddress",",,,") )
+ /// Do not reference the default CLI assemblies by default
+ /// (Originally from ..\FSComp.txt:877)
+ static member optsNoframework() = (GetStringFunc("optsNoframework",",,,") )
+ /// Statically link the F# library and all referenced DLLs that depend on it into the assembly being generated
+ /// (Originally from ..\FSComp.txt:878)
+ static member optsStandalone() = (GetStringFunc("optsStandalone",",,,") )
+ /// 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:879)
+ static member optsStaticlink() = (GetStringFunc("optsStaticlink",",,,") )
+ /// Use a resident background compilation service to improve compiler startup times.
+ /// (Originally from ..\FSComp.txt:880)
+ static member optsResident() = (GetStringFunc("optsResident",",,,") )
+ /// Name the output debug file
+ /// (Originally from ..\FSComp.txt:881)
+ static member optsPdb() = (GetStringFunc("optsPdb",",,,") )
+ /// Resolve assembly references using directory-based rules rather than MSBuild resolution
+ /// (Originally from ..\FSComp.txt:882)
+ static member optsSimpleresolution() = (GetStringFunc("optsSimpleresolution",",,,") )
+ /// Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'
+ /// (Originally from ..\FSComp.txt:883)
+ static member optsUnrecognizedTarget(a0 : System.String) = (1048, GetStringFunc("optsUnrecognizedTarget",",,,%s,,,") a0)
+ /// Unrecognized debug type '%s', expected 'pdbonly' or 'full'
+ /// (Originally from ..\FSComp.txt:884)
+ static member optsUnrecognizedDebugType(a0 : System.String) = (1049, GetStringFunc("optsUnrecognizedDebugType",",,,%s,,,") a0)
+ /// Invalid warning level '%d'
+ /// (Originally from ..\FSComp.txt:885)
+ static member optsInvalidWarningLevel(a0 : System.Int32) = (1050, GetStringFunc("optsInvalidWarningLevel",",,,%d,,,") a0)
+ /// Short form of '%s'
+ /// (Originally from ..\FSComp.txt:886)
+ static member optsShortFormOf(a0 : System.String) = (GetStringFunc("optsShortFormOf",",,,%s,,,") a0)
+ /// The command-line option '--cliroot' has been deprecated. Use an explicit reference to a specific copy of mscorlib.dll instead.
+ /// (Originally from ..\FSComp.txt:887)
+ static member optsClirootDeprecatedMsg() = (GetStringFunc("optsClirootDeprecatedMsg",",,,") )
+ /// Use to override where the compiler looks for mscorlib.dll and framework components
+ /// (Originally from ..\FSComp.txt:888)
+ static member optsClirootDescription() = (GetStringFunc("optsClirootDescription",",,,") )
+ /// - OUTPUT FILES -
+ /// (Originally from ..\FSComp.txt:889)
+ static member optsHelpBannerOutputFiles() = (GetStringFunc("optsHelpBannerOutputFiles",",,,") )
+ /// - INPUT FILES -
+ /// (Originally from ..\FSComp.txt:890)
+ static member optsHelpBannerInputFiles() = (GetStringFunc("optsHelpBannerInputFiles",",,,") )
+ /// - RESOURCES -
+ /// (Originally from ..\FSComp.txt:891)
+ static member optsHelpBannerResources() = (GetStringFunc("optsHelpBannerResources",",,,") )
+ /// - CODE GENERATION -
+ /// (Originally from ..\FSComp.txt:892)
+ static member optsHelpBannerCodeGen() = (GetStringFunc("optsHelpBannerCodeGen",",,,") )
+ /// - ADVANCED -
+ /// (Originally from ..\FSComp.txt:893)
+ static member optsHelpBannerAdvanced() = (GetStringFunc("optsHelpBannerAdvanced",",,,") )
+ /// - MISCELLANEOUS -
+ /// (Originally from ..\FSComp.txt:894)
+ static member optsHelpBannerMisc() = (GetStringFunc("optsHelpBannerMisc",",,,") )
+ /// - LANGUAGE -
+ /// (Originally from ..\FSComp.txt:895)
+ static member optsHelpBannerLanguage() = (GetStringFunc("optsHelpBannerLanguage",",,,") )
+ /// - ERRORS AND WARNINGS -
+ /// (Originally from ..\FSComp.txt:896)
+ static member optsHelpBannerErrsAndWarns() = (GetStringFunc("optsHelpBannerErrsAndWarns",",,,") )
+ /// Unknown --test argument: '%s'
+ /// (Originally from ..\FSComp.txt:897)
+ static member optsUnknownArgumentToTheTestSwitch(a0 : System.String) = (1063, GetStringFunc("optsUnknownArgumentToTheTestSwitch",",,,%s,,,") a0)
+ /// Unrecognized platform '%s', valid values are 'x86', 'x64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'
+ /// (Originally from ..\FSComp.txt:898)
+ static member optsUnknownPlatform(a0 : System.String) = (1064, GetStringFunc("optsUnknownPlatform",",,,%s,,,") a0)
+ /// The command-line option '%s' is for test purposes only
+ /// (Originally from ..\FSComp.txt:899)
+ static member optsInternalNoDescription(a0 : System.String) = (GetStringFunc("optsInternalNoDescription",",,,%s,,,") a0)
+ /// The command-line option '%s' has been deprecated
+ /// (Originally from ..\FSComp.txt:900)
+ static member optsDCLONoDescription(a0 : System.String) = (GetStringFunc("optsDCLONoDescription",",,,%s,,,") a0)
+ /// The command-line option '%s' has been deprecated. Use '%s' instead.
+ /// (Originally from ..\FSComp.txt:901)
+ static member optsDCLODeprecatedSuggestAlternative(a0 : System.String, a1 : System.String) = (GetStringFunc("optsDCLODeprecatedSuggestAlternative",",,,%s,,,%s,,,") a0 a1)
+ /// 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:902)
+ static member optsDCLOHtmlDoc(a0 : System.String) = (GetStringFunc("optsDCLOHtmlDoc",",,,%s,,,") a0)
+ /// Output warning and error messages in color
+ /// (Originally from ..\FSComp.txt:903)
+ static member optsConsoleColors() = (GetStringFunc("optsConsoleColors",",,,") )
+ /// Enable high-entropy ASLR
+ /// (Originally from ..\FSComp.txt:904)
+ static member optsUseHighEntropyVA() = (GetStringFunc("optsUseHighEntropyVA",",,,") )
+ /// Specify subsystem version of this assembly
+ /// (Originally from ..\FSComp.txt:905)
+ static member optsSubSystemVersion() = (GetStringFunc("optsSubSystemVersion",",,,") )
+ /// Specify target framework profile of this assembly. Valid values are mscorlib, netcore or netstandard. Default - mscorlib
+ /// (Originally from ..\FSComp.txt:906)
+ static member optsTargetProfile() = (GetStringFunc("optsTargetProfile",",,,") )
+ /// Emit debug information in quotations
+ /// (Originally from ..\FSComp.txt:907)
+ static member optsEmitDebugInfoInQuotations() = (GetStringFunc("optsEmitDebugInfoInQuotations",",,,") )
+ /// Specify the preferred output language culture name (e.g. es-ES, ja-JP)
+ /// (Originally from ..\FSComp.txt:908)
+ static member optsPreferredUiLang() = (GetStringFunc("optsPreferredUiLang",",,,") )
+ /// Don't copy FSharp.Core.dll along the produced binaries
+ /// (Originally from ..\FSComp.txt:909)
+ static member optsNoCopyFsharpCore() = (GetStringFunc("optsNoCopyFsharpCore",",,,") )
+ /// Invalid version '%s' for '--subsystemversion'. The version must be 4.00 or greater.
+ /// (Originally from ..\FSComp.txt:910)
+ static member optsInvalidSubSystemVersion(a0 : System.String) = (1051, GetStringFunc("optsInvalidSubSystemVersion",",,,%s,,,") a0)
+ /// Invalid value '%s' for '--targetprofile', valid values are 'mscorlib', 'netcore' or 'netstandard'.
+ /// (Originally from ..\FSComp.txt:911)
+ static member optsInvalidTargetProfile(a0 : System.String) = (1052, GetStringFunc("optsInvalidTargetProfile",",,,%s,,,") a0)
+ /// Full name
+ /// (Originally from ..\FSComp.txt:912)
+ static member typeInfoFullName() = (GetStringFunc("typeInfoFullName",",,,") )
+ /// and %d other overloads
+ /// (Originally from ..\FSComp.txt:916)
+ static member typeInfoOtherOverloads(a0 : System.Int32) = (GetStringFunc("typeInfoOtherOverloads",",,,%d,,,") a0)
+ /// union case
+ /// (Originally from ..\FSComp.txt:917)
+ static member typeInfoUnionCase() = (GetStringFunc("typeInfoUnionCase",",,,") )
+ /// active pattern result
+ /// (Originally from ..\FSComp.txt:918)
+ static member typeInfoActivePatternResult() = (GetStringFunc("typeInfoActivePatternResult",",,,") )
+ /// active recognizer
+ /// (Originally from ..\FSComp.txt:919)
+ static member typeInfoActiveRecognizer() = (GetStringFunc("typeInfoActiveRecognizer",",,,") )
+ /// field
+ /// (Originally from ..\FSComp.txt:920)
+ static member typeInfoField() = (GetStringFunc("typeInfoField",",,,") )
+ /// event
+ /// (Originally from ..\FSComp.txt:921)
+ static member typeInfoEvent() = (GetStringFunc("typeInfoEvent",",,,") )
+ /// property
+ /// (Originally from ..\FSComp.txt:922)
+ static member typeInfoProperty() = (GetStringFunc("typeInfoProperty",",,,") )
+ /// extension
+ /// (Originally from ..\FSComp.txt:923)
+ static member typeInfoExtension() = (GetStringFunc("typeInfoExtension",",,,") )
+ /// custom operation
+ /// (Originally from ..\FSComp.txt:924)
+ static member typeInfoCustomOperation() = (GetStringFunc("typeInfoCustomOperation",",,,") )
+ /// argument
+ /// (Originally from ..\FSComp.txt:925)
+ static member typeInfoArgument() = (GetStringFunc("typeInfoArgument",",,,") )
+ /// patvar
+ /// (Originally from ..\FSComp.txt:926)
+ static member typeInfoPatternVariable() = (GetStringFunc("typeInfoPatternVariable",",,,") )
+ /// namespace
+ /// (Originally from ..\FSComp.txt:927)
+ static member typeInfoNamespace() = (GetStringFunc("typeInfoNamespace",",,,") )
+ /// module
+ /// (Originally from ..\FSComp.txt:928)
+ static member typeInfoModule() = (GetStringFunc("typeInfoModule",",,,") )
+ /// namespace/module
+ /// (Originally from ..\FSComp.txt:929)
+ static member typeInfoNamespaceOrModule() = (GetStringFunc("typeInfoNamespaceOrModule",",,,") )
+ /// from %s
+ /// (Originally from ..\FSComp.txt:930)
+ static member typeInfoFromFirst(a0 : System.String) = (GetStringFunc("typeInfoFromFirst",",,,%s,,,") a0)
+ /// also from %s
+ /// (Originally from ..\FSComp.txt:931)
+ static member typeInfoFromNext(a0 : System.String) = (GetStringFunc("typeInfoFromNext",",,,%s,,,") a0)
+ /// generated property
+ /// (Originally from ..\FSComp.txt:932)
+ static member typeInfoGeneratedProperty() = (GetStringFunc("typeInfoGeneratedProperty",",,,") )
+ /// generated type
+ /// (Originally from ..\FSComp.txt:933)
+ static member typeInfoGeneratedType() = (GetStringFunc("typeInfoGeneratedType",",,,") )
+ /// Found by AssemblyFolders registry key
+ /// (Originally from ..\FSComp.txt:934)
+ static member assemblyResolutionFoundByAssemblyFoldersKey() = (GetStringFunc("assemblyResolutionFoundByAssemblyFoldersKey",",,,") )
+ /// Found by AssemblyFoldersEx registry key
+ /// (Originally from ..\FSComp.txt:935)
+ static member assemblyResolutionFoundByAssemblyFoldersExKey() = (GetStringFunc("assemblyResolutionFoundByAssemblyFoldersExKey",",,,") )
+ /// .NET Framework
+ /// (Originally from ..\FSComp.txt:936)
+ static member assemblyResolutionNetFramework() = (GetStringFunc("assemblyResolutionNetFramework",",,,") )
+ /// Global Assembly Cache
+ /// (Originally from ..\FSComp.txt:937)
+ static member assemblyResolutionGAC() = (GetStringFunc("assemblyResolutionGAC",",,,") )
+ /// Recursive class hierarchy in type '%s'
+ /// (Originally from ..\FSComp.txt:938)
+ static member recursiveClassHierarchy(a0 : System.String) = (1089, GetStringFunc("recursiveClassHierarchy",",,,%s,,,") a0)
+ /// Invalid recursive reference to an abstract slot
+ /// (Originally from ..\FSComp.txt:939)
+ static member InvalidRecursiveReferenceToAbstractSlot() = (1090, GetStringFunc("InvalidRecursiveReferenceToAbstractSlot",",,,") )
+ /// 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:940)
+ static member eventHasNonStandardType(a0 : System.String, a1 : System.String, a2 : System.String) = (1091, GetStringFunc("eventHasNonStandardType",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The type '%s' is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:941)
+ static member typeIsNotAccessible(a0 : System.String) = (1092, GetStringFunc("typeIsNotAccessible",",,,%s,,,") a0)
+ /// The union cases or fields of the type '%s' are not accessible from this code location
+ /// (Originally from ..\FSComp.txt:942)
+ static member unionCasesAreNotAccessible(a0 : System.String) = (1093, GetStringFunc("unionCasesAreNotAccessible",",,,%s,,,") a0)
+ /// The value '%s' is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:943)
+ static member valueIsNotAccessible(a0 : System.String) = (1094, GetStringFunc("valueIsNotAccessible",",,,%s,,,") a0)
+ /// The union case '%s' is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:944)
+ static member unionCaseIsNotAccessible(a0 : System.String) = (1095, GetStringFunc("unionCaseIsNotAccessible",",,,%s,,,") a0)
+ /// The record, struct or class field '%s' is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:945)
+ static member fieldIsNotAccessible(a0 : System.String) = (1096, GetStringFunc("fieldIsNotAccessible",",,,%s,,,") a0)
+ /// The struct or class field '%s' is not accessible from this code location
+ /// (Originally from ..\FSComp.txt:946)
+ static member structOrClassFieldIsNotAccessible(a0 : System.String) = (1097, GetStringFunc("structOrClassFieldIsNotAccessible",",,,%s,,,") a0)
+ /// This construct is experimental
+ /// (Originally from ..\FSComp.txt:947)
+ static member experimentalConstruct() = (GetStringFunc("experimentalConstruct",",,,") )
+ /// No Invoke methods found for delegate type
+ /// (Originally from ..\FSComp.txt:948)
+ static member noInvokeMethodsFound() = (1099, GetStringFunc("noInvokeMethodsFound",",,,") )
+ /// More than one Invoke method found for delegate type
+ /// (Originally from ..\FSComp.txt:949)
+ static member moreThanOneInvokeMethodFound() = (GetStringFunc("moreThanOneInvokeMethodFound",",,,") )
+ /// Delegates are not allowed to have curried signatures
+ /// (Originally from ..\FSComp.txt:950)
+ static member delegatesNotAllowedToHaveCurriedSignatures() = (1101, GetStringFunc("delegatesNotAllowedToHaveCurriedSignatures",",,,") )
+ /// Unexpected Expr.TyChoose
+ /// (Originally from ..\FSComp.txt:951)
+ static member tlrUnexpectedTExpr() = (1102, GetStringFunc("tlrUnexpectedTExpr",",,,") )
+ /// 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:952)
+ static member tlrLambdaLiftingOptimizationsNotApplied() = (1103, GetStringFunc("tlrLambdaLiftingOptimizationsNotApplied",",,,") )
+ /// Identifiers containing '@' are reserved for use in F# code generation
+ /// (Originally from ..\FSComp.txt:953)
+ static member lexhlpIdentifiersContainingAtSymbolReserved() = (1104, GetStringFunc("lexhlpIdentifiersContainingAtSymbolReserved",",,,") )
+ /// The identifier '%s' is reserved for future use by F#
+ /// (Originally from ..\FSComp.txt:954)
+ static member lexhlpIdentifierReserved(a0 : System.String) = (GetStringFunc("lexhlpIdentifierReserved",",,,%s,,,") a0)
+ /// Missing variable '%s'
+ /// (Originally from ..\FSComp.txt:955)
+ static member patcMissingVariable(a0 : System.String) = (1106, GetStringFunc("patcMissingVariable",",,,%s,,,") a0)
+ /// Partial active patterns may only generate one result
+ /// (Originally from ..\FSComp.txt:956)
+ static member patcPartialActivePatternsGenerateOneResult() = (1107, GetStringFunc("patcPartialActivePatternsGenerateOneResult",",,,") )
+ /// The type '%s' is required here and is unavailable. You must add a reference to assembly '%s'.
+ /// (Originally from ..\FSComp.txt:957)
+ static member impTypeRequiredUnavailable(a0 : System.String, a1 : System.String) = (1108, GetStringFunc("impTypeRequiredUnavailable",",,,%s,,,%s,,,") a0 a1)
+ /// 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:958)
+ static member impReferencedTypeCouldNotBeFoundInAssembly(a0 : System.String, a1 : System.String) = (1109, GetStringFunc("impReferencedTypeCouldNotBeFoundInAssembly",",,,%s,,,%s,,,") a0 a1)
+ /// Internal error or badly formed metadata: not enough type parameters were in scope while importing
+ /// (Originally from ..\FSComp.txt:959)
+ static member impNotEnoughTypeParamsInScopeWhileImporting() = (1110, GetStringFunc("impNotEnoughTypeParamsInScopeWhileImporting",",,,") )
+ /// 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:960)
+ static member impReferenceToDllRequiredByAssembly(a0 : System.String, a1 : System.String, a2 : System.String) = (1111, GetStringFunc("impReferenceToDllRequiredByAssembly",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// An imported assembly uses the type '%s' but that type is not public
+ /// (Originally from ..\FSComp.txt:961)
+ static member impImportedAssemblyUsesNotPublicType(a0 : System.String) = (1112, GetStringFunc("impImportedAssemblyUsesNotPublicType",",,,%s,,,") a0)
+ /// 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:962)
+ static member optValueMarkedInlineButIncomplete(a0 : System.String) = (1113, GetStringFunc("optValueMarkedInlineButIncomplete",",,,%s,,,") a0)
+ /// The value '%s' was marked inline but was not bound in the optimization environment
+ /// (Originally from ..\FSComp.txt:963)
+ static member optValueMarkedInlineButWasNotBoundInTheOptEnv(a0 : System.String) = (1114, GetStringFunc("optValueMarkedInlineButWasNotBoundInTheOptEnv",",,,%s,,,") a0)
+ /// Local value %s not found during optimization
+ /// (Originally from ..\FSComp.txt:964)
+ static member optLocalValueNotFoundDuringOptimization(a0 : System.String) = (1115, GetStringFunc("optLocalValueNotFoundDuringOptimization",",,,%s,,,") a0)
+ /// A value marked as 'inline' has an unexpected value
+ /// (Originally from ..\FSComp.txt:965)
+ static member optValueMarkedInlineHasUnexpectedValue() = (1116, GetStringFunc("optValueMarkedInlineHasUnexpectedValue",",,,") )
+ /// A value marked as 'inline' could not be inlined
+ /// (Originally from ..\FSComp.txt:966)
+ static member optValueMarkedInlineCouldNotBeInlined() = (1117, GetStringFunc("optValueMarkedInlineCouldNotBeInlined",",,,") )
+ /// Failed to inline the value '%s' marked 'inline', perhaps because a recursive value was marked 'inline'
+ /// (Originally from ..\FSComp.txt:967)
+ static member optFailedToInlineValue(a0 : System.String) = (1118, GetStringFunc("optFailedToInlineValue",",,,%s,,,") a0)
+ /// Recursive ValValue %s
+ /// (Originally from ..\FSComp.txt:968)
+ static member optRecursiveValValue(a0 : System.String) = (1119, GetStringFunc("optRecursiveValValue",",,,%s,,,") a0)
+ /// The indentation of this 'in' token is incorrect with respect to the corresponding 'let'
+ /// (Originally from ..\FSComp.txt:969)
+ static member lexfltIncorrentIndentationOfIn() = (GetStringFunc("lexfltIncorrentIndentationOfIn",",,,") )
+ /// Possible incorrect indentation: this token is offside of context started at position %s. Try indenting this token further or using standard formatting conventions.
+ /// (Originally from ..\FSComp.txt:970)
+ static member lexfltTokenIsOffsideOfContextStartedEarlier(a0 : System.String) = (GetStringFunc("lexfltTokenIsOffsideOfContextStartedEarlier",",,,%s,,,") a0)
+ /// 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:971)
+ static member lexfltSeparatorTokensOfPatternMatchMisaligned() = (GetStringFunc("lexfltSeparatorTokensOfPatternMatchMisaligned",",,,") )
+ /// Invalid module/expression/type
+ /// (Originally from ..\FSComp.txt:972)
+ static member nrInvalidModuleExprType() = (1123, GetStringFunc("nrInvalidModuleExprType",",,,") )
+ /// 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:973)
+ static member nrTypeInstantiationNeededToDisambiguateTypesWithSameName(a0 : System.String, a1 : System.String) = (1124, GetStringFunc("nrTypeInstantiationNeededToDisambiguateTypesWithSameName",",,,%s,,,%s,,,") a0 a1)
+ /// 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:974)
+ static member nrTypeInstantiationIsMissingAndCouldNotBeInferred(a0 : System.String, a1 : System.String) = (1125, GetStringFunc("nrTypeInstantiationIsMissingAndCouldNotBeInferred",",,,%s,,,%s,,,") a0 a1)
+ /// 'global' may only be used as the first name in a qualified path
+ /// (Originally from ..\FSComp.txt:975)
+ static member nrGlobalUsedOnlyAsFirstName() = (1126, GetStringFunc("nrGlobalUsedOnlyAsFirstName",",,,") )
+ /// This is not a constructor or literal, or a constructor is being used incorrectly
+ /// (Originally from ..\FSComp.txt:976)
+ static member nrIsNotConstructorOrLiteral() = (1127, GetStringFunc("nrIsNotConstructorOrLiteral",",,,") )
+ /// Unexpected empty long identifier
+ /// (Originally from ..\FSComp.txt:977)
+ static member nrUnexpectedEmptyLongId() = (1128, GetStringFunc("nrUnexpectedEmptyLongId",",,,") )
+ /// The record type '%s' does not contain a label '%s'.
+ /// (Originally from ..\FSComp.txt:978)
+ static member nrRecordDoesNotContainSuchLabel(a0 : System.String, a1 : System.String) = (1129, GetStringFunc("nrRecordDoesNotContainSuchLabel",",,,%s,,,%s,,,") a0 a1)
+ /// Invalid field label
+ /// (Originally from ..\FSComp.txt:979)
+ static member nrInvalidFieldLabel() = (1130, GetStringFunc("nrInvalidFieldLabel",",,,") )
+ /// Invalid expression '%s'
+ /// (Originally from ..\FSComp.txt:980)
+ static member nrInvalidExpression(a0 : System.String) = (1132, GetStringFunc("nrInvalidExpression",",,,%s,,,") a0)
+ /// No constructors are available for the type '%s'
+ /// (Originally from ..\FSComp.txt:981)
+ static member nrNoConstructorsAvailableForType(a0 : System.String) = (1133, GetStringFunc("nrNoConstructorsAvailableForType",",,,%s,,,") a0)
+ /// 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:982)
+ static member nrUnionTypeNeedsQualifiedAccess(a0 : System.String, a1 : System.String) = (1134, GetStringFunc("nrUnionTypeNeedsQualifiedAccess",",,,%s,,,%s,,,") a0 a1)
+ /// 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:983)
+ static member nrRecordTypeNeedsQualifiedAccess(a0 : System.String, a1 : System.String) = (1135, GetStringFunc("nrRecordTypeNeedsQualifiedAccess",",,,%s,,,%s,,,") a0 a1)
+ /// Unexpected error creating debug information file '%s'
+ /// (Originally from ..\FSComp.txt:984)
+ static member ilwriteErrorCreatingPdb(a0 : System.String) = (1136, GetStringFunc("ilwriteErrorCreatingPdb",",,,%s,,,") a0)
+ /// This number is outside the allowable range for this integer type
+ /// (Originally from ..\FSComp.txt:985)
+ static member lexOutsideIntegerRange() = (1138, GetStringFunc("lexOutsideIntegerRange",",,,") )
+ /// '%s' is not permitted as a character in operator names and is reserved for future use
+ /// (Originally from ..\FSComp.txt:989)
+ static member lexCharNotAllowedInOperatorNames(a0 : System.String) = (GetStringFunc("lexCharNotAllowedInOperatorNames",",,,%s,,,") a0)
+ /// Unexpected character '%s'
+ /// (Originally from ..\FSComp.txt:990)
+ static member lexUnexpectedChar(a0 : System.String) = (GetStringFunc("lexUnexpectedChar",",,,%s,,,") a0)
+ /// This byte array literal contains characters that do not encode as a single byte
+ /// (Originally from ..\FSComp.txt:991)
+ static member lexByteArrayCannotEncode() = (1140, GetStringFunc("lexByteArrayCannotEncode",",,,") )
+ /// Identifiers followed by '%s' are reserved for future use
+ /// (Originally from ..\FSComp.txt:992)
+ static member lexIdentEndInMarkReserved(a0 : System.String) = (1141, GetStringFunc("lexIdentEndInMarkReserved",",,,%s,,,") a0)
+ /// This number is outside the allowable range for 8-bit signed integers
+ /// (Originally from ..\FSComp.txt:993)
+ static member lexOutsideEightBitSigned() = (1142, GetStringFunc("lexOutsideEightBitSigned",",,,") )
+ /// This number is outside the allowable range for hexadecimal 8-bit signed integers
+ /// (Originally from ..\FSComp.txt:994)
+ static member lexOutsideEightBitSignedHex() = (1143, GetStringFunc("lexOutsideEightBitSignedHex",",,,") )
+ /// This number is outside the allowable range for 8-bit unsigned integers
+ /// (Originally from ..\FSComp.txt:995)
+ static member lexOutsideEightBitUnsigned() = (1144, GetStringFunc("lexOutsideEightBitUnsigned",",,,") )
+ /// This number is outside the allowable range for 16-bit signed integers
+ /// (Originally from ..\FSComp.txt:996)
+ static member lexOutsideSixteenBitSigned() = (1145, GetStringFunc("lexOutsideSixteenBitSigned",",,,") )
+ /// This number is outside the allowable range for 16-bit unsigned integers
+ /// (Originally from ..\FSComp.txt:997)
+ static member lexOutsideSixteenBitUnsigned() = (1146, GetStringFunc("lexOutsideSixteenBitUnsigned",",,,") )
+ /// This number is outside the allowable range for 32-bit signed integers
+ /// (Originally from ..\FSComp.txt:998)
+ static member lexOutsideThirtyTwoBitSigned() = (1147, GetStringFunc("lexOutsideThirtyTwoBitSigned",",,,") )
+ /// This number is outside the allowable range for 32-bit unsigned integers
+ /// (Originally from ..\FSComp.txt:999)
+ static member lexOutsideThirtyTwoBitUnsigned() = (1148, GetStringFunc("lexOutsideThirtyTwoBitUnsigned",",,,") )
+ /// This number is outside the allowable range for 64-bit signed integers
+ /// (Originally from ..\FSComp.txt:1000)
+ static member lexOutsideSixtyFourBitSigned() = (1149, GetStringFunc("lexOutsideSixtyFourBitSigned",",,,") )
+ /// This number is outside the allowable range for 64-bit unsigned integers
+ /// (Originally from ..\FSComp.txt:1001)
+ static member lexOutsideSixtyFourBitUnsigned() = (1150, GetStringFunc("lexOutsideSixtyFourBitUnsigned",",,,") )
+ /// This number is outside the allowable range for signed native integers
+ /// (Originally from ..\FSComp.txt:1002)
+ static member lexOutsideNativeSigned() = (1151, GetStringFunc("lexOutsideNativeSigned",",,,") )
+ /// This number is outside the allowable range for unsigned native integers
+ /// (Originally from ..\FSComp.txt:1003)
+ static member lexOutsideNativeUnsigned() = (1152, GetStringFunc("lexOutsideNativeUnsigned",",,,") )
+ /// Invalid floating point number
+ /// (Originally from ..\FSComp.txt:1004)
+ static member lexInvalidFloat() = (1153, GetStringFunc("lexInvalidFloat",",,,") )
+ /// This number is outside the allowable range for decimal literals
+ /// (Originally from ..\FSComp.txt:1005)
+ static member lexOusideDecimal() = (1154, GetStringFunc("lexOusideDecimal",",,,") )
+ /// This number is outside the allowable range for 32-bit floats
+ /// (Originally from ..\FSComp.txt:1006)
+ static member lexOusideThirtyTwoBitFloat() = (1155, GetStringFunc("lexOusideThirtyTwoBitFloat",",,,") )
+ /// This is not a valid numeric literal. Valid numeric literals include 1, 0x1, 0b0001 (int), 1u (uint32), 1L (int64), 1UL (uint64), 1s (int16), 1y (sbyte), 1uy (byte), 1.0 (float), 1.0f (float32), 1.0m (decimal), 1I (BigInteger).
+ /// (Originally from ..\FSComp.txt:1007)
+ static member lexInvalidNumericLiteral() = (1156, GetStringFunc("lexInvalidNumericLiteral",",,,") )
+ /// This is not a valid byte literal
+ /// (Originally from ..\FSComp.txt:1008)
+ static member lexInvalidByteLiteral() = (1157, GetStringFunc("lexInvalidByteLiteral",",,,") )
+ /// This is not a valid character literal
+ /// (Originally from ..\FSComp.txt:1009)
+ static member lexInvalidCharLiteral() = (1158, GetStringFunc("lexInvalidCharLiteral",",,,") )
+ /// This Unicode encoding is only valid in string literals
+ /// (Originally from ..\FSComp.txt:1010)
+ static member lexThisUnicodeOnlyInStringLiterals() = (1159, GetStringFunc("lexThisUnicodeOnlyInStringLiterals",",,,") )
+ /// This token is reserved for future use
+ /// (Originally from ..\FSComp.txt:1011)
+ static member lexTokenReserved() = (1160, GetStringFunc("lexTokenReserved",",,,") )
+ /// TABs are not allowed in F# code unless the #indent \"off\" option is used
+ /// (Originally from ..\FSComp.txt:1012)
+ static member lexTabsNotAllowed() = (1161, GetStringFunc("lexTabsNotAllowed",",,,") )
+ /// Invalid line number: '%s'
+ /// (Originally from ..\FSComp.txt:1013)
+ static member lexInvalidLineNumber(a0 : System.String) = (1162, GetStringFunc("lexInvalidLineNumber",",,,%s,,,") a0)
+ /// #if directive must appear as the first non-whitespace character on a line
+ /// (Originally from ..\FSComp.txt:1014)
+ static member lexHashIfMustBeFirst() = (1163, GetStringFunc("lexHashIfMustBeFirst",",,,") )
+ /// #else has no matching #if
+ /// (Originally from ..\FSComp.txt:1015)
+ static member lexHashElseNoMatchingIf() = (GetStringFunc("lexHashElseNoMatchingIf",",,,") )
+ /// #endif required for #else
+ /// (Originally from ..\FSComp.txt:1016)
+ static member lexHashEndifRequiredForElse() = (GetStringFunc("lexHashEndifRequiredForElse",",,,") )
+ /// #else directive must appear as the first non-whitespace character on a line
+ /// (Originally from ..\FSComp.txt:1017)
+ static member lexHashElseMustBeFirst() = (1166, GetStringFunc("lexHashElseMustBeFirst",",,,") )
+ /// #endif has no matching #if
+ /// (Originally from ..\FSComp.txt:1018)
+ static member lexHashEndingNoMatchingIf() = (GetStringFunc("lexHashEndingNoMatchingIf",",,,") )
+ /// #endif directive must appear as the first non-whitespace character on a line
+ /// (Originally from ..\FSComp.txt:1019)
+ static member lexHashEndifMustBeFirst() = (1168, GetStringFunc("lexHashEndifMustBeFirst",",,,") )
+ /// #if directive should be immediately followed by an identifier
+ /// (Originally from ..\FSComp.txt:1020)
+ static member lexHashIfMustHaveIdent() = (1169, GetStringFunc("lexHashIfMustHaveIdent",",,,") )
+ /// Syntax error. Wrong nested #endif, unexpected tokens before it.
+ /// (Originally from ..\FSComp.txt:1021)
+ static member lexWrongNestedHashEndif() = (1170, GetStringFunc("lexWrongNestedHashEndif",",,,") )
+ /// #! may only appear as the first line at the start of a file.
+ /// (Originally from ..\FSComp.txt:1022)
+ static member lexHashBangMustBeFirstInFile() = (GetStringFunc("lexHashBangMustBeFirstInFile",",,,") )
+ /// Expected single line comment or end of line
+ /// (Originally from ..\FSComp.txt:1023)
+ static member pplexExpectedSingleLineComment() = (1171, GetStringFunc("pplexExpectedSingleLineComment",",,,") )
+ /// Infix operator member '%s' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ...
+ /// (Originally from ..\FSComp.txt:1024)
+ static member memberOperatorDefinitionWithNoArguments(a0 : System.String) = (1172, GetStringFunc("memberOperatorDefinitionWithNoArguments",",,,%s,,,") a0)
+ /// 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:1025)
+ static member memberOperatorDefinitionWithNonPairArgument(a0 : System.String, a1 : System.Int32) = (1173, GetStringFunc("memberOperatorDefinitionWithNonPairArgument",",,,%s,,,%d,,,") a0 a1)
+ /// Infix operator member '%s' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ...
+ /// (Originally from ..\FSComp.txt:1026)
+ static member memberOperatorDefinitionWithCurriedArguments(a0 : System.String) = (1174, GetStringFunc("memberOperatorDefinitionWithCurriedArguments",",,,%s,,,") a0)
+ /// All record, union and struct types in FSharp.Core.dll must be explicitly labelled with 'StructuralComparison' or 'NoComparison'
+ /// (Originally from ..\FSComp.txt:1027)
+ static member tcFSharpCoreRequiresExplicit() = (1175, GetStringFunc("tcFSharpCoreRequiresExplicit",",,,") )
+ /// 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:1028)
+ static member tcStructuralComparisonNotSatisfied1(a0 : System.String, a1 : System.String) = (1176, GetStringFunc("tcStructuralComparisonNotSatisfied1",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1029)
+ static member tcStructuralComparisonNotSatisfied2(a0 : System.String, a1 : System.String) = (1177, GetStringFunc("tcStructuralComparisonNotSatisfied2",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1030)
+ static member tcNoComparisonNeeded1(a0 : System.String, a1 : System.String, a2 : System.String) = (1178, GetStringFunc("tcNoComparisonNeeded1",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1031)
+ static member tcNoComparisonNeeded2(a0 : System.String, a1 : System.String, a2 : System.String) = (1178, GetStringFunc("tcNoComparisonNeeded2",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1032)
+ static member tcNoEqualityNeeded1(a0 : System.String, a1 : System.String, a2 : System.String) = (1178, GetStringFunc("tcNoEqualityNeeded1",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1033)
+ static member tcNoEqualityNeeded2(a0 : System.String, a1 : System.String, a2 : System.String) = (1178, GetStringFunc("tcNoEqualityNeeded2",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1034)
+ static member tcStructuralEqualityNotSatisfied1(a0 : System.String, a1 : System.String) = (1179, GetStringFunc("tcStructuralEqualityNotSatisfied1",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1035)
+ static member tcStructuralEqualityNotSatisfied2(a0 : System.String, a1 : System.String) = (1180, GetStringFunc("tcStructuralEqualityNotSatisfied2",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1036)
+ static member tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly() = (1181, GetStringFunc("tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly",",,,") )
+ /// The value '%s' is unused
+ /// (Originally from ..\FSComp.txt:1037)
+ static member chkUnusedValue(a0 : System.String) = (1182, GetStringFunc("chkUnusedValue",",,,%s,,,") a0)
+ /// 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:1038)
+ static member chkUnusedThisVariable(a0 : System.String) = (1183, GetStringFunc("chkUnusedThisVariable",",,,%s,,,") a0)
+ /// A getter property may have at most one argument group
+ /// (Originally from ..\FSComp.txt:1039)
+ static member parsGetterAtMostOneArgument() = (1184, GetStringFunc("parsGetterAtMostOneArgument",",,,") )
+ /// A setter property may have at most two argument groups
+ /// (Originally from ..\FSComp.txt:1040)
+ static member parsSetterAtMostTwoArguments() = (1185, GetStringFunc("parsSetterAtMostTwoArguments",",,,") )
+ /// Invalid property getter or setter
+ /// (Originally from ..\FSComp.txt:1041)
+ static member parsInvalidProperty() = (1186, GetStringFunc("parsInvalidProperty",",,,") )
+ /// An indexer property must be given at least one argument
+ /// (Originally from ..\FSComp.txt:1042)
+ static member parsIndexerPropertyRequiresAtLeastOneArgument() = (1187, GetStringFunc("parsIndexerPropertyRequiresAtLeastOneArgument",",,,") )
+ /// 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:1043)
+ static member tastInvalidAddressOfMutableAcrossAssemblyBoundary() = (1188, GetStringFunc("tastInvalidAddressOfMutableAcrossAssemblyBoundary",",,,") )
+ /// Type parameters must be placed directly adjacent to the type name, e.g. \"type C<'T>\", not type \"C <'T>\"
+ /// (Originally from ..\FSComp.txt:1044)
+ static member parsNonAdjacentTypars() = (1189, GetStringFunc("parsNonAdjacentTypars",",,,") )
+ /// Type arguments must be placed directly adjacent to the type name, e.g. \"C<'T>\", not \"C <'T>\"
+ /// (Originally from ..\FSComp.txt:1045)
+ static member parsNonAdjacentTyargs() = (1190, GetStringFunc("parsNonAdjacentTyargs",",,,") )
+ /// The use of the type syntax 'int C' and 'C ' is not permitted here. Consider adjusting this type to be written in the form 'C'
+ /// (Originally from ..\FSComp.txt:1046)
+ static member parsNonAtomicType() = (GetStringFunc("parsNonAtomicType",",,,") )
+ /// The module/namespace '%s' from compilation unit '%s' did not contain the module/namespace '%s'
+ /// (Originally from ..\FSComp.txt:1049)
+ static member tastUndefinedItemRefModuleNamespace(a0 : System.String, a1 : System.String, a2 : System.String) = (1193, GetStringFunc("tastUndefinedItemRefModuleNamespace",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The module/namespace '%s' from compilation unit '%s' did not contain the val '%s'
+ /// (Originally from ..\FSComp.txt:1050)
+ static member tastUndefinedItemRefVal(a0 : System.String, a1 : System.String, a2 : System.String) = (1194, GetStringFunc("tastUndefinedItemRefVal",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// The module/namespace '%s' from compilation unit '%s' did not contain the namespace, module or type '%s'
+ /// (Originally from ..\FSComp.txt:1051)
+ static member tastUndefinedItemRefModuleNamespaceType(a0 : System.String, a1 : System.String, a2 : System.String) = (1195, GetStringFunc("tastUndefinedItemRefModuleNamespaceType",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1052)
+ static member tcInvalidUseNullAsTrueValue() = (1196, GetStringFunc("tcInvalidUseNullAsTrueValue",",,,") )
+ /// The parameter '%s' was inferred to have byref type. Parameters of byref type must be given an explicit type annotation, e.g. 'x1: byref'. When used, a byref parameter is implicitly dereferenced.
+ /// (Originally from ..\FSComp.txt:1053)
+ static member tcParameterInferredByref(a0 : System.String) = (1197, GetStringFunc("tcParameterInferredByref",",,,%s,,,") a0)
+ /// 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:1054)
+ static member tcNonUniformMemberUse(a0 : System.String) = (1198, GetStringFunc("tcNonUniformMemberUse",",,,%s,,,") a0)
+ /// 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:1055)
+ static member tcAttribArgsDiffer(a0 : System.String) = (1200, GetStringFunc("tcAttribArgsDiffer",",,,%s,,,") a0)
+ /// Cannot call an abstract base member: '%s'
+ /// (Originally from ..\FSComp.txt:1056)
+ static member tcCannotCallAbstractBaseMember(a0 : System.String) = (1201, GetStringFunc("tcCannotCallAbstractBaseMember",",,,%s,,,") a0)
+ /// 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:1057)
+ static member typrelCannotResolveAmbiguityInUnmanaged() = (1202, GetStringFunc("typrelCannotResolveAmbiguityInUnmanaged",",,,") )
+ /// This construct is for ML compatibility. %s. You can disable this warning by using '--mlcompatibility' or '--nowarn:62'.
+ /// (Originally from ..\FSComp.txt:1060)
+ static member mlCompatMessage(a0 : System.String) = (GetStringFunc("mlCompatMessage",",,,%s,,,") a0)
+ /// 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:1062)
+ static member ilFieldDoesNotHaveValidOffsetForStructureLayout(a0 : System.String, a1 : System.String) = (1206, GetStringFunc("ilFieldDoesNotHaveValidOffsetForStructureLayout",",,,%s,,,%s,,,") a0 a1)
+ /// Interfaces inherited by other interfaces should be declared using 'inherit ...' instead of 'interface ...'
+ /// (Originally from ..\FSComp.txt:1063)
+ static member tcInterfacesShouldUseInheritNotInterface() = (1207, GetStringFunc("tcInterfacesShouldUseInheritNotInterface",",,,") )
+ /// Invalid prefix operator
+ /// (Originally from ..\FSComp.txt:1064)
+ static member parsInvalidPrefixOperator() = (1208, GetStringFunc("parsInvalidPrefixOperator",",,,") )
+ /// Invalid operator definition. Prefix operator definitions must use a valid prefix operator name.
+ /// (Originally from ..\FSComp.txt:1065)
+ static member parsInvalidPrefixOperatorDefinition() = (1208, GetStringFunc("parsInvalidPrefixOperatorDefinition",",,,") )
+ /// The file extensions '.ml' and '.mli' are for ML compatibility
+ /// (Originally from ..\FSComp.txt:1066)
+ static member buildCompilingExtensionIsForML() = (GetStringFunc("buildCompilingExtensionIsForML",",,,") )
+ /// Consider using a file with extension '.ml' or '.mli' instead
+ /// (Originally from ..\FSComp.txt:1067)
+ static member lexIndentOffForML() = (GetStringFunc("lexIndentOffForML",",,,") )
+ /// Active pattern '%s' is not a function
+ /// (Originally from ..\FSComp.txt:1068)
+ static member activePatternIdentIsNotFunctionTyped(a0 : System.String) = (1209, GetStringFunc("activePatternIdentIsNotFunctionTyped",",,,%s,,,") a0)
+ /// 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 = A x'
+ /// (Originally from ..\FSComp.txt:1069)
+ static member activePatternChoiceHasFreeTypars(a0 : System.String) = (1210, GetStringFunc("activePatternChoiceHasFreeTypars",",,,%s,,,") a0)
+ /// The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit)
+ /// (Originally from ..\FSComp.txt:1070)
+ static member ilFieldHasOffsetForSequentialLayout() = (1211, GetStringFunc("ilFieldHasOffsetForSequentialLayout",",,,") )
+ /// Optional arguments must come at the end of the argument list, after any non-optional arguments
+ /// (Originally from ..\FSComp.txt:1071)
+ static member tcOptionalArgsMustComeAfterNonOptionalArgs() = (1212, GetStringFunc("tcOptionalArgsMustComeAfterNonOptionalArgs",",,,") )
+ /// Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on methods or attribute classes
+ /// (Originally from ..\FSComp.txt:1072)
+ static member tcConditionalAttributeUsage() = (1213, GetStringFunc("tcConditionalAttributeUsage",",,,") )
+ /// Extension members cannot provide operator overloads. Consider defining the operator as part of the type definition instead.
+ /// (Originally from ..\FSComp.txt:1074)
+ static member tcMemberOperatorDefinitionInExtrinsic() = (1215, GetStringFunc("tcMemberOperatorDefinitionInExtrinsic",",,,") )
+ /// The name of the MDB file must be .mdb. The --pdb option will be ignored.
+ /// (Originally from ..\FSComp.txt:1075)
+ static member ilwriteMDBFileNameCannotBeChangedWarning() = (1216, GetStringFunc("ilwriteMDBFileNameCannotBeChangedWarning",",,,") )
+ /// MDB generation failed. Could not find compatible member %s
+ /// (Originally from ..\FSComp.txt:1076)
+ static member ilwriteMDBMemberMissing(a0 : System.String) = (1217, GetStringFunc("ilwriteMDBMemberMissing",",,,%s,,,") a0)
+ /// Cannot generate MDB debug information. Failed to load the 'MonoSymbolWriter' type from the 'Mono.CompilerServices.SymbolWriter.dll' assembly.
+ /// (Originally from ..\FSComp.txt:1077)
+ static member ilwriteErrorCreatingMdb() = (1218, GetStringFunc("ilwriteErrorCreatingMdb",",,,") )
+ /// The union case named '%s' conflicts with the generated type '%s'
+ /// (Originally from ..\FSComp.txt:1078)
+ static member tcUnionCaseNameConflictsWithGeneratedType(a0 : System.String, a1 : System.String) = (1219, GetStringFunc("tcUnionCaseNameConflictsWithGeneratedType",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1079)
+ static member chkNoReflectedDefinitionOnStructMember() = (1220, GetStringFunc("chkNoReflectedDefinitionOnStructMember",",,,") )
+ /// DLLImport bindings must be static members in a class or function definitions in a module
+ /// (Originally from ..\FSComp.txt:1080)
+ static member tcDllImportNotAllowed() = (1221, GetStringFunc("tcDllImportNotAllowed",",,,") )
+ /// When mscorlib.dll or FSharp.Core.dll is explicitly referenced the %s option must also be passed
+ /// (Originally from ..\FSComp.txt:1081)
+ static member buildExplicitCoreLibRequiresNoFramework(a0 : System.String) = (1222, GetStringFunc("buildExplicitCoreLibRequiresNoFramework",",,,%s,,,") a0)
+ /// 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:1082)
+ static member buildExpectedSigdataFile(a0 : System.String) = (1223, GetStringFunc("buildExpectedSigdataFile",",,,%s,,,") a0)
+ /// 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:1083)
+ static member buildExpectedFileAlongSideFSharpCore(a0 : System.String, a1 : System.String) = (1225, GetStringFunc("buildExpectedFileAlongSideFSharpCore",",,,%s,,,%s,,,") a0 a1)
+ /// Filename '%s' contains invalid character '%s'
+ /// (Originally from ..\FSComp.txt:1084)
+ static member buildUnexpectedFileNameCharacter(a0 : System.String, a1 : System.String) = (1227, GetStringFunc("buildUnexpectedFileNameCharacter",",,,%s,,,%s,,,") a0 a1)
+ /// 'use!' bindings must be of the form 'use! = '
+ /// (Originally from ..\FSComp.txt:1085)
+ static member tcInvalidUseBangBinding() = (1228, GetStringFunc("tcInvalidUseBangBinding",",,,") )
+ /// 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:1086)
+ static member crefNoInnerGenericsInQuotations() = (1230, GetStringFunc("crefNoInnerGenericsInQuotations",",,,") )
+ /// 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:1087)
+ static member tcEnumTypeCannotBeEnumerated(a0 : System.String) = (1231, GetStringFunc("tcEnumTypeCannotBeEnumerated",",,,%s,,,") a0)
+ /// End of file in triple-quote string begun at or before here
+ /// (Originally from ..\FSComp.txt:1088)
+ static member parsEofInTripleQuoteString() = (1232, GetStringFunc("parsEofInTripleQuoteString",",,,") )
+ /// End of file in triple-quote string embedded in comment begun at or before here
+ /// (Originally from ..\FSComp.txt:1089)
+ static member parsEofInTripleQuoteStringInComment() = (1233, GetStringFunc("parsEofInTripleQuoteStringInComment",",,,") )
+ /// This type test or downcast will ignore the unit-of-measure '%s'
+ /// (Originally from ..\FSComp.txt:1090)
+ static member tcTypeTestLosesMeasures(a0 : System.String) = (1240, GetStringFunc("tcTypeTestLosesMeasures",",,,%s,,,") a0)
+ /// Expected type argument or static argument
+ /// (Originally from ..\FSComp.txt:1091)
+ static member parsMissingTypeArgs() = (1241, GetStringFunc("parsMissingTypeArgs",",,,") )
+ /// Unmatched '<'. Expected closing '>'
+ /// (Originally from ..\FSComp.txt:1092)
+ static member parsMissingGreaterThan() = (1242, GetStringFunc("parsMissingGreaterThan",",,,") )
+ /// 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:1093)
+ static member parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString() = (1243, GetStringFunc("parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString",",,,") )
+ /// Attempted to parse this as an operator name, but failed
+ /// (Originally from ..\FSComp.txt:1094)
+ static member parsErrorParsingAsOperatorName() = (1244, GetStringFunc("parsErrorParsingAsOperatorName",",,,") )
+ /// \U%s is not a valid Unicode character escape sequence
+ /// (Originally from ..\FSComp.txt:1095)
+ static member lexInvalidUnicodeLiteral(a0 : System.String) = (1245, GetStringFunc("lexInvalidUnicodeLiteral",",,,%s,,,") a0)
+ /// '%s' must be applied to an argument of type '%s', but has been applied to an argument of type '%s'
+ /// (Originally from ..\FSComp.txt:1096)
+ static member tcCallerInfoWrongType(a0 : System.String, a1 : System.String, a2 : System.String) = (1246, GetStringFunc("tcCallerInfoWrongType",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// '%s' can only be applied to optional arguments
+ /// (Originally from ..\FSComp.txt:1097)
+ static member tcCallerInfoNotOptional(a0 : System.String) = (1247, GetStringFunc("tcCallerInfoNotOptional",",,,%s,,,") a0)
+ /// The specified .NET Framework version '%s' is not supported. Please specify a value from the enumeration Microsoft.Build.Utilities.TargetDotNetFrameworkVersion.
+ /// (Originally from ..\FSComp.txt:1099)
+ static member toolLocationHelperUnsupportedFrameworkVersion(a0 : System.String) = (1300, GetStringFunc("toolLocationHelperUnsupportedFrameworkVersion",",,,%s,,,") a0)
+ /// Invalid Magic value in CLR Header
+ /// (Originally from ..\FSComp.txt:1103)
+ static member ilSignInvalidMagicValue() = (1301, GetStringFunc("ilSignInvalidMagicValue",",,,") )
+ /// Bad image format
+ /// (Originally from ..\FSComp.txt:1104)
+ static member ilSignBadImageFormat() = (1302, GetStringFunc("ilSignBadImageFormat",",,,") )
+ /// Private key expected
+ /// (Originally from ..\FSComp.txt:1105)
+ static member ilSignPrivateKeyExpected() = (1303, GetStringFunc("ilSignPrivateKeyExpected",",,,") )
+ /// RSA key expected
+ /// (Originally from ..\FSComp.txt:1106)
+ static member ilSignRsaKeyExpected() = (1304, GetStringFunc("ilSignRsaKeyExpected",",,,") )
+ /// Invalid bit Length
+ /// (Originally from ..\FSComp.txt:1107)
+ static member ilSignInvalidBitLen() = (1305, GetStringFunc("ilSignInvalidBitLen",",,,") )
+ /// Invalid RSAParameters structure - '{0}' expected
+ /// (Originally from ..\FSComp.txt:1108)
+ static member ilSignInvalidRSAParams() = (1306, GetStringFunc("ilSignInvalidRSAParams",",,,") )
+ /// Invalid algId - 'Exponent' expected
+ /// (Originally from ..\FSComp.txt:1109)
+ static member ilSignInvalidAlgId() = (1307, GetStringFunc("ilSignInvalidAlgId",",,,") )
+ /// Invalid signature size
+ /// (Originally from ..\FSComp.txt:1110)
+ static member ilSignInvalidSignatureSize() = (1308, GetStringFunc("ilSignInvalidSignatureSize",",,,") )
+ /// No signature directory
+ /// (Originally from ..\FSComp.txt:1111)
+ static member ilSignNoSignatureDirectory() = (1309, GetStringFunc("ilSignNoSignatureDirectory",",,,") )
+ /// Invalid Public Key blob
+ /// (Originally from ..\FSComp.txt:1112)
+ static member ilSignInvalidPKBlob() = (1310, GetStringFunc("ilSignInvalidPKBlob",",,,") )
+ /// Exiting - too many errors
+ /// (Originally from ..\FSComp.txt:1114)
+ static member fscTooManyErrors() = (GetStringFunc("fscTooManyErrors",",,,") )
+ /// The documentation file has no .xml suffix
+ /// (Originally from ..\FSComp.txt:1115)
+ static member docfileNoXmlSuffix() = (2001, GetStringFunc("docfileNoXmlSuffix",",,,") )
+ /// No implementation files specified
+ /// (Originally from ..\FSComp.txt:1116)
+ static member fscNoImplementationFiles() = (2002, GetStringFunc("fscNoImplementationFiles",",,,") )
+ /// An %s specified version '%s', but this value is invalid and has been ignored
+ /// (Originally from ..\FSComp.txt:1117)
+ static member fscBadAssemblyVersion(a0 : System.String, a1 : System.String) = (2003, GetStringFunc("fscBadAssemblyVersion",",,,%s,,,%s,,,") a0 a1)
+ /// Conflicting options specified: 'win32manifest' and 'win32res'. Only one of these can be used.
+ /// (Originally from ..\FSComp.txt:1118)
+ static member fscTwoResourceManifests() = (2004, GetStringFunc("fscTwoResourceManifests",",,,") )
+ /// 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:1119)
+ static member fscQuotationLiteralsStaticLinking(a0 : System.String) = (2005, GetStringFunc("fscQuotationLiteralsStaticLinking",",,,%s,,,") a0)
+ /// 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:1120)
+ static member fscQuotationLiteralsStaticLinking0() = (2006, GetStringFunc("fscQuotationLiteralsStaticLinking0",",,,") )
+ /// Static linking may not include a .EXE
+ /// (Originally from ..\FSComp.txt:1121)
+ static member fscStaticLinkingNoEXE() = (2007, GetStringFunc("fscStaticLinkingNoEXE",",,,") )
+ /// Static linking may not include a mixed managed/unmanaged DLL
+ /// (Originally from ..\FSComp.txt:1122)
+ static member fscStaticLinkingNoMixedDLL() = (2008, GetStringFunc("fscStaticLinkingNoMixedDLL",",,,") )
+ /// Ignoring mixed managed/unmanaged assembly '%s' during static linking
+ /// (Originally from ..\FSComp.txt:1123)
+ static member fscIgnoringMixedWhenLinking(a0 : System.String) = (2009, GetStringFunc("fscIgnoringMixedWhenLinking",",,,%s,,,") a0)
+ /// 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:1124)
+ static member fscAssumeStaticLinkContainsNoDependencies(a0 : System.String) = (2011, GetStringFunc("fscAssumeStaticLinkContainsNoDependencies",",,,%s,,,") a0)
+ /// 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:1125)
+ static member fscAssemblyNotFoundInDependencySet(a0 : System.String) = (2012, GetStringFunc("fscAssemblyNotFoundInDependencySet",",,,%s,,,") a0)
+ /// The key file '%s' could not be opened
+ /// (Originally from ..\FSComp.txt:1126)
+ static member fscKeyFileCouldNotBeOpened(a0 : System.String) = (2013, GetStringFunc("fscKeyFileCouldNotBeOpened",",,,%s,,,") a0)
+ /// A problem occurred writing the binary '%s': %s
+ /// (Originally from ..\FSComp.txt:1127)
+ static member fscProblemWritingBinary(a0 : System.String, a1 : System.String) = (2014, GetStringFunc("fscProblemWritingBinary",",,,%s,,,%s,,,") a0 a1)
+ /// The 'AssemblyVersionAttribute' has been ignored because a version was given using a command line option
+ /// (Originally from ..\FSComp.txt:1128)
+ static member fscAssemblyVersionAttributeIgnored() = (2015, GetStringFunc("fscAssemblyVersionAttributeIgnored",",,,") )
+ /// Error emitting 'System.Reflection.AssemblyCultureAttribute' attribute -- 'Executables cannot be satellite assemblies, Culture should always be empty'
+ /// (Originally from ..\FSComp.txt:1129)
+ static member fscAssemblyCultureAttributeError() = (2016, GetStringFunc("fscAssemblyCultureAttributeError",",,,") )
+ /// Option '--delaysign' overrides attribute 'System.Reflection.AssemblyDelaySignAttribute' given in a source file or added module
+ /// (Originally from ..\FSComp.txt:1130)
+ static member fscDelaySignWarning() = (2017, GetStringFunc("fscDelaySignWarning",",,,") )
+ /// Option '--keyfile' overrides attribute 'System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module
+ /// (Originally from ..\FSComp.txt:1131)
+ static member fscKeyFileWarning() = (2018, GetStringFunc("fscKeyFileWarning",",,,") )
+ /// Option '--keycontainer' overrides attribute 'System.Reflection.AssemblyNameAttribute' given in a source file or added module
+ /// (Originally from ..\FSComp.txt:1132)
+ static member fscKeyNameWarning() = (2019, GetStringFunc("fscKeyNameWarning",",,,") )
+ /// 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:1133)
+ static member fscReferenceOnCommandLine(a0 : System.String) = (2020, GetStringFunc("fscReferenceOnCommandLine",",,,%s,,,") a0)
+ /// The resident compilation service was not used because a problem occured in communicating with the server.
+ /// (Originally from ..\FSComp.txt:1134)
+ static member fscRemotingError() = (2021, GetStringFunc("fscRemotingError",",,,") )
+ /// Problem with filename '%s': Illegal characters in path.
+ /// (Originally from ..\FSComp.txt:1135)
+ static member pathIsInvalid(a0 : System.String) = (2022, GetStringFunc("pathIsInvalid",",,,%s,,,") a0)
+ /// 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 item in the .fsproj project file.
+ /// (Originally from ..\FSComp.txt:1136)
+ static member fscResxSourceFileDeprecated(a0 : System.String) = (2023, GetStringFunc("fscResxSourceFileDeprecated",",,,%s,,,") a0)
+ /// 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:1137)
+ static member fscStaticLinkingNoProfileMismatches() = (2024, GetStringFunc("fscStaticLinkingNoProfileMismatches",",,,") )
+ /// 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:1138)
+ static member fscAssemblyWildcardAndDeterminism(a0 : System.String, a1 : System.String) = (2025, GetStringFunc("fscAssemblyWildcardAndDeterminism",",,,%s,,,%s,,,") a0 a1)
+ /// Determinstic builds only support portable PDBs (--debug:portable or --debug:embedded)
+ /// (Originally from ..\FSComp.txt:1139)
+ static member fscDeterministicDebugRequiresPortablePdb() = (2026, GetStringFunc("fscDeterministicDebugRequiresPortablePdb",",,,") )
+ /// Character '%s' is not allowed in provided namespace name '%s'
+ /// (Originally from ..\FSComp.txt:1140)
+ static member etIllegalCharactersInNamespaceName(a0 : System.String, a1 : System.String) = (3000, GetStringFunc("etIllegalCharactersInNamespaceName",",,,%s,,,%s,,,") a0 a1)
+ /// The provided type '%s' returned a member with a null or empty member name
+ /// (Originally from ..\FSComp.txt:1141)
+ static member etNullOrEmptyMemberName(a0 : System.String) = (3001, GetStringFunc("etNullOrEmptyMemberName",",,,%s,,,") a0)
+ /// The provided type '%s' returned a null member
+ /// (Originally from ..\FSComp.txt:1142)
+ static member etNullMember(a0 : System.String) = (3002, GetStringFunc("etNullMember",",,,%s,,,") a0)
+ /// The provided type '%s' member info '%s' has null declaring type
+ /// (Originally from ..\FSComp.txt:1143)
+ static member etNullMemberDeclaringType(a0 : System.String, a1 : System.String) = (3003, GetStringFunc("etNullMemberDeclaringType",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1144)
+ static member etNullMemberDeclaringTypeDifferentFromProvidedType(a0 : System.String, a1 : System.String, a2 : System.String) = (3004, GetStringFunc("etNullMemberDeclaringTypeDifferentFromProvidedType",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// Referenced assembly '%s' has assembly level attribute '%s' but no public type provider classes were found
+ /// (Originally from ..\FSComp.txt:1145)
+ static member etHostingAssemblyFoundWithoutHosts(a0 : System.String, a1 : System.String) = (3005, GetStringFunc("etHostingAssemblyFoundWithoutHosts",",,,%s,,,%s,,,") a0 a1)
+ /// Type '%s' from type provider '%s' has an empty namespace. Use 'null' for the global namespace.
+ /// (Originally from ..\FSComp.txt:1146)
+ static member etEmptyNamespaceOfTypeNotAllowed(a0 : System.String, a1 : System.String) = (3006, GetStringFunc("etEmptyNamespaceOfTypeNotAllowed",",,,%s,,,%s,,,") a0 a1)
+ /// Empty namespace found from the type provider '%s'. Use 'null' for the global namespace.
+ /// (Originally from ..\FSComp.txt:1147)
+ static member etEmptyNamespaceNotAllowed(a0 : System.String) = (3007, GetStringFunc("etEmptyNamespaceNotAllowed",",,,%s,,,") a0)
+ /// Provided type '%s' has 'IsGenericType' as true, but generic types are not supported.
+ /// (Originally from ..\FSComp.txt:1148)
+ static member etMustNotBeGeneric(a0 : System.String) = (3011, GetStringFunc("etMustNotBeGeneric",",,,%s,,,") a0)
+ /// Provided type '%s' has 'IsArray' as true, but array types are not supported.
+ /// (Originally from ..\FSComp.txt:1149)
+ static member etMustNotBeAnArray(a0 : System.String) = (3013, GetStringFunc("etMustNotBeAnArray",",,,%s,,,") a0)
+ /// Invalid member '%s' on provided type '%s'. Provided type members must be public, and not be generic, virtual, or abstract.
+ /// (Originally from ..\FSComp.txt:1150)
+ static member etMethodHasRequirements(a0 : System.String, a1 : System.String) = (3014, GetStringFunc("etMethodHasRequirements",",,,%s,,,%s,,,") a0 a1)
+ /// Invalid member '%s' on provided type '%s'. Only properties, methods and constructors are allowed
+ /// (Originally from ..\FSComp.txt:1151)
+ static member etUnsupportedMemberKind(a0 : System.String, a1 : System.String) = (3015, GetStringFunc("etUnsupportedMemberKind",",,,%s,,,%s,,,") a0 a1)
+ /// Property '%s' on provided type '%s' has CanRead=true but there was no value from GetGetMethod()
+ /// (Originally from ..\FSComp.txt:1152)
+ static member etPropertyCanReadButHasNoGetter(a0 : System.String, a1 : System.String) = (3016, GetStringFunc("etPropertyCanReadButHasNoGetter",",,,%s,,,%s,,,") a0 a1)
+ /// Property '%s' on provided type '%s' has CanRead=false but GetGetMethod() returned a method
+ /// (Originally from ..\FSComp.txt:1153)
+ static member etPropertyHasGetterButNoCanRead(a0 : System.String, a1 : System.String) = (3017, GetStringFunc("etPropertyHasGetterButNoCanRead",",,,%s,,,%s,,,") a0 a1)
+ /// Property '%s' on provided type '%s' has CanWrite=true but there was no value from GetSetMethod()
+ /// (Originally from ..\FSComp.txt:1154)
+ static member etPropertyCanWriteButHasNoSetter(a0 : System.String, a1 : System.String) = (3018, GetStringFunc("etPropertyCanWriteButHasNoSetter",",,,%s,,,%s,,,") a0 a1)
+ /// Property '%s' on provided type '%s' has CanWrite=false but GetSetMethod() returned a method
+ /// (Originally from ..\FSComp.txt:1155)
+ static member etPropertyHasSetterButNoCanWrite(a0 : System.String, a1 : System.String) = (3019, GetStringFunc("etPropertyHasSetterButNoCanWrite",",,,%s,,,%s,,,") a0 a1)
+ /// One or more errors seen during provided type setup
+ /// (Originally from ..\FSComp.txt:1156)
+ static member etOneOrMoreErrorsSeenDuringExtensionTypeSetting() = (3020, GetStringFunc("etOneOrMoreErrorsSeenDuringExtensionTypeSetting",",,,") )
+ /// Unexpected exception from provided type '%s' member '%s': %s
+ /// (Originally from ..\FSComp.txt:1157)
+ static member etUnexpectedExceptionFromProvidedTypeMember(a0 : System.String, a1 : System.String, a2 : System.String) = (3021, GetStringFunc("etUnexpectedExceptionFromProvidedTypeMember",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1158)
+ static member etUnsupportedConstantType(a0 : System.String) = (3022, GetStringFunc("etUnsupportedConstantType",",,,%s,,,") a0)
+ /// 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:1159)
+ static member etUnsupportedProvidedExpression(a0 : System.String) = (3025, GetStringFunc("etUnsupportedProvidedExpression",",,,%s,,,") a0)
+ /// Expected provided type named '%s' but provided type has 'Name' with value '%s'
+ /// (Originally from ..\FSComp.txt:1160)
+ static member etProvidedTypeHasUnexpectedName(a0 : System.String, a1 : System.String) = (3028, GetStringFunc("etProvidedTypeHasUnexpectedName",",,,%s,,,%s,,,") a0 a1)
+ /// Event '%s' on provided type '%s' has no value from GetAddMethod()
+ /// (Originally from ..\FSComp.txt:1161)
+ static member etEventNoAdd(a0 : System.String, a1 : System.String) = (3029, GetStringFunc("etEventNoAdd",",,,%s,,,%s,,,") a0 a1)
+ /// Event '%s' on provided type '%s' has no value from GetRemoveMethod()
+ /// (Originally from ..\FSComp.txt:1162)
+ static member etEventNoRemove(a0 : System.String, a1 : System.String) = (3030, GetStringFunc("etEventNoRemove",",,,%s,,,%s,,,") a0 a1)
+ /// Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded or doesn't exist. %s
+ /// (Originally from ..\FSComp.txt:1163)
+ static member etProviderHasWrongDesignerAssembly(a0 : System.String, a1 : System.String, a2 : System.String) = (3031, GetStringFunc("etProviderHasWrongDesignerAssembly",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1164)
+ static member etProviderDoesNotHaveValidConstructor() = (3032, GetStringFunc("etProviderDoesNotHaveValidConstructor",",,,") )
+ /// The type provider '%s' reported an error: %s
+ /// (Originally from ..\FSComp.txt:1165)
+ static member etProviderError(a0 : System.String, a1 : System.String) = (3033, GetStringFunc("etProviderError",",,,%s,,,%s,,,") a0 a1)
+ /// The type provider '%s' used an invalid parameter in the ParameterExpression: %s
+ /// (Originally from ..\FSComp.txt:1166)
+ static member etIncorrectParameterExpression(a0 : System.String, a1 : System.String) = (3034, GetStringFunc("etIncorrectParameterExpression",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1167)
+ static member etIncorrectProvidedMethod(a0 : System.String, a1 : System.String, a2 : System.Int32, a3 : System.String) = (3035, GetStringFunc("etIncorrectProvidedMethod",",,,%s,,,%s,,,%d,,,%s,,,") a0 a1 a2 a3)
+ /// The type provider '%s' provided a constructor which is not reported among the constructors of its declaring type '%s'
+ /// (Originally from ..\FSComp.txt:1168)
+ static member etIncorrectProvidedConstructor(a0 : System.String, a1 : System.String) = (3036, GetStringFunc("etIncorrectProvidedConstructor",",,,%s,,,%s,,,") a0 a1)
+ /// A direct reference to the generated type '%s' is not permitted. Instead, use a type definition, e.g. 'type TypeAlias = '. This indicates that a type provider adds generated types to your assembly.
+ /// (Originally from ..\FSComp.txt:1169)
+ static member etDirectReferenceToGeneratedTypeNotAllowed(a0 : System.String) = (3039, GetStringFunc("etDirectReferenceToGeneratedTypeNotAllowed",",,,%s,,,") a0)
+ /// Expected provided type with path '%s' but provided type has path '%s'
+ /// (Originally from ..\FSComp.txt:1170)
+ static member etProvidedTypeHasUnexpectedPath(a0 : System.String, a1 : System.String) = (3041, GetStringFunc("etProvidedTypeHasUnexpectedPath",",,,%s,,,%s,,,") a0 a1)
+ /// Unexpected 'null' return value from provided type '%s' member '%s'
+ /// (Originally from ..\FSComp.txt:1171)
+ static member etUnexpectedNullFromProvidedTypeMember(a0 : System.String, a1 : System.String) = (3042, GetStringFunc("etUnexpectedNullFromProvidedTypeMember",",,,%s,,,%s,,,") a0 a1)
+ /// Unexpected exception from member '%s' of provided type '%s' member '%s': %s
+ /// (Originally from ..\FSComp.txt:1172)
+ static member etUnexpectedExceptionFromProvidedMemberMember(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3043, GetStringFunc("etUnexpectedExceptionFromProvidedMemberMember",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// Nested provided types do not take static arguments or generic parameters
+ /// (Originally from ..\FSComp.txt:1173)
+ static member etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters() = (3044, GetStringFunc("etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters",",,,") )
+ /// Invalid static argument to provided type. Expected an argument of kind '%s'.
+ /// (Originally from ..\FSComp.txt:1174)
+ static member etInvalidStaticArgument(a0 : System.String) = (3045, GetStringFunc("etInvalidStaticArgument",",,,%s,,,") a0)
+ /// An error occured applying the static arguments to a provided type
+ /// (Originally from ..\FSComp.txt:1175)
+ static member etErrorApplyingStaticArgumentsToType() = (3046, GetStringFunc("etErrorApplyingStaticArgumentsToType",",,,") )
+ /// Unknown static argument kind '%s' when resolving a reference to a provided type or method '%s'
+ /// (Originally from ..\FSComp.txt:1176)
+ static member etUnknownStaticArgumentKind(a0 : System.String, a1 : System.String) = (3047, GetStringFunc("etUnknownStaticArgumentKind",",,,%s,,,%s,,,") a0 a1)
+ /// invalid namespace for provided type
+ /// (Originally from ..\FSComp.txt:1177)
+ static member invalidNamespaceForProvidedType() = (GetStringFunc("invalidNamespaceForProvidedType",",,,") )
+ /// invalid full name for provided type
+ /// (Originally from ..\FSComp.txt:1178)
+ static member invalidFullNameForProvidedType() = (GetStringFunc("invalidFullNameForProvidedType",",,,") )
+ /// The type provider returned 'null', which is not a valid return value from '%s'
+ /// (Originally from ..\FSComp.txt:1180)
+ static member etProviderReturnedNull(a0 : System.String) = (3051, GetStringFunc("etProviderReturnedNull",",,,%s,,,") a0)
+ /// The type provider constructor has thrown an exception: %s
+ /// (Originally from ..\FSComp.txt:1181)
+ static member etTypeProviderConstructorException(a0 : System.String) = (3053, GetStringFunc("etTypeProviderConstructorException",",,,%s,,,") a0)
+ /// Type provider '%s' returned null from GetInvokerExpression.
+ /// (Originally from ..\FSComp.txt:1182)
+ static member etNullProvidedExpression(a0 : System.String) = (3056, GetStringFunc("etNullProvidedExpression",",,,%s,,,") a0)
+ /// 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:1183)
+ static member etProvidedAppliedTypeHadWrongName(a0 : System.String, a1 : System.String, a2 : System.String) = (3057, GetStringFunc("etProvidedAppliedTypeHadWrongName",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1184)
+ static member etProvidedAppliedMethodHadWrongName(a0 : System.String, a1 : System.String, a2 : System.String) = (3058, GetStringFunc("etProvidedAppliedMethodHadWrongName",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// This type test or downcast will erase the provided type '%s' to the type '%s'
+ /// (Originally from ..\FSComp.txt:1185)
+ static member tcTypeTestLossy(a0 : System.String, a1 : System.String) = (3060, GetStringFunc("tcTypeTestLossy",",,,%s,,,%s,,,") a0 a1)
+ /// This downcast will erase the provided type '%s' to the type '%s'.
+ /// (Originally from ..\FSComp.txt:1186)
+ static member tcTypeCastErased(a0 : System.String, a1 : System.String) = (3061, GetStringFunc("tcTypeCastErased",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1187)
+ static member tcTypeTestErased(a0 : System.String, a1 : System.String) = (3062, GetStringFunc("tcTypeTestErased",",,,%s,,,%s,,,") a0 a1)
+ /// Cannot inherit from erased provided type
+ /// (Originally from ..\FSComp.txt:1188)
+ static member tcCannotInheritFromErasedType() = (3063, GetStringFunc("tcCannotInheritFromErasedType",",,,") )
+ /// Assembly '%s' hase TypeProviderAssembly attribute with invalid value '%s'. The value should be a valid assembly name
+ /// (Originally from ..\FSComp.txt:1189)
+ static member etInvalidTypeProviderAssemblyName(a0 : System.String, a1 : System.String) = (3065, GetStringFunc("etInvalidTypeProviderAssemblyName",",,,%s,,,%s,,,") a0 a1)
+ /// Invalid member name. Members may not have name '.ctor' or '.cctor'
+ /// (Originally from ..\FSComp.txt:1190)
+ static member tcInvalidMemberNameCtor() = (3066, GetStringFunc("tcInvalidMemberNameCtor",",,,") )
+ /// 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:1191)
+ static member tcInferredGenericTypeGivesRiseToInconsistency(a0 : System.String, a1 : System.String) = (3068, GetStringFunc("tcInferredGenericTypeGivesRiseToInconsistency",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1192)
+ static member tcInvalidTypeArgumentCount(a0 : System.Int32, a1 : System.Int32) = (3069, GetStringFunc("tcInvalidTypeArgumentCount",",,,%d,,,%d,,,") a0 a1)
+ /// Cannot override inherited member '%s' because it is sealed
+ /// (Originally from ..\FSComp.txt:1193)
+ static member tcCannotOverrideSealedMethod(a0 : System.String) = (3070, GetStringFunc("tcCannotOverrideSealedMethod",",,,%s,,,") a0)
+ /// The type provider '%s' reported an error in the context of provided type '%s', member '%s'. The error: %s
+ /// (Originally from ..\FSComp.txt:1194)
+ static member etProviderErrorWithContext(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3071, GetStringFunc("etProviderErrorWithContext",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// An exception occurred when accessing the '%s' of a provided type: %s
+ /// (Originally from ..\FSComp.txt:1195)
+ static member etProvidedTypeWithNameException(a0 : System.String, a1 : System.String) = (3072, GetStringFunc("etProvidedTypeWithNameException",",,,%s,,,%s,,,") a0 a1)
+ /// The '%s' of a provided type was null or empty.
+ /// (Originally from ..\FSComp.txt:1196)
+ static member etProvidedTypeWithNullOrEmptyName(a0 : System.String) = (3073, GetStringFunc("etProvidedTypeWithNullOrEmptyName",",,,%s,,,") a0)
+ /// Character '%s' is not allowed in provided type name '%s'
+ /// (Originally from ..\FSComp.txt:1197)
+ static member etIllegalCharactersInTypeName(a0 : System.String, a1 : System.String) = (3075, GetStringFunc("etIllegalCharactersInTypeName",",,,%s,,,%s,,,") a0 a1)
+ /// In queries, '%s' must use a simple pattern
+ /// (Originally from ..\FSComp.txt:1198)
+ static member tcJoinMustUseSimplePattern(a0 : System.String) = (3077, GetStringFunc("tcJoinMustUseSimplePattern",",,,%s,,,") a0)
+ /// A custom query operation for '%s' is required but not specified
+ /// (Originally from ..\FSComp.txt:1199)
+ static member tcMissingCustomOperation(a0 : System.String) = (3078, GetStringFunc("tcMissingCustomOperation",",,,%s,,,") a0)
+ /// Named static arguments must come after all unnamed static arguments
+ /// (Originally from ..\FSComp.txt:1200)
+ static member etBadUnnamedStaticArgs() = (3080, GetStringFunc("etBadUnnamedStaticArgs",",,,") )
+ /// 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:1201)
+ static member etStaticParameterRequiresAValue(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3081, GetStringFunc("etStaticParameterRequiresAValue",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// No static parameter exists with name '%s'
+ /// (Originally from ..\FSComp.txt:1202)
+ static member etNoStaticParameterWithName(a0 : System.String) = (3082, GetStringFunc("etNoStaticParameterWithName",",,,%s,,,") a0)
+ /// The static parameter '%s' has already been given a value
+ /// (Originally from ..\FSComp.txt:1203)
+ static member etStaticParameterAlreadyHasValue(a0 : System.String) = (3083, GetStringFunc("etStaticParameterAlreadyHasValue",",,,%s,,,") a0)
+ /// Multiple static parameters exist with name '%s'
+ /// (Originally from ..\FSComp.txt:1204)
+ static member etMultipleStaticParameterWithName(a0 : System.String) = (3084, GetStringFunc("etMultipleStaticParameterWithName",",,,%s,,,") a0)
+ /// 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:1205)
+ static member tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings() = (3085, GetStringFunc("tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings",",,,") )
+ /// 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:1206)
+ static member tcCustomOperationMayNotBeUsedHere() = (3086, GetStringFunc("tcCustomOperationMayNotBeUsedHere",",,,") )
+ /// The custom operation '%s' refers to a method which is overloaded. The implementations of custom operations may not be overloaded.
+ /// (Originally from ..\FSComp.txt:1207)
+ static member tcCustomOperationMayNotBeOverloaded(a0 : System.String) = (3087, GetStringFunc("tcCustomOperationMayNotBeOverloaded",",,,%s,,,") a0)
+ /// 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:1208)
+ static member tcIfThenElseMayNotBeUsedWithinQueries() = (3090, GetStringFunc("tcIfThenElseMayNotBeUsedWithinQueries",",,,") )
+ /// Invalid argument to 'methodhandleof' during codegen
+ /// (Originally from ..\FSComp.txt:1209)
+ static member ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen() = (3091, GetStringFunc("ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen",",,,") )
+ /// 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:1210)
+ static member etProvidedTypeReferenceMissingArgument(a0 : System.String) = (3092, GetStringFunc("etProvidedTypeReferenceMissingArgument",",,,%s,,,") a0)
+ /// 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:1211)
+ static member etProvidedTypeReferenceInvalidText(a0 : System.String) = (3093, GetStringFunc("etProvidedTypeReferenceInvalidText",",,,%s,,,") a0)
+ /// '%s' is not used correctly. This is a custom operation in this query or computation expression.
+ /// (Originally from ..\FSComp.txt:1212)
+ static member tcCustomOperationNotUsedCorrectly(a0 : System.String) = (3095, GetStringFunc("tcCustomOperationNotUsedCorrectly",",,,%s,,,") a0)
+ /// '%s' is not used correctly. Usage: %s. This is a custom operation in this query or computation expression.
+ /// (Originally from ..\FSComp.txt:1213)
+ static member tcCustomOperationNotUsedCorrectly2(a0 : System.String, a1 : System.String) = (3095, GetStringFunc("tcCustomOperationNotUsedCorrectly2",",,,%s,,,%s,,,") a0 a1)
+ /// %s var in collection %s (outerKey = innerKey). Note that parentheses are required after '%s'
+ /// (Originally from ..\FSComp.txt:1214)
+ static member customOperationTextLikeJoin(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("customOperationTextLikeJoin",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// %s var in collection %s (outerKey = innerKey) into group. Note that parentheses are required after '%s'
+ /// (Originally from ..\FSComp.txt:1215)
+ static member customOperationTextLikeGroupJoin(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("customOperationTextLikeGroupJoin",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// %s var in collection
+ /// (Originally from ..\FSComp.txt:1216)
+ static member customOperationTextLikeZip(a0 : System.String) = (GetStringFunc("customOperationTextLikeZip",",,,%s,,,") a0)
+ /// '%s' must be followed by a variable name. Usage: %s.
+ /// (Originally from ..\FSComp.txt:1217)
+ static member tcBinaryOperatorRequiresVariable(a0 : System.String, a1 : System.String) = (3096, GetStringFunc("tcBinaryOperatorRequiresVariable",",,,%s,,,%s,,,") a0 a1)
+ /// Incorrect syntax for '%s'. Usage: %s.
+ /// (Originally from ..\FSComp.txt:1218)
+ static member tcOperatorIncorrectSyntax(a0 : System.String, a1 : System.String) = (3097, GetStringFunc("tcOperatorIncorrectSyntax",",,,%s,,,%s,,,") a0 a1)
+ /// '%s' must come after a 'for' selection clause and be followed by the rest of the query. Syntax: ... %s ...
+ /// (Originally from ..\FSComp.txt:1219)
+ static member tcBinaryOperatorRequiresBody(a0 : System.String, a1 : System.String) = (3098, GetStringFunc("tcBinaryOperatorRequiresBody",",,,%s,,,%s,,,") a0 a1)
+ /// '%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:1220)
+ static member tcCustomOperationHasIncorrectArgCount(a0 : System.String, a1 : System.Int32, a2 : System.Int32) = (3099, GetStringFunc("tcCustomOperationHasIncorrectArgCount",",,,%s,,,%d,,,%d,,,") a0 a1 a2)
+ /// Expected an expression after this point
+ /// (Originally from ..\FSComp.txt:1221)
+ static member parsExpectedExpressionAfterToken() = (3100, GetStringFunc("parsExpectedExpressionAfterToken",",,,") )
+ /// Expected a type after this point
+ /// (Originally from ..\FSComp.txt:1222)
+ static member parsExpectedTypeAfterToken() = (3101, GetStringFunc("parsExpectedTypeAfterToken",",,,") )
+ /// Unmatched '[<'. Expected closing '>]'
+ /// (Originally from ..\FSComp.txt:1223)
+ static member parsUnmatchedLBrackLess() = (3102, GetStringFunc("parsUnmatchedLBrackLess",",,,") )
+ /// Unexpected end of input in 'match' expression. Expected 'match with | -> | -> ...'.
+ /// (Originally from ..\FSComp.txt:1224)
+ static member parsUnexpectedEndOfFileMatch() = (3103, GetStringFunc("parsUnexpectedEndOfFileMatch",",,,") )
+ /// Unexpected end of input in 'try' expression. Expected 'try with ' or 'try finally '.
+ /// (Originally from ..\FSComp.txt:1225)
+ static member parsUnexpectedEndOfFileTry() = (3104, GetStringFunc("parsUnexpectedEndOfFileTry",",,,") )
+ /// Unexpected end of input in 'while' expression. Expected 'while do '.
+ /// (Originally from ..\FSComp.txt:1226)
+ static member parsUnexpectedEndOfFileWhile() = (3105, GetStringFunc("parsUnexpectedEndOfFileWhile",",,,") )
+ /// Unexpected end of input in 'for' expression. Expected 'for in do '.
+ /// (Originally from ..\FSComp.txt:1227)
+ static member parsUnexpectedEndOfFileFor() = (3106, GetStringFunc("parsUnexpectedEndOfFileFor",",,,") )
+ /// Unexpected end of input in 'match' or 'try' expression
+ /// (Originally from ..\FSComp.txt:1228)
+ static member parsUnexpectedEndOfFileWith() = (3107, GetStringFunc("parsUnexpectedEndOfFileWith",",,,") )
+ /// Unexpected end of input in 'then' branch of conditional expression. Expected 'if then ' or 'if then else '.
+ /// (Originally from ..\FSComp.txt:1229)
+ static member parsUnexpectedEndOfFileThen() = (3108, GetStringFunc("parsUnexpectedEndOfFileThen",",,,") )
+ /// Unexpected end of input in 'else' branch of conditional expression. Expected 'if then ' or 'if then else '.
+ /// (Originally from ..\FSComp.txt:1230)
+ static member parsUnexpectedEndOfFileElse() = (3109, GetStringFunc("parsUnexpectedEndOfFileElse",",,,") )
+ /// Unexpected end of input in body of lambda expression. Expected 'fun ... -> '.
+ /// (Originally from ..\FSComp.txt:1231)
+ static member parsUnexpectedEndOfFileFunBody() = (3110, GetStringFunc("parsUnexpectedEndOfFileFunBody",",,,") )
+ /// Unexpected end of input in type arguments
+ /// (Originally from ..\FSComp.txt:1232)
+ static member parsUnexpectedEndOfFileTypeArgs() = (3111, GetStringFunc("parsUnexpectedEndOfFileTypeArgs",",,,") )
+ /// Unexpected end of input in type signature
+ /// (Originally from ..\FSComp.txt:1233)
+ static member parsUnexpectedEndOfFileTypeSignature() = (3112, GetStringFunc("parsUnexpectedEndOfFileTypeSignature",",,,") )
+ /// Unexpected end of input in type definition
+ /// (Originally from ..\FSComp.txt:1234)
+ static member parsUnexpectedEndOfFileTypeDefinition() = (3113, GetStringFunc("parsUnexpectedEndOfFileTypeDefinition",",,,") )
+ /// Unexpected end of input in object members
+ /// (Originally from ..\FSComp.txt:1235)
+ static member parsUnexpectedEndOfFileObjectMembers() = (3114, GetStringFunc("parsUnexpectedEndOfFileObjectMembers",",,,") )
+ /// Unexpected end of input in value, function or member definition
+ /// (Originally from ..\FSComp.txt:1236)
+ static member parsUnexpectedEndOfFileDefinition() = (3115, GetStringFunc("parsUnexpectedEndOfFileDefinition",",,,") )
+ /// Unexpected end of input in expression
+ /// (Originally from ..\FSComp.txt:1237)
+ static member parsUnexpectedEndOfFileExpression() = (3116, GetStringFunc("parsUnexpectedEndOfFileExpression",",,,") )
+ /// Unexpected end of type. Expected a name after this point.
+ /// (Originally from ..\FSComp.txt:1238)
+ static member parsExpectedNameAfterToken() = (3117, GetStringFunc("parsExpectedNameAfterToken",",,,") )
+ /// 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:1239)
+ static member parsUnmatchedLet() = (3118, GetStringFunc("parsUnmatchedLet",",,,") )
+ /// 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:1240)
+ static member parsUnmatchedLetBang() = (3119, GetStringFunc("parsUnmatchedLetBang",",,,") )
+ /// 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:1241)
+ static member parsUnmatchedUseBang() = (3120, GetStringFunc("parsUnmatchedUseBang",",,,") )
+ /// 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:1242)
+ static member parsUnmatchedUse() = (3121, GetStringFunc("parsUnmatchedUse",",,,") )
+ /// Missing 'do' in 'while' expression. Expected 'while do '.
+ /// (Originally from ..\FSComp.txt:1243)
+ static member parsWhileDoExpected() = (3122, GetStringFunc("parsWhileDoExpected",",,,") )
+ /// Missing 'do' in 'for' expression. Expected 'for in do '.
+ /// (Originally from ..\FSComp.txt:1244)
+ static member parsForDoExpected() = (3123, GetStringFunc("parsForDoExpected",",,,") )
+ /// Invalid join relation in '%s'. Expected 'expr expr', where is =, =?, ?= or ?=?.
+ /// (Originally from ..\FSComp.txt:1245)
+ static member tcInvalidRelationInJoin(a0 : System.String) = (3125, GetStringFunc("tcInvalidRelationInJoin",",,,%s,,,") a0)
+ /// Calls
+ /// (Originally from ..\FSComp.txt:1246)
+ static member typeInfoCallsWord() = (GetStringFunc("typeInfoCallsWord",",,,") )
+ /// Invalid number of generic arguments to type '%s' in provided type. Expected '%d' arguments, given '%d'.
+ /// (Originally from ..\FSComp.txt:1247)
+ static member impInvalidNumberOfGenericArguments(a0 : System.String, a1 : System.Int32, a2 : System.Int32) = (3126, GetStringFunc("impInvalidNumberOfGenericArguments",",,,%s,,,%d,,,%d,,,") a0 a1 a2)
+ /// Invalid value '%s' for unit-of-measure parameter '%s'
+ /// (Originally from ..\FSComp.txt:1248)
+ static member impInvalidMeasureArgument1(a0 : System.String, a1 : System.String) = (3127, GetStringFunc("impInvalidMeasureArgument1",",,,%s,,,%s,,,") a0 a1)
+ /// Invalid value unit-of-measure parameter '%s'
+ /// (Originally from ..\FSComp.txt:1249)
+ static member impInvalidMeasureArgument2(a0 : System.String) = (3127, GetStringFunc("impInvalidMeasureArgument2",",,,%s,,,") a0)
+ /// Property '%s' on provided type '%s' is neither readable nor writable as it has CanRead=false and CanWrite=false
+ /// (Originally from ..\FSComp.txt:1250)
+ static member etPropertyNeedsCanWriteOrCanRead(a0 : System.String, a1 : System.String) = (3128, GetStringFunc("etPropertyNeedsCanWriteOrCanRead",",,,%s,,,%s,,,") a0 a1)
+ /// A use of 'into' must be followed by the remainder of the computation
+ /// (Originally from ..\FSComp.txt:1251)
+ static member tcIntoNeedsRestOfQuery() = (3129, GetStringFunc("tcIntoNeedsRestOfQuery",",,,") )
+ /// The operator '%s' does not accept the use of 'into'
+ /// (Originally from ..\FSComp.txt:1252)
+ static member tcOperatorDoesntAcceptInto(a0 : System.String) = (3130, GetStringFunc("tcOperatorDoesntAcceptInto",",,,%s,,,") a0)
+ /// The definition of the custom operator '%s' does not use a valid combination of attribute flags
+ /// (Originally from ..\FSComp.txt:1253)
+ static member tcCustomOperationInvalid(a0 : System.String) = (3131, GetStringFunc("tcCustomOperationInvalid",",,,%s,,,") a0)
+ /// This type definition may not have the 'CLIMutable' attribute. Only record types may have this attribute.
+ /// (Originally from ..\FSComp.txt:1254)
+ static member tcThisTypeMayNotHaveACLIMutableAttribute() = (3132, GetStringFunc("tcThisTypeMayNotHaveACLIMutableAttribute",",,,") )
+ /// '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:1255)
+ static member tcAutoPropertyRequiresImplicitConstructionSequence() = (3133, GetStringFunc("tcAutoPropertyRequiresImplicitConstructionSequence",",,,") )
+ /// 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:1256)
+ static member parsMutableOnAutoPropertyShouldBeGetSet() = (3134, GetStringFunc("parsMutableOnAutoPropertyShouldBeGetSet",",,,") )
+ /// To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.
+ /// (Originally from ..\FSComp.txt:1257)
+ static member parsMutableOnAutoPropertyShouldBeGetSetNotJustSet() = (3135, GetStringFunc("parsMutableOnAutoPropertyShouldBeGetSetNotJustSet",",,,") )
+ /// Type '%s' is illegal because in byref, T cannot contain byref types.
+ /// (Originally from ..\FSComp.txt:1258)
+ static member chkNoByrefsOfByrefs(a0 : System.String) = (3136, GetStringFunc("chkNoByrefsOfByrefs",",,,%s,,,") a0)
+ /// F# supports array ranks between 1 and 32. The value %d is not allowed.
+ /// (Originally from ..\FSComp.txt:1259)
+ static member tastopsMaxArrayThirtyTwo(a0 : System.Int32) = (3138, GetStringFunc("tastopsMaxArrayThirtyTwo",",,,%d,,,") a0)
+ /// In queries, use the form 'for x in n .. m do ...' for ranging over integers
+ /// (Originally from ..\FSComp.txt:1260)
+ static member tcNoIntegerForLoopInQuery() = (3139, GetStringFunc("tcNoIntegerForLoopInQuery",",,,") )
+ /// 'while' expressions may not be used in queries
+ /// (Originally from ..\FSComp.txt:1261)
+ static member tcNoWhileInQuery() = (3140, GetStringFunc("tcNoWhileInQuery",",,,") )
+ /// 'try/finally' expressions may not be used in queries
+ /// (Originally from ..\FSComp.txt:1262)
+ static member tcNoTryFinallyInQuery() = (3141, GetStringFunc("tcNoTryFinallyInQuery",",,,") )
+ /// 'use' expressions may not be used in queries
+ /// (Originally from ..\FSComp.txt:1263)
+ static member tcUseMayNotBeUsedInQueries() = (3142, GetStringFunc("tcUseMayNotBeUsedInQueries",",,,") )
+ /// 'let!', 'use!' and 'do!' expressions may not be used in queries
+ /// (Originally from ..\FSComp.txt:1264)
+ static member tcBindMayNotBeUsedInQueries() = (3143, GetStringFunc("tcBindMayNotBeUsedInQueries",",,,") )
+ /// 'return' and 'return!' may not be used in queries
+ /// (Originally from ..\FSComp.txt:1265)
+ static member tcReturnMayNotBeUsedInQueries() = (3144, GetStringFunc("tcReturnMayNotBeUsedInQueries",",,,") )
+ /// 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:1266)
+ static member tcUnrecognizedQueryOperator() = (3145, GetStringFunc("tcUnrecognizedQueryOperator",",,,") )
+ /// 'try/with' expressions may not be used in queries
+ /// (Originally from ..\FSComp.txt:1267)
+ static member tcTryWithMayNotBeUsedInQueries() = (3146, GetStringFunc("tcTryWithMayNotBeUsedInQueries",",,,") )
+ /// This 'let' definition may not be used in a query. Only simple value definitions may be used in queries.
+ /// (Originally from ..\FSComp.txt:1268)
+ static member tcNonSimpleLetBindingInQuery() = (3147, GetStringFunc("tcNonSimpleLetBindingInQuery",",,,") )
+ /// Too many static parameters. Expected at most %d parameters, but got %d unnamed and %d named parameters.
+ /// (Originally from ..\FSComp.txt:1269)
+ static member etTooManyStaticParameters(a0 : System.Int32, a1 : System.Int32, a2 : System.Int32) = (3148, GetStringFunc("etTooManyStaticParameters",",,,%d,,,%d,,,%d,,,") a0 a1 a2)
+ /// Invalid provided literal value '%s'
+ /// (Originally from ..\FSComp.txt:1270)
+ static member infosInvalidProvidedLiteralValue(a0 : System.String) = (3149, GetStringFunc("infosInvalidProvidedLiteralValue",",,,%s,,,") a0)
+ /// The 'anycpu32bitpreferred' platform can only be used with EXE targets. You must use 'anycpu' instead.
+ /// (Originally from ..\FSComp.txt:1271)
+ static member invalidPlatformTarget() = (3150, GetStringFunc("invalidPlatformTarget",",,,") )
+ /// This member, function or value declaration may not be declared 'inline'
+ /// (Originally from ..\FSComp.txt:1272)
+ static member tcThisValueMayNotBeInlined() = (3151, GetStringFunc("tcThisValueMayNotBeInlined",",,,") )
+ /// 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:1273)
+ static member etErasedTypeUsedInGeneration(a0 : System.String, a1 : System.String) = (3152, GetStringFunc("etErasedTypeUsedInGeneration",",,,%s,,,%s,,,") a0 a1)
+ /// Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)'
+ /// (Originally from ..\FSComp.txt:1274)
+ static member tcUnrecognizedQueryBinaryOperator() = (3153, GetStringFunc("tcUnrecognizedQueryBinaryOperator",",,,") )
+ /// A quotation may not involve an assignment to or taking the address of a captured local variable
+ /// (Originally from ..\FSComp.txt:1275)
+ static member crefNoSetOfHole() = (3155, GetStringFunc("crefNoSetOfHole",",,,") )
+ /// + 1 overload
+ /// (Originally from ..\FSComp.txt:1276)
+ static member nicePrintOtherOverloads1() = (GetStringFunc("nicePrintOtherOverloads1",",,,") )
+ /// + %d overloads
+ /// (Originally from ..\FSComp.txt:1277)
+ static member nicePrintOtherOverloadsN(a0 : System.Int32) = (GetStringFunc("nicePrintOtherOverloadsN",",,,%d,,,") a0)
+ /// Erased to
+ /// (Originally from ..\FSComp.txt:1278)
+ static member erasedTo() = (GetStringFunc("erasedTo",",,,") )
+ /// Unexpected token '%s' or incomplete expression
+ /// (Originally from ..\FSComp.txt:1279)
+ static member parsUnfinishedExpression(a0 : System.String) = (3156, GetStringFunc("parsUnfinishedExpression",",,,%s,,,") a0)
+ /// Cannot find code target for this attribute, possibly because the code after the attribute is incomplete.
+ /// (Originally from ..\FSComp.txt:1280)
+ static member parsAttributeOnIncompleteCode() = (3158, GetStringFunc("parsAttributeOnIncompleteCode",",,,") )
+ /// Type name cannot be empty.
+ /// (Originally from ..\FSComp.txt:1281)
+ static member parsTypeNameCannotBeEmpty() = (3159, GetStringFunc("parsTypeNameCannotBeEmpty",",,,") )
+ /// Problem reading assembly '%s': %s
+ /// (Originally from ..\FSComp.txt:1282)
+ static member buildProblemReadingAssembly(a0 : System.String, a1 : System.String) = (3160, GetStringFunc("buildProblemReadingAssembly",",,,%s,,,%s,,,") a0 a1)
+ /// Invalid provided field. Provided fields of erased provided types must be literals.
+ /// (Originally from ..\FSComp.txt:1283)
+ static member tcTPFieldMustBeLiteral() = (3161, GetStringFunc("tcTPFieldMustBeLiteral",",,,") )
+ /// (loading description...)
+ /// (Originally from ..\FSComp.txt:1284)
+ static member loadingDescription() = (GetStringFunc("loadingDescription",",,,") )
+ /// (description unavailable...)
+ /// (Originally from ..\FSComp.txt:1285)
+ static member descriptionUnavailable() = (GetStringFunc("descriptionUnavailable",",,,") )
+ /// A type variable has been constrained by multiple different class types. A type variable may only have one class constraint.
+ /// (Originally from ..\FSComp.txt:1286)
+ static member chkTyparMultipleClassConstraints() = (3162, GetStringFunc("chkTyparMultipleClassConstraints",",,,") )
+ /// 'match' expressions may not be used in queries
+ /// (Originally from ..\FSComp.txt:1287)
+ static member tcMatchMayNotBeUsedWithQuery() = (3163, GetStringFunc("tcMatchMayNotBeUsedWithQuery",",,,") )
+ /// Infix operator member '%s' has %d initial argument(s). Expected a tuple of 3 arguments
+ /// (Originally from ..\FSComp.txt:1288)
+ static member memberOperatorDefinitionWithNonTripleArgument(a0 : System.String, a1 : System.Int32) = (3164, GetStringFunc("memberOperatorDefinitionWithNonTripleArgument",",,,%s,,,%d,,,") a0 a1)
+ /// The operator '%s' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.
+ /// (Originally from ..\FSComp.txt:1289)
+ static member cannotResolveNullableOperators(a0 : System.String) = (3165, GetStringFunc("cannotResolveNullableOperators",",,,%s,,,") a0)
+ /// '%s' must be followed by 'in'. Usage: %s.
+ /// (Originally from ..\FSComp.txt:1290)
+ static member tcOperatorRequiresIn(a0 : System.String, a1 : System.String) = (3167, GetStringFunc("tcOperatorRequiresIn",",,,%s,,,%s,,,") a0 a1)
+ /// Neither 'member val' nor 'override val' definitions are permitted in object expressions.
+ /// (Originally from ..\FSComp.txt:1291)
+ static member parsIllegalMemberVarInObjectImplementation() = (3168, GetStringFunc("parsIllegalMemberVarInObjectImplementation",",,,") )
+ /// Copy-and-update record expressions must include at least one field.
+ /// (Originally from ..\FSComp.txt:1292)
+ static member tcEmptyCopyAndUpdateRecordInvalid() = (3169, GetStringFunc("tcEmptyCopyAndUpdateRecordInvalid",",,,") )
+ /// '_' cannot be used as field name
+ /// (Originally from ..\FSComp.txt:1293)
+ static member parsUnderscoreInvalidFieldName() = (3170, GetStringFunc("parsUnderscoreInvalidFieldName",",,,") )
+ /// 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:1294)
+ static member tcGeneratedTypesShouldBeInternalOrPrivate() = (3171, GetStringFunc("tcGeneratedTypesShouldBeInternalOrPrivate",",,,") )
+ /// 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:1295)
+ static member chkGetterAndSetterHaveSamePropertyType(a0 : System.String, a1 : System.String, a2 : System.String) = (3172, GetStringFunc("chkGetterAndSetterHaveSamePropertyType",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1296)
+ static member tcRuntimeSuppliedMethodCannotBeUsedInUserCode(a0 : System.String) = (3173, GetStringFunc("tcRuntimeSuppliedMethodCannotBeUsedInUserCode",",,,%s,,,") a0)
+ /// Union case/exception '%s' does not have field named '%s'.
+ /// (Originally from ..\FSComp.txt:1297)
+ static member tcUnionCaseConstructorDoesNotHaveFieldWithGivenName(a0 : System.String, a1 : System.String) = (3174, GetStringFunc("tcUnionCaseConstructorDoesNotHaveFieldWithGivenName",",,,%s,,,%s,,,") a0 a1)
+ /// Union case/exception field '%s' cannot be used more than once.
+ /// (Originally from ..\FSComp.txt:1298)
+ static member tcUnionCaseFieldCannotBeUsedMoreThanOnce(a0 : System.String) = (3175, GetStringFunc("tcUnionCaseFieldCannotBeUsedMoreThanOnce",",,,%s,,,") a0)
+ /// Named field '%s' is used more than once.
+ /// (Originally from ..\FSComp.txt:1299)
+ static member tcFieldNameIsUsedModeThanOnce(a0 : System.String) = (3176, GetStringFunc("tcFieldNameIsUsedModeThanOnce",",,,%s,,,") a0)
+ /// Named field '%s' conflicts with autogenerated name for anonymous field.
+ /// (Originally from ..\FSComp.txt:1300)
+ static member tcFieldNameConflictsWithGeneratedNameForAnonymousField(a0 : System.String) = (3176, GetStringFunc("tcFieldNameConflictsWithGeneratedNameForAnonymousField",",,,%s,,,") a0)
+ /// This literal expression or attribute argument results in an arithmetic overflow.
+ /// (Originally from ..\FSComp.txt:1301)
+ static member tastConstantExpressionOverflow() = (3177, GetStringFunc("tastConstantExpressionOverflow",",,,") )
+ /// This is not valid literal expression. The [] attribute will be ignored.
+ /// (Originally from ..\FSComp.txt:1302)
+ static member tcIllegalStructTypeForConstantExpression() = (3178, GetStringFunc("tcIllegalStructTypeForConstantExpression",",,,") )
+ /// System.Runtime.InteropServices assembly is required to use UnknownWrapper\DispatchWrapper classes.
+ /// (Originally from ..\FSComp.txt:1303)
+ static member fscSystemRuntimeInteropServicesIsRequired() = (3179, GetStringFunc("fscSystemRuntimeInteropServicesIsRequired",",,,") )
+ /// 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:1304)
+ static member abImplicitHeapAllocation(a0 : System.String) = (3180, GetStringFunc("abImplicitHeapAllocation",",,,%s,,,") a0)
+ /// A type provider implemented GetStaticParametersForMethod, but ApplyStaticArgumentsForMethod was not implemented or invalid
+ /// (Originally from ..\FSComp.txt:1305)
+ static member estApplyStaticArgumentsForMethodNotImplemented() = (GetStringFunc("estApplyStaticArgumentsForMethodNotImplemented",",,,") )
+ /// An error occured applying the static arguments to a provided method
+ /// (Originally from ..\FSComp.txt:1306)
+ static member etErrorApplyingStaticArgumentsToMethod() = (3181, GetStringFunc("etErrorApplyingStaticArgumentsToMethod",",,,") )
+ /// Unexpected character '%s' in preprocessor expression
+ /// (Originally from ..\FSComp.txt:1307)
+ static member pplexUnexpectedChar(a0 : System.String) = (3182, GetStringFunc("pplexUnexpectedChar",",,,%s,,,") a0)
+ /// Unexpected token '%s' in preprocessor expression
+ /// (Originally from ..\FSComp.txt:1308)
+ static member ppparsUnexpectedToken(a0 : System.String) = (3183, GetStringFunc("ppparsUnexpectedToken",",,,%s,,,") a0)
+ /// Incomplete preprocessor expression
+ /// (Originally from ..\FSComp.txt:1309)
+ static member ppparsIncompleteExpression() = (3184, GetStringFunc("ppparsIncompleteExpression",",,,") )
+ /// Missing token '%s' in preprocessor expression
+ /// (Originally from ..\FSComp.txt:1310)
+ static member ppparsMissingToken(a0 : System.String) = (3185, GetStringFunc("ppparsMissingToken",",,,%s,,,") a0)
+ /// 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:1311)
+ static member pickleMissingDefinition(a0 : System.Int32, a1 : System.String, a2 : System.String) = (3186, GetStringFunc("pickleMissingDefinition",",,,%d,,,%s,,,%s,,,") a0 a1 a2)
+ /// 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:1312)
+ static member checkNotSufficientlyGenericBecauseOfScope(a0 : System.String) = (3187, GetStringFunc("checkNotSufficientlyGenericBecauseOfScope",",,,%s,,,") a0)
+ /// 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:1313)
+ static member checkNotSufficientlyGenericBecauseOfScopeAnon() = (3188, GetStringFunc("checkNotSufficientlyGenericBecauseOfScopeAnon",",,,") )
+ /// Redundant arguments are being ignored in function '%s'. Expected %d but got %d arguments.
+ /// (Originally from ..\FSComp.txt:1314)
+ static member checkRaiseFamilyFunctionArgumentCount(a0 : System.String, a1 : System.Int32, a2 : System.Int32) = (3189, GetStringFunc("checkRaiseFamilyFunctionArgumentCount",",,,%s,,,%d,,,%d,,,") a0 a1 a2)
+ /// 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:1315)
+ static member checkLowercaseLiteralBindingInPattern(a0 : System.String) = (3190, GetStringFunc("checkLowercaseLiteralBindingInPattern",",,,%s,,,") a0)
+ /// This literal pattern does not take arguments
+ /// (Originally from ..\FSComp.txt:1316)
+ static member tcLiteralDoesNotTakeArguments() = (3191, GetStringFunc("tcLiteralDoesNotTakeArguments",",,,") )
+ /// Constructors are not permitted as extension members - they must be defined as part of the original definition of the type
+ /// (Originally from ..\FSComp.txt:1317)
+ static member tcConstructorsIllegalInAugmentation() = (3192, GetStringFunc("tcConstructorsIllegalInAugmentation",",,,") )
+ /// Invalid response file '%s' ( '%s' )
+ /// (Originally from ..\FSComp.txt:1318)
+ static member optsInvalidResponseFile(a0 : System.String, a1 : System.String) = (3193, GetStringFunc("optsInvalidResponseFile",",,,%s,,,%s,,,") a0 a1)
+ /// Response file '%s' not found in '%s'
+ /// (Originally from ..\FSComp.txt:1319)
+ static member optsResponseFileNotFound(a0 : System.String, a1 : System.String) = (3194, GetStringFunc("optsResponseFileNotFound",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1320)
+ static member optsResponseFileNameInvalid(a0 : System.String) = (3195, GetStringFunc("optsResponseFileNameInvalid",",,,%s,,,") a0)
+ /// Cannot find FSharp.Core.dll in compiler's directory
+ /// (Originally from ..\FSComp.txt:1321)
+ static member fsharpCoreNotFoundToBeCopied() = (3196, GetStringFunc("fsharpCoreNotFoundToBeCopied",",,,") )
+ /// One tuple type is a struct tuple, the other is a reference tuple
+ /// (Originally from ..\FSComp.txt:1322)
+ static member tcTupleStructMismatch() = (GetStringFunc("tcTupleStructMismatch",",,,") )
+ /// This provided method requires static parameters
+ /// (Originally from ..\FSComp.txt:1323)
+ static member etMissingStaticArgumentsToMethod() = (3197, GetStringFunc("etMissingStaticArgumentsToMethod",",,,") )
+ /// 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:1324)
+ static member considerUpcast(a0 : System.String, a1 : System.String) = (3198, GetStringFunc("considerUpcast",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1325)
+ static member considerUpcastOperator(a0 : System.String, a1 : System.String) = (3198, GetStringFunc("considerUpcastOperator",",,,%s,,,%s,,,") a0 a1)
+ /// The 'rec' on this module is implied by an outer 'rec' declaration and is being ignored
+ /// (Originally from ..\FSComp.txt:1326)
+ static member tcRecImplied() = (3199, GetStringFunc("tcRecImplied",",,,") )
+ /// In a recursive declaration group, 'open' declarations must come first in each module
+ /// (Originally from ..\FSComp.txt:1327)
+ static member tcOpenFirstInMutRec() = (3200, GetStringFunc("tcOpenFirstInMutRec",",,,") )
+ /// In a recursive declaration group, module abbreviations must come after all 'open' declarations and before other declarations
+ /// (Originally from ..\FSComp.txt:1328)
+ static member tcModuleAbbrevFirstInMutRec() = (3201, GetStringFunc("tcModuleAbbrevFirstInMutRec",",,,") )
+ /// This declaration is not supported in recursive declaration groups
+ /// (Originally from ..\FSComp.txt:1329)
+ static member tcUnsupportedMutRecDecl() = (3202, GetStringFunc("tcUnsupportedMutRecDecl",",,,") )
+ /// Invalid use of 'rec' keyword
+ /// (Originally from ..\FSComp.txt:1330)
+ static member parsInvalidUseOfRec() = (3203, GetStringFunc("parsInvalidUseOfRec",",,,") )
+ /// If a union type has more than one case and is a struct, then all fields within the union type must be given unique names.
+ /// (Originally from ..\FSComp.txt:1331)
+ static member tcStructUnionMultiCaseDistinctFields() = (3204, GetStringFunc("tcStructUnionMultiCaseDistinctFields",",,,") )
+ /// The CallerMemberNameAttribute applied to parameter '%s' will have no effect. It is overridden by the CallerFilePathAttribute.
+ /// (Originally from ..\FSComp.txt:1332)
+ static member CallerMemberNameIsOverriden(a0 : System.String) = (3206, GetStringFunc("CallerMemberNameIsOverriden",",,,%s,,,") a0)
+ /// Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string'
+ /// (Originally from ..\FSComp.txt:1333)
+ static member tcFixedNotAllowed() = (3207, GetStringFunc("tcFixedNotAllowed",",,,") )
+ /// Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression.
+ /// (Originally from ..\FSComp.txt:1334)
+ static member tcCouldNotFindOffsetToStringData() = (3208, GetStringFunc("tcCouldNotFindOffsetToStringData",",,,") )
+ /// The address of the variable '%s' cannot be used at this point. A method or function may not return the address of this local value.
+ /// (Originally from ..\FSComp.txt:1335)
+ static member chkNoByrefReturnOfLocal(a0 : System.String) = (3209, GetStringFunc("chkNoByrefReturnOfLocal",",,,%s,,,") a0)
+ /// %s is an active pattern and cannot be treated as a discriminated union case with named fields.
+ /// (Originally from ..\FSComp.txt:1336)
+ static member tcNamedActivePattern(a0 : System.String) = (3210, GetStringFunc("tcNamedActivePattern",",,,%s,,,") a0)
+ /// 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:1337)
+ static member DefaultParameterValueNotAppropriateForArgument() = (3211, GetStringFunc("DefaultParameterValueNotAppropriateForArgument",",,,") )
+ /// The system type '%s' was required but no referenced system DLL contained this type
+ /// (Originally from ..\FSComp.txt:1338)
+ static member tcGlobalsSystemTypeNotFound(a0 : System.String) = (GetStringFunc("tcGlobalsSystemTypeNotFound",",,,%s,,,") a0)
+ /// The member '%s' matches multiple overloads of the same method.\nPlease restrict it to one of the following:%s.
+ /// (Originally from ..\FSComp.txt:1339)
+ static member typrelMemberHasMultiplePossibleDispatchSlots(a0 : System.String, a1 : System.String) = (3213, GetStringFunc("typrelMemberHasMultiplePossibleDispatchSlots",",,,%s,,,%s,,,") a0 a1)
+ /// Method or object constructor '%s' is not static
+ /// (Originally from ..\FSComp.txt:1340)
+ static member methodIsNotStatic(a0 : System.String) = (3214, GetStringFunc("methodIsNotStatic",",,,%s,,,") a0)
+ /// Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?
+ /// (Originally from ..\FSComp.txt:1341)
+ static member parsUnexpectedSymbolEqualsInsteadOfIn() = (3215, GetStringFunc("parsUnexpectedSymbolEqualsInsteadOfIn",",,,") )
+ /// 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:1342)
+ static member keywordDescriptionAbstract() = (GetStringFunc("keywordDescriptionAbstract",",,,") )
+ /// Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters.
+ /// (Originally from ..\FSComp.txt:1343)
+ static member keyworkDescriptionAnd() = (GetStringFunc("keyworkDescriptionAnd",",,,") )
+ /// 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:1344)
+ static member keywordDescriptionAs() = (GetStringFunc("keywordDescriptionAs",",,,") )
+ /// Used to verify code during debugging.
+ /// (Originally from ..\FSComp.txt:1345)
+ static member keywordDescriptionAssert() = (GetStringFunc("keywordDescriptionAssert",",,,") )
+ /// Used as the name of the base class object.
+ /// (Originally from ..\FSComp.txt:1346)
+ static member keywordDescriptionBase() = (GetStringFunc("keywordDescriptionBase",",,,") )
+ /// In verbose syntax, indicates the start of a code block.
+ /// (Originally from ..\FSComp.txt:1347)
+ static member keywordDescriptionBegin() = (GetStringFunc("keywordDescriptionBegin",",,,") )
+ /// In verbose syntax, indicates the start of a class definition.
+ /// (Originally from ..\FSComp.txt:1348)
+ static member keywordDescriptionClass() = (GetStringFunc("keywordDescriptionClass",",,,") )
+ /// Indicates an implementation of an abstract method; used together with an abstract method declaration to create a virtual method.
+ /// (Originally from ..\FSComp.txt:1349)
+ static member keywordDescriptionDefault() = (GetStringFunc("keywordDescriptionDefault",",,,") )
+ /// Used to declare a delegate.
+ /// (Originally from ..\FSComp.txt:1350)
+ static member keywordDescriptionDelegate() = (GetStringFunc("keywordDescriptionDelegate",",,,") )
+ /// Used in looping constructs or to execute imperative code.
+ /// (Originally from ..\FSComp.txt:1351)
+ static member keywordDescriptionDo() = (GetStringFunc("keywordDescriptionDo",",,,") )
+ /// In verbose syntax, indicates the end of a block of code in a looping expression.
+ /// (Originally from ..\FSComp.txt:1352)
+ static member keywordDescriptionDone() = (GetStringFunc("keywordDescriptionDone",",,,") )
+ /// Used to convert to a type that is lower in the inheritance chain.
+ /// (Originally from ..\FSComp.txt:1353)
+ static member keywordDescriptionDowncast() = (GetStringFunc("keywordDescriptionDowncast",",,,") )
+ /// In a for expression, used when counting in reverse.
+ /// (Originally from ..\FSComp.txt:1354)
+ static member keywordDescriptionDownto() = (GetStringFunc("keywordDescriptionDownto",",,,") )
+ /// Used in conditional branching. A short form of else if.
+ /// (Originally from ..\FSComp.txt:1355)
+ static member keywordDescriptionElif() = (GetStringFunc("keywordDescriptionElif",",,,") )
+ /// Used in conditional branching.
+ /// (Originally from ..\FSComp.txt:1356)
+ static member keywordDescriptionElse() = (GetStringFunc("keywordDescriptionElse",",,,") )
+ /// 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:1357)
+ static member keywordDescriptionEnd() = (GetStringFunc("keywordDescriptionEnd",",,,") )
+ /// Used to declare an exception type.
+ /// (Originally from ..\FSComp.txt:1358)
+ static member keywordDescriptionException() = (GetStringFunc("keywordDescriptionException",",,,") )
+ /// Indicates that a declared program element is defined in another binary or assembly.
+ /// (Originally from ..\FSComp.txt:1359)
+ static member keywordDescriptionExtern() = (GetStringFunc("keywordDescriptionExtern",",,,") )
+ /// Used as a Boolean literal.
+ /// (Originally from ..\FSComp.txt:1360)
+ static member keywordDescriptionTrueFalse() = (GetStringFunc("keywordDescriptionTrueFalse",",,,") )
+ /// Used together with try to introduce a block of code that executes regardless of whether an exception occurs.
+ /// (Originally from ..\FSComp.txt:1361)
+ static member keywordDescriptionFinally() = (GetStringFunc("keywordDescriptionFinally",",,,") )
+ /// Used in looping constructs.
+ /// (Originally from ..\FSComp.txt:1362)
+ static member keywordDescriptionFor() = (GetStringFunc("keywordDescriptionFor",",,,") )
+ /// Used in lambda expressions, also known as anonymous functions.
+ /// (Originally from ..\FSComp.txt:1363)
+ static member keywordDescriptionFun() = (GetStringFunc("keywordDescriptionFun",",,,") )
+ /// 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:1364)
+ static member keywordDescriptionFunction() = (GetStringFunc("keywordDescriptionFunction",",,,") )
+ /// Used to reference the top-level .NET namespace.
+ /// (Originally from ..\FSComp.txt:1365)
+ static member keywordDescriptionGlobal() = (GetStringFunc("keywordDescriptionGlobal",",,,") )
+ /// Used in conditional branching constructs.
+ /// (Originally from ..\FSComp.txt:1366)
+ static member keywordDescriptionIf() = (GetStringFunc("keywordDescriptionIf",",,,") )
+ /// Used for sequence expressions and, in verbose syntax, to separate expressions from bindings.
+ /// (Originally from ..\FSComp.txt:1367)
+ static member keywordDescriptionIn() = (GetStringFunc("keywordDescriptionIn",",,,") )
+ /// Used to specify a base class or base interface.
+ /// (Originally from ..\FSComp.txt:1368)
+ static member keywordDescriptionInherit() = (GetStringFunc("keywordDescriptionInherit",",,,") )
+ /// Used to indicate a function that should be integrated directly into the caller's code.
+ /// (Originally from ..\FSComp.txt:1369)
+ static member keywordDescriptionInline() = (GetStringFunc("keywordDescriptionInline",",,,") )
+ /// Used to declare and implement interfaces.
+ /// (Originally from ..\FSComp.txt:1370)
+ static member keywordDescriptionInterface() = (GetStringFunc("keywordDescriptionInterface",",,,") )
+ /// Used to specify that a member is visible inside an assembly but not outside it.
+ /// (Originally from ..\FSComp.txt:1371)
+ static member keywordDescriptionInternal() = (GetStringFunc("keywordDescriptionInternal",",,,") )
+ /// Used to specify a computation that is to be performed only when a result is needed.
+ /// (Originally from ..\FSComp.txt:1372)
+ static member keywordDescriptionLazy() = (GetStringFunc("keywordDescriptionLazy",",,,") )
+ /// Used to associate, or bind, a name to a value or function.
+ /// (Originally from ..\FSComp.txt:1373)
+ static member keywordDescriptionLet() = (GetStringFunc("keywordDescriptionLet",",,,") )
+ /// Used in asynchronous workflows to bind a name to the result of an asynchronous computation, or, in other computation expressions, used to bind a name to a result, which is of the computation type.
+ /// (Originally from ..\FSComp.txt:1374)
+ static member keywordDescriptionLetBang() = (GetStringFunc("keywordDescriptionLetBang",",,,") )
+ /// Used to branch by comparing a value to a pattern.
+ /// (Originally from ..\FSComp.txt:1375)
+ static member keywordDescriptionMatch() = (GetStringFunc("keywordDescriptionMatch",",,,") )
+ /// Used to declare a property or method in an object type.
+ /// (Originally from ..\FSComp.txt:1376)
+ static member keywordDescriptionMember() = (GetStringFunc("keywordDescriptionMember",",,,") )
+ /// 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:1377)
+ static member keywordDescriptionModule() = (GetStringFunc("keywordDescriptionModule",",,,") )
+ /// Used to declare a variable, that is, a value that can be changed.
+ /// (Originally from ..\FSComp.txt:1378)
+ static member keywordDescriptionMutable() = (GetStringFunc("keywordDescriptionMutable",",,,") )
+ /// Used to associate a name with a group of related types and modules, to logically separate it from other code.
+ /// (Originally from ..\FSComp.txt:1379)
+ static member keywordDescriptionNamespace() = (GetStringFunc("keywordDescriptionNamespace",",,,") )
+ /// 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:1380)
+ static member keywordDescriptionNew() = (GetStringFunc("keywordDescriptionNew",",,,") )
+ /// Not actually a keyword. However, not struct in combination is used as a generic parameter constraint.
+ /// (Originally from ..\FSComp.txt:1381)
+ static member keywordDescriptionNot() = (GetStringFunc("keywordDescriptionNot",",,,") )
+ /// Indicates the absence of an object. Also used in generic parameter constraints.
+ /// (Originally from ..\FSComp.txt:1382)
+ static member keywordDescriptionNull() = (GetStringFunc("keywordDescriptionNull",",,,") )
+ /// Used in discriminated unions to indicate the type of categories of values, and in delegate and exception declarations.
+ /// (Originally from ..\FSComp.txt:1383)
+ static member keywordDescriptionOf() = (GetStringFunc("keywordDescriptionOf",",,,") )
+ /// Used to make the contents of a namespace or module available without qualification.
+ /// (Originally from ..\FSComp.txt:1384)
+ static member keywordDescriptionOpen() = (GetStringFunc("keywordDescriptionOpen",",,,") )
+ /// Used with Boolean conditions as a Boolean or operator. Equivalent to ||. Also used in member constraints.
+ /// (Originally from ..\FSComp.txt:1385)
+ static member keywordDescriptionOr() = (GetStringFunc("keywordDescriptionOr",",,,") )
+ /// Used to implement a version of an abstract or virtual method that differs from the base version.
+ /// (Originally from ..\FSComp.txt:1386)
+ static member keywordDescriptionOverride() = (GetStringFunc("keywordDescriptionOverride",",,,") )
+ /// Restricts access to a member to code in the same type or module.
+ /// (Originally from ..\FSComp.txt:1387)
+ static member keywordDescriptionPrivate() = (GetStringFunc("keywordDescriptionPrivate",",,,") )
+ /// Allows access to a member from outside the type.
+ /// (Originally from ..\FSComp.txt:1388)
+ static member keywordDescriptionPublic() = (GetStringFunc("keywordDescriptionPublic",",,,") )
+ /// Used to indicate that a function is recursive.
+ /// (Originally from ..\FSComp.txt:1389)
+ static member keywordDescriptionRec() = (GetStringFunc("keywordDescriptionRec",",,,") )
+ /// Used to indicate a value to provide as the result of a computation expression.
+ /// (Originally from ..\FSComp.txt:1390)
+ static member keywordDescriptionReturn() = (GetStringFunc("keywordDescriptionReturn",",,,") )
+ /// Used to indicate a computation expression that, when evaluated, provides the result of the containing computation expression.
+ /// (Originally from ..\FSComp.txt:1391)
+ static member keywordDescriptionReturnBang() = (GetStringFunc("keywordDescriptionReturnBang",",,,") )
+ /// 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:1392)
+ static member keywordDescriptionSelect() = (GetStringFunc("keywordDescriptionSelect",",,,") )
+ /// 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:1393)
+ static member keywordDescriptionStatic() = (GetStringFunc("keywordDescriptionStatic",",,,") )
+ /// Used to declare a structure type. Also used in generic parameter constraints. Used for OCaml compatibility in module definitions.
+ /// (Originally from ..\FSComp.txt:1394)
+ static member keywordDescriptionStruct() = (GetStringFunc("keywordDescriptionStruct",",,,") )
+ /// Used in conditional expressions. Also used to perform side effects after object construction.
+ /// (Originally from ..\FSComp.txt:1395)
+ static member keywordDescriptionThen() = (GetStringFunc("keywordDescriptionThen",",,,") )
+ /// Used in for loops to indicate a range.
+ /// (Originally from ..\FSComp.txt:1396)
+ static member keywordDescriptionTo() = (GetStringFunc("keywordDescriptionTo",",,,") )
+ /// Used to introduce a block of code that might generate an exception. Used together with with or finally.
+ /// (Originally from ..\FSComp.txt:1397)
+ static member keywordDescriptionTry() = (GetStringFunc("keywordDescriptionTry",",,,") )
+ /// Used to declare a class, record, structure, discriminated union, enumeration type, unit of measure, or type abbreviation.
+ /// (Originally from ..\FSComp.txt:1398)
+ static member keywordDescriptionType() = (GetStringFunc("keywordDescriptionType",",,,") )
+ /// Used to convert to a type that is higher in the inheritance chain.
+ /// (Originally from ..\FSComp.txt:1399)
+ static member keywordDescriptionUpcast() = (GetStringFunc("keywordDescriptionUpcast",",,,") )
+ /// Used instead of let for values that require Dispose to be called to free resources.
+ /// (Originally from ..\FSComp.txt:1400)
+ static member keywordDescriptionUse() = (GetStringFunc("keywordDescriptionUse",",,,") )
+ /// Used instead of let! in asynchronous workflows and other computation expressions for values that require Dispose to be called to free resources.
+ /// (Originally from ..\FSComp.txt:1401)
+ static member keywordDescriptionUseBang() = (GetStringFunc("keywordDescriptionUseBang",",,,") )
+ /// Used in a signature to indicate a value, or in a type to declare a member, in limited situations.
+ /// (Originally from ..\FSComp.txt:1402)
+ static member keywordDescriptionVal() = (GetStringFunc("keywordDescriptionVal",",,,") )
+ /// Indicates the .NET void type. Used when interoperating with other .NET languages.
+ /// (Originally from ..\FSComp.txt:1403)
+ static member keywordDescriptionVoid() = (GetStringFunc("keywordDescriptionVoid",",,,") )
+ /// Used for Boolean conditions (when guards) on pattern matches and to introduce a constraint clause for a generic type parameter.
+ /// (Originally from ..\FSComp.txt:1404)
+ static member keywordDescriptionWhen() = (GetStringFunc("keywordDescriptionWhen",",,,") )
+ /// Introduces a looping construct.
+ /// (Originally from ..\FSComp.txt:1405)
+ static member keywordDescriptionWhile() = (GetStringFunc("keywordDescriptionWhile",",,,") )
+ /// 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:1406)
+ static member keywordDescriptionWith() = (GetStringFunc("keywordDescriptionWith",",,,") )
+ /// Used in a sequence expression to produce a value for a sequence.
+ /// (Originally from ..\FSComp.txt:1407)
+ static member keywordDescriptionYield() = (GetStringFunc("keywordDescriptionYield",",,,") )
+ /// 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:1408)
+ static member keywordDescriptionYieldBang() = (GetStringFunc("keywordDescriptionYieldBang",",,,") )
+ /// 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:1409)
+ static member keywordDescriptionRightArrow() = (GetStringFunc("keywordDescriptionRightArrow",",,,") )
+ /// Assigns a value to a variable.
+ /// (Originally from ..\FSComp.txt:1410)
+ static member keywordDescriptionLeftArrow() = (GetStringFunc("keywordDescriptionLeftArrow",",,,") )
+ /// Converts a type to type that is higher in the hierarchy.
+ /// (Originally from ..\FSComp.txt:1411)
+ static member keywordDescriptionCast() = (GetStringFunc("keywordDescriptionCast",",,,") )
+ /// Converts a type to a type that is lower in the hierarchy.
+ /// (Originally from ..\FSComp.txt:1412)
+ static member keywordDescriptionDynamicCast() = (GetStringFunc("keywordDescriptionDynamicCast",",,,") )
+ /// Delimits a typed code quotation.
+ /// (Originally from ..\FSComp.txt:1413)
+ static member keywordDescriptionTypedQuotation() = (GetStringFunc("keywordDescriptionTypedQuotation",",,,") )
+ /// Delimits a untyped code quotation.
+ /// (Originally from ..\FSComp.txt:1414)
+ static member keywordDescriptionUntypedQuotation() = (GetStringFunc("keywordDescriptionUntypedQuotation",",,,") )
+ /// %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:1415)
+ static member itemNotFoundDuringDynamicCodeGen(a0 : System.String, a1 : System.String, a2 : System.String) = (3216, GetStringFunc("itemNotFoundDuringDynamicCodeGen",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// %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:1416)
+ static member itemNotFoundInTypeDuringDynamicCodeGen(a0 : System.String, a1 : System.String, a2 : System.String, a3 : System.String) = (3216, GetStringFunc("itemNotFoundInTypeDuringDynamicCodeGen",",,,%s,,,%s,,,%s,,,%s,,,") a0 a1 a2 a3)
+ /// is
+ /// (Originally from ..\FSComp.txt:1417)
+ static member descriptionWordIs() = (GetStringFunc("descriptionWordIs",",,,") )
+ /// This value is not a function and cannot be applied.
+ /// (Originally from ..\FSComp.txt:1418)
+ static member notAFunction() = (GetStringFunc("notAFunction",",,,") )
+ /// This value is not a function and cannot be applied. Did you intend to access the indexer via %s.[index] instead?
+ /// (Originally from ..\FSComp.txt:1419)
+ static member notAFunctionButMaybeIndexerWithName(a0 : System.String) = (GetStringFunc("notAFunctionButMaybeIndexerWithName",",,,%s,,,") a0)
+ /// This expression is not a function and cannot be applied. Did you intend to access the indexer via expr.[index] instead?
+ /// (Originally from ..\FSComp.txt:1420)
+ static member notAFunctionButMaybeIndexer() = (GetStringFunc("notAFunctionButMaybeIndexer",",,,") )
+ ///
+ /// (Originally from ..\FSComp.txt:1421)
+ static member notAFunctionButMaybeIndexerErrorCode() = (3217, GetStringFunc("notAFunctionButMaybeIndexerErrorCode",",,,") )
+ /// This value is not a function and cannot be applied. Did you forget to terminate a declaration?
+ /// (Originally from ..\FSComp.txt:1422)
+ static member notAFunctionButMaybeDeclaration() = (GetStringFunc("notAFunctionButMaybeDeclaration",",,,") )
+ /// The argument names in the signature '%s' and implementation '%s' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling.
+ /// (Originally from ..\FSComp.txt:1423)
+ static member ArgumentsInSigAndImplMismatch(a0 : System.String, a1 : System.String) = (3218, GetStringFunc("ArgumentsInSigAndImplMismatch",",,,%s,,,%s,,,") a0 a1)
+ /// 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:1424)
+ static member pickleUnexpectedNonZero(a0 : System.String) = (3219, GetStringFunc("pickleUnexpectedNonZero",",,,%s,,,") a0)
+
+ /// Call this method once to validate that all known resources are valid; throws if not
+ static member RunStartupValidation() =
+ ignore(GetString("undefinedNameNamespace"))
+ ignore(GetString("undefinedNameNamespaceOrModule"))
+ ignore(GetString("undefinedNameFieldConstructorOrMember"))
+ ignore(GetString("undefinedNameValueConstructorNamespaceOrType"))
+ ignore(GetString("undefinedNameValueOfConstructor"))
+ ignore(GetString("undefinedNameValueNamespaceTypeOrModule"))
+ ignore(GetString("undefinedNameConstructorModuleOrNamespace"))
+ ignore(GetString("undefinedNameType"))
+ ignore(GetString("undefinedNameTypeIn"))
+ ignore(GetString("undefinedNameRecordLabelOrNamespace"))
+ ignore(GetString("undefinedNameRecordLabel"))
+ ignore(GetString("undefinedNameSuggestionsIntro"))
+ ignore(GetString("undefinedNameTypeParameter"))
+ ignore(GetString("undefinedNamePatternDiscriminator"))
+ ignore(GetString("replaceWithSuggestion"))
+ ignore(GetString("addIndexerDot"))
+ ignore(GetString("listElementHasWrongType"))
+ ignore(GetString("arrayElementHasWrongType"))
+ ignore(GetString("missingElseBranch"))
+ ignore(GetString("ifExpression"))
+ ignore(GetString("elseBranchHasWrongType"))
+ ignore(GetString("followingPatternMatchClauseHasWrongType"))
+ ignore(GetString("patternMatchGuardIsNotBool"))
+ ignore(GetString("commaInsteadOfSemicolonInRecord"))
+ ignore(GetString("derefInsteadOfNot"))
+ ignore(GetString("buildUnexpectedTypeArgs"))
+ ignore(GetString("returnUsedInsteadOfReturnBang"))
+ ignore(GetString("yieldUsedInsteadOfYieldBang"))
+ ignore(GetString("tupleRequiredInAbstractMethod"))
+ ignore(GetString("buildInvalidWarningNumber"))
+ ignore(GetString("buildInvalidVersionString"))
+ ignore(GetString("buildInvalidVersionFile"))
+ ignore(GetString("buildProductName"))
+ ignore(GetString("buildProductNameCommunity"))
+ ignore(GetString("buildProblemWithFilename"))
+ ignore(GetString("buildNoInputsSpecified"))
+ ignore(GetString("buildPdbRequiresDebug"))
+ ignore(GetString("buildInvalidSearchDirectory"))
+ ignore(GetString("buildSearchDirectoryNotFound"))
+ ignore(GetString("buildInvalidFilename"))
+ ignore(GetString("buildInvalidAssemblyName"))
+ ignore(GetString("buildInvalidPrivacy"))
+ ignore(GetString("buildMultipleReferencesNotAllowed"))
+ ignore(GetString("buildCouldNotReadVersionInfoFromMscorlib"))
+ ignore(GetString("buildCannotReadAssembly"))
+ ignore(GetString("buildAssemblyResolutionFailed"))
+ ignore(GetString("buildImplicitModuleIsNotLegalIdentifier"))
+ ignore(GetString("buildMultiFileRequiresNamespaceOrModule"))
+ ignore(GetString("noEqualSignAfterModule"))
+ ignore(GetString("buildMultipleToplevelModules"))
+ ignore(GetString("buildOptionRequiresParameter"))
+ ignore(GetString("buildCouldNotFindSourceFile"))
+ ignore(GetString("buildInvalidSourceFileExtension"))
+ ignore(GetString("buildCouldNotResolveAssembly"))
+ ignore(GetString("buildCouldNotResolveAssemblyRequiredByFile"))
+ ignore(GetString("buildErrorOpeningBinaryFile"))
+ ignore(GetString("buildDifferentVersionMustRecompile"))
+ ignore(GetString("buildInvalidHashIDirective"))
+ ignore(GetString("buildInvalidHashrDirective"))
+ ignore(GetString("buildInvalidHashloadDirective"))
+ ignore(GetString("buildInvalidHashtimeDirective"))
+ ignore(GetString("buildDirectivesInModulesAreIgnored"))
+ ignore(GetString("buildSignatureAlreadySpecified"))
+ ignore(GetString("buildImplementationAlreadyGivenDetail"))
+ ignore(GetString("buildImplementationAlreadyGiven"))
+ ignore(GetString("buildSignatureWithoutImplementation"))
+ ignore(GetString("buildArgInvalidInt"))
+ ignore(GetString("buildArgInvalidFloat"))
+ ignore(GetString("buildUnrecognizedOption"))
+ ignore(GetString("buildInvalidModuleOrNamespaceName"))
+ ignore(GetString("pickleErrorReadingWritingMetadata"))
+ ignore(GetString("tastTypeOrModuleNotConcrete"))
+ ignore(GetString("tastTypeHasAssemblyCodeRepresentation"))
+ ignore(GetString("tastNamespaceAndModuleWithSameNameInAssembly"))
+ ignore(GetString("tastTwoModulesWithSameNameInAssembly"))
+ ignore(GetString("tastDuplicateTypeDefinitionInAssembly"))
+ ignore(GetString("tastConflictingModuleAndTypeDefinitionInAssembly"))
+ ignore(GetString("tastInvalidMemberSignature"))
+ ignore(GetString("tastValueDoesNotHaveSetterType"))
+ ignore(GetString("tastInvalidFormForPropertyGetter"))
+ ignore(GetString("tastInvalidFormForPropertySetter"))
+ ignore(GetString("tastUnexpectedByRef"))
+ ignore(GetString("tastValueMustBeLocalAndMutable"))
+ ignore(GetString("tastInvalidMutationOfConstant"))
+ ignore(GetString("tastValueHasBeenCopied"))
+ ignore(GetString("tastRecursiveValuesMayNotBeInConstructionOfTuple"))
+ ignore(GetString("tastRecursiveValuesMayNotAppearInConstructionOfType"))
+ ignore(GetString("tastRecursiveValuesMayNotBeAssignedToNonMutableField"))
+ ignore(GetString("tastUnexpectedDecodeOfAutoOpenAttribute"))
+ ignore(GetString("tastUnexpectedDecodeOfInternalsVisibleToAttribute"))
+ ignore(GetString("tastUnexpectedDecodeOfInterfaceDataVersionAttribute"))
+ ignore(GetString("tastActivePatternsLimitedToSeven"))
+ ignore(GetString("tastNotAConstantExpression"))
+ ignore(GetString("ValueNotContainedMutabilityAttributesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityNamesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityCompiledNamesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityDisplayNamesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityAccessibilityMore"))
+ ignore(GetString("ValueNotContainedMutabilityInlineFlagsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityLiteralConstantValuesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityOneIsTypeFunction"))
+ ignore(GetString("ValueNotContainedMutabilityParameterCountsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityTypesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityExtensionsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityArityNotInferred"))
+ ignore(GetString("ValueNotContainedMutabilityGenericParametersDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityGenericParametersAreDifferentKinds"))
+ ignore(GetString("ValueNotContainedMutabilityAritiesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityDotNetNamesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityStaticsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityVirtualsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityAbstractsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityFinalsDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityOverridesDiffer"))
+ ignore(GetString("ValueNotContainedMutabilityOneIsConstructor"))
+ ignore(GetString("ValueNotContainedMutabilityStaticButInstance"))
+ ignore(GetString("ValueNotContainedMutabilityInstanceButStatic"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleNamesDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleMissingInterface"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplementationSaysNull"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleSignatureSaysNull"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplementationSealed"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleNumbersDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleImplDefinesStruct"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleTypeIsHidden"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleILDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleFieldWasPresent"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig"))
+ ignore(GetString("DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation"))
+ ignore(GetString("ModuleContainsConstructorButNamesDiffer"))
+ ignore(GetString("ModuleContainsConstructorButDataFieldsDiffer"))
+ ignore(GetString("ModuleContainsConstructorButTypesOfFieldsDiffer"))
+ ignore(GetString("ModuleContainsConstructorButAccessibilityDiffers"))
+ ignore(GetString("FieldNotContainedNamesDiffer"))
+ ignore(GetString("FieldNotContainedAccessibilitiesDiffer"))
+ ignore(GetString("FieldNotContainedStaticsDiffer"))
+ ignore(GetString("FieldNotContainedMutablesDiffer"))
+ ignore(GetString("FieldNotContainedLiteralsDiffer"))
+ ignore(GetString("FieldNotContainedTypesDiffer"))
+ ignore(GetString("typrelCannotResolveImplicitGenericInstantiation"))
+ ignore(GetString("typrelCannotResolveAmbiguityInOverloadedOperator"))
+ ignore(GetString("typrelCannotResolveAmbiguityInPrintf"))
+ ignore(GetString("typrelCannotResolveAmbiguityInEnum"))
+ ignore(GetString("typrelCannotResolveAmbiguityInDelegate"))
+ ignore(GetString("typrelInvalidValue"))
+ ignore(GetString("typrelSigImplNotCompatibleParamCountsDiffer"))
+ ignore(GetString("typrelSigImplNotCompatibleCompileTimeRequirementsDiffer"))
+ ignore(GetString("typrelSigImplNotCompatibleConstraintsDiffer"))
+ ignore(GetString("typrelSigImplNotCompatibleConstraintsDifferRemove"))
+ ignore(GetString("typrelTypeImplementsIComparableShouldOverrideObjectEquals"))
+ ignore(GetString("typrelTypeImplementsIComparableDefaultObjectEqualsProvided"))
+ ignore(GetString("typrelExplicitImplementationOfGetHashCodeOrEquals"))
+ ignore(GetString("typrelExplicitImplementationOfGetHashCode"))
+ ignore(GetString("typrelExplicitImplementationOfEquals"))
+ ignore(GetString("ExceptionDefsNotCompatibleHiddenBySignature"))
+ ignore(GetString("ExceptionDefsNotCompatibleDotNetRepresentationsDiffer"))
+ ignore(GetString("ExceptionDefsNotCompatibleAbbreviationHiddenBySignature"))
+ ignore(GetString("ExceptionDefsNotCompatibleSignaturesDiffer"))
+ ignore(GetString("ExceptionDefsNotCompatibleExceptionDeclarationsDiffer"))
+ ignore(GetString("ExceptionDefsNotCompatibleFieldInSigButNotImpl"))
+ ignore(GetString("ExceptionDefsNotCompatibleFieldInImplButNotSig"))
+ ignore(GetString("ExceptionDefsNotCompatibleFieldOrderDiffers"))
+ ignore(GetString("typrelModuleNamespaceAttributesDifferInSigAndImpl"))
+ ignore(GetString("typrelMethodIsOverconstrained"))
+ ignore(GetString("typrelOverloadNotFound"))
+ ignore(GetString("typrelOverrideWasAmbiguous"))
+ ignore(GetString("typrelMoreThenOneOverride"))
+ ignore(GetString("typrelMethodIsSealed"))
+ ignore(GetString("typrelOverrideImplementsMoreThenOneSlot"))
+ ignore(GetString("typrelDuplicateInterface"))
+ ignore(GetString("typrelNeedExplicitImplementation"))
+ ignore(GetString("typrelNamedArgumentHasBeenAssignedMoreThenOnce"))
+ ignore(GetString("typrelNoImplementationGiven"))
+ ignore(GetString("typrelNoImplementationGivenWithSuggestion"))
+ ignore(GetString("typrelMemberDoesNotHaveCorrectNumberOfArguments"))
+ ignore(GetString("typrelMemberDoesNotHaveCorrectNumberOfTypeParameters"))
+ ignore(GetString("typrelMemberDoesNotHaveCorrectKindsOfGenericParameters"))
+ ignore(GetString("typrelMemberCannotImplement"))
+ ignore(GetString("astParseEmbeddedILError"))
+ ignore(GetString("astParseEmbeddedILTypeError"))
+ ignore(GetString("astDeprecatedIndexerNotation"))
+ ignore(GetString("astInvalidExprLeftHandOfAssignment"))
+ ignore(GetString("augNoRefEqualsOnStruct"))
+ ignore(GetString("augInvalidAttrs"))
+ ignore(GetString("augNoEqualityNeedsNoComparison"))
+ ignore(GetString("augStructCompNeedsStructEquality"))
+ ignore(GetString("augStructEqNeedsNoCompOrStructComp"))
+ ignore(GetString("augTypeCantHaveRefEqAndStructAttrs"))
+ ignore(GetString("augOnlyCertainTypesCanHaveAttrs"))
+ ignore(GetString("augRefEqCantHaveObjEquals"))
+ ignore(GetString("augCustomEqNeedsObjEquals"))
+ ignore(GetString("augCustomCompareNeedsIComp"))
+ ignore(GetString("augNoEqNeedsNoObjEquals"))
+ ignore(GetString("augNoCompCantImpIComp"))
+ ignore(GetString("augCustomEqNeedsNoCompOrCustomComp"))
+ ignore(GetString("forPositionalSpecifiersNotPermitted"))
+ ignore(GetString("forMissingFormatSpecifier"))
+ ignore(GetString("forFlagSetTwice"))
+ ignore(GetString("forPrefixFlagSpacePlusSetTwice"))
+ ignore(GetString("forHashSpecifierIsInvalid"))
+ ignore(GetString("forBadPrecision"))
+ ignore(GetString("forBadWidth"))
+ ignore(GetString("forDoesNotSupportZeroFlag"))
+ ignore(GetString("forPrecisionMissingAfterDot"))
+ ignore(GetString("forFormatDoesntSupportPrecision"))
+ ignore(GetString("forBadFormatSpecifier"))
+ ignore(GetString("forLIsUnnecessary"))
+ ignore(GetString("forHIsUnnecessary"))
+ ignore(GetString("forDoesNotSupportPrefixFlag"))
+ ignore(GetString("forBadFormatSpecifierGeneral"))
+ ignore(GetString("elSysEnvExitDidntExit"))
+ ignore(GetString("elDeprecatedOperator"))
+ ignore(GetString("chkProtectedOrBaseCalled"))
+ ignore(GetString("chkByrefUsedInInvalidWay"))
+ ignore(GetString("chkBaseUsedInInvalidWay"))
+ ignore(GetString("chkVariableUsedInInvalidWay"))
+ ignore(GetString("chkTypeLessAccessibleThanType"))
+ ignore(GetString("chkSystemVoidOnlyInTypeof"))
+ ignore(GetString("chkErrorUseOfByref"))
+ ignore(GetString("chkErrorContainsCallToRethrow"))
+ ignore(GetString("chkSplicingOnlyInQuotations"))
+ ignore(GetString("chkNoFirstClassSplicing"))
+ ignore(GetString("chkNoFirstClassAddressOf"))
+ ignore(GetString("chkNoFirstClassRethrow"))
+ ignore(GetString("chkNoByrefAtThisPoint"))
+ ignore(GetString("chkLimitationsOfBaseKeyword"))
+ ignore(GetString("chkObjCtorsCantUseExceptionHandling"))
+ ignore(GetString("chkNoAddressOfAtThisPoint"))
+ ignore(GetString("chkNoAddressStaticFieldAtThisPoint"))
+ ignore(GetString("chkNoAddressFieldAtThisPoint"))
+ ignore(GetString("chkNoAddressOfArrayElementAtThisPoint"))
+ ignore(GetString("chkFirstClassFuncNoByref"))
+ ignore(GetString("chkReturnTypeNoByref"))
+ ignore(GetString("chkInvalidCustAttrVal"))
+ ignore(GetString("chkAttrHasAllowMultiFalse"))
+ ignore(GetString("chkMemberUsedInInvalidWay"))
+ ignore(GetString("chkNoByrefAsTopValue"))
+ ignore(GetString("chkReflectedDefCantSplice"))
+ ignore(GetString("chkEntryPointUsage"))
+ ignore(GetString("chkUnionCaseCompiledForm"))
+ ignore(GetString("chkUnionCaseDefaultAugmentation"))
+ ignore(GetString("chkPropertySameNameMethod"))
+ ignore(GetString("chkGetterSetterDoNotMatchAbstract"))
+ ignore(GetString("chkPropertySameNameIndexer"))
+ ignore(GetString("chkCantStoreByrefValue"))
+ ignore(GetString("chkDuplicateMethod"))
+ ignore(GetString("chkDuplicateMethodWithSuffix"))
+ ignore(GetString("chkDuplicateMethodCurried"))
+ ignore(GetString("chkCurriedMethodsCantHaveOutParams"))
+ ignore(GetString("chkDuplicateProperty"))
+ ignore(GetString("chkDuplicatePropertyWithSuffix"))
+ ignore(GetString("chkDuplicateMethodInheritedType"))
+ ignore(GetString("chkDuplicateMethodInheritedTypeWithSuffix"))
+ ignore(GetString("chkMultipleGenericInterfaceInstantiations"))
+ ignore(GetString("chkValueWithDefaultValueMustHaveDefaultValue"))
+ ignore(GetString("chkNoByrefInTypeAbbrev"))
+ ignore(GetString("crefBoundVarUsedInSplice"))
+ ignore(GetString("crefQuotationsCantContainGenericExprs"))
+ ignore(GetString("crefQuotationsCantContainGenericFunctions"))
+ ignore(GetString("crefQuotationsCantContainObjExprs"))
+ ignore(GetString("crefQuotationsCantContainAddressOf"))
+ ignore(GetString("crefQuotationsCantContainStaticFieldRef"))
+ ignore(GetString("crefQuotationsCantContainInlineIL"))
+ ignore(GetString("crefQuotationsCantContainDescendingForLoops"))
+ ignore(GetString("crefQuotationsCantFetchUnionIndexes"))
+ ignore(GetString("crefQuotationsCantSetUnionFields"))
+ ignore(GetString("crefQuotationsCantSetExceptionFields"))
+ ignore(GetString("crefQuotationsCantRequireByref"))
+ ignore(GetString("crefQuotationsCantCallTraitMembers"))
+ ignore(GetString("crefQuotationsCantContainThisConstant"))
+ ignore(GetString("crefQuotationsCantContainThisPatternMatch"))
+ ignore(GetString("crefQuotationsCantContainArrayPatternMatching"))
+ ignore(GetString("crefQuotationsCantContainThisType"))
+ ignore(GetString("csTypeCannotBeResolvedAtCompileTime"))
+ ignore(GetString("csCodeLessGeneric"))
+ ignore(GetString("csTypeInferenceMaxDepth"))
+ ignore(GetString("csExpectedArguments"))
+ ignore(GetString("csIndexArgumentMismatch"))
+ ignore(GetString("csExpectTypeWithOperatorButGivenFunction"))
+ ignore(GetString("csExpectTypeWithOperatorButGivenTuple"))
+ ignore(GetString("csTypesDoNotSupportOperator"))
+ ignore(GetString("csTypeDoesNotSupportOperator"))
+ ignore(GetString("csTypesDoNotSupportOperatorNullable"))
+ ignore(GetString("csTypeDoesNotSupportOperatorNullable"))
+ ignore(GetString("csTypeDoesNotSupportConversion"))
+ ignore(GetString("csMethodFoundButIsStatic"))
+ ignore(GetString("csMethodFoundButIsNotStatic"))
+ ignore(GetString("csStructConstraintInconsistent"))
+ ignore(GetString("csTypeDoesNotHaveNull"))
+ ignore(GetString("csNullableTypeDoesNotHaveNull"))
+ ignore(GetString("csTypeDoesNotSupportComparison1"))
+ ignore(GetString("csTypeDoesNotSupportComparison2"))
+ ignore(GetString("csTypeDoesNotSupportComparison3"))
+ ignore(GetString("csTypeDoesNotSupportEquality1"))
+ ignore(GetString("csTypeDoesNotSupportEquality2"))
+ ignore(GetString("csTypeDoesNotSupportEquality3"))
+ ignore(GetString("csTypeIsNotEnumType"))
+ ignore(GetString("csTypeHasNonStandardDelegateType"))
+ ignore(GetString("csTypeIsNotDelegateType"))
+ ignore(GetString("csTypeParameterCannotBeNullable"))
+ ignore(GetString("csGenericConstructRequiresStructType"))
+ ignore(GetString("csGenericConstructRequiresUnmanagedType"))
+ ignore(GetString("csTypeNotCompatibleBecauseOfPrintf"))
+ ignore(GetString("csGenericConstructRequiresReferenceSemantics"))
+ ignore(GetString("csGenericConstructRequiresNonAbstract"))
+ ignore(GetString("csGenericConstructRequiresPublicDefaultConstructor"))
+ ignore(GetString("csTypeInstantiationLengthMismatch"))
+ ignore(GetString("csOptionalArgumentNotPermittedHere"))
+ ignore(GetString("csMemberIsNotStatic"))
+ ignore(GetString("csMemberIsNotInstance"))
+ ignore(GetString("csArgumentLengthMismatch"))
+ ignore(GetString("csArgumentTypesDoNotMatch"))
+ ignore(GetString("csMethodExpectsParams"))
+ ignore(GetString("csMemberIsNotAccessible"))
+ ignore(GetString("csMemberIsNotAccessible2"))
+ ignore(GetString("csMethodIsNotAStaticMethod"))
+ ignore(GetString("csMethodIsNotAnInstanceMethod"))
+ ignore(GetString("csMemberHasNoArgumentOrReturnProperty"))
+ ignore(GetString("csCtorHasNoArgumentOrReturnProperty"))
+ ignore(GetString("csRequiredSignatureIs"))
+ ignore(GetString("csMemberSignatureMismatch"))
+ ignore(GetString("csMemberSignatureMismatch2"))
+ ignore(GetString("csMemberSignatureMismatch3"))
+ ignore(GetString("csMemberSignatureMismatch4"))
+ ignore(GetString("csMemberSignatureMismatchArityNamed"))
+ ignore(GetString("csMemberSignatureMismatchArity"))
+ ignore(GetString("csCtorSignatureMismatchArity"))
+ ignore(GetString("csCtorSignatureMismatchArityProp"))
+ ignore(GetString("csMemberSignatureMismatchArityType"))
+ ignore(GetString("csMemberNotAccessible"))
+ ignore(GetString("csIncorrectGenericInstantiation"))
+ ignore(GetString("csMemberOverloadArityMismatch"))
+ ignore(GetString("csNoMemberTakesTheseArguments"))
+ ignore(GetString("csNoMemberTakesTheseArguments2"))
+ ignore(GetString("csNoMemberTakesTheseArguments3"))
+ ignore(GetString("csMethodNotFound"))
+ ignore(GetString("csNoOverloadsFound"))
+ ignore(GetString("csMethodIsOverloaded"))
+ ignore(GetString("csCandidates"))
+ ignore(GetString("csSeeAvailableOverloads"))
+ ignore(GetString("parsDoCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsEofInHashIf"))
+ ignore(GetString("parsEofInString"))
+ ignore(GetString("parsEofInVerbatimString"))
+ ignore(GetString("parsEofInComment"))
+ ignore(GetString("parsEofInStringInComment"))
+ ignore(GetString("parsEofInVerbatimStringInComment"))
+ ignore(GetString("parsEofInIfOcaml"))
+ ignore(GetString("parsEofInDirective"))
+ ignore(GetString("parsNoHashEndIfFound"))
+ ignore(GetString("parsAttributesIgnored"))
+ ignore(GetString("parsUseBindingsIllegalInImplicitClassConstructors"))
+ ignore(GetString("parsUseBindingsIllegalInModules"))
+ ignore(GetString("parsIntegerForLoopRequiresSimpleIdentifier"))
+ ignore(GetString("parsOnlyOneWithAugmentationAllowed"))
+ ignore(GetString("parsUnexpectedSemicolon"))
+ ignore(GetString("parsUnexpectedEndOfFile"))
+ ignore(GetString("parsUnexpectedVisibilityDeclaration"))
+ ignore(GetString("parsOnlyHashDirectivesAllowed"))
+ ignore(GetString("parsVisibilityDeclarationsShouldComePriorToIdentifier"))
+ ignore(GetString("parsNamespaceOrModuleNotBoth"))
+ ignore(GetString("parsModuleAbbreviationMustBeSimpleName"))
+ ignore(GetString("parsIgnoreAttributesOnModuleAbbreviation"))
+ ignore(GetString("parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate"))
+ ignore(GetString("parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate"))
+ ignore(GetString("parsUnClosedBlockInHashLight"))
+ ignore(GetString("parsUnmatchedBeginOrStruct"))
+ ignore(GetString("parsModuleDefnMustBeSimpleName"))
+ ignore(GetString("parsUnexpectedEmptyModuleDefn"))
+ ignore(GetString("parsAttributesMustComeBeforeVal"))
+ ignore(GetString("parsAttributesAreNotPermittedOnInterfaceImplementations"))
+ ignore(GetString("parsSyntaxError"))
+ ignore(GetString("parsAugmentationsIllegalOnDelegateType"))
+ ignore(GetString("parsUnmatchedClassInterfaceOrStruct"))
+ ignore(GetString("parsEmptyTypeDefinition"))
+ ignore(GetString("parsUnmatchedWith"))
+ ignore(GetString("parsGetOrSetRequired"))
+ ignore(GetString("parsOnlyClassCanTakeValueArguments"))
+ ignore(GetString("parsUnmatchedBegin"))
+ ignore(GetString("parsInvalidDeclarationSyntax"))
+ ignore(GetString("parsGetAndOrSetRequired"))
+ ignore(GetString("parsTypeAnnotationsOnGetSet"))
+ ignore(GetString("parsGetterMustHaveAtLeastOneArgument"))
+ ignore(GetString("parsMultipleAccessibilitiesForGetSet"))
+ ignore(GetString("parsSetSyntax"))
+ ignore(GetString("parsInterfacesHaveSameVisibilityAsEnclosingType"))
+ ignore(GetString("parsAccessibilityModsIllegalForAbstract"))
+ ignore(GetString("parsAttributesIllegalOnInherit"))
+ ignore(GetString("parsVisibilityIllegalOnInherit"))
+ ignore(GetString("parsInheritDeclarationsCannotHaveAsBindings"))
+ ignore(GetString("parsAttributesIllegalHere"))
+ ignore(GetString("parsTypeAbbreviationsCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsEnumTypesCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsAllEnumFieldsRequireValues"))
+ ignore(GetString("parsInlineAssemblyCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsUnexpectedIdentifier"))
+ ignore(GetString("parsUnionCasesCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsEnumFieldsCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsConsiderUsingSeparateRecordType"))
+ ignore(GetString("parsRecordFieldsCannotHaveVisibilityDeclarations"))
+ ignore(GetString("parsLetAndForNonRecBindings"))
+ ignore(GetString("parsUnmatchedParen"))
+ ignore(GetString("parsSuccessivePatternsShouldBeSpacedOrTupled"))
+ ignore(GetString("parsNoMatchingInForLet"))
+ ignore(GetString("parsErrorInReturnForLetIncorrectIndentation"))
+ ignore(GetString("parsExpectedExpressionAfterLet"))
+ ignore(GetString("parsIncompleteIf"))
+ ignore(GetString("parsAssertIsNotFirstClassValue"))
+ ignore(GetString("parsIdentifierExpected"))
+ ignore(GetString("parsInOrEqualExpected"))
+ ignore(GetString("parsArrowUseIsLimited"))
+ ignore(GetString("parsSuccessiveArgsShouldBeSpacedOrTupled"))
+ ignore(GetString("parsUnmatchedBracket"))
+ ignore(GetString("parsMissingQualificationAfterDot"))
+ ignore(GetString("parsParenFormIsForML"))
+ ignore(GetString("parsMismatchedQuote"))
+ ignore(GetString("parsUnmatched"))
+ ignore(GetString("parsUnmatchedBracketBar"))
+ ignore(GetString("parsUnmatchedBrace"))
+ ignore(GetString("parsFieldBinding"))
+ ignore(GetString("parsMemberIllegalInObjectImplementation"))
+ ignore(GetString("parsMissingFunctionBody"))
+ ignore(GetString("parsSyntaxErrorInLabeledType"))
+ ignore(GetString("parsUnexpectedInfixOperator"))
+ ignore(GetString("parsMultiArgumentGenericTypeFormDeprecated"))
+ ignore(GetString("parsInvalidLiteralInType"))
+ ignore(GetString("parsUnexpectedOperatorForUnitOfMeasure"))
+ ignore(GetString("parsUnexpectedIntegerLiteralForUnitOfMeasure"))
+ ignore(GetString("parsUnexpectedTypeParameter"))
+ ignore(GetString("parsMismatchedQuotationName"))
+ ignore(GetString("parsActivePatternCaseMustBeginWithUpperCase"))
+ ignore(GetString("parsActivePatternCaseContainsPipe"))
+ ignore(GetString("parsIllegalDenominatorForMeasureExponent"))
+ ignore(GetString("parsNoEqualShouldFollowNamespace"))
+ ignore(GetString("parsSyntaxModuleStructEndDeprecated"))
+ ignore(GetString("parsSyntaxModuleSigEndDeprecated"))
+ ignore(GetString("tcStaticFieldUsedWhenInstanceFieldExpected"))
+ ignore(GetString("tcMethodNotAccessible"))
+ ignore(GetString("tcImplicitMeasureFollowingSlash"))
+ ignore(GetString("tcUnexpectedMeasureAnon"))
+ ignore(GetString("tcNonZeroConstantCannotHaveGenericUnit"))
+ ignore(GetString("tcSeqResultsUseYield"))
+ ignore(GetString("tcUnexpectedBigRationalConstant"))
+ ignore(GetString("tcInvalidTypeForUnitsOfMeasure"))
+ ignore(GetString("tcUnexpectedConstUint16Array"))
+ ignore(GetString("tcUnexpectedConstByteArray"))
+ ignore(GetString("tcParameterRequiresName"))
+ ignore(GetString("tcReturnValuesCannotHaveNames"))
+ ignore(GetString("tcMemberKindPropertyGetSetNotExpected"))
+ ignore(GetString("tcNamespaceCannotContainValues"))
+ ignore(GetString("tcNamespaceCannotContainExtensionMembers"))
+ ignore(GetString("tcMultipleVisibilityAttributes"))
+ ignore(GetString("tcMultipleVisibilityAttributesWithLet"))
+ ignore(GetString("tcInvalidMethodNameForRelationalOperator"))
+ ignore(GetString("tcInvalidMethodNameForEquality"))
+ ignore(GetString("tcInvalidMemberName"))
+ ignore(GetString("tcInvalidMemberNameFixedTypes"))
+ ignore(GetString("tcInvalidOperatorDefinitionRelational"))
+ ignore(GetString("tcInvalidOperatorDefinitionEquality"))
+ ignore(GetString("tcInvalidOperatorDefinition"))
+ ignore(GetString("tcInvalidIndexOperatorDefinition"))
+ ignore(GetString("tcExpectModuleOrNamespaceParent"))
+ ignore(GetString("tcImplementsIComparableExplicitly"))
+ ignore(GetString("tcImplementsGenericIComparableExplicitly"))
+ ignore(GetString("tcImplementsIStructuralComparableExplicitly"))
+ ignore(GetString("tcRecordFieldInconsistentTypes"))
+ ignore(GetString("tcDllImportStubsCannotBeInlined"))
+ ignore(GetString("tcStructsCanOnlyBindThisAtMemberDeclaration"))
+ ignore(GetString("tcUnexpectedExprAtRecInfPoint"))
+ ignore(GetString("tcLessGenericBecauseOfAnnotation"))
+ ignore(GetString("tcConstrainedTypeVariableCannotBeGeneralized"))
+ ignore(GetString("tcGenericParameterHasBeenConstrained"))
+ ignore(GetString("tcTypeParameterHasBeenConstrained"))
+ ignore(GetString("tcTypeParametersInferredAreNotStable"))
+ ignore(GetString("tcExplicitTypeParameterInvalid"))
+ ignore(GetString("tcOverridingMethodRequiresAllOrNoTypeParameters"))
+ ignore(GetString("tcFieldsDoNotDetermineUniqueRecordType"))
+ ignore(GetString("tcFieldAppearsTwiceInRecord"))
+ ignore(GetString("tcUnknownUnion"))
+ ignore(GetString("tcNotSufficientlyGenericBecauseOfScope"))
+ ignore(GetString("tcPropertyRequiresExplicitTypeParameters"))
+ ignore(GetString("tcConstructorCannotHaveTypeParameters"))
+ ignore(GetString("tcInstanceMemberRequiresTarget"))
+ ignore(GetString("tcUnexpectedPropertyInSyntaxTree"))
+ ignore(GetString("tcStaticInitializerRequiresArgument"))
+ ignore(GetString("tcObjectConstructorRequiresArgument"))
+ ignore(GetString("tcStaticMemberShouldNotHaveThis"))
+ ignore(GetString("tcExplicitStaticInitializerSyntax"))
+ ignore(GetString("tcExplicitObjectConstructorSyntax"))
+ ignore(GetString("tcUnexpectedPropertySpec"))
+ ignore(GetString("tcObjectExpressionFormDeprecated"))
+ ignore(GetString("tcInvalidDeclaration"))
+ ignore(GetString("tcAttributesInvalidInPatterns"))
+ ignore(GetString("tcFunctionRequiresExplicitTypeArguments"))
+ ignore(GetString("tcDoesNotAllowExplicitTypeArguments"))
+ ignore(GetString("tcTypeParameterArityMismatch"))
+ ignore(GetString("tcDefaultStructConstructorCall"))
+ ignore(GetString("tcCouldNotFindIDisposable"))
+ ignore(GetString("tcNonLiteralCannotBeUsedInPattern"))
+ ignore(GetString("tcFieldIsReadonly"))
+ ignore(GetString("tcNameArgumentsMustAppearLast"))
+ ignore(GetString("tcFunctionRequiresExplicitLambda"))
+ ignore(GetString("tcTypeCannotBeEnumerated"))
+ ignore(GetString("tcInvalidMixtureOfRecursiveForms"))
+ ignore(GetString("tcInvalidObjectConstructionExpression"))
+ ignore(GetString("tcInvalidConstraint"))
+ ignore(GetString("tcInvalidConstraintTypeSealed"))
+ ignore(GetString("tcInvalidEnumConstraint"))
+ ignore(GetString("tcInvalidNewConstraint"))
+ ignore(GetString("tcInvalidPropertyType"))
+ ignore(GetString("tcExpectedUnitOfMeasureMarkWithAttribute"))
+ ignore(GetString("tcExpectedTypeParameter"))
+ ignore(GetString("tcExpectedTypeNotUnitOfMeasure"))
+ ignore(GetString("tcExpectedUnitOfMeasureNotType"))
+ ignore(GetString("tcInvalidUnitsOfMeasurePrefix"))
+ ignore(GetString("tcUnitsOfMeasureInvalidInTypeConstructor"))
+ ignore(GetString("tcRequireBuilderMethod"))
+ ignore(GetString("tcTypeHasNoNestedTypes"))
+ ignore(GetString("tcUnexpectedSymbolInTypeExpression"))
+ ignore(GetString("tcTypeParameterInvalidAsTypeConstructor"))
+ ignore(GetString("tcIllegalSyntaxInTypeExpression"))
+ ignore(GetString("tcAnonymousUnitsOfMeasureCannotBeNested"))
+ ignore(GetString("tcAnonymousTypeInvalidInDeclaration"))
+ ignore(GetString("tcUnexpectedSlashInType"))
+ ignore(GetString("tcUnexpectedTypeArguments"))
+ ignore(GetString("tcOptionalArgsOnlyOnMembers"))
+ ignore(GetString("tcNameNotBoundInPattern"))
+ ignore(GetString("tcInvalidNonPrimitiveLiteralInPatternMatch"))
+ ignore(GetString("tcInvalidTypeArgumentUsage"))
+ ignore(GetString("tcRequireActivePatternWithOneResult"))
+ ignore(GetString("tcInvalidArgForParameterizedPattern"))
+ ignore(GetString("tcInvalidIndexIntoActivePatternArray"))
+ ignore(GetString("tcUnionCaseDoesNotTakeArguments"))
+ ignore(GetString("tcUnionCaseRequiresOneArgument"))
+ ignore(GetString("tcUnionCaseExpectsTupledArguments"))
+ ignore(GetString("tcFieldIsNotStatic"))
+ ignore(GetString("tcFieldNotLiteralCannotBeUsedInPattern"))
+ ignore(GetString("tcRequireVarConstRecogOrLiteral"))
+ ignore(GetString("tcInvalidPattern"))
+ ignore(GetString("tcUseWhenPatternGuard"))
+ ignore(GetString("tcIllegalPattern"))
+ ignore(GetString("tcSyntaxErrorUnexpectedQMark"))
+ ignore(GetString("tcExpressionCountMisMatch"))
+ ignore(GetString("tcExprUndelayed"))
+ ignore(GetString("tcExpressionRequiresSequence"))
+ ignore(GetString("tcInvalidObjectExpressionSyntaxForm"))
+ ignore(GetString("tcInvalidObjectSequenceOrRecordExpression"))
+ ignore(GetString("tcInvalidSequenceExpressionSyntaxForm"))
+ ignore(GetString("tcExpressionWithIfRequiresParenthesis"))
+ ignore(GetString("tcUnableToParseFormatString"))
+ ignore(GetString("tcListLiteralMaxSize"))
+ ignore(GetString("tcExpressionFormRequiresObjectConstructor"))
+ ignore(GetString("tcNamedArgumentsCannotBeUsedInMemberTraits"))
+ ignore(GetString("tcNotValidEnumCaseName"))
+ ignore(GetString("tcFieldIsNotMutable"))
+ ignore(GetString("tcConstructRequiresListArrayOrSequence"))
+ ignore(GetString("tcConstructRequiresComputationExpressions"))
+ ignore(GetString("tcConstructRequiresSequenceOrComputations"))
+ ignore(GetString("tcConstructRequiresComputationExpression"))
+ ignore(GetString("tcInvalidIndexerExpression"))
+ ignore(GetString("tcObjectOfIndeterminateTypeUsedRequireTypeConstraint"))
+ ignore(GetString("tcCannotInheritFromVariableType"))
+ ignore(GetString("tcObjectConstructorsOnTypeParametersCannotTakeArguments"))
+ ignore(GetString("tcCompiledNameAttributeMisused"))
+ ignore(GetString("tcNamedTypeRequired"))
+ ignore(GetString("tcInheritCannotBeUsedOnInterfaceType"))
+ ignore(GetString("tcNewCannotBeUsedOnInterfaceType"))
+ ignore(GetString("tcAbstractTypeCannotBeInstantiated"))
+ ignore(GetString("tcIDisposableTypeShouldUseNew"))
+ ignore(GetString("tcSyntaxCanOnlyBeUsedToCreateObjectTypes"))
+ ignore(GetString("tcConstructorRequiresCall"))
+ ignore(GetString("tcUndefinedField"))
+ ignore(GetString("tcFieldRequiresAssignment"))
+ ignore(GetString("tcExtraneousFieldsGivenValues"))
+ ignore(GetString("tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual"))
+ ignore(GetString("tcNoAbstractOrVirtualMemberFound"))
+ ignore(GetString("tcMemberFoundIsNotAbstractOrVirtual"))
+ ignore(GetString("tcArgumentArityMismatch"))
+ ignore(GetString("tcArgumentArityMismatchOneOverload"))
+ ignore(GetString("tcSimpleMethodNameRequired"))
+ ignore(GetString("tcPredefinedTypeCannotBeUsedAsSuperType"))
+ ignore(GetString("tcNewMustBeUsedWithNamedType"))
+ ignore(GetString("tcCannotCreateExtensionOfSealedType"))
+ ignore(GetString("tcNoArgumentsForRecordValue"))
+ ignore(GetString("tcNoInterfaceImplementationForConstructionExpression"))
+ ignore(GetString("tcObjectConstructionCanOnlyBeUsedInClassTypes"))
+ ignore(GetString("tcOnlySimpleBindingsCanBeUsedInConstructionExpressions"))
+ ignore(GetString("tcObjectsMustBeInitializedWithObjectExpression"))
+ ignore(GetString("tcExpectedInterfaceType"))
+ ignore(GetString("tcConstructorForInterfacesDoNotTakeArguments"))
+ ignore(GetString("tcConstructorRequiresArguments"))
+ ignore(GetString("tcNewRequiresObjectConstructor"))
+ ignore(GetString("tcAtLeastOneOverrideIsInvalid"))
+ ignore(GetString("tcNumericLiteralRequiresModule"))
+ ignore(GetString("tcInvalidRecordConstruction"))
+ ignore(GetString("tcExpressionFormRequiresRecordTypes"))
+ ignore(GetString("tcInheritedTypeIsNotObjectModelType"))
+ ignore(GetString("tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes"))
+ ignore(GetString("tcEmptyRecordInvalid"))
+ ignore(GetString("tcTypeIsNotARecordTypeNeedConstructor"))
+ ignore(GetString("tcTypeIsNotARecordType"))
+ ignore(GetString("tcConstructIsAmbiguousInComputationExpression"))
+ ignore(GetString("tcConstructIsAmbiguousInSequenceExpression"))
+ ignore(GetString("tcDoBangIllegalInSequenceExpression"))
+ ignore(GetString("tcUseForInSequenceExpression"))
+ ignore(GetString("tcTryIllegalInSequenceExpression"))
+ ignore(GetString("tcUseYieldBangForMultipleResults"))
+ ignore(GetString("tcInvalidAssignment"))
+ ignore(GetString("tcInvalidUseOfTypeName"))
+ ignore(GetString("tcTypeHasNoAccessibleConstructor"))
+ ignore(GetString("tcInvalidUseOfInterfaceType"))
+ ignore(GetString("tcInvalidUseOfDelegate"))
+ ignore(GetString("tcPropertyIsNotStatic"))
+ ignore(GetString("tcPropertyIsNotReadable"))
+ ignore(GetString("tcLookupMayNotBeUsedHere"))
+ ignore(GetString("tcPropertyIsStatic"))
+ ignore(GetString("tcPropertyCannotBeSet1"))
+ ignore(GetString("tcConstructorsCannotBeFirstClassValues"))
+ ignore(GetString("tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields"))
+ ignore(GetString("tcEventIsStatic"))
+ ignore(GetString("tcEventIsNotStatic"))
+ ignore(GetString("tcNamedArgumentDidNotMatch"))
+ ignore(GetString("tcOverloadsCannotHaveCurriedArguments"))
+ ignore(GetString("tcUnnamedArgumentsDoNotFormPrefix"))
+ ignore(GetString("tcStaticOptimizationConditionalsOnlyForFSharpLibrary"))
+ ignore(GetString("tcFormalArgumentIsNotOptional"))
+ ignore(GetString("tcInvalidOptionalAssignmentToPropertyOrField"))
+ ignore(GetString("tcDelegateConstructorMustBePassed"))
+ ignore(GetString("tcBindingCannotBeUseAndRec"))
+ ignore(GetString("tcVolatileOnlyOnClassLetBindings"))
+ ignore(GetString("tcAttributesAreNotPermittedOnLetBindings"))
+ ignore(GetString("tcDefaultValueAttributeRequiresVal"))
+ ignore(GetString("tcConditionalAttributeRequiresMembers"))
+ ignore(GetString("tcInvalidActivePatternName"))
+ ignore(GetString("tcEntryPointAttributeRequiresFunctionInModule"))
+ ignore(GetString("tcMutableValuesCannotBeInline"))
+ ignore(GetString("tcMutableValuesMayNotHaveGenericParameters"))
+ ignore(GetString("tcMutableValuesSyntax"))
+ ignore(GetString("tcOnlyFunctionsCanBeInline"))
+ ignore(GetString("tcIllegalAttributesForLiteral"))
+ ignore(GetString("tcLiteralCannotBeMutable"))
+ ignore(GetString("tcLiteralCannotBeInline"))
+ ignore(GetString("tcLiteralCannotHaveGenericParameters"))
+ ignore(GetString("tcInvalidConstantExpression"))
+ ignore(GetString("tcTypeIsInaccessible"))
+ ignore(GetString("tcUnexpectedConditionInImportedAssembly"))
+ ignore(GetString("tcUnrecognizedAttributeTarget"))
+ ignore(GetString("tcAttributeIsNotValidForLanguageElementUseDo"))
+ ignore(GetString("tcAttributeIsNotValidForLanguageElement"))
+ ignore(GetString("tcOptionalArgumentsCannotBeUsedInCustomAttribute"))
+ ignore(GetString("tcPropertyCannotBeSet0"))
+ ignore(GetString("tcPropertyOrFieldNotFoundInAttribute"))
+ ignore(GetString("tcCustomAttributeMustBeReferenceType"))
+ ignore(GetString("tcCustomAttributeArgumentMismatch"))
+ ignore(GetString("tcCustomAttributeMustInvokeConstructor"))
+ ignore(GetString("tcAttributeExpressionsMustBeConstructorCalls"))
+ ignore(GetString("tcUnsupportedAttribute"))
+ ignore(GetString("tcInvalidInlineSpecification"))
+ ignore(GetString("tcInvalidUseBinding"))
+ ignore(GetString("tcAbstractMembersIllegalInAugmentation"))
+ ignore(GetString("tcMethodOverridesIllegalHere"))
+ ignore(GetString("tcNoMemberFoundForOverride"))
+ ignore(GetString("tcOverrideArityMismatch"))
+ ignore(GetString("tcDefaultImplementationAlreadyExists"))
+ ignore(GetString("tcDefaultAmbiguous"))
+ ignore(GetString("tcNoPropertyFoundForOverride"))
+ ignore(GetString("tcAbstractPropertyMissingGetOrSet"))
+ ignore(GetString("tcInvalidSignatureForSet"))
+ ignore(GetString("tcNewMemberHidesAbstractMember"))
+ ignore(GetString("tcNewMemberHidesAbstractMemberWithSuffix"))
+ ignore(GetString("tcStaticInitializersIllegalInInterface"))
+ ignore(GetString("tcObjectConstructorsIllegalInInterface"))
+ ignore(GetString("tcMemberOverridesIllegalInInterface"))
+ ignore(GetString("tcConcreteMembersIllegalInInterface"))
+ ignore(GetString("tcConstructorsDisallowedInExceptionAugmentation"))
+ ignore(GetString("tcStructsCannotHaveConstructorWithNoArguments"))
+ ignore(GetString("tcConstructorsIllegalForThisType"))
+ ignore(GetString("tcRecursiveBindingsWithMembersMustBeDirectAugmentation"))
+ ignore(GetString("tcOnlySimplePatternsInLetRec"))
+ ignore(GetString("tcOnlyRecordFieldsAndSimpleLetCanBeMutable"))
+ ignore(GetString("tcMemberIsNotSufficientlyGeneric"))
+ ignore(GetString("tcLiteralAttributeRequiresConstantValue"))
+ ignore(GetString("tcValueInSignatureRequiresLiteralAttribute"))
+ ignore(GetString("tcThreadStaticAndContextStaticMustBeStatic"))
+ ignore(GetString("tcVolatileFieldsMustBeMutable"))
+ ignore(GetString("tcUninitializedValFieldsMustBeMutable"))
+ ignore(GetString("tcStaticValFieldsMustBeMutableAndPrivate"))
+ ignore(GetString("tcFieldRequiresName"))
+ ignore(GetString("tcInvalidNamespaceModuleTypeUnionName"))
+ ignore(GetString("tcIllegalFormForExplicitTypeDeclaration"))
+ ignore(GetString("tcReturnTypesForUnionMustBeSameAsType"))
+ ignore(GetString("tcInvalidEnumerationLiteral"))
+ ignore(GetString("tcTypeIsNotInterfaceType1"))
+ ignore(GetString("tcDuplicateSpecOfInterface"))
+ ignore(GetString("tcFieldValIllegalHere"))
+ ignore(GetString("tcInheritIllegalHere"))
+ ignore(GetString("tcModuleRequiresQualifiedAccess"))
+ ignore(GetString("tcOpenUsedWithPartiallyQualifiedPath"))
+ ignore(GetString("tcLocalClassBindingsCannotBeInline"))
+ ignore(GetString("tcTypeAbbreviationsMayNotHaveMembers"))
+ ignore(GetString("tcTypeAbbreviationsCheckedAtCompileTime"))
+ ignore(GetString("tcEnumerationsMayNotHaveMembers"))
+ ignore(GetString("tcMeasureDeclarationsRequireStaticMembers"))
+ ignore(GetString("tcStructsMayNotContainDoBindings"))
+ ignore(GetString("tcStructsMayNotContainLetBindings"))
+ ignore(GetString("tcStaticLetBindingsRequireClassesWithImplicitConstructors"))
+ ignore(GetString("tcMeasureDeclarationsRequireStaticMembersNotConstructors"))
+ ignore(GetString("tcMemberAndLocalClassBindingHaveSameName"))
+ ignore(GetString("tcTypeAbbreviationsCannotHaveInterfaceDeclaration"))
+ ignore(GetString("tcEnumerationsCannotHaveInterfaceDeclaration"))
+ ignore(GetString("tcTypeIsNotInterfaceType0"))
+ ignore(GetString("tcAllImplementedInterfacesShouldBeDeclared"))
+ ignore(GetString("tcDefaultImplementationForInterfaceHasAlreadyBeenAdded"))
+ ignore(GetString("tcMemberNotPermittedInInterfaceImplementation"))
+ ignore(GetString("tcDeclarationElementNotPermittedInAugmentation"))
+ ignore(GetString("tcTypesCannotContainNestedTypes"))
+ ignore(GetString("tcTypeExceptionOrModule"))
+ ignore(GetString("tcTypeOrModule"))
+ ignore(GetString("tcImplementsIStructuralEquatableExplicitly"))
+ ignore(GetString("tcImplementsIEquatableExplicitly"))
+ ignore(GetString("tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors"))
+ ignore(GetString("tcExceptionAbbreviationsShouldNotHaveArgumentList"))
+ ignore(GetString("tcAbbreviationsFordotNetExceptionsCannotTakeArguments"))
+ ignore(GetString("tcExceptionAbbreviationsMustReferToValidExceptions"))
+ ignore(GetString("tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor"))
+ ignore(GetString("tcNotAnException"))
+ ignore(GetString("tcInvalidModuleName"))
+ ignore(GetString("tcInvalidTypeExtension"))
+ ignore(GetString("tcAttributesOfTypeSpecifyMultipleKindsForType"))
+ ignore(GetString("tcKindOfTypeSpecifiedDoesNotMatchDefinition"))
+ ignore(GetString("tcMeasureDefinitionsCannotHaveTypeParameters"))
+ ignore(GetString("tcTypeRequiresDefinition"))
+ ignore(GetString("tcTypeAbbreviationHasTypeParametersMissingOnType"))
+ ignore(GetString("tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes"))
+ ignore(GetString("tcTypesCannotInheritFromMultipleConcreteTypes"))
+ ignore(GetString("tcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttribute"))
+ ignore(GetString("tcAllowNullTypesMayOnlyInheritFromAllowNullTypes"))
+ ignore(GetString("tcGenericTypesCannotHaveStructLayout"))
+ ignore(GetString("tcOnlyStructsCanHaveStructLayout"))
+ ignore(GetString("tcRepresentationOfTypeHiddenBySignature"))
+ ignore(GetString("tcOnlyClassesCanHaveAbstract"))
+ ignore(GetString("tcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasure"))
+ ignore(GetString("tcOverridesCannotHaveVisibilityDeclarations"))
+ ignore(GetString("tcTypesAreAlwaysSealedDU"))
+ ignore(GetString("tcTypesAreAlwaysSealedRecord"))
+ ignore(GetString("tcTypesAreAlwaysSealedAssemblyCode"))
+ ignore(GetString("tcTypesAreAlwaysSealedStruct"))
+ ignore(GetString("tcTypesAreAlwaysSealedDelegate"))
+ ignore(GetString("tcTypesAreAlwaysSealedEnum"))
+ ignore(GetString("tcInterfaceTypesAndDelegatesCannotContainFields"))
+ ignore(GetString("tcAbbreviatedTypesCannotBeSealed"))
+ ignore(GetString("tcCannotInheritFromSealedType"))
+ ignore(GetString("tcCannotInheritFromInterfaceType"))
+ ignore(GetString("tcStructTypesCannotContainAbstractMembers"))
+ ignore(GetString("tcInterfaceTypesCannotBeSealed"))
+ ignore(GetString("tcInvalidDelegateSpecification"))
+ ignore(GetString("tcDelegatesCannotBeCurried"))
+ ignore(GetString("tcInvalidTypeForLiteralEnumeration"))
+ ignore(GetString("tcTypeDefinitionIsCyclic"))
+ ignore(GetString("tcTypeDefinitionIsCyclicThroughInheritance"))
+ ignore(GetString("tcReservedSyntaxForAugmentation"))
+ ignore(GetString("tcMembersThatExtendInterfaceMustBePlacedInSeparateModule"))
+ ignore(GetString("tcDeclaredTypeParametersForExtensionDoNotMatchOriginal"))
+ ignore(GetString("tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit"))
+ ignore(GetString("tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers"))
+ ignore(GetString("tcInheritDeclarationMissingArguments"))
+ ignore(GetString("tcInheritConstructionCallNotPartOfImplicitSequence"))
+ ignore(GetString("tcLetAndDoRequiresImplicitConstructionSequence"))
+ ignore(GetString("tcTypeAbbreviationsCannotHaveAugmentations"))
+ ignore(GetString("tcModuleAbbreviationForNamespace"))
+ ignore(GetString("tcTypeUsedInInvalidWay"))
+ ignore(GetString("tcMemberUsedInInvalidWay"))
+ ignore(GetString("tcAttributeAutoOpenWasIgnored"))
+ ignore(GetString("ilUndefinedValue"))
+ ignore(GetString("ilLabelNotFound"))
+ ignore(GetString("ilIncorrectNumberOfTypeArguments"))
+ ignore(GetString("ilDynamicInvocationNotSupported"))
+ ignore(GetString("ilAddressOfLiteralFieldIsInvalid"))
+ ignore(GetString("ilAddressOfValueHereIsInvalid"))
+ ignore(GetString("ilCustomMarshallersCannotBeUsedInFSharp"))
+ ignore(GetString("ilMarshalAsAttributeCannotBeDecoded"))
+ ignore(GetString("ilSignatureForExternalFunctionContainsTypeParameters"))
+ ignore(GetString("ilDllImportAttributeCouldNotBeDecoded"))
+ ignore(GetString("ilLiteralFieldsCannotBeSet"))
+ ignore(GetString("ilStaticMethodIsNotLambda"))
+ ignore(GetString("ilMutableVariablesCannotEscapeMethod"))
+ ignore(GetString("ilUnexpectedUnrealizedValue"))
+ ignore(GetString("ilMainModuleEmpty"))
+ ignore(GetString("ilTypeCannotBeUsedForLiteralField"))
+ ignore(GetString("ilUnexpectedGetSetAnnotation"))
+ ignore(GetString("ilFieldOffsetAttributeCouldNotBeDecoded"))
+ ignore(GetString("ilStructLayoutAttributeCouldNotBeDecoded"))
+ ignore(GetString("ilDefaultAugmentationAttributeCouldNotBeDecoded"))
+ ignore(GetString("ilReflectedDefinitionsCannotUseSliceOperator"))
+ ignore(GetString("optsProblemWithCodepage"))
+ ignore(GetString("optsCopyright"))
+ ignore(GetString("optsCopyrightCommunity"))
+ ignore(GetString("optsNameOfOutputFile"))
+ ignore(GetString("optsBuildConsole"))
+ ignore(GetString("optsBuildWindows"))
+ ignore(GetString("optsBuildLibrary"))
+ ignore(GetString("optsBuildModule"))
+ ignore(GetString("optsDelaySign"))
+ ignore(GetString("optsPublicSign"))
+ ignore(GetString("optsWriteXml"))
+ ignore(GetString("optsStrongKeyFile"))
+ ignore(GetString("optsStrongKeyContainer"))
+ ignore(GetString("optsPlatform"))
+ ignore(GetString("optsNoOpt"))
+ ignore(GetString("optsNoInterface"))
+ ignore(GetString("optsSig"))
+ ignore(GetString("optsReference"))
+ ignore(GetString("optsWin32res"))
+ ignore(GetString("optsWin32manifest"))
+ ignore(GetString("optsNowin32manifest"))
+ ignore(GetString("optsEmbedAllSource"))
+ ignore(GetString("optsEmbedSource"))
+ ignore(GetString("optsSourceLink"))
+ ignore(GetString("optsEmbeddedSourceRequirePortablePDBs"))
+ ignore(GetString("optsSourceLinkRequirePortablePDBs"))
+ ignore(GetString("srcFileTooLarge"))
+ ignore(GetString("optsResource"))
+ ignore(GetString("optsLinkresource"))
+ ignore(GetString("optsDebugPM"))
+ ignore(GetString("optsDebug"))
+ ignore(GetString("optsOptimize"))
+ ignore(GetString("optsTailcalls"))
+ ignore(GetString("optsDeterministic"))
+ ignore(GetString("optsCrossoptimize"))
+ ignore(GetString("optsWarnaserrorPM"))
+ ignore(GetString("optsWarnaserror"))
+ ignore(GetString("optsWarn"))
+ ignore(GetString("optsNowarn"))
+ ignore(GetString("optsWarnOn"))
+ ignore(GetString("optsChecked"))
+ ignore(GetString("optsDefine"))
+ ignore(GetString("optsMlcompatibility"))
+ ignore(GetString("optsNologo"))
+ ignore(GetString("optsHelp"))
+ ignore(GetString("optsResponseFile"))
+ ignore(GetString("optsCodepage"))
+ ignore(GetString("optsUtf8output"))
+ ignore(GetString("optsFullpaths"))
+ ignore(GetString("optsLib"))
+ ignore(GetString("optsBaseaddress"))
+ ignore(GetString("optsNoframework"))
+ ignore(GetString("optsStandalone"))
+ ignore(GetString("optsStaticlink"))
+ ignore(GetString("optsResident"))
+ ignore(GetString("optsPdb"))
+ ignore(GetString("optsSimpleresolution"))
+ ignore(GetString("optsUnrecognizedTarget"))
+ ignore(GetString("optsUnrecognizedDebugType"))
+ ignore(GetString("optsInvalidWarningLevel"))
+ ignore(GetString("optsShortFormOf"))
+ ignore(GetString("optsClirootDeprecatedMsg"))
+ ignore(GetString("optsClirootDescription"))
+ ignore(GetString("optsHelpBannerOutputFiles"))
+ ignore(GetString("optsHelpBannerInputFiles"))
+ ignore(GetString("optsHelpBannerResources"))
+ ignore(GetString("optsHelpBannerCodeGen"))
+ ignore(GetString("optsHelpBannerAdvanced"))
+ ignore(GetString("optsHelpBannerMisc"))
+ ignore(GetString("optsHelpBannerLanguage"))
+ ignore(GetString("optsHelpBannerErrsAndWarns"))
+ ignore(GetString("optsUnknownArgumentToTheTestSwitch"))
+ ignore(GetString("optsUnknownPlatform"))
+ ignore(GetString("optsInternalNoDescription"))
+ ignore(GetString("optsDCLONoDescription"))
+ ignore(GetString("optsDCLODeprecatedSuggestAlternative"))
+ ignore(GetString("optsDCLOHtmlDoc"))
+ ignore(GetString("optsConsoleColors"))
+ ignore(GetString("optsUseHighEntropyVA"))
+ ignore(GetString("optsSubSystemVersion"))
+ ignore(GetString("optsTargetProfile"))
+ ignore(GetString("optsEmitDebugInfoInQuotations"))
+ ignore(GetString("optsPreferredUiLang"))
+ ignore(GetString("optsNoCopyFsharpCore"))
+ ignore(GetString("optsInvalidSubSystemVersion"))
+ ignore(GetString("optsInvalidTargetProfile"))
+ ignore(GetString("typeInfoFullName"))
+ ignore(GetString("typeInfoOtherOverloads"))
+ ignore(GetString("typeInfoUnionCase"))
+ ignore(GetString("typeInfoActivePatternResult"))
+ ignore(GetString("typeInfoActiveRecognizer"))
+ ignore(GetString("typeInfoField"))
+ ignore(GetString("typeInfoEvent"))
+ ignore(GetString("typeInfoProperty"))
+ ignore(GetString("typeInfoExtension"))
+ ignore(GetString("typeInfoCustomOperation"))
+ ignore(GetString("typeInfoArgument"))
+ ignore(GetString("typeInfoPatternVariable"))
+ ignore(GetString("typeInfoNamespace"))
+ ignore(GetString("typeInfoModule"))
+ ignore(GetString("typeInfoNamespaceOrModule"))
+ ignore(GetString("typeInfoFromFirst"))
+ ignore(GetString("typeInfoFromNext"))
+ ignore(GetString("typeInfoGeneratedProperty"))
+ ignore(GetString("typeInfoGeneratedType"))
+ ignore(GetString("assemblyResolutionFoundByAssemblyFoldersKey"))
+ ignore(GetString("assemblyResolutionFoundByAssemblyFoldersExKey"))
+ ignore(GetString("assemblyResolutionNetFramework"))
+ ignore(GetString("assemblyResolutionGAC"))
+ ignore(GetString("recursiveClassHierarchy"))
+ ignore(GetString("InvalidRecursiveReferenceToAbstractSlot"))
+ ignore(GetString("eventHasNonStandardType"))
+ ignore(GetString("typeIsNotAccessible"))
+ ignore(GetString("unionCasesAreNotAccessible"))
+ ignore(GetString("valueIsNotAccessible"))
+ ignore(GetString("unionCaseIsNotAccessible"))
+ ignore(GetString("fieldIsNotAccessible"))
+ ignore(GetString("structOrClassFieldIsNotAccessible"))
+ ignore(GetString("experimentalConstruct"))
+ ignore(GetString("noInvokeMethodsFound"))
+ ignore(GetString("moreThanOneInvokeMethodFound"))
+ ignore(GetString("delegatesNotAllowedToHaveCurriedSignatures"))
+ ignore(GetString("tlrUnexpectedTExpr"))
+ ignore(GetString("tlrLambdaLiftingOptimizationsNotApplied"))
+ ignore(GetString("lexhlpIdentifiersContainingAtSymbolReserved"))
+ ignore(GetString("lexhlpIdentifierReserved"))
+ ignore(GetString("patcMissingVariable"))
+ ignore(GetString("patcPartialActivePatternsGenerateOneResult"))
+ ignore(GetString("impTypeRequiredUnavailable"))
+ ignore(GetString("impReferencedTypeCouldNotBeFoundInAssembly"))
+ ignore(GetString("impNotEnoughTypeParamsInScopeWhileImporting"))
+ ignore(GetString("impReferenceToDllRequiredByAssembly"))
+ ignore(GetString("impImportedAssemblyUsesNotPublicType"))
+ ignore(GetString("optValueMarkedInlineButIncomplete"))
+ ignore(GetString("optValueMarkedInlineButWasNotBoundInTheOptEnv"))
+ ignore(GetString("optLocalValueNotFoundDuringOptimization"))
+ ignore(GetString("optValueMarkedInlineHasUnexpectedValue"))
+ ignore(GetString("optValueMarkedInlineCouldNotBeInlined"))
+ ignore(GetString("optFailedToInlineValue"))
+ ignore(GetString("optRecursiveValValue"))
+ ignore(GetString("lexfltIncorrentIndentationOfIn"))
+ ignore(GetString("lexfltTokenIsOffsideOfContextStartedEarlier"))
+ ignore(GetString("lexfltSeparatorTokensOfPatternMatchMisaligned"))
+ ignore(GetString("nrInvalidModuleExprType"))
+ ignore(GetString("nrTypeInstantiationNeededToDisambiguateTypesWithSameName"))
+ ignore(GetString("nrTypeInstantiationIsMissingAndCouldNotBeInferred"))
+ ignore(GetString("nrGlobalUsedOnlyAsFirstName"))
+ ignore(GetString("nrIsNotConstructorOrLiteral"))
+ ignore(GetString("nrUnexpectedEmptyLongId"))
+ ignore(GetString("nrRecordDoesNotContainSuchLabel"))
+ ignore(GetString("nrInvalidFieldLabel"))
+ ignore(GetString("nrInvalidExpression"))
+ ignore(GetString("nrNoConstructorsAvailableForType"))
+ ignore(GetString("nrUnionTypeNeedsQualifiedAccess"))
+ ignore(GetString("nrRecordTypeNeedsQualifiedAccess"))
+ ignore(GetString("ilwriteErrorCreatingPdb"))
+ ignore(GetString("lexOutsideIntegerRange"))
+ ignore(GetString("lexCharNotAllowedInOperatorNames"))
+ ignore(GetString("lexUnexpectedChar"))
+ ignore(GetString("lexByteArrayCannotEncode"))
+ ignore(GetString("lexIdentEndInMarkReserved"))
+ ignore(GetString("lexOutsideEightBitSigned"))
+ ignore(GetString("lexOutsideEightBitSignedHex"))
+ ignore(GetString("lexOutsideEightBitUnsigned"))
+ ignore(GetString("lexOutsideSixteenBitSigned"))
+ ignore(GetString("lexOutsideSixteenBitUnsigned"))
+ ignore(GetString("lexOutsideThirtyTwoBitSigned"))
+ ignore(GetString("lexOutsideThirtyTwoBitUnsigned"))
+ ignore(GetString("lexOutsideSixtyFourBitSigned"))
+ ignore(GetString("lexOutsideSixtyFourBitUnsigned"))
+ ignore(GetString("lexOutsideNativeSigned"))
+ ignore(GetString("lexOutsideNativeUnsigned"))
+ ignore(GetString("lexInvalidFloat"))
+ ignore(GetString("lexOusideDecimal"))
+ ignore(GetString("lexOusideThirtyTwoBitFloat"))
+ ignore(GetString("lexInvalidNumericLiteral"))
+ ignore(GetString("lexInvalidByteLiteral"))
+ ignore(GetString("lexInvalidCharLiteral"))
+ ignore(GetString("lexThisUnicodeOnlyInStringLiterals"))
+ ignore(GetString("lexTokenReserved"))
+ ignore(GetString("lexTabsNotAllowed"))
+ ignore(GetString("lexInvalidLineNumber"))
+ ignore(GetString("lexHashIfMustBeFirst"))
+ ignore(GetString("lexHashElseNoMatchingIf"))
+ ignore(GetString("lexHashEndifRequiredForElse"))
+ ignore(GetString("lexHashElseMustBeFirst"))
+ ignore(GetString("lexHashEndingNoMatchingIf"))
+ ignore(GetString("lexHashEndifMustBeFirst"))
+ ignore(GetString("lexHashIfMustHaveIdent"))
+ ignore(GetString("lexWrongNestedHashEndif"))
+ ignore(GetString("lexHashBangMustBeFirstInFile"))
+ ignore(GetString("pplexExpectedSingleLineComment"))
+ ignore(GetString("memberOperatorDefinitionWithNoArguments"))
+ ignore(GetString("memberOperatorDefinitionWithNonPairArgument"))
+ ignore(GetString("memberOperatorDefinitionWithCurriedArguments"))
+ ignore(GetString("tcFSharpCoreRequiresExplicit"))
+ ignore(GetString("tcStructuralComparisonNotSatisfied1"))
+ ignore(GetString("tcStructuralComparisonNotSatisfied2"))
+ ignore(GetString("tcNoComparisonNeeded1"))
+ ignore(GetString("tcNoComparisonNeeded2"))
+ ignore(GetString("tcNoEqualityNeeded1"))
+ ignore(GetString("tcNoEqualityNeeded2"))
+ ignore(GetString("tcStructuralEqualityNotSatisfied1"))
+ ignore(GetString("tcStructuralEqualityNotSatisfied2"))
+ ignore(GetString("tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly"))
+ ignore(GetString("chkUnusedValue"))
+ ignore(GetString("chkUnusedThisVariable"))
+ ignore(GetString("parsGetterAtMostOneArgument"))
+ ignore(GetString("parsSetterAtMostTwoArguments"))
+ ignore(GetString("parsInvalidProperty"))
+ ignore(GetString("parsIndexerPropertyRequiresAtLeastOneArgument"))
+ ignore(GetString("tastInvalidAddressOfMutableAcrossAssemblyBoundary"))
+ ignore(GetString("parsNonAdjacentTypars"))
+ ignore(GetString("parsNonAdjacentTyargs"))
+ ignore(GetString("parsNonAtomicType"))
+ ignore(GetString("tastUndefinedItemRefModuleNamespace"))
+ ignore(GetString("tastUndefinedItemRefVal"))
+ ignore(GetString("tastUndefinedItemRefModuleNamespaceType"))
+ ignore(GetString("tcInvalidUseNullAsTrueValue"))
+ ignore(GetString("tcParameterInferredByref"))
+ ignore(GetString("tcNonUniformMemberUse"))
+ ignore(GetString("tcAttribArgsDiffer"))
+ ignore(GetString("tcCannotCallAbstractBaseMember"))
+ ignore(GetString("typrelCannotResolveAmbiguityInUnmanaged"))
+ ignore(GetString("mlCompatMessage"))
+ ignore(GetString("ilFieldDoesNotHaveValidOffsetForStructureLayout"))
+ ignore(GetString("tcInterfacesShouldUseInheritNotInterface"))
+ ignore(GetString("parsInvalidPrefixOperator"))
+ ignore(GetString("parsInvalidPrefixOperatorDefinition"))
+ ignore(GetString("buildCompilingExtensionIsForML"))
+ ignore(GetString("lexIndentOffForML"))
+ ignore(GetString("activePatternIdentIsNotFunctionTyped"))
+ ignore(GetString("activePatternChoiceHasFreeTypars"))
+ ignore(GetString("ilFieldHasOffsetForSequentialLayout"))
+ ignore(GetString("tcOptionalArgsMustComeAfterNonOptionalArgs"))
+ ignore(GetString("tcConditionalAttributeUsage"))
+ ignore(GetString("tcMemberOperatorDefinitionInExtrinsic"))
+ ignore(GetString("ilwriteMDBFileNameCannotBeChangedWarning"))
+ ignore(GetString("ilwriteMDBMemberMissing"))
+ ignore(GetString("ilwriteErrorCreatingMdb"))
+ ignore(GetString("tcUnionCaseNameConflictsWithGeneratedType"))
+ ignore(GetString("chkNoReflectedDefinitionOnStructMember"))
+ ignore(GetString("tcDllImportNotAllowed"))
+ ignore(GetString("buildExplicitCoreLibRequiresNoFramework"))
+ ignore(GetString("buildExpectedSigdataFile"))
+ ignore(GetString("buildExpectedFileAlongSideFSharpCore"))
+ ignore(GetString("buildUnexpectedFileNameCharacter"))
+ ignore(GetString("tcInvalidUseBangBinding"))
+ ignore(GetString("crefNoInnerGenericsInQuotations"))
+ ignore(GetString("tcEnumTypeCannotBeEnumerated"))
+ ignore(GetString("parsEofInTripleQuoteString"))
+ ignore(GetString("parsEofInTripleQuoteStringInComment"))
+ ignore(GetString("tcTypeTestLosesMeasures"))
+ ignore(GetString("parsMissingTypeArgs"))
+ ignore(GetString("parsMissingGreaterThan"))
+ ignore(GetString("parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString"))
+ ignore(GetString("parsErrorParsingAsOperatorName"))
+ ignore(GetString("lexInvalidUnicodeLiteral"))
+ ignore(GetString("tcCallerInfoWrongType"))
+ ignore(GetString("tcCallerInfoNotOptional"))
+ ignore(GetString("toolLocationHelperUnsupportedFrameworkVersion"))
+ ignore(GetString("ilSignInvalidMagicValue"))
+ ignore(GetString("ilSignBadImageFormat"))
+ ignore(GetString("ilSignPrivateKeyExpected"))
+ ignore(GetString("ilSignRsaKeyExpected"))
+ ignore(GetString("ilSignInvalidBitLen"))
+ ignore(GetString("ilSignInvalidRSAParams"))
+ ignore(GetString("ilSignInvalidAlgId"))
+ ignore(GetString("ilSignInvalidSignatureSize"))
+ ignore(GetString("ilSignNoSignatureDirectory"))
+ ignore(GetString("ilSignInvalidPKBlob"))
+ ignore(GetString("fscTooManyErrors"))
+ ignore(GetString("docfileNoXmlSuffix"))
+ ignore(GetString("fscNoImplementationFiles"))
+ ignore(GetString("fscBadAssemblyVersion"))
+ ignore(GetString("fscTwoResourceManifests"))
+ ignore(GetString("fscQuotationLiteralsStaticLinking"))
+ ignore(GetString("fscQuotationLiteralsStaticLinking0"))
+ ignore(GetString("fscStaticLinkingNoEXE"))
+ ignore(GetString("fscStaticLinkingNoMixedDLL"))
+ ignore(GetString("fscIgnoringMixedWhenLinking"))
+ ignore(GetString("fscAssumeStaticLinkContainsNoDependencies"))
+ ignore(GetString("fscAssemblyNotFoundInDependencySet"))
+ ignore(GetString("fscKeyFileCouldNotBeOpened"))
+ ignore(GetString("fscProblemWritingBinary"))
+ ignore(GetString("fscAssemblyVersionAttributeIgnored"))
+ ignore(GetString("fscAssemblyCultureAttributeError"))
+ ignore(GetString("fscDelaySignWarning"))
+ ignore(GetString("fscKeyFileWarning"))
+ ignore(GetString("fscKeyNameWarning"))
+ ignore(GetString("fscReferenceOnCommandLine"))
+ ignore(GetString("fscRemotingError"))
+ ignore(GetString("pathIsInvalid"))
+ ignore(GetString("fscResxSourceFileDeprecated"))
+ ignore(GetString("fscStaticLinkingNoProfileMismatches"))
+ ignore(GetString("fscAssemblyWildcardAndDeterminism"))
+ ignore(GetString("fscDeterministicDebugRequiresPortablePdb"))
+ ignore(GetString("etIllegalCharactersInNamespaceName"))
+ ignore(GetString("etNullOrEmptyMemberName"))
+ ignore(GetString("etNullMember"))
+ ignore(GetString("etNullMemberDeclaringType"))
+ ignore(GetString("etNullMemberDeclaringTypeDifferentFromProvidedType"))
+ ignore(GetString("etHostingAssemblyFoundWithoutHosts"))
+ ignore(GetString("etEmptyNamespaceOfTypeNotAllowed"))
+ ignore(GetString("etEmptyNamespaceNotAllowed"))
+ ignore(GetString("etMustNotBeGeneric"))
+ ignore(GetString("etMustNotBeAnArray"))
+ ignore(GetString("etMethodHasRequirements"))
+ ignore(GetString("etUnsupportedMemberKind"))
+ ignore(GetString("etPropertyCanReadButHasNoGetter"))
+ ignore(GetString("etPropertyHasGetterButNoCanRead"))
+ ignore(GetString("etPropertyCanWriteButHasNoSetter"))
+ ignore(GetString("etPropertyHasSetterButNoCanWrite"))
+ ignore(GetString("etOneOrMoreErrorsSeenDuringExtensionTypeSetting"))
+ ignore(GetString("etUnexpectedExceptionFromProvidedTypeMember"))
+ ignore(GetString("etUnsupportedConstantType"))
+ ignore(GetString("etUnsupportedProvidedExpression"))
+ ignore(GetString("etProvidedTypeHasUnexpectedName"))
+ ignore(GetString("etEventNoAdd"))
+ ignore(GetString("etEventNoRemove"))
+ ignore(GetString("etProviderHasWrongDesignerAssembly"))
+ ignore(GetString("etProviderDoesNotHaveValidConstructor"))
+ ignore(GetString("etProviderError"))
+ ignore(GetString("etIncorrectParameterExpression"))
+ ignore(GetString("etIncorrectProvidedMethod"))
+ ignore(GetString("etIncorrectProvidedConstructor"))
+ ignore(GetString("etDirectReferenceToGeneratedTypeNotAllowed"))
+ ignore(GetString("etProvidedTypeHasUnexpectedPath"))
+ ignore(GetString("etUnexpectedNullFromProvidedTypeMember"))
+ ignore(GetString("etUnexpectedExceptionFromProvidedMemberMember"))
+ ignore(GetString("etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters"))
+ ignore(GetString("etInvalidStaticArgument"))
+ ignore(GetString("etErrorApplyingStaticArgumentsToType"))
+ ignore(GetString("etUnknownStaticArgumentKind"))
+ ignore(GetString("invalidNamespaceForProvidedType"))
+ ignore(GetString("invalidFullNameForProvidedType"))
+ ignore(GetString("etProviderReturnedNull"))
+ ignore(GetString("etTypeProviderConstructorException"))
+ ignore(GetString("etNullProvidedExpression"))
+ ignore(GetString("etProvidedAppliedTypeHadWrongName"))
+ ignore(GetString("etProvidedAppliedMethodHadWrongName"))
+ ignore(GetString("tcTypeTestLossy"))
+ ignore(GetString("tcTypeCastErased"))
+ ignore(GetString("tcTypeTestErased"))
+ ignore(GetString("tcCannotInheritFromErasedType"))
+ ignore(GetString("etInvalidTypeProviderAssemblyName"))
+ ignore(GetString("tcInvalidMemberNameCtor"))
+ ignore(GetString("tcInferredGenericTypeGivesRiseToInconsistency"))
+ ignore(GetString("tcInvalidTypeArgumentCount"))
+ ignore(GetString("tcCannotOverrideSealedMethod"))
+ ignore(GetString("etProviderErrorWithContext"))
+ ignore(GetString("etProvidedTypeWithNameException"))
+ ignore(GetString("etProvidedTypeWithNullOrEmptyName"))
+ ignore(GetString("etIllegalCharactersInTypeName"))
+ ignore(GetString("tcJoinMustUseSimplePattern"))
+ ignore(GetString("tcMissingCustomOperation"))
+ ignore(GetString("etBadUnnamedStaticArgs"))
+ ignore(GetString("etStaticParameterRequiresAValue"))
+ ignore(GetString("etNoStaticParameterWithName"))
+ ignore(GetString("etStaticParameterAlreadyHasValue"))
+ ignore(GetString("etMultipleStaticParameterWithName"))
+ ignore(GetString("tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings"))
+ ignore(GetString("tcCustomOperationMayNotBeUsedHere"))
+ ignore(GetString("tcCustomOperationMayNotBeOverloaded"))
+ ignore(GetString("tcIfThenElseMayNotBeUsedWithinQueries"))
+ ignore(GetString("ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen"))
+ ignore(GetString("etProvidedTypeReferenceMissingArgument"))
+ ignore(GetString("etProvidedTypeReferenceInvalidText"))
+ ignore(GetString("tcCustomOperationNotUsedCorrectly"))
+ ignore(GetString("tcCustomOperationNotUsedCorrectly2"))
+ ignore(GetString("customOperationTextLikeJoin"))
+ ignore(GetString("customOperationTextLikeGroupJoin"))
+ ignore(GetString("customOperationTextLikeZip"))
+ ignore(GetString("tcBinaryOperatorRequiresVariable"))
+ ignore(GetString("tcOperatorIncorrectSyntax"))
+ ignore(GetString("tcBinaryOperatorRequiresBody"))
+ ignore(GetString("tcCustomOperationHasIncorrectArgCount"))
+ ignore(GetString("parsExpectedExpressionAfterToken"))
+ ignore(GetString("parsExpectedTypeAfterToken"))
+ ignore(GetString("parsUnmatchedLBrackLess"))
+ ignore(GetString("parsUnexpectedEndOfFileMatch"))
+ ignore(GetString("parsUnexpectedEndOfFileTry"))
+ ignore(GetString("parsUnexpectedEndOfFileWhile"))
+ ignore(GetString("parsUnexpectedEndOfFileFor"))
+ ignore(GetString("parsUnexpectedEndOfFileWith"))
+ ignore(GetString("parsUnexpectedEndOfFileThen"))
+ ignore(GetString("parsUnexpectedEndOfFileElse"))
+ ignore(GetString("parsUnexpectedEndOfFileFunBody"))
+ ignore(GetString("parsUnexpectedEndOfFileTypeArgs"))
+ ignore(GetString("parsUnexpectedEndOfFileTypeSignature"))
+ ignore(GetString("parsUnexpectedEndOfFileTypeDefinition"))
+ ignore(GetString("parsUnexpectedEndOfFileObjectMembers"))
+ ignore(GetString("parsUnexpectedEndOfFileDefinition"))
+ ignore(GetString("parsUnexpectedEndOfFileExpression"))
+ ignore(GetString("parsExpectedNameAfterToken"))
+ ignore(GetString("parsUnmatchedLet"))
+ ignore(GetString("parsUnmatchedLetBang"))
+ ignore(GetString("parsUnmatchedUseBang"))
+ ignore(GetString("parsUnmatchedUse"))
+ ignore(GetString("parsWhileDoExpected"))
+ ignore(GetString("parsForDoExpected"))
+ ignore(GetString("tcInvalidRelationInJoin"))
+ ignore(GetString("typeInfoCallsWord"))
+ ignore(GetString("impInvalidNumberOfGenericArguments"))
+ ignore(GetString("impInvalidMeasureArgument1"))
+ ignore(GetString("impInvalidMeasureArgument2"))
+ ignore(GetString("etPropertyNeedsCanWriteOrCanRead"))
+ ignore(GetString("tcIntoNeedsRestOfQuery"))
+ ignore(GetString("tcOperatorDoesntAcceptInto"))
+ ignore(GetString("tcCustomOperationInvalid"))
+ ignore(GetString("tcThisTypeMayNotHaveACLIMutableAttribute"))
+ ignore(GetString("tcAutoPropertyRequiresImplicitConstructionSequence"))
+ ignore(GetString("parsMutableOnAutoPropertyShouldBeGetSet"))
+ ignore(GetString("parsMutableOnAutoPropertyShouldBeGetSetNotJustSet"))
+ ignore(GetString("chkNoByrefsOfByrefs"))
+ ignore(GetString("tastopsMaxArrayThirtyTwo"))
+ ignore(GetString("tcNoIntegerForLoopInQuery"))
+ ignore(GetString("tcNoWhileInQuery"))
+ ignore(GetString("tcNoTryFinallyInQuery"))
+ ignore(GetString("tcUseMayNotBeUsedInQueries"))
+ ignore(GetString("tcBindMayNotBeUsedInQueries"))
+ ignore(GetString("tcReturnMayNotBeUsedInQueries"))
+ ignore(GetString("tcUnrecognizedQueryOperator"))
+ ignore(GetString("tcTryWithMayNotBeUsedInQueries"))
+ ignore(GetString("tcNonSimpleLetBindingInQuery"))
+ ignore(GetString("etTooManyStaticParameters"))
+ ignore(GetString("infosInvalidProvidedLiteralValue"))
+ ignore(GetString("invalidPlatformTarget"))
+ ignore(GetString("tcThisValueMayNotBeInlined"))
+ ignore(GetString("etErasedTypeUsedInGeneration"))
+ ignore(GetString("tcUnrecognizedQueryBinaryOperator"))
+ ignore(GetString("crefNoSetOfHole"))
+ ignore(GetString("nicePrintOtherOverloads1"))
+ ignore(GetString("nicePrintOtherOverloadsN"))
+ ignore(GetString("erasedTo"))
+ ignore(GetString("parsUnfinishedExpression"))
+ ignore(GetString("parsAttributeOnIncompleteCode"))
+ ignore(GetString("parsTypeNameCannotBeEmpty"))
+ ignore(GetString("buildProblemReadingAssembly"))
+ ignore(GetString("tcTPFieldMustBeLiteral"))
+ ignore(GetString("loadingDescription"))
+ ignore(GetString("descriptionUnavailable"))
+ ignore(GetString("chkTyparMultipleClassConstraints"))
+ ignore(GetString("tcMatchMayNotBeUsedWithQuery"))
+ ignore(GetString("memberOperatorDefinitionWithNonTripleArgument"))
+ ignore(GetString("cannotResolveNullableOperators"))
+ ignore(GetString("tcOperatorRequiresIn"))
+ ignore(GetString("parsIllegalMemberVarInObjectImplementation"))
+ ignore(GetString("tcEmptyCopyAndUpdateRecordInvalid"))
+ ignore(GetString("parsUnderscoreInvalidFieldName"))
+ ignore(GetString("tcGeneratedTypesShouldBeInternalOrPrivate"))
+ ignore(GetString("chkGetterAndSetterHaveSamePropertyType"))
+ ignore(GetString("tcRuntimeSuppliedMethodCannotBeUsedInUserCode"))
+ ignore(GetString("tcUnionCaseConstructorDoesNotHaveFieldWithGivenName"))
+ ignore(GetString("tcUnionCaseFieldCannotBeUsedMoreThanOnce"))
+ ignore(GetString("tcFieldNameIsUsedModeThanOnce"))
+ ignore(GetString("tcFieldNameConflictsWithGeneratedNameForAnonymousField"))
+ ignore(GetString("tastConstantExpressionOverflow"))
+ ignore(GetString("tcIllegalStructTypeForConstantExpression"))
+ ignore(GetString("fscSystemRuntimeInteropServicesIsRequired"))
+ ignore(GetString("abImplicitHeapAllocation"))
+ ignore(GetString("estApplyStaticArgumentsForMethodNotImplemented"))
+ ignore(GetString("etErrorApplyingStaticArgumentsToMethod"))
+ ignore(GetString("pplexUnexpectedChar"))
+ ignore(GetString("ppparsUnexpectedToken"))
+ ignore(GetString("ppparsIncompleteExpression"))
+ ignore(GetString("ppparsMissingToken"))
+ ignore(GetString("pickleMissingDefinition"))
+ ignore(GetString("checkNotSufficientlyGenericBecauseOfScope"))
+ ignore(GetString("checkNotSufficientlyGenericBecauseOfScopeAnon"))
+ ignore(GetString("checkRaiseFamilyFunctionArgumentCount"))
+ ignore(GetString("checkLowercaseLiteralBindingInPattern"))
+ ignore(GetString("tcLiteralDoesNotTakeArguments"))
+ ignore(GetString("tcConstructorsIllegalInAugmentation"))
+ ignore(GetString("optsInvalidResponseFile"))
+ ignore(GetString("optsResponseFileNotFound"))
+ ignore(GetString("optsResponseFileNameInvalid"))
+ ignore(GetString("fsharpCoreNotFoundToBeCopied"))
+ ignore(GetString("tcTupleStructMismatch"))
+ ignore(GetString("etMissingStaticArgumentsToMethod"))
+ ignore(GetString("considerUpcast"))
+ ignore(GetString("considerUpcastOperator"))
+ ignore(GetString("tcRecImplied"))
+ ignore(GetString("tcOpenFirstInMutRec"))
+ ignore(GetString("tcModuleAbbrevFirstInMutRec"))
+ ignore(GetString("tcUnsupportedMutRecDecl"))
+ ignore(GetString("parsInvalidUseOfRec"))
+ ignore(GetString("tcStructUnionMultiCaseDistinctFields"))
+ ignore(GetString("CallerMemberNameIsOverriden"))
+ ignore(GetString("tcFixedNotAllowed"))
+ ignore(GetString("tcCouldNotFindOffsetToStringData"))
+ ignore(GetString("chkNoByrefReturnOfLocal"))
+ ignore(GetString("tcNamedActivePattern"))
+ ignore(GetString("DefaultParameterValueNotAppropriateForArgument"))
+ ignore(GetString("tcGlobalsSystemTypeNotFound"))
+ ignore(GetString("typrelMemberHasMultiplePossibleDispatchSlots"))
+ ignore(GetString("methodIsNotStatic"))
+ ignore(GetString("parsUnexpectedSymbolEqualsInsteadOfIn"))
+ ignore(GetString("keywordDescriptionAbstract"))
+ ignore(GetString("keyworkDescriptionAnd"))
+ ignore(GetString("keywordDescriptionAs"))
+ ignore(GetString("keywordDescriptionAssert"))
+ ignore(GetString("keywordDescriptionBase"))
+ ignore(GetString("keywordDescriptionBegin"))
+ ignore(GetString("keywordDescriptionClass"))
+ ignore(GetString("keywordDescriptionDefault"))
+ ignore(GetString("keywordDescriptionDelegate"))
+ ignore(GetString("keywordDescriptionDo"))
+ ignore(GetString("keywordDescriptionDone"))
+ ignore(GetString("keywordDescriptionDowncast"))
+ ignore(GetString("keywordDescriptionDownto"))
+ ignore(GetString("keywordDescriptionElif"))
+ ignore(GetString("keywordDescriptionElse"))
+ ignore(GetString("keywordDescriptionEnd"))
+ ignore(GetString("keywordDescriptionException"))
+ ignore(GetString("keywordDescriptionExtern"))
+ ignore(GetString("keywordDescriptionTrueFalse"))
+ ignore(GetString("keywordDescriptionFinally"))
+ ignore(GetString("keywordDescriptionFor"))
+ ignore(GetString("keywordDescriptionFun"))
+ ignore(GetString("keywordDescriptionFunction"))
+ ignore(GetString("keywordDescriptionGlobal"))
+ ignore(GetString("keywordDescriptionIf"))
+ ignore(GetString("keywordDescriptionIn"))
+ ignore(GetString("keywordDescriptionInherit"))
+ ignore(GetString("keywordDescriptionInline"))
+ ignore(GetString("keywordDescriptionInterface"))
+ ignore(GetString("keywordDescriptionInternal"))
+ ignore(GetString("keywordDescriptionLazy"))
+ ignore(GetString("keywordDescriptionLet"))
+ ignore(GetString("keywordDescriptionLetBang"))
+ ignore(GetString("keywordDescriptionMatch"))
+ ignore(GetString("keywordDescriptionMember"))
+ ignore(GetString("keywordDescriptionModule"))
+ ignore(GetString("keywordDescriptionMutable"))
+ ignore(GetString("keywordDescriptionNamespace"))
+ ignore(GetString("keywordDescriptionNew"))
+ ignore(GetString("keywordDescriptionNot"))
+ ignore(GetString("keywordDescriptionNull"))
+ ignore(GetString("keywordDescriptionOf"))
+ ignore(GetString("keywordDescriptionOpen"))
+ ignore(GetString("keywordDescriptionOr"))
+ ignore(GetString("keywordDescriptionOverride"))
+ ignore(GetString("keywordDescriptionPrivate"))
+ ignore(GetString("keywordDescriptionPublic"))
+ ignore(GetString("keywordDescriptionRec"))
+ ignore(GetString("keywordDescriptionReturn"))
+ ignore(GetString("keywordDescriptionReturnBang"))
+ ignore(GetString("keywordDescriptionSelect"))
+ ignore(GetString("keywordDescriptionStatic"))
+ ignore(GetString("keywordDescriptionStruct"))
+ ignore(GetString("keywordDescriptionThen"))
+ ignore(GetString("keywordDescriptionTo"))
+ ignore(GetString("keywordDescriptionTry"))
+ ignore(GetString("keywordDescriptionType"))
+ ignore(GetString("keywordDescriptionUpcast"))
+ ignore(GetString("keywordDescriptionUse"))
+ ignore(GetString("keywordDescriptionUseBang"))
+ ignore(GetString("keywordDescriptionVal"))
+ ignore(GetString("keywordDescriptionVoid"))
+ ignore(GetString("keywordDescriptionWhen"))
+ ignore(GetString("keywordDescriptionWhile"))
+ ignore(GetString("keywordDescriptionWith"))
+ ignore(GetString("keywordDescriptionYield"))
+ ignore(GetString("keywordDescriptionYieldBang"))
+ ignore(GetString("keywordDescriptionRightArrow"))
+ ignore(GetString("keywordDescriptionLeftArrow"))
+ ignore(GetString("keywordDescriptionCast"))
+ ignore(GetString("keywordDescriptionDynamicCast"))
+ ignore(GetString("keywordDescriptionTypedQuotation"))
+ ignore(GetString("keywordDescriptionUntypedQuotation"))
+ ignore(GetString("itemNotFoundDuringDynamicCodeGen"))
+ ignore(GetString("itemNotFoundInTypeDuringDynamicCodeGen"))
+ ignore(GetString("descriptionWordIs"))
+ ignore(GetString("notAFunction"))
+ ignore(GetString("notAFunctionButMaybeIndexerWithName"))
+ ignore(GetString("notAFunctionButMaybeIndexer"))
+ ignore(GetString("notAFunctionButMaybeIndexerErrorCode"))
+ ignore(GetString("notAFunctionButMaybeDeclaration"))
+ ignore(GetString("ArgumentsInSigAndImplMismatch"))
+ ignore(GetString("pickleUnexpectedNonZero"))
+ ()
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx b/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx
new file mode 100644
index 00000000000..71f965fc9fa
--- /dev/null
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx
@@ -0,0 +1,4306 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ The namespace '{0}' is not defined.
+
+
+ The namespace or module '{0}' is not defined.
+
+
+ The field, constructor or member '{0}' is not defined.
+
+
+ The value, constructor, namespace or type '{0}' is not defined.
+
+
+ The value or constructor '{0}' is not defined.
+
+
+ The value, namespace, type or module '{0}' is not defined.
+
+
+ The constructor, module or namespace '{0}' is not defined.
+
+
+ The type '{0}' is not defined.
+
+
+ The type '{0}' is not defined in '{1}'.
+
+
+ The record label or namespace '{0}' is not defined.
+
+
+ The record label '{0}' is not defined.
+
+
+ Maybe you want one of the following:
+
+
+ The type parameter {0} is not defined.
+
+
+ The pattern discriminator '{0}' is not defined.
+
+
+ Replace with '{0}'
+
+
+ Add . for indexer access.
+
+
+ All elements of a list constructor expression must have the same type. This expression was expected to have type '{0}', but here has type '{1}'.
+
+
+ All elements of an array constructor expression must have the same type. This expression was expected to have type '{0}', but here has type '{1}'.
+
+
+ The 'if' expression is missing an 'else' branch. The 'then' branch has type '{0}'. Because 'if' is an expression, and not a statement, add an 'else' branch which returns a value of the same type.
+
+
+ The 'if' expression needs to have type '{0}' to satisfy context type requirements. It currently has type '{1}'.
+
+
+ All branches of an 'if' expression must have the same type. This expression was expected to have type '{0}', but here has type '{1}'.
+
+
+ All branches of a pattern match expression must have the same type. This expression was expected to have type '{0}', but here has type '{1}'.
+
+
+ A pattern match guard must be of type 'bool', but this 'when' expression is of type '{0}'.
+
+
+ A ';' is used to separate field values in records. Consider replacing ',' with ';'.
+
+
+ The '!' operator is used to dereference a ref cell. Consider using 'not expr' here.
+
+
+ The non-generic type '{0}' does not expect any type arguments, but here is given {1} type argument(s)
+
+
+ Consider using 'return!' instead of 'return'.
+
+
+ Consider using 'yield!' instead of 'yield'.
+
+
+ \nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface.
+
+
+ Invalid warning number '{0}'
+
+
+ Invalid version string '{0}'
+
+
+ Invalid version file '{0}'
+
+
+ Microsoft (R) F# Compiler version {0}
+
+
+ F# Compiler for F# {0}
+
+
+ Problem with filename '{0}': {1}
+
+
+ No inputs specified
+
+
+ The '--pdb' option requires the '--debug' option to be used
+
+
+ The search directory '{0}' is invalid
+
+
+ The search directory '{0}' could not be found
+
+
+ '{0}' is not a valid filename
+
+
+ '{0}' is not a valid assembly name
+
+
+ Unrecognized privacy setting '{0}' for managed resource, valid options are 'public' and 'private'
+
+
+ Multiple references to '{0}.dll' are not permitted
+
+
+ Could not read version from mscorlib.dll
+
+
+ Unable to read assembly '{0}'
+
+
+ Assembly resolution failure at or near this location
+
+
+ The declarations in this file will be placed in an implicit module '{0}' based on the file name '{1}'. However this is not a valid F# identifier, so the contents will not be accessible from other files. Consider renaming the file or adding a 'module' or 'namespace' declaration at the top of the file.
+
+
+ Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'. Only the last source file of an application may omit such a declaration.
+
+
+ Files in libraries or multiple-file applications must begin with a namespace or module declaration. When using a module declaration at the start of a file the '=' sign is not allowed. If this is a top-level module, consider removing the = to resolve this error.
+
+
+ This file contains multiple declarations of the form 'module SomeNamespace.SomeModule'. Only one declaration of this form is permitted in a file. Change your file to use an initial namespace declaration and/or use 'module ModuleName = ...' to define your modules.
+
+
+ Option requires parameter: {0}
+
+
+ Source file '{0}' could not be found
+
+
+ The file extension of '{0}' is not recognized. Source files must have extension .fs, .fsi, .fsx, .fsscript, .ml or .mli.
+
+
+ Could not resolve assembly '{0}'
+
+
+ Could not resolve assembly '{0}' required by '{1}'
+
+
+ Error opening binary file '{0}': {1}
+
+
+ The F#-compiled DLL '{0}' needs to be recompiled to be used with this version of F#
+
+
+ Invalid directive. Expected '#I \"<path>\"'.
+
+
+ Invalid directive. Expected '#r \"<file-or-assembly>\"'.
+
+
+ Invalid directive. Expected '#load \"<file>\" ... \"<file>\"'.
+
+
+ Invalid directive. Expected '#time', '#time \"on\"' or '#time \"off\"'.
+
+
+ Directives inside modules are ignored
+
+
+ A signature for the file or module '{0}' has already been specified
+
+
+ An implementation of file or module '{0}' has already been given. Compilation order is significant in F# because of type inference. You may need to adjust the order of your files to place the signature file before the implementation. In Visual Studio files are type-checked in the order they appear in the project file, which can be edited manually or adjusted using the solution explorer.
+
+
+ An implementation of the file or module '{0}' has already been given
+
+
+ The signature file '{0}' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match.
+
+
+ '{0}' is not a valid integer argument
+
+
+ '{0}' is not a valid floating point argument
+
+
+ Unrecognized option: '{0}'
+
+
+ Invalid module or namespace name
+
+
+ Error reading/writing metadata for the F# compiled DLL '{0}'. Was the DLL compiled with an earlier version of the F# compiler? (error: '{1}').
+
+
+ The type/module '{0}' is not a concrete module or type
+
+
+ The type '{0}' has an inline assembly code representation
+
+
+ A namespace and a module named '{0}' both occur in two parts of this assembly
+
+
+ Two modules named '{0}' occur in two parts of this assembly
+
+
+ Two type definitions named '{0}' occur in namespace '{1}' in two parts of this assembly
+
+
+ A module and a type definition named '{0}' occur in namespace '{1}' in two parts of this assembly
+
+
+ Invalid member signature encountered because of an earlier error
+
+
+ This value does not have a valid property setter type
+
+
+ Invalid form for a property getter. At least one '()' argument is required when using the explicit syntax.
+
+
+ Invalid form for a property setter. At least one argument is required.
+
+
+ Unexpected use of a byref-typed variable
+
+
+ A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'
+
+
+ Invalid mutation of a constant expression. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...'.
+
+
+ The value has been copied to ensure the original is not mutated by this operation or because the copy is implicit when returning a struct from a member and another member is then accessed
+
+
+ Recursively defined values cannot appear directly as part of the construction of a tuple value within a recursive binding
+
+
+ Recursive values cannot appear directly as a construction of the type '{0}' within a recursive binding. This feature has been removed from the F# language. Consider using a record instead.
+
+
+ Recursive values cannot be directly assigned to the non-mutable field '{0}' of the type '{1}' within a recursive binding. Consider using a mutable field instead.
+
+
+ Unexpected decode of AutoOpenAttribute
+
+
+ Unexpected decode of InternalsVisibleToAttribute
+
+
+ Unexpected decode of InterfaceDataVersionAttribute
+
+
+ Active patterns cannot return more than 7 possibilities
+
+
+ This is not a valid constant expression or custom attribute value
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe mutability attributes differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe names differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe compiled names differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe display names differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe accessibility specified in the signature is more than that specified in the implementation
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe inline flags differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe literal constant values and/or attributes differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is a type function and the other is not. The signature requires explicit type parameters if they are present in the implementation.
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe respective type parameter counts differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe types differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is an extension member and the other is not
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nAn arity was not inferred for this value
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe number of generic parameters in the signature and implementation differ (the signature declares {3} but the implementation declares {4}
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe generic parameters in the signature and implementation have different kinds. Perhaps there is a missing [<Measure>] attribute.
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe arities in the signature and implementation differ. The signature specifies that '{3}' is function definition or lambda expression accepting at least {4} argument(s), but the implementation is a computed function value. To declare that a computed function value is a permitted implementation simply parenthesize its type in the signature, e.g.\n\tval {5}: int -> (int -> int)\ninstead of\n\tval {6}: int -> int -> int.
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe CLI member names differ
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is static and the other isn't
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is virtual and the other isn't
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is abstract and the other isn't
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is final and the other isn't
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is marked as an override and the other isn't
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is a constructor/property and the other is not
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe compiled representation of this method is as a static member but the signature indicates its compiled representation is as an instance member
+
+
+ Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe compiled representation of this method is as an instance member, but the signature indicates its compiled representation is as a static member
+
+
+ The {0} definitions in the signature and implementation are not compatible because the names differ. The type is called '{1}' in the signature file but '{2}' in implementation.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the respective type parameter counts differ
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the accessibility specified in the signature is more than that specified in the implementation
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature requires that the type supports the interface {2} but the interface has not been implemented
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation says this type may use nulls as a representation but the signature does not
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation says this type may use nulls as an extra value but the signature does not
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature says this type may use nulls as a representation but the implementation does not
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature says this type may use nulls as an extra value but the implementation does not
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation type is sealed but the signature implies it is not. Consider adding the [<Sealed>] attribute to the signature.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation type is not sealed but signature implies it is. Consider adding the [<Sealed>] attribute to the implementation.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation is an abstract class but the signature is not. Consider adding the [<AbstractClass>] attribute to the signature.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature is an abstract class but the implementation is not. Consider adding the [<AbstractClass>] attribute to the implementation.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the types have different base types
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the number of {2}s differ
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature defines the {2} '{3}' but the implementation does not (or does, but not in the same order)
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation defines the {2} '{3}' but the signature does not (or does, but not in the same order)
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the implementation defines a struct but the signature defines a type with a hidden representation
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because a CLI type representation is being hidden by a signature
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because a type representation is being hidden by a signature
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the types are of different kinds
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the IL representations differ
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the representations differ
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the field {2} was present in the implementation but not in the signature
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the order of the fields is different in the signature and implementation
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the field {2} was required by the signature but was not specified by the implementation
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the field '{2}' was present in the implementation but not in the signature. Struct types must now reveal their fields in the signature for the type, though the fields may still be labelled 'private' or 'internal'.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the abstract member '{2}' was required by the signature but was not specified by the implementation
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the abstract member '{2}' was present in the implementation but not in the signature
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature declares a {2} while the implementation declares a {3}
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the abbreviations differ: {2} versus {3}
+
+
+ The {0} definitions for type '{1}' 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.
+
+
+ The {0} definitions for type '{1}' in the signature and implementation are not compatible because the signature has an abbreviation while the implementation does not
+
+
+ The module contains the constructor\n {0} \nbut its signature specifies\n {1} \nThe names differ
+
+
+ The module contains the constructor\n {0} \nbut its signature specifies\n {1} \nThe respective number of data fields differ
+
+
+ The module contains the constructor\n {0} \nbut its signature specifies\n {1} \nThe types of the fields differ
+
+
+ The module contains the constructor\n {0} \nbut its signature specifies\n {1} \nthe accessibility specified in the signature is more than that specified in the implementation
+
+
+ The module contains the field\n {0} \nbut its signature specifies\n {1} \nThe names differ
+
+
+ The module contains the field\n {0} \nbut its signature specifies\n {1} \nthe accessibility specified in the signature is more than that specified in the implementation
+
+
+ The module contains the field\n {0} \nbut its signature specifies\n {1} \nThe 'static' modifiers differ
+
+
+ The module contains the field\n {0} \nbut its signature specifies\n {1} \nThe 'mutable' modifiers differ
+
+
+ The module contains the field\n {0} \nbut its signature specifies\n {1} \nThe 'literal' modifiers differ
+
+
+ The module contains the field\n {0} \nbut its signature specifies\n {1} \nThe types differ
+
+
+ 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. '{0}' and '{1}'. Consider using type annotations to resolve the ambiguity
+
+
+ Could not resolve the ambiguity inherent in the use of the operator '{0}' at or near this program point. Consider using type annotations to resolve the ambiguity.
+
+
+ Could not resolve the ambiguity inherent in the use of a 'printf'-style format string
+
+
+ Could not resolve the ambiguity in the use of a generic construct with an 'enum' constraint at or near this position
+
+
+ Could not resolve the ambiguity in the use of a generic construct with a 'delegate' constraint at or near this position
+
+
+ Invalid value
+
+
+ The signature and implementation are not compatible because the respective type parameter counts differ
+
+
+ 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
+
+
+ The signature and implementation are not compatible because the declaration of the type parameter '{0}' requires a constraint of the form {1}
+
+
+ The signature and implementation are not compatible because the type parameter '{0}' has a constraint of the form {1} but the implementation does not. Either remove this constraint from the signature or add it to the implementation.
+
+
+ The type '{0}' implements 'System.IComparable'. Consider also adding an explicit override for 'Object.Equals'
+
+
+ The type '{0}' 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
+
+
+ The struct, record or union type '{0}' has an explicit implementation of 'Object.GetHashCode' or 'Object.Equals'. You must apply the 'CustomEquality' attribute to the type
+
+
+ The struct, record or union type '{0}' has an explicit implementation of 'Object.GetHashCode'. Consider implementing a matching override for 'Object.Equals(obj)'
+
+
+ The struct, record or union type '{0}' has an explicit implementation of 'Object.Equals'. Consider implementing a matching override for 'Object.GetHashCode()'
+
+
+ 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 {0} \nbut its signature specifies\n\t{1}
+
+
+ The exception definitions are not compatible because the CLI representations differ. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}
+
+
+ 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 {0} \nbut its signature specifies\n\t{1}.
+
+
+ The exception definitions are not compatible because the exception abbreviations in the signature and implementation differ. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}.
+
+
+ The exception definitions are not compatible because the exception declarations differ. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}.
+
+
+ The exception definitions are not compatible because the field '{0}' was required by the signature but was not specified by the implementation. The module contains the exception definition\n {1} \nbut its signature specifies\n\t{2}.
+
+
+ The exception definitions are not compatible because the field '{0}' was present in the implementation but not in the signature. The module contains the exception definition\n {1} \nbut its signature specifies\n\t{2}.
+
+
+ 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 {0} \nbut its signature specifies\n\t{1}.
+
+
+ The namespace or module attributes differ between signature and implementation
+
+
+ This method is over-constrained in its type parameters
+
+
+ No implementations of '{0}' had the correct number of arguments and type parameters. The required signature is '{1}'.
+
+
+ The override for '{0}' was ambiguous
+
+
+ More than one override implements '{0}'
+
+
+ The method '{0}' is sealed and cannot be overridden
+
+
+ The override '{0}' implements more than one abstract slot, e.g. '{1}' and '{2}'
+
+
+ Duplicate or redundant interface
+
+
+ The interface '{0}' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface.
+
+
+ A named argument has been assigned more than one value
+
+
+ No implementation was given for '{0}'
+
+
+ No implementation was given for '{0}'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.
+
+
+ The member '{0}' does not have the correct number of arguments. The required signature is '{1}'.
+
+
+ The member '{0}' does not have the correct number of method type parameters. The required signature is '{1}'.
+
+
+ The member '{0}' does not have the correct kinds of generic parameters. The required signature is '{1}'.
+
+
+ The member '{0}' cannot be used to implement '{1}'. The required signature is '{2}'.
+
+
+ Error while parsing embedded IL
+
+
+ Error while parsing embedded IL type
+
+
+ This indexer notation has been removed from the F# language
+
+
+ Invalid expression on left of assignment
+
+
+ The 'ReferenceEquality' attribute cannot be used on structs. Consider using the 'StructuralEquality' attribute instead, or implement an override for 'System.Object.Equals(obj)'.
+
+
+ This type uses an invalid mix of the attributes 'NoEquality', 'ReferenceEquality', 'StructuralEquality', 'NoComparison' and 'StructuralComparison'
+
+
+ The 'NoEquality' attribute must be used in conjunction with the 'NoComparison' attribute
+
+
+ The 'StructuralComparison' attribute must be used in conjunction with the 'StructuralEquality' attribute
+
+
+ The 'StructuralEquality' attribute must be used in conjunction with the 'NoComparison' or 'StructuralComparison' attributes
+
+
+ A type cannot have both the 'ReferenceEquality' and 'StructuralEquality' or 'StructuralComparison' attributes
+
+
+ Only record, union, exception and struct types may be augmented with the 'ReferenceEquality', 'StructuralEquality' and 'StructuralComparison' attributes
+
+
+ A type with attribute 'ReferenceEquality' cannot have an explicit implementation of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'
+
+
+ A type with attribute 'CustomEquality' must have an explicit implementation of at least one of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'
+
+
+ A type with attribute 'CustomComparison' must have an explicit implementation of at least one of 'System.IComparable' or 'System.Collections.IStructuralComparable'
+
+
+ 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
+
+
+ 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
+
+
+ The 'CustomEquality' attribute must be used in conjunction with the 'NoComparison' or 'CustomComparison' attributes
+
+
+ Positional specifiers are not permitted in format strings
+
+
+ Missing format specifier
+
+
+ '{0}' flag set twice
+
+
+ Prefix flag (' ' or '+') set twice
+
+
+ The # formatting modifier is invalid in F#
+
+
+ Bad precision in format specifier
+
+
+ Bad width in format specifier
+
+
+ '{0}' format does not support '0' flag
+
+
+ Precision missing after the '.'
+
+
+ '{0}' format does not support precision
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ '{0}' does not support prefix '{1}' flag
+
+
+ Bad format specifier: '{0}'
+
+
+ System.Environment.Exit did not exit
+
+
+ The treatment of this operator is now handled directly by the F# compiler and its meaning cannot be redefined
+
+
+ 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.
+
+
+ The byref-typed variable '{0}' is used in an invalid way. Byrefs cannot be captured by closures or passed to inner functions.
+
+
+ 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.
+
+
+ The variable '{0}' is used in an invalid way
+
+
+ The type '{0}' is less accessible than the value, member or type '{1}' it is used in.
+
+
+ 'System.Void' can only be used as 'typeof<System.Void>' in F#
+
+
+ A type instantiation involves a byref type. This is not permitted by the rules of Common IL.
+
+
+ Calls to 'reraise' may only occur directly in a handler of a try-with
+
+
+ Expression-splicing operators may only be used within quotations
+
+
+ First-class uses of the expression-splicing operator are not permitted
+
+
+ First-class uses of the address-of operators are not permitted
+
+
+ First-class uses of the 'reraise' function is not permitted
+
+
+ The byref typed value '{0}' cannot be used at this point
+
+
+ 'base' values may only be used to make direct calls to the base implementations of overridden members
+
+
+ Object constructors cannot directly use try/with and try/finally prior to the initialization of the object. This includes constructs such as 'for x in ...' that may elaborate to uses of these constructs. This is a limitation imposed by Common IL.
+
+
+ The address of the variable '{0}' cannot be used at this point
+
+
+ The address of the static field '{0}' cannot be used at this point
+
+
+ The address of the field '{0}' cannot be used at this point
+
+
+ The address of an array element cannot be used at this point
+
+
+ The type of a first-class function cannot contain byrefs
+
+
+ A method return type would contain byrefs which is not permitted
+
+
+ Invalid custom attribute value (not a constant or literal)
+
+
+ The attribute type '{0}' has 'AllowMultiple=false'. Multiple instances of this attribute cannot be attached to a single language element.
+
+
+ The member '{0}' is used in an invalid way. A use of '{1}' has been inferred prior to its definition at or near '{2}'. This is an invalid forward reference.
+
+
+ A byref typed value would be stored here. Top-level let-bound byref values are not permitted.
+
+
+ [<ReflectedDefinition>] terms cannot contain uses of the prefix splice operator '%'
+
+
+ A function labeled with the 'EntryPointAttribute' attribute must be the last declaration in the last file in the compilation sequence.
+
+
+ compiled form of the union case
+
+
+ default augmentation of the union case
+
+
+ The property '{0}' has the same name as a method in type '{1}'.
+
+
+ The property '{0}' of type '{1}' has a getter and a setter that do not match. If one is abstract then the other must be as well.
+
+
+ The property '{0}' has the same name as another property in type '{1}', but one takes indexer arguments and the other does not. You may be missing an indexer argument to one of your properties.
+
+
+ A type would store a byref typed value. This is not permitted by Common IL.
+
+
+ Duplicate method. The method '{0}' has the same name and signature as another method in type '{1}'.
+
+
+ Duplicate method. The method '{0}' has the same name and signature as another method in type '{1}' once tuples, functions, units of measure and/or provided types are erased.
+
+
+ The method '{0}' has curried arguments but has the same name as another method in type '{1}'. Methods with curried arguments cannot be overloaded. Consider using a method taking tupled arguments.
+
+
+ Methods with curried arguments cannot declare 'out', 'ParamArray', 'optional', 'ReflectedDefinition', 'byref', 'CallerLineNumber', 'CallerMemberName', or 'CallerFilePath' arguments
+
+
+ Duplicate property. The property '{0}' has the same name and signature as another property in type '{1}'.
+
+
+ Duplicate property. The property '{0}' has the same name and signature as another property in type '{1}' once tuples, functions, units of measure and/or provided types are erased.
+
+
+ Duplicate method. The abstract method '{0}' has the same name and signature as an abstract method in an inherited type.
+
+
+ Duplicate method. The abstract method '{0}' 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.
+
+
+ This type implements the same interface at different generic instantiations '{0}' and '{1}'. This is not permitted in this version of F#.
+
+
+ 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
+
+
+ The type abbreviation contains byrefs. This is not permitted by F#.
+
+
+ The variable '{0}' is bound in a quotation but is used as part of a spliced expression. This is not permitted since it may escape its scope.
+
+
+ Quotations cannot contain uses of generic expressions
+
+
+ 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.
+
+
+ Quotations cannot contain object expressions
+
+
+ Quotations cannot contain expressions that take the address of a field
+
+
+ Quotations cannot contain expressions that fetch static fields
+
+
+ Quotations cannot contain inline assembly code or pattern matching on arrays
+
+
+ Quotations cannot contain descending for loops
+
+
+ Quotations cannot contain expressions that fetch union case indexes
+
+
+ Quotations cannot contain expressions that set union case fields
+
+
+ Quotations cannot contain expressions that set fields in exception values
+
+
+ Quotations cannot contain expressions that require byref pointers
+
+
+ Quotations cannot contain expressions that make member constraint calls, or uses of operators that implicitly resolve to a member constraint call
+
+
+ Quotations cannot contain this kind of constant
+
+
+ Quotations cannot contain this kind of pattern match
+
+
+ Quotations cannot contain array pattern matching
+
+
+ Quotations cannot contain this kind of type
+
+
+ The declared type parameter '{0}' cannot be used here since the type parameter cannot be resolved at compile time
+
+
+ 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 '_'.
+
+
+ Type inference problem too complicated (maximum iteration depth reached). Consider adding further type annotations.
+
+
+ Expected arguments to an instance member
+
+
+ This indexer expects {0} arguments but is here given {1}
+
+
+ Expecting a type supporting the operator '{0}' but given a function type. You may be missing an argument to a function.
+
+
+ Expecting a type supporting the operator '{0}' but given a tuple type
+
+
+ None of the types '{0}' support the operator '{1}'
+
+
+ The type '{0}' does not support the operator '{1}'
+
+
+ None of the types '{0}' support the operator '{1}'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.
+
+
+ The type '{0}' does not support the operator '{1}'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.
+
+
+ The type '{0}' does not support a conversion to the type '{1}'
+
+
+ The type '{0}' has a method '{1}' (full name '{2}'), but the method is static
+
+
+ The type '{0}' has a method '{1}' (full name '{2}'), but the method is not static
+
+
+ The constraints 'struct' and 'not struct' are inconsistent
+
+
+ The type '{0}' does not have 'null' as a proper value
+
+
+ The type '{0}' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'.
+
+
+ The type '{0}' does not support the 'comparison' constraint because it has the 'NoComparison' attribute
+
+
+ The type '{0}' does not support the 'comparison' constraint. For example, it does not support the 'System.IComparable' interface
+
+
+ The type '{0}' does not support the 'comparison' constraint because it is a record, union or struct with one or more structural element types which do not support the 'comparison' constraint. Either avoid the use of comparison with this type, or add the 'StructuralComparison' attribute to the type to determine which field type does not support comparison
+
+
+ The type '{0}' does not support the 'equality' constraint because it has the 'NoEquality' attribute
+
+
+ The type '{0}' does not support the 'equality' constraint because it is a function type
+
+
+ The type '{0}' does not support the 'equality' constraint because it is a record, union or struct with one or more structural element types which do not support the 'equality' constraint. Either avoid the use of equality with this type, or add the 'StructuralEquality' attribute to the type to determine which field type does not support equality
+
+
+ The type '{0}' is not a CLI enum type
+
+
+ The type '{0}' has a non-standard delegate type
+
+
+ The type '{0}' is not a CLI delegate type
+
+
+ This type parameter cannot be instantiated to 'Nullable'. This is a restriction imposed in order to ensure the meaning of 'null' in some CLI languages is not confusing when used in conjunction with 'Nullable' values.
+
+
+ A generic construct requires that the type '{0}' is a CLI or F# struct type
+
+
+ A generic construct requires that the type '{0}' is an unmanaged type
+
+
+ The type '{0}' is not compatible with any of the types {1}, arising from the use of a printf-style format string
+
+
+ A generic construct requires that the type '{0}' have reference semantics, but it does not, i.e. it is a struct
+
+
+ A generic construct requires that the type '{0}' be non-abstract
+
+
+ A generic construct requires that the type '{0}' have a public default constructor
+
+
+ Type instantiation length mismatch
+
+
+ Optional arguments not permitted here
+
+
+ {0} is not a static member
+
+
+ {0} is not an instance member
+
+
+ Argument length mismatch
+
+
+ The argument types don't match
+
+
+ This method expects a CLI 'params' parameter in this position. 'params' is a way of passing a variable number of arguments to a method in languages such as C#. Consider passing an array for this argument
+
+
+ The member or object constructor '{0}' is not {1}
+
+
+ The member or object constructor '{0}' is not {1}. Private members may only be accessed from within the declaring type. Protected members may only be accessed from an extending type and cannot be accessed from inner lambda expressions.
+
+
+ {0} is not a static method
+
+
+ {0} is not an instance method
+
+
+ The member or object constructor '{0}' has no argument or settable return property '{1}'. {2}.
+
+
+ The object constructor '{0}' has no argument or settable return property '{1}'. {2}.
+
+
+ The required signature is {0}
+
+
+ The member or object constructor '{0}' requires {1} argument(s). The required signature is '{2}'.
+
+
+ The member or object constructor '{0}' requires {1} additional argument(s). The required signature is '{2}'.
+
+
+ The member or object constructor '{0}' requires {1} argument(s). The required signature is '{2}'. Some names for missing arguments are {3}.
+
+
+ The member or object constructor '{0}' requires {1} additional argument(s). The required signature is '{2}'. Some names for missing arguments are {3}.
+
+
+ The member or object constructor '{0}' requires {1} argument(s) but is here given {2} unnamed and {3} named argument(s). The required signature is '{4}'.
+
+
+ The member or object constructor '{0}' takes {1} argument(s) but is here given {2}. The required signature is '{3}'.
+
+
+ The object constructor '{0}' takes {1} argument(s) but is here given {2}. The required signature is '{3}'.
+
+
+ The object constructor '{0}' takes {1} argument(s) but is here given {2}. The required signature is '{3}'. If some of the arguments are meant to assign values to properties, consider separating those arguments with a comma (',').
+
+
+ The member or object constructor '{0}' takes {1} type argument(s) but is here given {2}. The required signature is '{3}'.
+
+
+ A member or object constructor '{0}' taking {1} arguments is not accessible from this code location. All accessible versions of method '{2}' take {3} arguments.
+
+
+ Incorrect generic instantiation. No {0} member named '{1}' takes {2} generic arguments.
+
+
+ The member or object constructor '{0}' does not take {1} argument(s). An overload was found taking {2} arguments.
+
+
+ No {0} member or object constructor named '{1}' takes {2} arguments
+
+
+ No {0} member or object constructor named '{1}' takes {2} arguments. Note the call to this member also provides {3} named arguments.
+
+
+ No {0} member or object constructor named '{1}' takes {2} arguments. The named argument '{3}' doesn't correspond to any argument or settable return property for any overload.
+
+
+ Method or object constructor '{0}' not found
+
+
+ No overloads match for method '{0}'.
+
+
+ A unique overload for method '{0}' could not be determined based on type information prior to this program point. A type annotation may be needed.
+
+
+ Candidates: {0}
+
+
+ The available overloads are shown below.
+
+
+ Accessibility modifiers are not permitted on 'do' bindings, but '{0}' was given.
+
+
+ End of file in #if section begun at or after here
+
+
+ End of file in string begun at or before here
+
+
+ End of file in verbatim string begun at or before here
+
+
+ End of file in comment begun at or before here
+
+
+ End of file in string embedded in comment begun at or before here
+
+
+ End of file in verbatim string embedded in comment begun at or before here
+
+
+ End of file in IF-OCAML section begun at or before here
+
+
+ End of file in directive begun at or before here
+
+
+ No #endif found for #if or #else
+
+
+ Attributes have been ignored in this construct
+
+
+ 'use' bindings are not permitted in primary constructors
+
+
+ 'use' bindings are not permitted in modules and are treated as 'let' bindings
+
+
+ An integer for loop must use a simple identifier
+
+
+ At most one 'with' augmentation is permitted
+
+
+ A semicolon is not expected at this point
+
+
+ Unexpected end of input
+
+
+ Accessibility modifiers are not permitted here, but '{0}' was given.
+
+
+ Only '#' compiler directives may occur prior to the first 'namespace' declaration
+
+
+ Accessibility modifiers should come immediately prior to the identifier naming a construct
+
+
+ Files should begin with either a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule', but not both. To define a module within a namespace use 'module SomeModule = ...'
+
+
+ A module abbreviation must be a simple name, not a path
+
+
+ Ignoring attributes on module abbreviation
+
+
+ The '{0}' accessibility attribute is not allowed on module abbreviation. Module abbreviations are always private.
+
+
+ The '{0}' visibility attribute is not allowed on module abbreviation. Module abbreviations are always private.
+
+
+ Unclosed block
+
+
+ Unmatched 'begin' or 'struct'
+
+
+ A module name must be a simple name, not a path
+
+
+ Unexpected empty type moduleDefn list
+
+
+ Attributes should be placed before 'val'
+
+
+ Attributes are not permitted on interface implementations
+
+
+ Syntax error
+
+
+ Augmentations are not permitted on delegate type moduleDefns
+
+
+ Unmatched 'class', 'interface' or 'struct'
+
+
+ A type definition requires one or more members or other declarations. If you intend to define an empty class, struct or interface, then use 'type ... = class end', 'interface end' or 'struct end'.
+
+
+ Unmatched 'with' or badly formatted 'with' block
+
+
+ 'get', 'set' or 'get,set' required
+
+
+ Only class types may take value arguments
+
+
+ Unmatched 'begin'
+
+
+ Invalid declaration syntax
+
+
+ 'get' and/or 'set' required
+
+
+ Type annotations on property getters and setters must be given after the 'get()' or 'set(v)', e.g. 'with get() : string = ...'
+
+
+ A getter property is expected to be a function, e.g. 'get() = ...' or 'get(index) = ...'
+
+
+ Multiple accessibilities given for property getter or setter
+
+
+ Property setters must be defined using 'set value = ', 'set idx value = ' or 'set (idx1,...,idxN) value = ... '
+
+
+ Interfaces always have the same visibility as the enclosing type
+
+
+ Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.
+
+
+ Attributes are not permitted on 'inherit' declarations
+
+
+ Accessibility modifiers are not permitted on an 'inherits' declaration
+
+
+ 'inherit' declarations cannot have 'as' bindings. To access members of the base class when overriding a method, the syntax 'base.SomeMember' may be used; 'base' is a keyword. Remove this 'as' binding.
+
+
+ Attributes are not allowed here
+
+
+ Accessibility modifiers are not permitted in this position for type abbreviations
+
+
+ Accessibility modifiers are not permitted in this position for enum types
+
+
+ All enum fields must be given values
+
+
+ Accessibility modifiers are not permitted on inline assembly code types
+
+
+ Unexpected identifier: '{0}'
+
+
+ Accessibility modifiers are not permitted on union cases. Use 'type U = internal ...' or 'type U = private ...' to give an accessibility to the whole representation.
+
+
+ Accessibility modifiers are not permitted on enumeration fields
+
+
+ Consider using a separate record type instead
+
+
+ Accessibility modifiers are not permitted on record fields. Use 'type R = internal ...' or 'type R = private ...' to give an accessibility to the whole representation.
+
+
+ The declaration form 'let ... and ...' for non-recursive bindings is not used in F# code. Consider using a sequence of 'let' bindings
+
+
+ Unmatched '('
+
+
+ Successive patterns should be separated by spaces or tupled
+
+
+ No matching 'in' found for this 'let'
+
+
+ Error in the return expression for this 'let'. Possible incorrect indentation.
+
+
+ The block following this '{0}' is unfinished. Every code block is an expression and must have a result. '{1}' cannot be the final code element in a block. Consider giving this block an explicit result.
+
+
+ Incomplete conditional. Expected 'if <expr> then <expr>' or 'if <expr> then <expr> else <expr>'.
+
+
+ 'assert' may not be used as a first class value. Use 'assert <expr>' instead.
+
+
+ Identifier expected
+
+
+ 'in' or '=' expected
+
+
+ The use of '->' in sequence and computation expressions is limited to the form 'for pat in expr -> expr'. Use the syntax 'for ... in ... do ... yield...' to generate elements in more complex sequence expressions.
+
+
+ Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized
+
+
+ Unmatched '['
+
+
+ Missing qualification after '.'
+
+
+ In F# code you may use 'expr.[expr]'. A type annotation may be required to indicate the first expression is an array
+
+
+ Mismatched quotation, beginning with '{0}'
+
+
+ Unmatched '{0}'
+
+
+ Unmatched '[|'
+
+
+ Unmatched '{{'
+
+
+ Field bindings must have the form 'id = expr;'
+
+
+ This member is not permitted in an object implementation
+
+
+ Missing function body
+
+
+ Syntax error in labelled type argument
+
+
+ Unexpected infix operator in type expression
+
+
+ The syntax '(typ,...,typ) ident' is not used in F# code. Consider using 'ident<typ,...,typ>' instead
+
+
+ Invalid literal in type
+
+
+ Unexpected infix operator in unit-of-measure expression. Legal operators are '*', '/' and '^'.
+
+
+ Unexpected integer literal in unit-of-measure expression
+
+
+ Syntax error: unexpected type parameter specification
+
+
+ Mismatched quotation operator name, beginning with '{0}'
+
+
+ Active pattern case identifiers must begin with an uppercase letter
+
+
+ The '|' character is not permitted in active pattern case identifiers
+
+
+ Denominator must not be 0 in unit-of-measure exponent
+
+
+ No '=' symbol should follow a 'namespace' declaration
+
+
+ The syntax 'module ... = struct .. end' is not used in F# code. Consider using 'module ... = begin .. end'
+
+
+ The syntax 'module ... : sig .. end' is not used in F# code. Consider using 'module ... = begin .. end'
+
+
+ A static field was used where an instance field is expected
+
+
+ Method '{0}' is not accessible from this code location
+
+
+ Implicit product of measures following /
+
+
+ Unexpected SynMeasure.Anon
+
+
+ Non-zero constants cannot have generic units. For generic zero, write 0.0<_>.
+
+
+ In sequence expressions, results are generated using 'yield'
+
+
+ Unexpected big rational constant
+
+
+ Units-of-measure supported only on float, float32, decimal and signed integer types
+
+
+ Unexpected Const_uint16array
+
+
+ Unexpected Const_bytearray
+
+
+ A parameter with attributes must also be given a name, e.g. '[<Attribute>] Name : Type'
+
+
+ Return values cannot have names
+
+
+ MemberKind.PropertyGetSet only expected in parse trees
+
+
+ Namespaces cannot contain values. Consider using a module to hold your value declarations.
+
+
+ Namespaces cannot contain extension members except in the same file and namespace declaration group where the type is defined. Consider using a module to hold declarations of extension members.
+
+
+ Multiple visibility attributes have been specified for this identifier
+
+
+ Multiple visibility attributes have been specified for this identifier. 'let' bindings in classes are always private, as are any 'let' bindings inside expressions.
+
+
+ The name '({0})' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name '{1}' instead.
+
+
+ The name '({0})' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name '{1}' instead.
+
+
+ The name '({0})' should not be used as a member name. If defining a static member for use from other CLI languages then use the name '{1}' instead.
+
+
+ The name '({0})' should not be used as a member name because it is given a standard definition in the F# library over fixed types
+
+
+ The '{0}' operator should not normally be redefined. To define overloaded comparison semantics for a particular type, implement the 'System.IComparable' interface in the definition of that type.
+
+
+ The '{0}' operator should not normally be redefined. To define equality semantics for a type, override the 'Object.Equals' member in the definition of that type.
+
+
+ The '{0}' operator should not normally be redefined. Consider using a different operator name
+
+
+ The '{0}' operator cannot be redefined. Consider using a different operator name
+
+
+ Expected module or namespace parent {0}
+
+
+ The struct, record or union type '{0}' implements the interface 'System.IComparable' explicitly. You must apply the 'CustomComparison' attribute to the type.
+
+
+ The struct, record or union type '{0}' implements the interface 'System.IComparable<_>' explicitly. You must apply the 'CustomComparison' attribute to the type, and should also provide a consistent implementation of the non-generic interface System.IComparable.
+
+
+ The struct, record or union type '{0}' implements the interface 'System.IStructuralComparable' explicitly. Apply the 'CustomComparison' attribute to the type.
+
+
+ This record contains fields from inconsistent types
+
+
+ DLLImport stubs cannot be inlined
+
+
+ Structs may only bind a 'this' parameter at member declarations
+
+
+ Unexpected expression at recursive inference point
+
+
+ This code is less generic than required by its annotations because the explicit type variable '{0}' could not be generalized. It was constrained to be '{1}'.
+
+
+ One or more of the explicit class or function type variables for this binding could not be generalized, because they were constrained to other types
+
+
+ A generic type parameter has been used in a way that constrains it to always be '{0}'
+
+
+ This type parameter has been used in a way that constrains it to always be '{0}'
+
+
+ The type parameters inferred for this value are not stable under the erasure of type abbreviations. This is due to the use of type abbreviations which drop or reorder type parameters, e.g. \n\ttype taggedInt<'a> = int or\n\ttype swap<'a,'b> = 'b * 'a.\nConsider declaring the type parameters for this value explicitly, e.g.\n\tlet f<'a,'b> ((x,y) : swap<'b,'a>) : swap<'a,'b> = (y,x).
+
+
+ Explicit type parameters may only be used on module or member bindings
+
+
+ You must explicitly declare either all or no type parameters when overriding a generic abstract method
+
+
+ The field labels and expected type of this record expression or pattern do not uniquely determine a corresponding record type
+
+
+ The field '{0}' appears twice in this record expression or pattern
+
+
+ Unknown union case
+
+
+ This code is not sufficiently generic. The type variable {0} could not be generalized because it would escape its scope.
+
+
+ A property cannot have explicit type parameters. Consider using a method instead.
+
+
+ A constructor cannot have explicit type parameters. Consider using a static construction method instead.
+
+
+ This instance member needs a parameter to represent the object being invoked. Make the member static or use the notation 'member x.Member(args) = ...'.
+
+
+ Unexpected source-level property specification in syntax tree
+
+
+ A static initializer requires an argument
+
+
+ An object constructor requires an argument
+
+
+ This static member should not have a 'this' parameter. Consider using the notation 'member Member(args) = ...'.
+
+
+ An explicit static initializer should use the syntax 'static new(args) = expr'
+
+
+ An explicit object constructor should use the syntax 'new(args) = expr'
+
+
+ Unexpected source-level property specification
+
+
+ This form of object expression is not used in F#. Use 'member this.MemberName ... = ...' to define member implementations in object expressions.
+
+
+ Invalid declaration
+
+
+ Attributes are not allowed within patterns
+
+
+ The generic function '{0}' must be given explicit type argument(s)
+
+
+ The method or function '{0}' should not be given explicit type argument(s) because it does not declare its type parameters explicitly
+
+
+ This value, type or method expects {0} type parameter(s) but was given {1}
+
+
+ The default, zero-initializing constructor of a struct type may only be used if all the fields of the struct type admit default initialization
+
+
+ Couldn't find Dispose on IDisposable, or it was overloaded
+
+
+ This value is not a literal and cannot be used in a pattern
+
+
+ This field is readonly
+
+
+ Named arguments must appear after all other arguments
+
+
+ This function value is being used to construct a delegate type whose signature includes a byref argument. You must use an explicit lambda expression taking {0} arguments.
+
+
+ The type '{0}' is not a type whose values can be enumerated with this syntax, i.e. is not compatible with either seq<_>, IEnumerable<_> or IEnumerable and does not have a GetEnumerator method
+
+
+ This recursive binding uses an invalid mixture of recursive forms
+
+
+ This is not a valid object construction expression. Explicit object constructors must either call an alternate constructor or initialize all fields of the object and specify a call to a super class constructor.
+
+
+ Invalid constraint
+
+
+ Invalid constraint: the type used for the constraint is sealed, which means the constraint could only be satisfied by at most one solution
+
+
+ An 'enum' constraint must be of the form 'enum<type>'
+
+
+ 'new' constraints must take one argument of type 'unit' and return the constructed type
+
+
+ This property has an invalid type. Properties taking multiple indexer arguments should have types of the form 'ty1 * ty2 -> ty3'. Properties returning functions should have types of the form '(ty1 -> ty2)'.
+
+
+ Expected unit-of-measure parameter, not type parameter. Explicit unit-of-measure parameters must be marked with the [<Measure>] attribute.
+
+
+ Expected type parameter, not unit-of-measure parameter
+
+
+ Expected type, not unit-of-measure
+
+
+ Expected unit-of-measure, not type
+
+
+ Units-of-measure cannot be used as prefix arguments to a type. Rewrite as postfix arguments in angle brackets.
+
+
+ Unit-of-measure cannot be used in type constructor application
+
+
+ This control construct may only be used if the computation expression builder defines a '{0}' method
+
+
+ This type has no nested types
+
+
+ Unexpected {0} in type expression
+
+
+ Type parameter cannot be used as type constructor
+
+
+ Illegal syntax in type expression
+
+
+ Anonymous unit-of-measure cannot be nested inside another unit-of-measure expression
+
+
+ Anonymous type variables are not permitted in this declaration
+
+
+ Unexpected / in type
+
+
+ Unexpected type arguments
+
+
+ Optional arguments are only permitted on type members
+
+
+ Name '{0}' not bound in pattern context
+
+
+ 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.
+
+
+ Type arguments cannot be specified here
+
+
+ Only active patterns returning exactly one result may accept arguments
+
+
+ Invalid argument to parameterized pattern label
+
+
+ Internal error. Invalid index into active pattern array
+
+
+ This union case does not take arguments
+
+
+ This union case takes one argument
+
+
+ This union case expects {0} arguments in tupled form
+
+
+ Field '{0}' is not static
+
+
+ This field is not a literal and cannot be used in a pattern
+
+
+ This is not a variable, constant, active recognizer or literal
+
+
+ This is not a valid pattern
+
+
+ Character range matches have been removed in F#. Consider using a 'when' pattern guard instead.
+
+
+ Illegal pattern
+
+
+ Syntax error - unexpected '?' symbol
+
+
+ Expected {0} expressions, got {1}
+
+
+ TcExprUndelayed: delayed
+
+
+ This expression form may only be used in sequence and computation expressions
+
+
+ Invalid object expression. Objects without overrides or interfaces should use the expression form 'new Type(args)' without braces.
+
+
+ Invalid object, sequence or record expression
+
+
+ Invalid record, sequence or computation expression. Sequence expressions should be of the form 'seq {{ ... }}'
+
+
+ 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
+
+
+ Unable to parse format string '{0}'
+
+
+ This list expression exceeds the maximum size for list literals. Use an array for larger literals and call Array.ToList.
+
+
+ The expression form 'expr then expr' may only be used as part of an explicit object constructor
+
+
+ Named arguments cannot be given to member trait calls
+
+
+ This is not a valid name for an enumeration case
+
+
+ This field is not mutable
+
+
+ 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
+
+
+ This construct may only be used within computation expressions. To return a value from an ordinary function simply write the expression without 'return'.
+
+
+ This construct may only be used within sequence or computation expressions
+
+
+ This construct may only be used within computation expressions
+
+
+ Invalid indexer expression
+
+
+ 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
+
+
+ Cannot inherit from a variable type
+
+
+ Calls to object constructors on type parameters cannot be given arguments
+
+
+ The 'CompiledName' attribute cannot be used with this language element
+
+
+ '{0}' may only be used with named types
+
+
+ 'inherit' cannot be used on interface types. Consider implementing the interface by using 'interface ... with ... end' instead.
+
+
+ 'new' cannot be used on interface types. Consider using an object expression '{{ new ... with ... }}' instead.
+
+
+ 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.
+
+
+ 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
+
+
+ '{0}' may only be used to construct object types
+
+
+ Constructors for the type '{0}' must directly or indirectly call its implicit object constructor. Use a call to the implicit object constructor instead of a record expression.
+
+
+ The field '{0}' has been given a value, but is not present in the type '{1}'
+
+
+ No assignment given for field '{0}' of type '{1}'
+
+
+ Extraneous fields have been given values
+
+
+ Only overrides of abstract and virtual members may be specified in object expressions
+
+
+ The member '{0}' does not correspond to any abstract or virtual method available to override or implement.
+
+
+ The type {0} contains the member '{1}' but it is not a virtual or abstract method that is available to override or implement.
+
+
+ The member '{0}' does not accept the correct number of arguments. {1} argument(s) are expected, but {2} were given. The required signature is '{3}'.{4}
+
+
+ The member '{0}' does not accept the correct number of arguments. One overload accepts {1} arguments, but {2} were given. The required signature is '{3}'.{4}
+
+
+ A simple method name is required here
+
+
+ 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
+
+
+ 'new' must be used with a named type
+
+
+ Cannot create an extension of a sealed type
+
+
+ No arguments may be given when constructing a record value
+
+
+ Interface implementations cannot be given on construction expressions
+
+
+ Object construction expressions may only be used to implement constructors in class types
+
+
+ Only simple bindings of the form 'id = expr' can be used in construction expressions
+
+
+ Objects must be initialized by an object construction expression that calls an inherited object constructor and assigns a value to each field
+
+
+ Expected an interface type
+
+
+ Constructor expressions for interfaces do not take arguments
+
+
+ This object constructor requires arguments
+
+
+ 'new' may only be used with object constructors
+
+
+ At least one override did not correctly implement its corresponding abstract member
+
+
+ This numeric literal requires that a module '{0}' defining functions FromZero, FromOne, FromInt32, FromInt64 and FromString be in scope
+
+
+ Invalid record construction
+
+
+ The expression form {{ expr with ... }} may only be used with record types. To build object types use {{ new Type(...) with ... }}
+
+
+ The inherited type is not an object model type
+
+
+ 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
+
+
+ '{{ }}' is not a valid expression. Records must include at least one field. Empty sequences are specified by using Seq.empty or an empty list '[]'.
+
+
+ This type is not a record type. Values of class and struct types must be created using calls to object constructors.
+
+
+ This type is not a record type
+
+
+ This construct is ambiguous as part of a computation expression. Nested expressions may be written using 'let _ = (...)' and nested computations using 'let! res = builder {{ ... }}'.
+
+
+ This construct is ambiguous as part of a sequence expression. Nested expressions may be written using 'let _ = (...)' and nested sequences using 'yield! seq {{... }}'.
+
+
+ 'do!' cannot be used within sequence expressions
+
+
+ The use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead.
+
+
+ 'try'/'with' cannot be used within sequence expressions
+
+
+ In sequence expressions, multiple results are generated using 'yield!'
+
+
+ Invalid assignment
+
+
+ Invalid use of a type name
+
+
+ This type has no accessible object constructors
+
+
+ Invalid use of an interface type
+
+
+ Invalid use of a delegate constructor. Use the syntax 'new Type(args)' or just 'Type(args)'.
+
+
+ Property '{0}' is not static
+
+
+ Property '{0}' is not readable
+
+
+ This lookup cannot be used here
+
+
+ Property '{0}' is static
+
+
+ Property '{0}' cannot be set
+
+
+ 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))'.
+
+
+ The syntax 'expr.id' may only be used with record labels, properties and fields
+
+
+ Event '{0}' is static
+
+
+ Event '{0}' is not static
+
+
+ The named argument '{0}' did not match any argument or mutable property
+
+
+ One or more of the overloads of this method has curried arguments. Consider redesigning these members to take arguments in tupled form.
+
+
+ The unnamed arguments do not form a prefix of the arguments of the method called
+
+
+ Static optimization conditionals are only for use within the F# library
+
+
+ The corresponding formal argument is not optional
+
+
+ Invalid optional assignment to a property or field
+
+
+ A delegate constructor must be passed a single function value
+
+
+ A binding cannot be marked both 'use' and 'rec'
+
+
+ The 'VolatileField' attribute may only be used on 'let' bindings in classes
+
+
+ Attributes are not permitted on 'let' bindings in expressions
+
+
+ The 'DefaultValue' attribute may only be used on 'val' declarations
+
+
+ The 'ConditionalAttribute' attribute may only be used on members
+
+
+ This is not a valid name for an active pattern
+
+
+ The 'EntryPointAttribute' attribute may only be used on function definitions in modules
+
+
+ Mutable values cannot be marked 'inline'
+
+
+ Mutable values cannot have generic parameters
+
+
+ Mutable function values should be written 'let mutable f = (fun args -> ...)'
+
+
+ Only functions may be marked 'inline'
+
+
+ A literal value cannot be given the [<ThreadStatic>] or [<ContextStatic>] attributes
+
+
+ A literal value cannot be marked 'mutable'
+
+
+ A literal value cannot be marked 'inline'
+
+
+ Literal values cannot have generic parameters
+
+
+ This is not a valid constant expression
+
+
+ This type is not accessible from this code location
+
+
+ Unexpected condition in imported assembly: failed to decode AttributeUsage attribute
+
+
+ Unrecognized attribute target. Valid attribute targets are 'assembly', 'module', 'type', 'method', 'property', 'return', 'param', 'field', 'event', 'constructor'.
+
+
+ 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.
+
+
+ This attribute is not valid for use on this language element
+
+
+ Optional arguments cannot be used in custom attributes
+
+
+ This property cannot be set
+
+
+ This property or field was not found on this custom attribute type
+
+
+ A custom attribute must be a reference type
+
+
+ The number of args for a custom attribute does not match the expected number of args for the attribute constructor
+
+
+ A custom attribute must invoke an object constructor
+
+
+ Attribute expressions must be calls to object constructors
+
+
+ This attribute cannot be used in this version of F#
+
+
+ Invalid inline specification
+
+
+ 'use' bindings must be of the form 'use <var> = <expr>'
+
+
+ Abstract members are not permitted in an augmentation - they must be defined as part of the type itself
+
+
+ Method overrides and interface implementations are not permitted here
+
+
+ No abstract or interface member was found that corresponds to this override
+
+
+ This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:{0}
+
+
+ This method already has a default implementation
+
+
+ The method implemented by this default is ambiguous
+
+
+ No abstract property was found that corresponds to this override
+
+
+ This property overrides or implements an abstract property but the abstract property doesn't have a corresponding {0}
+
+
+ Invalid signature for set member
+
+
+ This new member hides the abstract member '{0}'. Rename the member or use 'override' instead.
+
+
+ This new member hides the abstract member '{0}' once tuples, functions, units of measure and/or provided types are erased. Rename the member or use 'override' instead.
+
+
+ Interfaces cannot contain definitions of static initializers
+
+
+ Interfaces cannot contain definitions of object constructors
+
+
+ Interfaces cannot contain definitions of member overrides
+
+
+ Interfaces cannot contain definitions of concrete members. You may need to define a constructor on your type to indicate that the type is a class.
+
+
+ Constructors cannot be specified in exception augmentations
+
+
+ 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.
+
+
+ Constructors cannot be defined for this type
+
+
+ Recursive bindings that include member specifications can only occur as a direct augmentation of a type
+
+
+ Only simple variable patterns can be bound in 'let rec' constructs
+
+
+ Only record fields and simple, non-recursive 'let' bindings may be marked mutable
+
+
+ This member is not sufficiently generic
+
+
+ A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1'
+
+
+ A declaration may only be given a value in a signature if the declaration has the [<Literal>] attribute
+
+
+ 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
+
+
+ Volatile fields must be marked 'mutable' and cannot be thread-static
+
+
+ Uninitialized 'val' fields must be mutable and marked with the '[<DefaultValue>]' attribute. Consider using a 'let' binding instead of a 'val' field.
+
+
+ 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.
+
+
+ This field requires a name
+
+
+ Invalid namespace, module, type or union case name
+
+
+ Explicit type declarations for constructors must be of the form 'ty1 * ... * tyN -> resTy'. Parentheses may be required around 'resTy'
+
+
+ Return types of union cases must be identical to the type being defined, up to abbreviations
+
+
+ This is not a valid value for an enumeration literal
+
+
+ The type '{0}' is not an interface type
+
+
+ Duplicate specification of an interface
+
+
+ A field/val declaration is not permitted here
+
+
+ A inheritance declaration is not permitted here
+
+
+ This declaration opens the module '{0}', 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.
+
+
+ This declaration opens the namespace or module '{0}' 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.
+
+
+ Local class bindings cannot be marked inline. Consider lifting the definition out of the class or else do not mark it as inline.
+
+
+ Type abbreviations cannot have members
+
+
+ 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.
+
+
+ Enumerations cannot have members
+
+
+ Measure declarations may have only static members
+
+
+ Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings
+
+
+ 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.
+
+
+ Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'.
+
+
+ Measure declarations may have only static members: constructors are not available
+
+
+ A member and a local class binding both have the name '{0}'
+
+
+ Type abbreviations cannot have interface declarations
+
+
+ Enumerations cannot have interface declarations
+
+
+ This type is not an interface type
+
+
+ All implemented interfaces should be declared on the initial declaration of the type
+
+
+ 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
+
+
+ This member is not permitted in an interface implementation
+
+
+ This declaration element is not permitted in an augmentation
+
+
+ Types cannot contain nested type definitions
+
+
+ type, exception or module
+
+
+ type or module
+
+
+ The struct, record or union type '{0}' implements the interface 'System.IStructuralEquatable' explicitly. Apply the 'CustomEquality' attribute to the type.
+
+
+ The struct, record or union type '{0}' 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)'.
+
+
+ Explicit type specifications cannot be used for exception constructors
+
+
+ Exception abbreviations should not have argument lists
+
+
+ Abbreviations for Common IL exceptions cannot take arguments
+
+
+ Exception abbreviations must refer to existing exceptions or F# types deriving from System.Exception
+
+
+ Abbreviations for Common IL exception types must have a matching object constructor
+
+
+ Not an exception
+
+
+ Invalid module name
+
+
+ Invalid type extension
+
+
+ The attributes of this type specify multiple kinds for the type
+
+
+ The kind of the type specified by its attributes does not match the kind implied by its definition
+
+
+ Measure definitions cannot have type parameters
+
+
+ This type requires a definition
+
+
+ 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 ...'.
+
+
+ Structs, interfaces, enums and delegates cannot inherit from other types
+
+
+ Types cannot inherit from multiple concrete types
+
+
+ Records, union, abbreviations and struct types cannot have the 'AllowNullLiteral' attribute
+
+
+ Types with the 'AllowNullLiteral' attribute may only inherit from or implement types which also allow the use of the null literal
+
+
+ Generic types cannot be given the 'StructLayout' attribute
+
+
+ Only structs and classes without primary constructors may be given the 'StructLayout' attribute
+
+
+ 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.
+
+
+ Only classes may be given the 'AbstractClass' attribute
+
+
+ Only types representing units-of-measure may be given the 'Measure' attribute
+
+
+ Accessibility modifiers are not permitted on overrides or interface implementations
+
+
+ Discriminated union types are always sealed
+
+
+ Record types are always sealed
+
+
+ Assembly code types are always sealed
+
+
+ Struct types are always sealed
+
+
+ Delegate types are always sealed
+
+
+ Enum types are always sealed
+
+
+ Interface types and delegate types cannot contain fields
+
+
+ Abbreviated types cannot be given the 'Sealed' attribute
+
+
+ Cannot inherit a sealed type
+
+
+ Cannot inherit from interface type. Use interface ... with instead.
+
+
+ Struct types cannot contain abstract members
+
+
+ Interface types cannot be sealed
+
+
+ Delegate specifications must be of the form 'typ -> typ'
+
+
+ Delegate specifications must not be curried types. Use 'typ * ... * typ -> typ' for multi-argument delegates, and 'typ -> (typ -> typ)' for delegates returning function values.
+
+
+ Literal enumerations must have type int, uint, int16, uint16, int64, uint64, byte, sbyte or char
+
+
+ This type definition involves an immediate cyclic reference through an abbreviation
+
+
+ This type definition involves an immediate cyclic reference through a struct field or inheritance relation
+
+
+ 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
+
+
+ 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.
+
+
+ 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 '{0}'
+
+
+ Type definitions may only have one 'inherit' specification and it must be the first declaration
+
+
+ 'let' and 'do' bindings must come before member and interface definitions in type definitions
+
+
+ This 'inherit' declaration specifies the inherited type but no arguments. Consider supplying arguments, e.g. 'inherit BaseType(args)'.
+
+
+ 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) = ...'.
+
+
+ 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) = ...'.
+
+
+ Type abbreviations cannot have augmentations
+
+
+ The path '{0}' is a namespace. A module abbreviation may not abbreviate a namespace.
+
+
+ The type '{0}' is used in an invalid way. A value prior to '{1}' has an inferred type involving '{2}', which is an invalid forward reference.
+
+
+ The member '{0}' is used in an invalid way. A use of '{1}' has been inferred prior to the definition of '{2}', which is an invalid forward reference.
+
+
+ The attribute 'AutoOpen(\"{0}\")' in the assembly '{1}' did not refer to a valid module or namespace in that assembly and has been ignored
+
+
+ Undefined value '{0}'
+
+
+ Label {0} not found
+
+
+ Incorrect number of type arguments to local call
+
+
+ Dynamic invocation of {0} is not supported
+
+
+ Taking the address of a literal field is invalid
+
+
+ This operation involves taking the address of a value '{0}' represented using a local variable or other special representation. This is invalid.
+
+
+ Custom marshallers cannot be specified in F# code. Consider using a C# helper function.
+
+
+ The MarshalAs attribute could not be decoded
+
+
+ The signature for this external function contains type parameters. Constrain the argument and return types to indicate the types of the corresponding C function.
+
+
+ The DllImport attribute could not be decoded
+
+
+ Literal fields cannot be set
+
+
+ GenSetStorage: {0} was represented as a static method but was not an appropriate lambda expression
+
+
+ Mutable variables cannot escape their method
+
+
+ Compiler error: unexpected unrealized value
+
+
+ Main module of program is empty: nothing will happen when it is run
+
+
+ This type cannot be used for a literal field
+
+
+ Unexpected GetSet annotation on a property
+
+
+ The FieldOffset attribute could not be decoded
+
+
+ The StructLayout attribute could not be decoded
+
+
+ The DefaultAugmentation attribute could not be decoded
+
+
+ Reflected definitions cannot contain uses of the prefix splice operator '%'
+
+
+ Problem with codepage '{0}': {1}
+
+
+ Copyright (c) Microsoft Corporation. All Rights Reserved.
+
+
+ Freely distributed under the MIT Open Source License. https://github.com/Microsoft/visualfsharp/blob/master/License.txt
+
+
+ Name of the output file (Short form: -o)
+
+
+ Build a console executable
+
+
+ Build a Windows executable
+
+
+ Build a library (Short form: -a)
+
+
+ Build a module that can be added to another assembly
+
+
+ Delay-sign the assembly using only the public portion of the strong name key
+
+
+ Public-sign the assembly using only the public portion of the strong name key, and mark the assembly as signed
+
+
+ Write the xmldoc of the assembly to the given file
+
+
+ Specify a strong name key file
+
+
+ Specify a strong name key container
+
+
+ Limit which platforms this code can run on: x86, Itanium, x64, anycpu32bitpreferred, or anycpu. The default is anycpu.
+
+
+ Only include optimization information essential for implementing inlined constructs. Inhibits cross-module inlining but improves binary compatibility.
+
+
+ Don't add a resource to the generated assembly containing F#-specific metadata
+
+
+ Print the inferred interface of the assembly to a file
+
+
+ Reference an assembly (Short form: -r)
+
+
+ Specify a Win32 resource file (.res)
+
+
+ Specify a Win32 manifest file
+
+
+ Do not include the default Win32 manifest
+
+
+ Embed all source files in the portable PDB file
+
+
+ Embed specific source files in the portable PDB file
+
+
+ Source link information file to embed in the portable PDB file
+
+
+ --embed switch only supported when emitting a Portable PDB (--debug:portable or --debug:embedded)
+
+
+ --sourcelink switch only supported when emitting a Portable PDB (--debug:portable or --debug:embedded)
+
+
+ Source file is too large to embed in a portable PDB
+
+
+ Embed the specified managed resource
+
+
+ Link the specified resource to this assembly where the resinfo format is <file>[,<string name>[,public|private]]
+
+
+ Emit debug information (Short form: -g)
+
+
+ Specify debugging type: full, portable, embedded, pdbonly. ('{0}' 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).
+
+
+ Enable optimizations (Short form: -O)
+
+
+ Enable or disable tailcalls
+
+
+ Produce a deterministic assembly (including module version GUID and timestamp)
+
+
+ Enable or disable cross-module optimizations
+
+
+ Report all warnings as errors
+
+
+ Report specific warnings as errors
+
+
+ Set a warning level (0-5)
+
+
+ Disable specific warning messages
+
+
+ Enable specific warnings that may be off by default
+
+
+ Generate overflow checks
+
+
+ Define conditional compilation symbols (Short form: -d)
+
+
+ Ignore ML compatibility warnings
+
+
+ Suppress compiler copyright message
+
+
+ Display this usage message (Short form: -?)
+
+
+ Read response file for more options
+
+
+ Specify the codepage used to read source files
+
+
+ Output messages in UTF-8 encoding
+
+
+ Output messages with fully qualified paths
+
+
+ Specify a directory for the include path which is used to resolve source files and assemblies (Short form: -I)
+
+
+ Base address for the library to be built
+
+
+ Do not reference the default CLI assemblies by default
+
+
+ Statically link the F# library and all referenced DLLs that depend on it into the assembly being generated
+
+
+ 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.
+
+
+ Use a resident background compilation service to improve compiler startup times.
+
+
+ Name the output debug file
+
+
+ Resolve assembly references using directory-based rules rather than MSBuild resolution
+
+
+ Unrecognized target '{0}', expected 'exe', 'winexe', 'library' or 'module'
+
+
+ Unrecognized debug type '{0}', expected 'pdbonly' or 'full'
+
+
+ Invalid warning level '{0}'
+
+
+ Short form of '{0}'
+
+
+ The command-line option '--cliroot' has been deprecated. Use an explicit reference to a specific copy of mscorlib.dll instead.
+
+
+ Use to override where the compiler looks for mscorlib.dll and framework components
+
+
+ - OUTPUT FILES -
+
+
+ - INPUT FILES -
+
+
+ - RESOURCES -
+
+
+ - CODE GENERATION -
+
+
+ - ADVANCED -
+
+
+ - MISCELLANEOUS -
+
+
+ - LANGUAGE -
+
+
+ - ERRORS AND WARNINGS -
+
+
+ Unknown --test argument: '{0}'
+
+
+ Unrecognized platform '{0}', valid values are 'x86', 'x64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'
+
+
+ The command-line option '{0}' is for test purposes only
+
+
+ The command-line option '{0}' has been deprecated
+
+
+ The command-line option '{0}' has been deprecated. Use '{1}' instead.
+
+
+ The command-line option '{0}' has been deprecated. HTML document generation is now part of the F# Power Pack, via the tool FsHtmlDoc.exe.
+
+
+ Output warning and error messages in color
+
+
+ Enable high-entropy ASLR
+
+
+ Specify subsystem version of this assembly
+
+
+ Specify target framework profile of this assembly. Valid values are mscorlib, netcore or netstandard. Default - mscorlib
+
+
+ Emit debug information in quotations
+
+
+ Specify the preferred output language culture name (e.g. es-ES, ja-JP)
+
+
+ Don't copy FSharp.Core.dll along the produced binaries
+
+
+ Invalid version '{0}' for '--subsystemversion'. The version must be 4.00 or greater.
+
+
+ Invalid value '{0}' for '--targetprofile', valid values are 'mscorlib', 'netcore' or 'netstandard'.
+
+
+ Full name
+
+
+ and {0} other overloads
+
+
+ union case
+
+
+ active pattern result
+
+
+ active recognizer
+
+
+ field
+
+
+ event
+
+
+ property
+
+
+ extension
+
+
+ custom operation
+
+
+ argument
+
+
+ patvar
+
+
+ namespace
+
+
+ module
+
+
+ namespace/module
+
+
+ from {0}
+
+
+ also from {0}
+
+
+ generated property
+
+
+ generated type
+
+
+ Found by AssemblyFolders registry key
+
+
+ Found by AssemblyFoldersEx registry key
+
+
+ .NET Framework
+
+
+ Global Assembly Cache
+
+
+ Recursive class hierarchy in type '{0}'
+
+
+ Invalid recursive reference to an abstract slot
+
+
+ The event '{0}' has a non-standard type. If this event is declared in another CLI language, you may need to access this event using the explicit {1} and {2} methods for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent<_>' or 'IEvent<_,_>'.
+
+
+ The type '{0}' is not accessible from this code location
+
+
+ The union cases or fields of the type '{0}' are not accessible from this code location
+
+
+ The value '{0}' is not accessible from this code location
+
+
+ The union case '{0}' is not accessible from this code location
+
+
+ The record, struct or class field '{0}' is not accessible from this code location
+
+
+ The struct or class field '{0}' is not accessible from this code location
+
+
+ This construct is experimental
+
+
+ No Invoke methods found for delegate type
+
+
+ More than one Invoke method found for delegate type
+
+
+ Delegates are not allowed to have curried signatures
+
+
+ Unexpected Expr.TyChoose
+
+
+ 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.
+
+
+ Identifiers containing '@' are reserved for use in F# code generation
+
+
+ The identifier '{0}' is reserved for future use by F#
+
+
+ Missing variable '{0}'
+
+
+ Partial active patterns may only generate one result
+
+
+ The type '{0}' is required here and is unavailable. You must add a reference to assembly '{1}'.
+
+
+ A reference to the type '{0}' in assembly '{1}' was found, but the type could not be found in that assembly
+
+
+ Internal error or badly formed metadata: not enough type parameters were in scope while importing
+
+
+ A reference to the DLL {0} is required by assembly {1}. The imported type {2} is located in the first assembly and could not be resolved.
+
+
+ An imported assembly uses the type '{0}' but that type is not public
+
+
+ The value '{0}' was marked inline but its implementation makes use of an internal or private function which is not sufficiently accessible
+
+
+ The value '{0}' was marked inline but was not bound in the optimization environment
+
+
+ Local value {0} not found during optimization
+
+
+ A value marked as 'inline' has an unexpected value
+
+
+ A value marked as 'inline' could not be inlined
+
+
+ Failed to inline the value '{0}' marked 'inline', perhaps because a recursive value was marked 'inline'
+
+
+ Recursive ValValue {0}
+
+
+ The indentation of this 'in' token is incorrect with respect to the corresponding 'let'
+
+
+ Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions.
+
+
+ The '|' tokens separating rules of this pattern match are misaligned by one column. Consider realigning your code or using further indentation.
+
+
+ Invalid module/expression/type
+
+
+ Multiple types exist called '{0}', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. '{1}'.
+
+
+ The instantiation of the generic type '{0}' 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. '{1}'.
+
+
+ 'global' may only be used as the first name in a qualified path
+
+
+ This is not a constructor or literal, or a constructor is being used incorrectly
+
+
+ Unexpected empty long identifier
+
+
+ The record type '{0}' does not contain a label '{1}'.
+
+
+ Invalid field label
+
+
+ Invalid expression '{0}'
+
+
+ No constructors are available for the type '{0}'
+
+
+ The union type for union case '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the union type ('{1}') in the name you are using.
+
+
+ The record type for the record field '{0}' was defined with the RequireQualifiedAccessAttribute. Include the name of the record type ('{1}') in the name you are using.
+
+
+ Unexpected error creating debug information file '{0}'
+
+
+ This number is outside the allowable range for this integer type
+
+
+ '{0}' is not permitted as a character in operator names and is reserved for future use
+
+
+ Unexpected character '{0}'
+
+
+ This byte array literal contains characters that do not encode as a single byte
+
+
+ Identifiers followed by '{0}' are reserved for future use
+
+
+ This number is outside the allowable range for 8-bit signed integers
+
+
+ This number is outside the allowable range for hexadecimal 8-bit signed integers
+
+
+ This number is outside the allowable range for 8-bit unsigned integers
+
+
+ This number is outside the allowable range for 16-bit signed integers
+
+
+ This number is outside the allowable range for 16-bit unsigned integers
+
+
+ This number is outside the allowable range for 32-bit signed integers
+
+
+ This number is outside the allowable range for 32-bit unsigned integers
+
+
+ This number is outside the allowable range for 64-bit signed integers
+
+
+ This number is outside the allowable range for 64-bit unsigned integers
+
+
+ This number is outside the allowable range for signed native integers
+
+
+ This number is outside the allowable range for unsigned native integers
+
+
+ Invalid floating point number
+
+
+ This number is outside the allowable range for decimal literals
+
+
+ This number is outside the allowable range for 32-bit floats
+
+
+ This is not a valid numeric literal. Valid numeric literals include 1, 0x1, 0b0001 (int), 1u (uint32), 1L (int64), 1UL (uint64), 1s (int16), 1y (sbyte), 1uy (byte), 1.0 (float), 1.0f (float32), 1.0m (decimal), 1I (BigInteger).
+
+
+ This is not a valid byte literal
+
+
+ This is not a valid character literal
+
+
+ This Unicode encoding is only valid in string literals
+
+
+ This token is reserved for future use
+
+
+ TABs are not allowed in F# code unless the #indent \"off\" option is used
+
+
+ Invalid line number: '{0}'
+
+
+ #if directive must appear as the first non-whitespace character on a line
+
+
+ #else has no matching #if
+
+
+ #endif required for #else
+
+
+ #else directive must appear as the first non-whitespace character on a line
+
+
+ #endif has no matching #if
+
+
+ #endif directive must appear as the first non-whitespace character on a line
+
+
+ #if directive should be immediately followed by an identifier
+
+
+ Syntax error. Wrong nested #endif, unexpected tokens before it.
+
+
+ #! may only appear as the first line at the start of a file.
+
+
+ Expected single line comment or end of line
+
+
+ Infix operator member '{0}' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ...
+
+
+ Infix operator member '{0}' has {1} initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ...
+
+
+ Infix operator member '{0}' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ...
+
+
+ All record, union and struct types in FSharp.Core.dll must be explicitly labelled with 'StructuralComparison' or 'NoComparison'
+
+
+ The struct, record or union type '{0}' has the 'StructuralComparison' attribute but the type parameter '{1}' does not satisfy the 'comparison' constraint. Consider adding the 'comparison' constraint to the type parameter
+
+
+ The struct, record or union type '{0}' has the 'StructuralComparison' attribute but the component type '{1}' does not satisfy the 'comparison' constraint
+
+
+ The struct, record or union type '{0}' is not structurally comparable because the type parameter {1} does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '{2}' to clarify that the type is not comparable
+
+
+ The struct, record or union type '{0}' is not structurally comparable because the type '{1}' does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '{2}' to clarify that the type is not comparable
+
+
+ The struct, record or union type '{0}' does not support structural equality because the type parameter {1} does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '{2}' to clarify that the type does not support structural equality
+
+
+ The struct, record or union type '{0}' does not support structural equality because the type '{1}' does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '{2}' to clarify that the type does not support structural equality
+
+
+ The struct, record or union type '{0}' has the 'StructuralEquality' attribute but the type parameter '{1}' does not satisfy the 'equality' constraint. Consider adding the 'equality' constraint to the type parameter
+
+
+ The struct, record or union type '{0}' has the 'StructuralEquality' attribute but the component type '{1}' does not satisfy the 'equality' constraint
+
+
+ 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.
+
+
+ The value '{0}' is unused
+
+
+ The recursive object reference '{0}' 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.
+
+
+ A getter property may have at most one argument group
+
+
+ A setter property may have at most two argument groups
+
+
+ Invalid property getter or setter
+
+
+ An indexer property must be given at least one argument
+
+
+ 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
+
+
+ Type parameters must be placed directly adjacent to the type name, e.g. \"type C<'T>\", not type \"C <'T>\"
+
+
+ Type arguments must be placed directly adjacent to the type name, e.g. \"C<'T>\", not \"C <'T>\"
+
+
+ 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>'
+
+
+ The module/namespace '{0}' from compilation unit '{1}' did not contain the module/namespace '{2}'
+
+
+ The module/namespace '{0}' from compilation unit '{1}' did not contain the val '{2}'
+
+
+ The module/namespace '{0}' from compilation unit '{1}' did not contain the namespace, module or type '{2}'
+
+
+ The 'UseNullAsTrueValue' attribute flag may only be used with union types that have one nullary case and at least one non-nullary case
+
+
+ The parameter '{0}' 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.
+
+
+ The generic member '{0}' 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.
+
+
+ The attribute '{0}' 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.
+
+
+ Cannot call an abstract base member: '{0}'
+
+
+ Could not resolve the ambiguity in the use of a generic construct with an 'unmanaged' constraint at or near this position
+
+
+ This construct is for ML compatibility. {0}. You can disable this warning by using '--mlcompatibility' or '--nowarn:62'.
+
+
+ The type '{0}' has been marked as having an Explicit layout, but the field '{1}' has not been marked with the 'FieldOffset' attribute
+
+
+ Interfaces inherited by other interfaces should be declared using 'inherit ...' instead of 'interface ...'
+
+
+ Invalid prefix operator
+
+
+ Invalid operator definition. Prefix operator definitions must use a valid prefix operator name.
+
+
+ The file extensions '.ml' and '.mli' are for ML compatibility
+
+
+ Consider using a file with extension '.ml' or '.mli' instead
+
+
+ Active pattern '{0}' is not a function
+
+
+ Active pattern '{0}' 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'
+
+
+ The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit)
+
+
+ Optional arguments must come at the end of the argument list, after any non-optional arguments
+
+
+ Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on methods or attribute classes
+
+
+ Extension members cannot provide operator overloads. Consider defining the operator as part of the type definition instead.
+
+
+ The name of the MDB file must be <assembly-file-name>.mdb. The --pdb option will be ignored.
+
+
+ MDB generation failed. Could not find compatible member {0}
+
+
+ Cannot generate MDB debug information. Failed to load the 'MonoSymbolWriter' type from the 'Mono.CompilerServices.SymbolWriter.dll' assembly.
+
+
+ The union case named '{0}' conflicts with the generated type '{1}'
+
+
+ ReflectedDefinitionAttribute may not be applied to an instance member on a struct type, because the instance member takes an implicit 'this' byref parameter
+
+
+ DLLImport bindings must be static members in a class or function definitions in a module
+
+
+ When mscorlib.dll or FSharp.Core.dll is explicitly referenced the {0} option must also be passed
+
+
+ FSharp.Core.sigdata not found alongside FSharp.Core. File expected in {0}. Consider upgrading to a more recent version of FSharp.Core, where this file is no longer be required.
+
+
+ File '{0}' not found alongside FSharp.Core. File expected in {1}. Consider upgrading to a more recent version of FSharp.Core, where this file is no longer be required.
+
+
+ Filename '{0}' contains invalid character '{1}'
+
+
+ 'use!' bindings must be of the form 'use! <var> = <expr>'
+
+
+ Inner generic functions are not permitted in quoted expressions. Consider adding some type constraints until this function is no longer generic.
+
+
+ The type '{0}' is not a valid enumerator type , i.e. does not have a 'MoveNext()' method returning a bool, and a 'Current' property
+
+
+ End of file in triple-quote string begun at or before here
+
+
+ End of file in triple-quote string embedded in comment begun at or before here
+
+
+ This type test or downcast will ignore the unit-of-measure '{0}'
+
+
+ Expected type argument or static argument
+
+
+ Unmatched '<'. Expected closing '>'
+
+
+ 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.
+
+
+ Attempted to parse this as an operator name, but failed
+
+
+ \U{0} is not a valid Unicode character escape sequence
+
+
+ '{0}' must be applied to an argument of type '{1}', but has been applied to an argument of type '{2}'
+
+
+ '{0}' can only be applied to optional arguments
+
+
+ The specified .NET Framework version '{0}' is not supported. Please specify a value from the enumeration Microsoft.Build.Utilities.TargetDotNetFrameworkVersion.
+
+
+ Invalid Magic value in CLR Header
+
+
+ Bad image format
+
+
+ Private key expected
+
+
+ RSA key expected
+
+
+ Invalid bit Length
+
+
+ Invalid RSAParameters structure - '{{0}}' expected
+
+
+ Invalid algId - 'Exponent' expected
+
+
+ Invalid signature size
+
+
+ No signature directory
+
+
+ Invalid Public Key blob
+
+
+ Exiting - too many errors
+
+
+ The documentation file has no .xml suffix
+
+
+ No implementation files specified
+
+
+ An {0} specified version '{1}', but this value is invalid and has been ignored
+
+
+ Conflicting options specified: 'win32manifest' and 'win32res'. Only one of these can be used.
+
+
+ The code in assembly '{0}' 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.
+
+
+ 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.
+
+
+ Static linking may not include a .EXE
+
+
+ Static linking may not include a mixed managed/unmanaged DLL
+
+
+ Ignoring mixed managed/unmanaged assembly '{0}' during static linking
+
+
+ Assembly '{0}' 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.
+
+
+ Assembly '{0}' 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.
+
+
+ The key file '{0}' could not be opened
+
+
+ A problem occurred writing the binary '{0}': {1}
+
+
+ The 'AssemblyVersionAttribute' has been ignored because a version was given using a command line option
+
+
+ Error emitting 'System.Reflection.AssemblyCultureAttribute' attribute -- 'Executables cannot be satellite assemblies, Culture should always be empty'
+
+
+ Option '--delaysign' overrides attribute 'System.Reflection.AssemblyDelaySignAttribute' given in a source file or added module
+
+
+ Option '--keyfile' overrides attribute 'System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module
+
+
+ Option '--keycontainer' overrides attribute 'System.Reflection.AssemblyNameAttribute' given in a source file or added module
+
+
+ The assembly '{0}' is listed on the command line. Assemblies should be referenced using a command line flag such as '-r'.
+
+
+ The resident compilation service was not used because a problem occured in communicating with the server.
+
+
+ Problem with filename '{0}': Illegal characters in path.
+
+
+ Passing a .resx file ({0}) 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.
+
+
+ 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).
+
+
+ An {0} specified version '{1}', but this value is a wildcard, and you have requested a deterministic build, these are in conflict.
+
+
+ Determinstic builds only support portable PDBs (--debug:portable or --debug:embedded)
+
+
+ Character '{0}' is not allowed in provided namespace name '{1}'
+
+
+ The provided type '{0}' returned a member with a null or empty member name
+
+
+ The provided type '{0}' returned a null member
+
+
+ The provided type '{0}' member info '{1}' has null declaring type
+
+
+ The provided type '{0}' has member '{1}' which has declaring type '{2}'. Expected declaring type to be the same as provided type.
+
+
+ Referenced assembly '{0}' has assembly level attribute '{1}' but no public type provider classes were found
+
+
+ Type '{0}' from type provider '{1}' has an empty namespace. Use 'null' for the global namespace.
+
+
+ Empty namespace found from the type provider '{0}'. Use 'null' for the global namespace.
+
+
+ Provided type '{0}' has 'IsGenericType' as true, but generic types are not supported.
+
+
+ Provided type '{0}' has 'IsArray' as true, but array types are not supported.
+
+
+ Invalid member '{0}' on provided type '{1}'. Provided type members must be public, and not be generic, virtual, or abstract.
+
+
+ Invalid member '{0}' on provided type '{1}'. Only properties, methods and constructors are allowed
+
+
+ Property '{0}' on provided type '{1}' has CanRead=true but there was no value from GetGetMethod()
+
+
+ Property '{0}' on provided type '{1}' has CanRead=false but GetGetMethod() returned a method
+
+
+ Property '{0}' on provided type '{1}' has CanWrite=true but there was no value from GetSetMethod()
+
+
+ Property '{0}' on provided type '{1}' has CanWrite=false but GetSetMethod() returned a method
+
+
+ One or more errors seen during provided type setup
+
+
+ Unexpected exception from provided type '{0}' member '{1}': {2}
+
+
+ Unsupported constant type '{0}'. 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.
+
+
+ Unsupported expression '{0}' from type provider. If you are the author of this type provider, consider adjusting it to provide a different provided expression.
+
+
+ Expected provided type named '{0}' but provided type has 'Name' with value '{1}'
+
+
+ Event '{0}' on provided type '{1}' has no value from GetAddMethod()
+
+
+ Event '{0}' on provided type '{1}' has no value from GetRemoveMethod()
+
+
+ Assembly attribute '{0}' refers to a designer assembly '{1}' which cannot be loaded or doesn't exist. {2}
+
+
+ The type provider does not have a valid constructor. A constructor taking either no arguments or one argument of type 'TypeProviderConfig' was expected.
+
+
+ The type provider '{0}' reported an error: {1}
+
+
+ The type provider '{0}' used an invalid parameter in the ParameterExpression: {1}
+
+
+ The type provider '{0}' provided a method with a name '{1}' and metadata token '{2}', which is not reported among its methods of its declaring type '{3}'
+
+
+ The type provider '{0}' provided a constructor which is not reported among the constructors of its declaring type '{1}'
+
+
+ A direct reference to the generated type '{0}' 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.
+
+
+ Expected provided type with path '{0}' but provided type has path '{1}'
+
+
+ Unexpected 'null' return value from provided type '{0}' member '{1}'
+
+
+ Unexpected exception from member '{0}' of provided type '{1}' member '{2}': {3}
+
+
+ Nested provided types do not take static arguments or generic parameters
+
+
+ Invalid static argument to provided type. Expected an argument of kind '{0}'.
+
+
+ An error occured applying the static arguments to a provided type
+
+
+ Unknown static argument kind '{0}' when resolving a reference to a provided type or method '{1}'
+
+
+ invalid namespace for provided type
+
+
+ invalid full name for provided type
+
+
+ The type provider returned 'null', which is not a valid return value from '{0}'
+
+
+ The type provider constructor has thrown an exception: {0}
+
+
+ Type provider '{0}' returned null from GetInvokerExpression.
+
+
+ The type provider '{0}' returned an invalid type from 'ApplyStaticArguments'. A type with name '{1}' was expected, but a type with name '{2}' was returned.
+
+
+ The type provider '{0}' returned an invalid method from 'ApplyStaticArgumentsForMethod'. A method with name '{1}' was expected, but a method with name '{2}' was returned.
+
+
+ This type test or downcast will erase the provided type '{0}' to the type '{1}'
+
+
+ This downcast will erase the provided type '{0}' to the type '{1}'.
+
+
+ This type test with a provided type '{0}' is not allowed because this provided type will be erased to '{1}' at runtime.
+
+
+ Cannot inherit from erased provided type
+
+
+ Assembly '{0}' hase TypeProviderAssembly attribute with invalid value '{1}'. The value should be a valid assembly name
+
+
+ Invalid member name. Members may not have name '.ctor' or '.cctor'
+
+
+ The function or member '{0}' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is '{1}'.
+
+
+ The number of type arguments did not match: '{0}' given, '{1}' expected. This may be related to a previously reported error.
+
+
+ Cannot override inherited member '{0}' because it is sealed
+
+
+ The type provider '{0}' reported an error in the context of provided type '{1}', member '{2}'. The error: {3}
+
+
+ An exception occurred when accessing the '{0}' of a provided type: {1}
+
+
+ The '{0}' of a provided type was null or empty.
+
+
+ Character '{0}' is not allowed in provided type name '{1}'
+
+
+ In queries, '{0}' must use a simple pattern
+
+
+ A custom query operation for '{0}' is required but not specified
+
+
+ Named static arguments must come after all unnamed static arguments
+
+
+ The static parameter '{0}' of the provided type or method '{1}' requires a value. Static parameters to type providers may be optionally specified using named arguments, e.g. '{2}<{3}=...>'.
+
+
+ No static parameter exists with name '{0}'
+
+
+ The static parameter '{0}' has already been given a value
+
+
+ Multiple static parameters exist with name '{0}'
+
+
+ A custom operation may not be used in conjunction with a non-value or recursive 'let' binding in another part of this computation expression
+
+
+ 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
+
+
+ The custom operation '{0}' refers to a method which is overloaded. The implementations of custom operations may not be overloaded.
+
+
+ An if/then/else expression may not be used within queries. Consider using either an if/then expression, or use a sequence expression instead.
+
+
+ Invalid argument to 'methodhandleof' during codegen
+
+
+ A reference to a provided type was missing a value for the static parameter '{0}'. You may need to recompile one or more referenced assemblies.
+
+
+ A reference to a provided type had an invalid value '{0}' for a static parameter. You may need to recompile one or more referenced assemblies.
+
+
+ '{0}' is not used correctly. This is a custom operation in this query or computation expression.
+
+
+ '{0}' is not used correctly. Usage: {1}. This is a custom operation in this query or computation expression.
+
+
+ {0} var in collection {1} (outerKey = innerKey). Note that parentheses are required after '{2}'
+
+
+ {0} var in collection {1} (outerKey = innerKey) into group. Note that parentheses are required after '{2}'
+
+
+ {0} var in collection
+
+
+ '{0}' must be followed by a variable name. Usage: {1}.
+
+
+ Incorrect syntax for '{0}'. Usage: {1}.
+
+
+ '{0}' must come after a 'for' selection clause and be followed by the rest of the query. Syntax: ... {1} ...
+
+
+ '{0}' is used with an incorrect number of arguments. This is a custom operation in this query or computation expression. Expected {1} argument(s), but given {2}.
+
+
+ Expected an expression after this point
+
+
+ Expected a type after this point
+
+
+ Unmatched '[<'. Expected closing '>]'
+
+
+ Unexpected end of input in 'match' expression. Expected 'match <expr> with | <pat> -> <expr> | <pat> -> <expr> ...'.
+
+
+ Unexpected end of input in 'try' expression. Expected 'try <expr> with <rules>' or 'try <expr> finally <expr>'.
+
+
+ Unexpected end of input in 'while' expression. Expected 'while <expr> do <expr>'.
+
+
+ Unexpected end of input in 'for' expression. Expected 'for <pat> in <expr> do <expr>'.
+
+
+ Unexpected end of input in 'match' or 'try' expression
+
+
+ Unexpected end of input in 'then' branch of conditional expression. Expected 'if <expr> then <expr>' or 'if <expr> then <expr> else <expr>'.
+
+
+ Unexpected end of input in 'else' branch of conditional expression. Expected 'if <expr> then <expr>' or 'if <expr> then <expr> else <expr>'.
+
+
+ Unexpected end of input in body of lambda expression. Expected 'fun <pat> ... <pat> -> <expr>'.
+
+
+ Unexpected end of input in type arguments
+
+
+ Unexpected end of input in type signature
+
+
+ Unexpected end of input in type definition
+
+
+ Unexpected end of input in object members
+
+
+ Unexpected end of input in value, function or member definition
+
+
+ Unexpected end of input in expression
+
+
+ Unexpected end of type. Expected a name after this point.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ Missing 'do' in 'while' expression. Expected 'while <expr> do <expr>'.
+
+
+ Missing 'do' in 'for' expression. Expected 'for <pat> in <expr> do <expr>'.
+
+
+ Invalid join relation in '{0}'. Expected 'expr <op> expr', where <op> is =, =?, ?= or ?=?.
+
+
+ Calls
+
+
+ Invalid number of generic arguments to type '{0}' in provided type. Expected '{1}' arguments, given '{2}'.
+
+
+ Invalid value '{0}' for unit-of-measure parameter '{1}'
+
+
+ Invalid value unit-of-measure parameter '{0}'
+
+
+ Property '{0}' on provided type '{1}' is neither readable nor writable as it has CanRead=false and CanWrite=false
+
+
+ A use of 'into' must be followed by the remainder of the computation
+
+
+ The operator '{0}' does not accept the use of 'into'
+
+
+ The definition of the custom operator '{0}' does not use a valid combination of attribute flags
+
+
+ This type definition may not have the 'CLIMutable' attribute. Only record types may have this attribute.
+
+
+ 'member val' definitions are only permitted in types with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'.
+
+
+ Property definitions may not be declared mutable. To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.
+
+
+ To indicate that this property can be set, use 'member val PropertyName = expr with get,set'.
+
+
+ Type '{0}' is illegal because in byref<T>, T cannot contain byref types.
+
+
+ F# supports array ranks between 1 and 32. The value {0} is not allowed.
+
+
+ In queries, use the form 'for x in n .. m do ...' for ranging over integers
+
+
+ 'while' expressions may not be used in queries
+
+
+ 'try/finally' expressions may not be used in queries
+
+
+ 'use' expressions may not be used in queries
+
+
+ 'let!', 'use!' and 'do!' expressions may not be used in queries
+
+
+ 'return' and 'return!' may not be used in queries
+
+
+ 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.
+
+
+ 'try/with' expressions may not be used in queries
+
+
+ This 'let' definition may not be used in a query. Only simple value definitions may be used in queries.
+
+
+ Too many static parameters. Expected at most {0} parameters, but got {1} unnamed and {2} named parameters.
+
+
+ Invalid provided literal value '{0}'
+
+
+ The 'anycpu32bitpreferred' platform can only be used with EXE targets. You must use 'anycpu' instead.
+
+
+ This member, function or value declaration may not be declared 'inline'
+
+
+ The provider '{0}' returned a non-generated type '{1}' in the context of a set of generated types. Consider adjusting the type provider to only return generated types.
+
+
+ Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)'
+
+
+ A quotation may not involve an assignment to or taking the address of a captured local variable
+
+
+ + 1 overload
+
+
+ + {0} overloads
+
+
+ Erased to
+
+
+ Unexpected token '{0}' or incomplete expression
+
+
+ Cannot find code target for this attribute, possibly because the code after the attribute is incomplete.
+
+
+ Type name cannot be empty.
+
+
+ Problem reading assembly '{0}': {1}
+
+
+ Invalid provided field. Provided fields of erased provided types must be literals.
+
+
+ (loading description...)
+
+
+ (description unavailable...)
+
+
+ A type variable has been constrained by multiple different class types. A type variable may only have one class constraint.
+
+
+ 'match' expressions may not be used in queries
+
+
+ Infix operator member '{0}' has {1} initial argument(s). Expected a tuple of 3 arguments
+
+
+ The operator '{0}' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.
+
+
+ '{0}' must be followed by 'in'. Usage: {1}.
+
+
+ Neither 'member val' nor 'override val' definitions are permitted in object expressions.
+
+
+ Copy-and-update record expressions must include at least one field.
+
+
+ '_' cannot be used as field name
+
+
+ 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 = ...'.
+
+
+ A property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+
+
+ Array method '{0}' 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.
+
+
+ Union case/exception '{0}' does not have field named '{1}'.
+
+
+ Union case/exception field '{0}' cannot be used more than once.
+
+
+ Named field '{0}' is used more than once.
+
+
+ Named field '{0}' conflicts with autogenerated name for anonymous field.
+
+
+ This literal expression or attribute argument results in an arithmetic overflow.
+
+
+ This is not valid literal expression. The [<Literal>] attribute will be ignored.
+
+
+ System.Runtime.InteropServices assembly is required to use UnknownWrapper\DispatchWrapper classes.
+
+
+ The mutable local '{0}' 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.
+
+
+ A type provider implemented GetStaticParametersForMethod, but ApplyStaticArgumentsForMethod was not implemented or invalid
+
+
+ An error occured applying the static arguments to a provided method
+
+
+ Unexpected character '{0}' in preprocessor expression
+
+
+ Unexpected token '{0}' in preprocessor expression
+
+
+ Incomplete preprocessor expression
+
+
+ Missing token '{0}' in preprocessor expression
+
+
+ An error occurred while reading the F# metadata node at position {0} in table '{1}' of assembly '{2}'. The node had no matching declaration. Please report this warning. You may need to recompile the F# assembly you are using.
+
+
+ Type inference caused the type variable {0} to escape its scope. Consider adding an explicit type parameter declaration or adjusting your code to be less generic.
+
+
+ Type inference caused an inference type variable to escape its scope. Consider adding type annotations to make your code less generic.
+
+
+ Redundant arguments are being ignored in function '{0}'. Expected {1} but got {2} arguments.
+
+
+ Lowercase literal '{0}' is being shadowed by a new pattern with the same name. Only uppercase and module-prefixed literals can be used as named patterns.
+
+
+ This literal pattern does not take arguments
+
+
+ Constructors are not permitted as extension members - they must be defined as part of the original definition of the type
+
+
+ Invalid response file '{0}' ( '{1}' )
+
+
+ Response file '{0}' not found in '{1}'
+
+
+ Response file name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long
+
+
+ Cannot find FSharp.Core.dll in compiler's directory
+
+
+ One tuple type is a struct tuple, the other is a reference tuple
+
+
+ This provided method requires static parameters
+
+
+ The conversion from {0} to {1} is a compile-time safe upcast, not a downcast. Consider using 'upcast' instead of 'downcast'.
+
+
+ The conversion from {0} to {1} is a compile-time safe upcast, not a downcast. Consider using the :> (upcast) operator instead of the :?> (downcast) operator.
+
+
+ The 'rec' on this module is implied by an outer 'rec' declaration and is being ignored
+
+
+ In a recursive declaration group, 'open' declarations must come first in each module
+
+
+ In a recursive declaration group, module abbreviations must come after all 'open' declarations and before other declarations
+
+
+ This declaration is not supported in recursive declaration groups
+
+
+ Invalid use of 'rec' keyword
+
+
+ If a union type has more than one case and is a struct, then all fields within the union type must be given unique names.
+
+
+ The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerFilePathAttribute.
+
+
+ Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string'
+
+
+ Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression.
+
+
+ The address of the variable '{0}' cannot be used at this point. A method or function may not return the address of this local value.
+
+
+ {0} is an active pattern and cannot be treated as a discriminated union case with named fields.
+
+
+ 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)'.
+
+
+ The system type '{0}' was required but no referenced system DLL contained this type
+
+
+ The member '{0}' matches multiple overloads of the same method.\nPlease restrict it to one of the following:{1}.
+
+
+ Method or object constructor '{0}' is not static
+
+
+ Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?
+
+
+ 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.
+
+
+ Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters.
+
+
+ Used to give the current class object an object name. Also used to give a name to a whole pattern within a pattern match.
+
+
+ Used to verify code during debugging.
+
+
+ Used as the name of the base class object.
+
+
+ In verbose syntax, indicates the start of a code block.
+
+
+ In verbose syntax, indicates the start of a class definition.
+
+
+ Indicates an implementation of an abstract method; used together with an abstract method declaration to create a virtual method.
+
+
+ Used to declare a delegate.
+
+
+ Used in looping constructs or to execute imperative code.
+
+
+ In verbose syntax, indicates the end of a block of code in a looping expression.
+
+
+ Used to convert to a type that is lower in the inheritance chain.
+
+
+ In a for expression, used when counting in reverse.
+
+
+ Used in conditional branching. A short form of else if.
+
+
+ Used in conditional branching.
+
+
+ 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.
+
+
+ Used to declare an exception type.
+
+
+ Indicates that a declared program element is defined in another binary or assembly.
+
+
+ Used as a Boolean literal.
+
+
+ Used together with try to introduce a block of code that executes regardless of whether an exception occurs.
+
+
+ Used in looping constructs.
+
+
+ Used in lambda expressions, also known as anonymous functions.
+
+
+ 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.
+
+
+ Used to reference the top-level .NET namespace.
+
+
+ Used in conditional branching constructs.
+
+
+ Used for sequence expressions and, in verbose syntax, to separate expressions from bindings.
+
+
+ Used to specify a base class or base interface.
+
+
+ Used to indicate a function that should be integrated directly into the caller's code.
+
+
+ Used to declare and implement interfaces.
+
+
+ Used to specify that a member is visible inside an assembly but not outside it.
+
+
+ Used to specify a computation that is to be performed only when a result is needed.
+
+
+ Used to associate, or bind, a name to a value or function.
+
+
+ Used in asynchronous workflows to bind a name to the result of an asynchronous computation, or, in other computation expressions, used to bind a name to a result, which is of the computation type.
+
+
+ Used to branch by comparing a value to a pattern.
+
+
+ Used to declare a property or method in an object type.
+
+
+ Used to associate a name with a group of related types, values, and functions, to logically separate it from other code.
+
+
+ Used to declare a variable, that is, a value that can be changed.
+
+
+ Used to associate a name with a group of related types and modules, to logically separate it from other code.
+
+
+ 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.
+
+
+ Not actually a keyword. However, not struct in combination is used as a generic parameter constraint.
+
+
+ Indicates the absence of an object. Also used in generic parameter constraints.
+
+
+ Used in discriminated unions to indicate the type of categories of values, and in delegate and exception declarations.
+
+
+ Used to make the contents of a namespace or module available without qualification.
+
+
+ Used with Boolean conditions as a Boolean or operator. Equivalent to ||. Also used in member constraints.
+
+
+ Used to implement a version of an abstract or virtual method that differs from the base version.
+
+
+ Restricts access to a member to code in the same type or module.
+
+
+ Allows access to a member from outside the type.
+
+
+ Used to indicate that a function is recursive.
+
+
+ Used to indicate a value to provide as the result of a computation expression.
+
+
+ Used to indicate a computation expression that, when evaluated, provides the result of the containing computation expression.
+
+
+ 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.
+
+
+ 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.
+
+
+ Used to declare a structure type. Also used in generic parameter constraints. Used for OCaml compatibility in module definitions.
+
+
+ Used in conditional expressions. Also used to perform side effects after object construction.
+
+
+ Used in for loops to indicate a range.
+
+
+ Used to introduce a block of code that might generate an exception. Used together with with or finally.
+
+
+ Used to declare a class, record, structure, discriminated union, enumeration type, unit of measure, or type abbreviation.
+
+
+ Used to convert to a type that is higher in the inheritance chain.
+
+
+ Used instead of let for values that require Dispose to be called to free resources.
+
+
+ Used instead of let! in asynchronous workflows and other computation expressions for values that require Dispose to be called to free resources.
+
+
+ Used in a signature to indicate a value, or in a type to declare a member, in limited situations.
+
+
+ Indicates the .NET void type. Used when interoperating with other .NET languages.
+
+
+ Used for Boolean conditions (when guards) on pattern matches and to introduce a constraint clause for a generic type parameter.
+
+
+ Introduces a looping construct.
+
+
+ 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.
+
+
+ Used in a sequence expression to produce a value for a sequence.
+
+
+ Used in a computation expression to append the result of a given computation expression to a collection of results for the containing computation expression.
+
+
+ In function types, delimits arguments and return values. Yields an expression (in sequence expressions); equivalent to the yield keyword. Used in match expressions
+
+
+ Assigns a value to a variable.
+
+
+ Converts a type to type that is higher in the hierarchy.
+
+
+ Converts a type to a type that is lower in the hierarchy.
+
+
+ Delimits a typed code quotation.
+
+
+ Delimits a untyped code quotation.
+
+
+ {0} '{1}' not found in assembly '{2}'. 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.
+
+
+ {0} '{1}' not found in type '{2}' from assembly '{3}'. 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.
+
+
+ is
+
+
+ This value is not a function and cannot be applied.
+
+
+ This value is not a function and cannot be applied. Did you intend to access the indexer via {0}.[index] instead?
+
+
+ This expression is not a function and cannot be applied. Did you intend to access the indexer via expr.[index] instead?
+
+
+
+
+
+
+ This value is not a function and cannot be applied. Did you forget to terminate a declaration?
+
+
+ The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling.
+
+
+ An error occurred while reading the F# metadata of assembly '{0}'. 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.
+
+
\ No newline at end of file
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSIstrings.fs b/src/buildfromsource/FSharp.Compiler.Private/FSIstrings.fs
new file mode 100644
index 00000000000..94cd9e3b429
--- /dev/null
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSIstrings.fs
@@ -0,0 +1,333 @@
+// This is a generated file; the original input is '..\fsi\FSIstrings.txt'
+namespace FSIstrings
+
+open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators
+open Microsoft.FSharp.Reflection
+open System.Reflection
+// (namespaces below for specific case of using the tool to compile FSharp.Core itself)
+open Microsoft.FSharp.Core
+open Microsoft.FSharp.Core.Operators
+open Microsoft.FSharp.Text
+open Microsoft.FSharp.Collections
+open Printf
+
+type internal SR private() =
+
+ // BEGIN BOILERPLATE
+
+ static let getCurrentAssembly () =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ typeof.GetTypeInfo().Assembly
+ #else
+ System.Reflection.Assembly.GetExecutingAssembly()
+ #endif
+
+ static let getTypeInfo (t: System.Type) =
+ #if DNXCORE50 || NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0
+ t.GetTypeInfo()
+ #else
+ t
+ #endif
+
+ static let resources = lazy (new System.Resources.ResourceManager("FSIstrings", getCurrentAssembly()))
+
+ static let GetString(name:string) =
+ let s = resources.Value.GetString(name, System.Globalization.CultureInfo.CurrentUICulture)
+ #if DEBUG
+ if null = s then
+ System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name)
+ #endif
+ s
+
+ static let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) =
+ FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl)
+
+ static let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition()
+
+ static let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer)
+ static let isFunctionType (ty1:System.Type) =
+ isNamedType(ty1) && getTypeInfo(ty1).IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC)
+
+ static let rec destFunTy (ty:System.Type) =
+ if isFunctionType ty then
+ ty, ty.GetGenericArguments()
+ else
+ match getTypeInfo(ty).BaseType with
+ | null -> failwith "destFunTy: not a function type"
+ | b -> destFunTy b
+
+ static let buildFunctionForOneArgPat (ty: System.Type) impl =
+ let _,tys = destFunTy ty
+ let rty = tys.[1]
+ // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"')
+ mkFunctionValue tys (fun inp -> impl rty inp)
+
+ static let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj =
+ match fmt.[i] with
+ | '%' -> go args ty (i+1)
+ | 'd'
+ | 'f'
+ | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1))
+ | _ -> failwith "bad format specifier"
+
+ // newlines and tabs get converted to strings when read from a resource file
+ // this will preserve their original intention
+ static let postProcessString (s : string) =
+ s.Replace("\\n","\n").Replace("\\t","\t").Replace("\\r","\r").Replace("\\\"", "\"")
+
+ static let createMessageString (messageString : string) (fmt : Printf.StringFormat<'T>) : 'T =
+ let fmt = fmt.Value // here, we use the actual error string, as opposed to the one stored as fmt
+ let len = fmt.Length
+
+ /// Function to capture the arguments and then run.
+ let rec capture args ty i =
+ if i >= len || (fmt.[i] = '%' && i+1 >= len) then
+ let b = new System.Text.StringBuilder()
+ b.AppendFormat(messageString, [| for x in List.rev args -> x |]) |> ignore
+ box(b.ToString())
+ // REVIEW: For these purposes, this should be a nop, but I'm leaving it
+ // in incase we ever decide to support labels for the error format string
+ // E.g., "%s%d"
+ elif System.Char.IsSurrogatePair(fmt,i) then
+ capture args ty (i+2)
+ else
+ match fmt.[i] with
+ | '%' ->
+ let i = i+1
+ capture1 fmt i args ty capture
+ | _ ->
+ capture args ty (i+1)
+
+ (unbox (capture [] (typeof<'T>) 0) : 'T)
+
+ static let mutable swallowResourceText = false
+
+ static let GetStringFunc((messageID : string),(fmt : Printf.StringFormat<'T>)) : 'T =
+ if swallowResourceText then
+ sprintf fmt
+ else
+ let mutable messageString = GetString(messageID)
+ messageString <- postProcessString messageString
+ createMessageString messageString fmt
+
+ /// If set to true, then all error messages will just return the filled 'holes' delimited by ',,,'s - this is for language-neutral testing (e.g. localization-invariant baselines).
+ static member SwallowResourceText with get () = swallowResourceText
+ and set (b) = swallowResourceText <- b
+ // END BOILERPLATE
+
+ /// Stopped due to error\n
+ /// (Originally from ..\fsi\FSIstrings.txt:2)
+ static member stoppedDueToError() = (GetStringFunc("stoppedDueToError",",,,") )
+ /// Usage: %s [script.fsx []]
+ /// (Originally from ..\fsi\FSIstrings.txt:3)
+ static member fsiUsage(a0 : System.String) = (GetStringFunc("fsiUsage",",,,%s,,,") a0)
+ /// - INPUT FILES -
+ /// (Originally from ..\fsi\FSIstrings.txt:4)
+ static member fsiInputFiles() = (GetStringFunc("fsiInputFiles",",,,") )
+ /// - CODE GENERATION -
+ /// (Originally from ..\fsi\FSIstrings.txt:5)
+ static member fsiCodeGeneration() = (GetStringFunc("fsiCodeGeneration",",,,") )
+ /// - ERRORS AND WARNINGS -
+ /// (Originally from ..\fsi\FSIstrings.txt:6)
+ static member fsiErrorsAndWarnings() = (GetStringFunc("fsiErrorsAndWarnings",",,,") )
+ /// - LANGUAGE -
+ /// (Originally from ..\fsi\FSIstrings.txt:7)
+ static member fsiLanguage() = (GetStringFunc("fsiLanguage",",,,") )
+ /// - MISCELLANEOUS -
+ /// (Originally from ..\fsi\FSIstrings.txt:8)
+ static member fsiMiscellaneous() = (GetStringFunc("fsiMiscellaneous",",,,") )
+ /// - ADVANCED -
+ /// (Originally from ..\fsi\FSIstrings.txt:9)
+ static member fsiAdvanced() = (GetStringFunc("fsiAdvanced",",,,") )
+ /// Exception raised when starting remoting server.\n%s
+ /// (Originally from ..\fsi\FSIstrings.txt:10)
+ static member fsiExceptionRaisedStartingServer(a0 : System.String) = (GetStringFunc("fsiExceptionRaisedStartingServer",",,,%s,,,") a0)
+ /// Use the given file on startup as initial input
+ /// (Originally from ..\fsi\FSIstrings.txt:11)
+ static member fsiUse() = (GetStringFunc("fsiUse",",,,") )
+ /// #load the given file on startup
+ /// (Originally from ..\fsi\FSIstrings.txt:12)
+ static member fsiLoad() = (GetStringFunc("fsiLoad",",,,") )
+ /// Treat remaining arguments as command line arguments, accessed using fsi.CommandLineArgs
+ /// (Originally from ..\fsi\FSIstrings.txt:13)
+ static member fsiRemaining() = (GetStringFunc("fsiRemaining",",,,") )
+ /// Display this usage message (Short form: -?)
+ /// (Originally from ..\fsi\FSIstrings.txt:14)
+ static member fsiHelp() = (GetStringFunc("fsiHelp",",,,") )
+ /// Exit fsi after loading the files or running the .fsx script given on the command line
+ /// (Originally from ..\fsi\FSIstrings.txt:15)
+ static member fsiExec() = (GetStringFunc("fsiExec",",,,") )
+ /// Execute interactions on a Windows Forms event loop (on by default)
+ /// (Originally from ..\fsi\FSIstrings.txt:16)
+ static member fsiGui() = (GetStringFunc("fsiGui",",,,") )
+ /// Suppress fsi writing to stdout
+ /// (Originally from ..\fsi\FSIstrings.txt:17)
+ static member fsiQuiet() = (GetStringFunc("fsiQuiet",",,,") )
+ /// Support TAB completion in console (on by default)
+ /// (Originally from ..\fsi\FSIstrings.txt:18)
+ static member fsiReadline() = (GetStringFunc("fsiReadline",",,,") )
+ /// Emit debug information in quotations
+ /// (Originally from ..\fsi\FSIstrings.txt:19)
+ static member fsiEmitDebugInfoInQuotations() = (GetStringFunc("fsiEmitDebugInfoInQuotations",",,,") )
+ /// For help type #help;;
+ /// (Originally from ..\fsi\FSIstrings.txt:20)
+ static member fsiBanner3() = (GetStringFunc("fsiBanner3",",,,") )
+ /// A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'.
+ /// (Originally from ..\fsi\FSIstrings.txt:21)
+ static member fsiConsoleProblem() = (GetStringFunc("fsiConsoleProblem",",,,") )
+ /// '%s' is not a valid assembly name
+ /// (Originally from ..\fsi\FSIstrings.txt:22)
+ static member fsiInvalidAssembly(a0 : System.String) = (2301, GetStringFunc("fsiInvalidAssembly",",,,%s,,,") a0)
+ /// Directory '%s' doesn't exist
+ /// (Originally from ..\fsi\FSIstrings.txt:23)
+ static member fsiDirectoryDoesNotExist(a0 : System.String) = (2302, GetStringFunc("fsiDirectoryDoesNotExist",",,,%s,,,") a0)
+ /// Invalid directive '#%s %s'
+ /// (Originally from ..\fsi\FSIstrings.txt:24)
+ static member fsiInvalidDirective(a0 : System.String, a1 : System.String) = (GetStringFunc("fsiInvalidDirective",",,,%s,,,%s,,,") a0 a1)
+ /// Warning: line too long, ignoring some characters\n
+ /// (Originally from ..\fsi\FSIstrings.txt:25)
+ static member fsiLineTooLong() = (GetStringFunc("fsiLineTooLong",",,,") )
+ /// Real: %s, CPU: %s, GC %s
+ /// (Originally from ..\fsi\FSIstrings.txt:26)
+ static member fsiTimeInfoMainString(a0 : System.String, a1 : System.String, a2 : System.String) = (GetStringFunc("fsiTimeInfoMainString",",,,%s,,,%s,,,%s,,,") a0 a1 a2)
+ /// gen
+ /// (Originally from ..\fsi\FSIstrings.txt:27)
+ static member fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGeneration() = (GetStringFunc("fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGeneration",",,,") )
+ /// \n\nException raised during pretty printing.\nPlease report this so it can be fixed.\nTrace: %s\n
+ /// (Originally from ..\fsi\FSIstrings.txt:28)
+ static member fsiExceptionDuringPrettyPrinting(a0 : System.String) = (GetStringFunc("fsiExceptionDuringPrettyPrinting",",,,%s,,,") a0)
+ /// F# Interactive directives:
+ /// (Originally from ..\fsi\FSIstrings.txt:29)
+ static member fsiIntroTextHeader1directives() = (GetStringFunc("fsiIntroTextHeader1directives",",,,") )
+ /// Reference (dynamically load) the given DLL
+ /// (Originally from ..\fsi\FSIstrings.txt:30)
+ static member fsiIntroTextHashrInfo() = (GetStringFunc("fsiIntroTextHashrInfo",",,,") )
+ /// Add the given search path for referenced DLLs
+ /// (Originally from ..\fsi\FSIstrings.txt:31)
+ static member fsiIntroTextHashIInfo() = (GetStringFunc("fsiIntroTextHashIInfo",",,,") )
+ /// Load the given file(s) as if compiled and referenced
+ /// (Originally from ..\fsi\FSIstrings.txt:32)
+ static member fsiIntroTextHashloadInfo() = (GetStringFunc("fsiIntroTextHashloadInfo",",,,") )
+ /// Toggle timing on/off
+ /// (Originally from ..\fsi\FSIstrings.txt:33)
+ static member fsiIntroTextHashtimeInfo() = (GetStringFunc("fsiIntroTextHashtimeInfo",",,,") )
+ /// Display help
+ /// (Originally from ..\fsi\FSIstrings.txt:34)
+ static member fsiIntroTextHashhelpInfo() = (GetStringFunc("fsiIntroTextHashhelpInfo",",,,") )
+ /// Exit
+ /// (Originally from ..\fsi\FSIstrings.txt:35)
+ static member fsiIntroTextHashquitInfo() = (GetStringFunc("fsiIntroTextHashquitInfo",",,,") )
+ /// F# Interactive command line options:
+ /// (Originally from ..\fsi\FSIstrings.txt:36)
+ static member fsiIntroTextHeader2commandLine() = (GetStringFunc("fsiIntroTextHeader2commandLine",",,,") )
+ /// See '%s' for options
+ /// (Originally from ..\fsi\FSIstrings.txt:37)
+ static member fsiIntroTextHeader3(a0 : System.String) = (GetStringFunc("fsiIntroTextHeader3",",,,%s,,,") a0)
+ /// Loading
+ /// (Originally from ..\fsi\FSIstrings.txt:38)
+ static member fsiLoadingFilesPrefixText() = (GetStringFunc("fsiLoadingFilesPrefixText",",,,") )
+ /// \n- Interrupt\n
+ /// (Originally from ..\fsi\FSIstrings.txt:39)
+ static member fsiInterrupt() = (GetStringFunc("fsiInterrupt",",,,") )
+ /// \n- Exit...\n
+ /// (Originally from ..\fsi\FSIstrings.txt:40)
+ static member fsiExit() = (GetStringFunc("fsiExit",",,,") )
+ /// - Aborting main thread...
+ /// (Originally from ..\fsi\FSIstrings.txt:41)
+ static member fsiAbortingMainThread() = (GetStringFunc("fsiAbortingMainThread",",,,") )
+ /// Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was:\n\t%s
+ /// (Originally from ..\fsi\FSIstrings.txt:42)
+ static member fsiCouldNotInstallCtrlCHandler(a0 : System.String) = (GetStringFunc("fsiCouldNotInstallCtrlCHandler",",,,%s,,,") a0)
+ /// --> Referenced '%s'
+ /// (Originally from ..\fsi\FSIstrings.txt:43)
+ static member fsiDidAHashr(a0 : System.String) = (GetStringFunc("fsiDidAHashr",",,,%s,,,") a0)
+ /// --> Referenced '%s' (file may be locked by F# Interactive process)
+ /// (Originally from ..\fsi\FSIstrings.txt:44)
+ static member fsiDidAHashrWithLockWarning(a0 : System.String) = (GetStringFunc("fsiDidAHashrWithLockWarning",",,,%s,,,") a0)
+ /// --> Referenced '%s' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly)
+ /// (Originally from ..\fsi\FSIstrings.txt:45)
+ static member fsiDidAHashrWithStaleWarning(a0 : System.String) = (GetStringFunc("fsiDidAHashrWithStaleWarning",",,,%s,,,") a0)
+ /// --> Added '%s' to library include path
+ /// (Originally from ..\fsi\FSIstrings.txt:46)
+ static member fsiDidAHashI(a0 : System.String) = (GetStringFunc("fsiDidAHashI",",,,%s,,,") a0)
+ /// --> Timing now on
+ /// (Originally from ..\fsi\FSIstrings.txt:47)
+ static member fsiTurnedTimingOn() = (GetStringFunc("fsiTurnedTimingOn",",,,") )
+ /// --> Timing now off
+ /// (Originally from ..\fsi\FSIstrings.txt:48)
+ static member fsiTurnedTimingOff() = (GetStringFunc("fsiTurnedTimingOff",",,,") )
+ /// - Unexpected ThreadAbortException (Ctrl-C) during event handling: Trying to restart...
+ /// (Originally from ..\fsi\FSIstrings.txt:49)
+ static member fsiUnexpectedThreadAbortException() = (GetStringFunc("fsiUnexpectedThreadAbortException",",,,") )
+ /// Failed to resolve assembly '%s'
+ /// (Originally from ..\fsi\FSIstrings.txt:50)
+ static member fsiFailedToResolveAssembly(a0 : System.String) = (GetStringFunc("fsiFailedToResolveAssembly",",,,%s,,,") a0)
+ /// Binding session to '%s'...
+ /// (Originally from ..\fsi\FSIstrings.txt:51)
+ static member fsiBindingSessionTo(a0 : System.String) = (GetStringFunc("fsiBindingSessionTo",",,,%s,,,") a0)
+ /// Microsoft (R) F# Interactive version %s
+ /// (Originally from ..\fsi\FSIstrings.txt:52)
+ static member fsiProductName(a0 : System.String) = (GetStringFunc("fsiProductName",",,,%s,,,") a0)
+ /// F# Interactive for F# %s
+ /// (Originally from ..\fsi\FSIstrings.txt:53)
+ static member fsiProductNameCommunity(a0 : System.String) = (GetStringFunc("fsiProductNameCommunity",",,,%s,,,") a0)
+ /// Prevents references from being locked by the F# Interactive process
+ /// (Originally from ..\fsi\FSIstrings.txt:54)
+ static member shadowCopyReferences() = (GetStringFunc("shadowCopyReferences",",,,") )
+
+ /// Call this method once to validate that all known resources are valid; throws if not
+ static member RunStartupValidation() =
+ ignore(GetString("stoppedDueToError"))
+ ignore(GetString("fsiUsage"))
+ ignore(GetString("fsiInputFiles"))
+ ignore(GetString("fsiCodeGeneration"))
+ ignore(GetString("fsiErrorsAndWarnings"))
+ ignore(GetString("fsiLanguage"))
+ ignore(GetString("fsiMiscellaneous"))
+ ignore(GetString("fsiAdvanced"))
+ ignore(GetString("fsiExceptionRaisedStartingServer"))
+ ignore(GetString("fsiUse"))
+ ignore(GetString("fsiLoad"))
+ ignore(GetString("fsiRemaining"))
+ ignore(GetString("fsiHelp"))
+ ignore(GetString("fsiExec"))
+ ignore(GetString("fsiGui"))
+ ignore(GetString("fsiQuiet"))
+ ignore(GetString("fsiReadline"))
+ ignore(GetString("fsiEmitDebugInfoInQuotations"))
+ ignore(GetString("fsiBanner3"))
+ ignore(GetString("fsiConsoleProblem"))
+ ignore(GetString("fsiInvalidAssembly"))
+ ignore(GetString("fsiDirectoryDoesNotExist"))
+ ignore(GetString("fsiInvalidDirective"))
+ ignore(GetString("fsiLineTooLong"))
+ ignore(GetString("fsiTimeInfoMainString"))
+ ignore(GetString("fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGeneration"))
+ ignore(GetString("fsiExceptionDuringPrettyPrinting"))
+ ignore(GetString("fsiIntroTextHeader1directives"))
+ ignore(GetString("fsiIntroTextHashrInfo"))
+ ignore(GetString("fsiIntroTextHashIInfo"))
+ ignore(GetString("fsiIntroTextHashloadInfo"))
+ ignore(GetString("fsiIntroTextHashtimeInfo"))
+ ignore(GetString("fsiIntroTextHashhelpInfo"))
+ ignore(GetString("fsiIntroTextHashquitInfo"))
+ ignore(GetString("fsiIntroTextHeader2commandLine"))
+ ignore(GetString("fsiIntroTextHeader3"))
+ ignore(GetString("fsiLoadingFilesPrefixText"))
+ ignore(GetString("fsiInterrupt"))
+ ignore(GetString("fsiExit"))
+ ignore(GetString("fsiAbortingMainThread"))
+ ignore(GetString("fsiCouldNotInstallCtrlCHandler"))
+ ignore(GetString("fsiDidAHashr"))
+ ignore(GetString("fsiDidAHashrWithLockWarning"))
+ ignore(GetString("fsiDidAHashrWithStaleWarning"))
+ ignore(GetString("fsiDidAHashI"))
+ ignore(GetString("fsiTurnedTimingOn"))
+ ignore(GetString("fsiTurnedTimingOff"))
+ ignore(GetString("fsiUnexpectedThreadAbortException"))
+ ignore(GetString("fsiFailedToResolveAssembly"))
+ ignore(GetString("fsiBindingSessionTo"))
+ ignore(GetString("fsiProductName"))
+ ignore(GetString("fsiProductNameCommunity"))
+ ignore(GetString("shadowCopyReferences"))
+ ()
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSIstrings.resx b/src/buildfromsource/FSharp.Compiler.Private/FSIstrings.resx
new file mode 100644
index 00000000000..38a86b6e259
--- /dev/null
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSIstrings.resx
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Stopped due to error\n
+
+
+ Usage: {0} <options> [script.fsx [<arguments>]]
+
+
+ - INPUT FILES -
+
+
+ - CODE GENERATION -
+
+
+ - ERRORS AND WARNINGS -
+
+
+ - LANGUAGE -
+
+
+ - MISCELLANEOUS -
+
+
+ - ADVANCED -
+
+
+ Exception raised when starting remoting server.\n{0}
+
+
+ Use the given file on startup as initial input
+
+
+ #load the given file on startup
+
+
+ Treat remaining arguments as command line arguments, accessed using fsi.CommandLineArgs
+
+
+ Display this usage message (Short form: -?)
+
+
+ Exit fsi after loading the files or running the .fsx script given on the command line
+
+
+ Execute interactions on a Windows Forms event loop (on by default)
+
+
+ Suppress fsi writing to stdout
+
+
+ Support TAB completion in console (on by default)
+
+
+ Emit debug information in quotations
+
+
+ For help type #help;;
+
+
+ A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'.
+
+
+ '{0}' is not a valid assembly name
+
+
+ Directory '{0}' doesn't exist
+
+
+ Invalid directive '#{0} {1}'
+
+
+ Warning: line too long, ignoring some characters\n
+
+
+ Real: {0}, CPU: {1}, GC {2}
+
+
+ gen
+
+
+ \n\nException raised during pretty printing.\nPlease report this so it can be fixed.\nTrace: {0}\n
+
+
+ F# Interactive directives:
+
+
+ Reference (dynamically load) the given DLL
+
+
+ Add the given search path for referenced DLLs
+
+
+ Load the given file(s) as if compiled and referenced
+
+
+ Toggle timing on/off
+
+
+ Display help
+
+
+ Exit
+
+
+ F# Interactive command line options:
+
+
+ See '{0}' for options
+
+
+ Loading
+
+
+ \n- Interrupt\n
+
+
+ \n- Exit...\n
+
+
+ - Aborting main thread...
+
+
+ Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was:\n\t{0}
+
+
+ --> Referenced '{0}'
+
+
+ --> Referenced '{0}' (file may be locked by F# Interactive process)
+
+
+ --> Referenced '{0}' (an assembly with a different timestamp has already been referenced from this location, reset fsi to load the updated assembly)
+
+
+ --> Added '{0}' to library include path
+
+
+ --> Timing now on
+
+
+ --> Timing now off
+
+
+ - Unexpected ThreadAbortException (Ctrl-C) during event handling: Trying to restart...
+
+
+ Failed to resolve assembly '{0}'
+
+
+ Binding session to '{0}'...
+
+
+ Microsoft (R) F# Interactive version {0}
+
+
+ F# Interactive for F# {0}
+
+
+ Prevents references from being locked by the F# Interactive process
+
+
\ No newline at end of file
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj b/src/buildfromsource/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
index 4d5189148f0..6e4a625372c 100644
--- a/src/buildfromsource/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
@@ -8,7 +8,7 @@
FSharp.Compiler.Private$(NoWarn);45;55;62;75;1204true
- $(DefineConstants);EXTENSIONTYPING;COMPILER
+ $(DefineConstants);COMPILER$(OtherFlags) --warnon:1182 --maxerrors:20 --extraoptimizationloops:1
@@ -24,12 +24,14 @@
assemblyinfo.FSharp.Compiler.Private.dll.fs
-
- FSComp.txt
-
+
+ FSComp.resx
+
FSStrings.resx
+
+
Reflection\reshapedreflection.fs
@@ -492,6 +494,12 @@
Symbols/Exprs.fs
+
+ Symbols/SymbolPatterns.fsi
+
+
+ Symbols/SymbolPatterns.fs
+
@@ -590,11 +598,17 @@
Service/ServiceStructure.fs
+
+ Service/ServiceAnalysis.fsi
+
+
+ Service/ServiceAnalysis.fs
+
-
- FSIstrings.txt
-
+
+ FSIstrings.resx
+
InteractiveSession\fsi.fsi
@@ -615,27 +629,6 @@
-
@@ -654,7 +647,7 @@
-
+
diff --git a/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj b/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
index 70d5835c025..3737779f560 100644
--- a/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
+++ b/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
@@ -14,12 +14,12 @@
- $([System.DateTime]::Now.ToString(`yyMMdd`))
+ $([System.DateTime]::Now.ToString(`yyMMdd`))https://github.com/Microsoft/visualfsharp/blob/master/License.txthttps://github.com/Microsoft/visualfsharpMicrosoft and F# Software FoundationVisual F# Compiler FSharp functional programming
- -$(BuildRevision.Trim())-0
+ -rc-$(BuildRevision.Trim())-04.2.0$(PreReleaseSuffix)-prop "licenseUrl=$(PackageLicenceUrl)" -prop "version=$(PackageVersion)" -prop "authors=$(PackageAuthors)" -prop "projectUrl=$(PackageProjectUrl)" -prop "tags=$(PackageTags)"
diff --git a/src/buildfromsource/Fsc/Fsc.fsproj b/src/buildfromsource/Fsc/Fsc.fsproj
index c40121222e6..572a8c8efaf 100644
--- a/src/buildfromsource/Fsc/Fsc.fsproj
+++ b/src/buildfromsource/Fsc/Fsc.fsproj
@@ -9,7 +9,7 @@
fsc$(NoWarn);45;55;62;75;1204true
- $(DefineConstants);EXTENSIONTYPING;COMPILER
+ $(DefineConstants);COMPILER$(OtherFlags) --maxerrors:20 --extraoptimizationloops:1
diff --git a/src/buildfromsource/Fsi/Fsi.fsproj b/src/buildfromsource/Fsi/Fsi.fsproj
index d06056fe096..9ecd22b7265 100644
--- a/src/buildfromsource/Fsi/Fsi.fsproj
+++ b/src/buildfromsource/Fsi/Fsi.fsproj
@@ -9,7 +9,7 @@
fsi$(NoWarn);45;55;62;75;1204true
- $(DefineConstants);BUILD_FROM_SOURCE;COMPILER;EXTENSIONTYPING
+ $(DefineConstants);BUILD_FROM_SOURCE;COMPILER$(OtherFlags) --warnon:1182 --maxerrors:20 --extraoptimizationloops:1
diff --git a/src/buildfromsource/NuGet.config b/src/buildfromsource/NuGet.config
new file mode 100644
index 00000000000..6fd4b1873bb
--- /dev/null
+++ b/src/buildfromsource/NuGet.config
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/buildfromsource/buildtools/fslex/fslex.fsproj b/src/buildfromsource/buildtools/fslex/fslex.fsproj
new file mode 100644
index 00000000000..c110c53d3d6
--- /dev/null
+++ b/src/buildfromsource/buildtools/fslex/fslex.fsproj
@@ -0,0 +1,14 @@
+
+
+
+ netcoreapp2.0
+ INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstant)
+ true
+
+
+
+
+
+
+
+
diff --git a/src/buildfromsource/buildtools/fsyacc/fsyacc.fsproj b/src/buildfromsource/buildtools/fsyacc/fsyacc.fsproj
new file mode 100644
index 00000000000..701126cb37e
--- /dev/null
+++ b/src/buildfromsource/buildtools/fsyacc/fsyacc.fsproj
@@ -0,0 +1,14 @@
+
+
+
+ netcoreapp2.0
+ INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstant)
+ true
+
+
+
+
+
+
+
+
diff --git a/src/fsharp/AccessibilityLogic.fs b/src/fsharp/AccessibilityLogic.fs
index 6c4362d9a4f..c69d00cd0a0 100644
--- a/src/fsharp/AccessibilityLogic.fs
+++ b/src/fsharp/AccessibilityLogic.fs
@@ -14,7 +14,7 @@ open Microsoft.FSharp.Compiler.Tast
open Microsoft.FSharp.Compiler.Tastops
open Microsoft.FSharp.Compiler.TcGlobals
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -228,7 +228,7 @@ let ComputeILAccess isPublic isFamily isFamilyOrAssembly isFamilyAndAssembly =
let IsILFieldInfoAccessible g amap m ad x =
match x with
| ILFieldInfo (tinfo,fd) -> IsILTypeAndMemberAccessible g amap m ad ad tinfo fd.Access
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField (amap, tpfi, m) as pfi ->
let access = tpfi.PUntaint((fun fi -> ComputeILAccess fi.IsPublic fi.IsFamily fi.IsFamilyOrAssembly fi.IsFamilyAndAssembly), m)
IsProvidedMemberAccessible amap m ad pfi.EnclosingType access
@@ -314,7 +314,7 @@ let IsTypeAndMethInfoAccessible amap m adTyp ad = function
| ILMeth (g,x,_) -> IsILMethInfoAccessible g amap m adTyp ad x
| FSMeth (_,_,vref,_) -> IsValAccessible ad vref
| DefaultStructCtor(g,typ) -> IsTypeAccessible g amap m ad typ
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,tpmb,_,m) as etmi ->
let access = tpmb.PUntaint((fun mi -> ComputeILAccess mi.IsPublic mi.IsFamily mi.IsFamilyOrAssembly mi.IsFamilyAndAssembly), m)
IsProvidedMemberAccessible amap m ad etmi.EnclosingType access
@@ -325,7 +325,7 @@ let IsPropInfoAccessible g amap m ad = function
| ILProp (_,x) -> IsILPropInfoAccessible g amap m ad x
| FSProp (_,_,Some vref,_)
| FSProp (_,_,_,Some vref) -> IsValAccessible ad vref
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp (amap, tppi, m) as pp->
let access =
let a = tppi.PUntaint((fun ppi ->
diff --git a/src/fsharp/AttributeChecking.fs b/src/fsharp/AttributeChecking.fs
index ccd5c6d2706..d3902075119 100644
--- a/src/fsharp/AttributeChecking.fs
+++ b/src/fsharp/AttributeChecking.fs
@@ -19,7 +19,7 @@ open Microsoft.FSharp.Compiler.Tast
open Microsoft.FSharp.Compiler.Tastops
open Microsoft.FSharp.Compiler.TcGlobals
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
open Microsoft.FSharp.Core.CompilerServices
#endif
@@ -130,7 +130,7 @@ let AttribInfosOfFS g attribs =
let GetAttribInfosOfEntity g amap m (tcref:TyconRef) =
match metadataOfTycon tcref.Deref with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// TODO: provided attributes
| ProvidedTypeMetadata _info -> []
//let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)),m)
@@ -149,7 +149,7 @@ let GetAttribInfosOfMethod amap m minfo =
| ILMeth (g,ilminfo,_) -> ilminfo.RawMetadata.CustomAttrs |> AttribInfosOfIL g amap ilminfo.MetadataScope m
| FSMeth (g,_,vref,_) -> vref.Attribs |> AttribInfosOfFS g
| DefaultStructCtor _ -> []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// TODO: provided attributes
| ProvidedMeth (_,_mi,_,_m) ->
[]
@@ -162,7 +162,7 @@ let GetAttribInfosOfProp amap m pinfo =
| FSProp(g,_,Some vref,_)
| FSProp(g,_,_,Some vref) -> vref.Attribs |> AttribInfosOfFS g
| FSProp _ -> failwith "GetAttribInfosOfProp: unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// TODO: provided attributes
| ProvidedProp _ -> []
#endif
@@ -171,7 +171,7 @@ let GetAttribInfosOfEvent amap m einfo =
match einfo with
| ILEvent(g, x) -> x.RawMetadata.CustomAttrs |> AttribInfosOfIL g amap x.ILTypeInfo.ILScopeRef m
| FSEvent(_, pi, _vref1, _vref2) -> GetAttribInfosOfProp amap m pi
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// TODO: provided attributes
| ProvidedEvent _ -> []
#endif
@@ -183,7 +183,7 @@ let GetAttribInfosOfEvent amap m einfo =
let TryBindTyconRefAttribute g m (AttribInfo (atref,_) as args) (tcref:TyconRef) f1 f2 f3 =
ignore m; ignore f3
match metadataOfTycon tcref.Deref with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)),m)
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with
@@ -207,14 +207,14 @@ let BindMethInfoAttributes m minfo f1 f2 f3 =
| ILMeth (_,x,_) -> f1 x.RawMetadata.CustomAttrs
| FSMeth (_,_,vref,_) -> f2 vref.Attribs
| DefaultStructCtor _ -> f2 []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth (_,mi,_,_) -> f3 (mi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m))
#endif
/// Analyze three cases for attributes declared on methods: IL-declared attributes, F#-declared attributes and
/// provided attributes.
let TryBindMethInfoAttribute g m (AttribInfo(atref,_) as attribSpec) minfo f1 f2 f3 =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
#else
// to prevent unused parameter warning
ignore f3
@@ -222,7 +222,7 @@ let TryBindMethInfoAttribute g m (AttribInfo(atref,_) as attribSpec) minfo f1 f2
BindMethInfoAttributes m minfo
(fun ilAttribs -> TryDecodeILAttribute g atref ilAttribs |> Option.bind f1)
(fun fsAttribs -> TryFindFSharpAttribute g attribSpec fsAttribs |> Option.bind f2)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
(fun provAttribs ->
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with
| Some args -> f3 args
@@ -316,7 +316,7 @@ let CheckFSharpAttributes g attribs m =
CompleteD
)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Check a list of provided attributes for 'ObsoleteAttribute', returning errors and warnings as data
let private CheckProvidedAttributes (g: TcGlobals) m (provAttribs: Tainted) =
let (AttribInfo(tref,_)) = g.attrib_SystemObsolete
@@ -368,7 +368,7 @@ let CheckFSharpAttributesForUnseen g attribs _m =
(CheckFSharpAttributesForObsolete g attribs ||
CheckFSharpAttributesForHidden g attribs)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Indicate if a list of provided attributes contains 'ObsoleteAttribute'. Used to suppress the item in intellisense.
let CheckProvidedAttributesForUnseen (provAttribs: Tainted) m =
provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), typeof.FullName).IsSome),m)
@@ -381,7 +381,7 @@ let CheckPropInfoAttributes pinfo m =
| FSProp(g,_,Some vref,_)
| FSProp(g,_,_,Some vref) -> CheckFSharpAttributes g vref.Attribs m
| FSProp _ -> failwith "CheckPropInfoAttributes: unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp (amap,pi,m) ->
CheckProvidedAttributes amap.g m (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m))
@@ -393,7 +393,7 @@ let CheckILFieldAttributes g (finfo:ILFieldInfo) m =
match finfo with
| ILFieldInfo(_,pd) ->
CheckILAttributes g pd.CustomAttrs m |> CommitOperationResult
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField (amap,fi,m) ->
CheckProvidedAttributes amap.g m (fi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) |> CommitOperationResult
#endif
@@ -411,7 +411,7 @@ let CheckMethInfoAttributes g m tyargsOpt minfo =
else
CompleteD)
Some res)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
(fun provAttribs -> Some (CheckProvidedAttributes g m provAttribs))
#else
(fun _provAttribs -> None)
@@ -427,7 +427,7 @@ let MethInfoIsUnseen g m typ minfo =
match BindMethInfoAttributes m minfo
(fun ilAttribs -> Some(CheckILAttributesForUnseen g ilAttribs m))
(fun fsAttribs -> Some(CheckFSharpAttributesForUnseen g fsAttribs m))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
(fun provAttribs -> Some(CheckProvidedAttributesForUnseen provAttribs m))
#else
(fun _provAttribs -> None)
@@ -437,7 +437,7 @@ let MethInfoIsUnseen g m typ minfo =
| None -> false
let isUnseenByHidingAttribute =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
not (isObjTy g typ) &&
isAppTy g typ &&
isObjTy g minfo.EnclosingType &&
@@ -470,7 +470,7 @@ let PropInfoIsUnseen m pinfo =
| FSProp (g,_,Some vref,_)
| FSProp (g,_,_,Some vref) -> CheckFSharpAttributesForUnseen g vref.Attribs m
| FSProp _ -> failwith "CheckPropInfoAttributes: unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp (_amap,pi,m) ->
CheckProvidedAttributesForUnseen (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) m
#endif
diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs
index 21251bd24e4..0cab042759a 100644
--- a/src/fsharp/CompileOps.fs
+++ b/src/fsharp/CompileOps.fs
@@ -4,11 +4,12 @@
module internal Microsoft.FSharp.Compiler.CompileOps
open System
+open System.Collections.Concurrent
+open System.Collections.Generic
open System.Diagnostics
-open System.Text
open System.IO
-open System.Collections.Generic
open System.Runtime.CompilerServices
+open System.Text
open Internal.Utilities
open Internal.Utilities.Text
@@ -49,7 +50,7 @@ open Microsoft.FSharp.Compiler.PrettyNaming
open Microsoft.FSharp.Compiler.Import
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
open Microsoft.FSharp.Core.CompilerServices
#endif
@@ -101,7 +102,7 @@ exception HashLoadedScriptConsideredSource of range
let GetRangeOfDiagnostic(err:PhasedDiagnostic) =
let rec RangeFromException = function
| ErrorFromAddingConstraint(_, err2, _) -> RangeFromException err2
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ExtensionTyping.ProvidedTypeResolutionNoRange(e) -> RangeFromException e
| ExtensionTyping.ProvidedTypeResolution(m, _)
#endif
@@ -233,7 +234,7 @@ let GetRangeOfDiagnostic(err:PhasedDiagnostic) =
// Strip TargetInvocationException wrappers
| :? System.Reflection.TargetInvocationException as e ->
RangeFromException e.InnerException
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| :? TypeProviderError as e -> e.Range |> Some
#endif
@@ -352,7 +353,7 @@ let GetDiagnosticNumber(err:PhasedDiagnostic) =
| UnresolvedConversionOperator _ -> 93
// avoid 94-100 for safety
| ObsoleteError _ -> 101
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ExtensionTyping.ProvidedTypeResolutionNoRange _
| ExtensionTyping.ProvidedTypeResolution _ -> 103
#endif
@@ -369,7 +370,7 @@ let GetDiagnosticNumber(err:PhasedDiagnostic) =
| Failure _ -> 192
| NumberedError((n, _), _) -> n
| IllegalFileNameChar(fileName, invalidChar) -> fst (FSComp.SR.buildUnexpectedFileNameCharacter(fileName, string invalidChar))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| :? TypeProviderError as e -> e.Number
#endif
| ErrorsFromAddingSubsumptionConstraint (_, _, _, _, _, ContextInfo.DowncastUsedInsteadOfUpcast _, _) -> fst (FSComp.SR.considerUpcast("", ""))
@@ -747,7 +748,7 @@ let OutputPhasedErrorR (os:StringBuilder) (err:PhasedDiagnostic) =
| ErrorFromAddingConstraint(_, e, _) ->
OutputExceptionR os e
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ExtensionTyping.ProvidedTypeResolutionNoRange(e)
| ExtensionTyping.ProvidedTypeResolution(_, e) ->
@@ -1726,7 +1727,7 @@ let CollectDiagnostic (implicitIncludeDir, showFullPaths, flattenErrors, errorSt
relatedErrors |> List.iter OutputRelatedError
match err with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| {Exception = (:? TypeProviderError as tpe)} ->
tpe.Iter (fun e ->
let newErr = {err with Exception = e}
@@ -1774,20 +1775,25 @@ let OutputDiagnosticContext prefix fileLineFn os err =
let GetFSharpCoreLibraryName () = "FSharp.Core"
// If necessary assume a reference to the latest .NET Framework FSharp.Core with which those tools are built.
-let GetDefaultFSharpCoreReference() = typeof>.Assembly.Location
+let GetDefaultFSharpCoreReference () = typeof>.Assembly.Location
-// If necessary assume a reference to the latest System.ValueTuple with which those tools are built.
-let GetDefaultSystemValueTupleReference() =
-#if COMPILER_SERVICE_AS_DLL
- None // TODO, right now FCS doesn't add this reference automatically
-#else
- try
- let asm = typeof>.Assembly
- if asm.FullName.StartsWith "System.ValueTuple" then
- Some asm.Location
- else None
+type private TypeInThisAssembly = class end
+
+// Use the ValueTuple that is executing with the compiler if it is from System.ValueTuple
+// or the System.ValueTuple.dll that sits alongside the compiler. (Note we always ship one with the compiler)
+let GetDefaultSystemValueTupleReference () =
+ try
+ let asm = typeof>.Assembly
+ if asm.FullName.StartsWith "System.ValueTuple" then
+ Some asm.Location
+ else
+ let location = Path.GetDirectoryName(typeof.Assembly.Location)
+ let valueTuplePath = Path.Combine(location, "System.ValueTuple.dll")
+ if File.Exists(valueTuplePath) then
+ Some valueTuplePath
+ else
+ None
with _ -> None
-#endif
let GetFsiLibraryName () = "FSharp.Compiler.Interactive.Settings"
@@ -1821,10 +1827,11 @@ let DefaultReferencesForScriptsAndOutOfProjectSources(assumeDotNetFramework) =
yield "System.Collections" // System.Collections.Generic.List
yield "System.Runtime.Numerics" // BigInteger
yield "System.Threading" // OperationCanceledException
- // always include a default reference to System.ValueTuple.dll in scripts and out-of-project sources
- match GetDefaultSystemValueTupleReference() with
- | None -> ()
- | Some v -> yield v
+
+ // always include a default reference to System.ValueTuple.dll in scripts and out-of-project sources
+ match GetDefaultSystemValueTupleReference() with
+ | None -> ()
+ | Some v -> yield v
yield "System.Web"
yield "System.Web.Services"
@@ -2137,14 +2144,14 @@ type AssemblyReference =
override x.ToString() = sprintf "AssemblyReference(%s)" x.Text
type UnresolvedAssemblyReference = UnresolvedAssemblyReference of string * AssemblyReference list
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
type ResolvedExtensionReference = ResolvedExtensionReference of string * AssemblyReference list * Tainted list
#endif
type ImportedBinary =
{ FileName: string
RawMetadata: IRawFSharpAssemblyData
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
ProviderGeneratedAssembly: System.Reflection.Assembly option
IsProviderGenerated: bool
ProviderGeneratedStaticLinkMap : ProvidedAssemblyStaticLinkingMap option
@@ -2157,7 +2164,7 @@ type ImportedAssembly =
FSharpViewOfMetadata: CcuThunk
AssemblyAutoOpenAttributes: string list
AssemblyInternalsVisibleToAttributes: string list
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
IsProviderGenerated: bool
mutable TypeProviders: Tainted list
#endif
@@ -2291,7 +2298,7 @@ type TcConfigBuilder =
mutable showTimes : bool
mutable showLoadedAssemblies : bool
mutable continueAfterParseFailure : bool
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// show messages about extension type resolution?
mutable showExtensionTypeMessages : bool
#endif
@@ -2450,7 +2457,7 @@ type TcConfigBuilder =
showTimes = false
showLoadedAssemblies = false
continueAfterParseFailure = false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
showExtensionTypeMessages = false
#endif
pause = false
@@ -2460,7 +2467,7 @@ type TcConfigBuilder =
isInvalidationSupported = false
sqmSessionGuid = None
sqmNumOfSourceFiles = 0
- sqmSessionStartedTime = System.DateTime.Now.Ticks
+ sqmSessionStartedTime = System.DateTime.UtcNow.Ticks
emitDebugInfoInQuotations = false
exename = None
copyFSharpCore = false
@@ -2916,7 +2923,7 @@ type TcConfig private (data : TcConfigBuilder, validate:bool) =
member x.showTimes = data.showTimes
member x.showLoadedAssemblies = data.showLoadedAssemblies
member x.continueAfterParseFailure = data.continueAfterParseFailure
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member x.showExtensionTypeMessages = data.showExtensionTypeMessages
#endif
member x.pause = data.pause
@@ -3503,14 +3510,14 @@ let PostParseModuleSpecs (defaultNamespace, filename, isLastCompiland, ParsedSig
ParsedInput.SigFile(ParsedSigFileInput(filename, qualName, scopedPragmas, hashDirectives, specs))
/// Checks if a module name is already given and deduplicates the name if needed.
-let DeduplicateModuleName (moduleNamesDict:Dictionary>) (paths: Set) path (qualifiedNameOfFile: QualifiedNameOfFile) =
+let DeduplicateModuleName (moduleNamesDict:IDictionary>) (paths: Set) path (qualifiedNameOfFile: QualifiedNameOfFile) =
let count = if paths.Contains path then paths.Count else paths.Count + 1
moduleNamesDict.[qualifiedNameOfFile.Text] <- Set.add path paths
let id = qualifiedNameOfFile.Id
if count = 1 then qualifiedNameOfFile else QualifiedNameOfFile(Ident(id.idText + "___" + count.ToString(), id.idRange))
/// Checks if a ParsedInput is using a module name that was already given and deduplicates the name if needed.
-let DeduplicateParsedInputModuleName (moduleNamesDict:Dictionary>) input =
+let DeduplicateParsedInputModuleName (moduleNamesDict:IDictionary>) input =
match input with
| ParsedInput.ImplFile (ParsedImplFileInput.ParsedImplFileInput(fileName, isScript, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules, (isLastCompiland, isExe))) ->
let path = Path.GetDirectoryName fileName
@@ -3519,7 +3526,7 @@ let DeduplicateParsedInputModuleName (moduleNamesDict:Dictionary
- moduleNamesDict.Add(qualifiedNameOfFile.Text, Set.singleton path)
+ moduleNamesDict.[qualifiedNameOfFile.Text] <- Set.singleton path
input
| ParsedInput.SigFile (ParsedSigFileInput.ParsedSigFileInput(fileName, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules)) ->
let path = Path.GetDirectoryName fileName
@@ -3528,7 +3535,7 @@ let DeduplicateParsedInputModuleName (moduleNamesDict:Dictionary
- moduleNamesDict.Add(qualifiedNameOfFile.Text, Set.singleton path)
+ moduleNamesDict.[qualifiedNameOfFile.Text] <- Set.singleton path
input
let ParseInput (lexer, errorLogger:ErrorLogger, lexbuf:UnicodeLexing.Lexbuf, defaultNamespace, filename, isLastCompiland) =
@@ -3913,7 +3920,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
let mutable disposed = false
let mutable ilGlobalsOpt = ilGlobalsOpt
let mutable tcGlobals = None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let mutable generatedTypeRoots = new System.Collections.Generic.Dictionary()
#endif
@@ -4032,7 +4039,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
| UnresolvedImportedAssembly _ -> UnresolvedCcu(assref.QualifiedName)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member tcImports.GetProvidedAssemblyInfo(ctok, m, assembly: Tainted) =
let anameOpt = assembly.PUntaint((fun assembly -> match assembly with null -> None | a -> Some (a.GetName())), m)
match anameOpt with
@@ -4183,7 +4190,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
{ new Import.AssemblyLoader with
member x.FindCcuFromAssemblyRef (ctok, m, ilAssemblyRef) =
tcImports.FindCcuFromAssemblyRef (ctok, m, ilAssemblyRef)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member x.GetProvidedAssemblyInfo (ctok, m, assembly) = tcImports.GetProvidedAssemblyInfo (ctok, m, assembly)
member x.RecordGeneratedTypeRoot root = tcImports.RecordGeneratedTypeRoot root
#endif
@@ -4215,7 +4222,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
CheckDisposed()
tcGlobals <- Some g
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member private tcImports.InjectProvidedNamespaceOrTypeIntoEntity
(typeProviderEnvironment,
tcConfig:TcConfig,
@@ -4413,14 +4420,14 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
ILScopeRef = ilScopeRef
AssemblyAutoOpenAttributes = GetAutoOpenAttributes ilg ilModule
AssemblyInternalsVisibleToAttributes = GetInternalsVisibleToAttributes ilg ilModule
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
IsProviderGenerated = false
TypeProviders = []
#endif
FSharpOptimizationData = notlazy None }
tcImports.RegisterCcu(ccuinfo)
let phase2 () =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
ccuinfo.TypeProviders <- tcImports.ImportTypeProviderExtensions (ctok, tcConfig, filename, ilScopeRef, ilModule.ManifestOfAssembly.CustomAttrs.AsList, ccu.Contents, invalidateCcu, m)
#endif
[ResolvedImportedAssembly(ccuinfo)]
@@ -4428,7 +4435,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
member tcImports.PrepareToImportReferencedFSharpAssembly (ctok, m, filename, dllinfo:ImportedBinary) =
CheckDisposed()
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let tcConfig = tcConfigP.Get(ctok)
#endif
let ilModule = dllinfo.RawMetadata
@@ -4448,7 +4455,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
let minfo : PickledCcuInfo = data.RawData
let mspec = minfo.mspec
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let invalidateCcu = new Event<_>()
#endif
@@ -4461,7 +4468,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
SourceCodeDirectory = codeDir (* note: in some cases we fix up this information later *)
IsFSharp=true
Contents = mspec
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
InvalidateEvent=invalidateCcu.Publish
IsProviderGenerated = false
ImportProvidedType = (fun ty -> Import.ImportProvidedType (tcImports.GetImportMap()) m ty)
@@ -4489,13 +4496,13 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
AssemblyAutoOpenAttributes = ilModule.GetAutoOpenAttributes(ilg)
AssemblyInternalsVisibleToAttributes = ilModule.GetInternalsVisibleToAttributes(ilg)
FSharpOptimizationData=optdata
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
IsProviderGenerated = false
TypeProviders = []
#endif
ILScopeRef = ilScopeRef }
let phase2() =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match ilModule.TryGetRawILModule() with
| None -> () // no type providers can be used without a real IL Module present
| Some ilModule ->
@@ -4511,7 +4518,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
(* Relink *)
(* dprintf "Phase2: %s\n" filename; REMOVE DIAGNOSTICS *)
ccuRawDataAndInfos |> List.iter (fun (data, _, _) -> data.OptionalFixup(fun nm -> availableToOptionalCcu(tcImports.FindCcu(ctok, m, nm, lookupOnly=false))) |> ignore)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
ccuRawDataAndInfos |> List.iter (fun (_, _, phase2) -> phase2())
#endif
ccuRawDataAndInfos |> List.map p23 |> List.map ResolvedImportedAssembly
@@ -4549,7 +4556,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
let dllinfo =
{ RawMetadata=assemblyData
FileName=filename
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
ProviderGeneratedAssembly=None
IsProviderGenerated=false
ProviderGeneratedStaticLinkMap = None
@@ -4616,7 +4623,7 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
if tryFile (assemblyName + ".dll") then ()
else tryFile (assemblyName + ".exe") |> ignore
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member tcImports.TryFindProviderGeneratedAssemblyByName(ctok, assemblyName:string) : System.Reflection.Assembly option =
// The assembly may not be in the resolutions, but may be in the load set including EST injected assemblies
match tcImports.TryFindDllInfo (ctok, range0, assemblyName, lookupOnly=true) with
@@ -5065,13 +5072,7 @@ module private ScriptPreprocessClosure =
match codeContext with
| CodeContext.Editing -> ResolutionEnvironment.EditingOrCompilation true
| CodeContext.Compilation -> ResolutionEnvironment.EditingOrCompilation false
- | CodeContext.CompilationAndEvaluation ->
-#if FSI_TODO_NETCORE
- // "CompilationAndEvaluation" assembly resolution for F# Interactive is not yet properly figured out on .NET Core
- ResolutionEnvironment.EditingOrCompilation false
-#else
- ResolutionEnvironment.CompilationAndEvaluation
-#endif
+ | CodeContext.CompilationAndEvaluation -> ResolutionEnvironment.CompilationAndEvaluation
tcConfigB.framework <- false
tcConfigB.useSimpleResolution <- useSimpleResolution
// Indicates that there are some references not in BasicReferencesForScriptLoadClosure which should
@@ -5359,7 +5360,7 @@ let GetInitialTcState(m, ccuName, tcConfig:TcConfig, tcGlobals, tcImports:TcImpo
let ccuData : CcuData =
{ IsFSharp=true
UsesFSharp20PlusQuotations=false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
InvalidateEvent=(new Event<_>()).Publish
IsProviderGenerated = false
ImportProvidedType = (fun ty -> Import.ImportProvidedType (tcImports.GetImportMap()) m ty)
diff --git a/src/fsharp/CompileOps.fsi b/src/fsharp/CompileOps.fsi
index c5f14dc8bcf..77916b63f49 100755
--- a/src/fsharp/CompileOps.fsi
+++ b/src/fsharp/CompileOps.fsi
@@ -23,7 +23,7 @@ open Microsoft.FSharp.Compiler.Infos
open Microsoft.FSharp.Compiler.ReferenceResolver
open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Core.CompilerServices
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -65,10 +65,10 @@ val ComputeQualifiedNameOfFileFromUniquePath: range * string list -> Ast.Qualifi
val PrependPathToInput: Ast.Ident list -> Ast.ParsedInput -> Ast.ParsedInput
/// Checks if a module name is already given and deduplicates the name if needed.
-val DeduplicateModuleName: Dictionary> -> Set -> string -> Ast.QualifiedNameOfFile -> Ast.QualifiedNameOfFile
+val DeduplicateModuleName: IDictionary> -> Set -> string -> Ast.QualifiedNameOfFile -> Ast.QualifiedNameOfFile
/// Checks if a ParsedInput is using a module name that was already given and deduplicates the name if needed.
-val DeduplicateParsedInputModuleName: Dictionary> -> Ast.ParsedInput -> Ast.ParsedInput
+val DeduplicateParsedInputModuleName: IDictionary> -> Ast.ParsedInput -> Ast.ParsedInput
val ParseInput: (UnicodeLexing.Lexbuf -> Parser.token) * ErrorLogger * UnicodeLexing.Lexbuf * string option * string * isLastCompiland:(bool * bool) -> Ast.ParsedInput
@@ -207,7 +207,7 @@ type AssemblyResolution =
type UnresolvedAssemblyReference = UnresolvedAssemblyReference of string * AssemblyReference list
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
type ResolvedExtensionReference = ResolvedExtensionReference of string * AssemblyReference list * Tainted list
#endif
@@ -347,7 +347,7 @@ type TcConfigBuilder =
mutable showTimes: bool
mutable showLoadedAssemblies: bool
mutable continueAfterParseFailure: bool
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
mutable showExtensionTypeMessages: bool
#endif
mutable pause: bool
@@ -499,7 +499,7 @@ type TcConfig =
member showTimes: bool
member showLoadedAssemblies: bool
member continueAfterParseFailure: bool
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member showExtensionTypeMessages: bool
#endif
member pause: bool
@@ -555,7 +555,7 @@ type TcConfigProvider =
type ImportedBinary =
{ FileName: string
RawMetadata: IRawFSharpAssemblyData
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
ProviderGeneratedAssembly: System.Reflection.Assembly option
IsProviderGenerated: bool
ProviderGeneratedStaticLinkMap: ProvidedAssemblyStaticLinkingMap option
@@ -570,7 +570,7 @@ type ImportedAssembly =
FSharpViewOfMetadata: CcuThunk
AssemblyAutoOpenAttributes: string list
AssemblyInternalsVisibleToAttributes: string list
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
IsProviderGenerated: bool
mutable TypeProviders: Tainted list
#endif
@@ -599,7 +599,7 @@ type TcImports =
member FindDllInfo: CompilationThreadToken * range * string -> ImportedBinary
member TryFindDllInfo: CompilationThreadToken * range * string * lookupOnly: bool -> option
member FindCcuFromAssemblyRef: CompilationThreadToken * range * ILAssemblyRef -> CcuResolutionResult
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member ProviderGeneratedTypeRoots: ProviderGeneratedType list
#endif
member GetImportMap: unit -> Import.ImportMap
@@ -617,7 +617,7 @@ type TcImports =
/// Try to find the given assembly reference.
member TryFindExistingFullyQualifiedPathByExactAssemblyRef: CompilationThreadToken * ILAssemblyRef -> string option
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Try to find a provider-generated assembly
member TryFindProviderGeneratedAssemblyByName: CompilationThreadToken * assemblyName:string -> System.Reflection.Assembly option
#endif
diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs
index ce26cafde0a..1c78fd9aa33 100644
--- a/src/fsharp/CompileOptions.fs
+++ b/src/fsharp/CompileOptions.fs
@@ -903,7 +903,7 @@ let internalFlags (tcConfigB:TcConfigBuilder) =
CompilerOption("splitting", tagNone, OptionSwitch(splittingSwitch tcConfigB),Some(InternalCommandLineOption("splitting", rangeCmdArgs)), None)
CompilerOption("versionfile", tagString, OptionString (fun s -> tcConfigB.version <- VersionFile s), Some(InternalCommandLineOption("versionfile", rangeCmdArgs)), None)
CompilerOption("times" , tagNone, OptionUnit (fun () -> tcConfigB.showTimes <- true), Some(InternalCommandLineOption("times", rangeCmdArgs)), None) // "Display timing profiles for compilation")
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
CompilerOption("showextensionresolution" , tagNone, OptionUnit (fun () -> tcConfigB.showExtensionTypeMessages <- true), Some(InternalCommandLineOption("showextensionresolution", rangeCmdArgs)), None) // "Display information about extension type resolution")
#endif
(* BEGIN: Consider as public Retail option? *)
diff --git a/src/fsharp/ConstraintSolver.fs b/src/fsharp/ConstraintSolver.fs
index 7a88d2e5604..0ec8f9f832a 100644
--- a/src/fsharp/ConstraintSolver.fs
+++ b/src/fsharp/ConstraintSolver.fs
@@ -1333,7 +1333,7 @@ and RecordMemberConstraintSolution css m trace traitInfo res =
/// Convert a MethInfo into the data we save in the TAST
and MemberConstraintSolutionOfMethInfo css m minfo minst =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
#else
// to prevent unused parameter warning
ignore css
@@ -1347,7 +1347,7 @@ and MemberConstraintSolutionOfMethInfo css m minfo minst =
FSMethSln(typ, vref, minst)
| MethInfo.DefaultStructCtor _ ->
error(InternalError("the default struct constructor was the unexpected solution to a trait constraint", m))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap, mi, _, m) ->
let g = amap.g
let minst = [] // GENERIC TYPE PROVIDERS: for generics, we would have an minst here
@@ -2050,7 +2050,7 @@ and ReportNoCandidatesError (csenv:ConstraintSolverEnv) (nUnnamedCallerArgs, nNa
let predictFields() =
minfo.DeclaringEntityRef.AllInstanceFieldsAsList
|> List.map (fun p -> p.Name.Replace("@", ""))
- |> Set.ofList
+ |> System.Collections.Generic.HashSet
ErrorWithSuggestions((msgNum, FSComp.SR.csCtorHasNoArgumentOrReturnProperty(methodName, id.idText, msgText)), id.idRange, id.idText, predictFields)
else
diff --git a/src/fsharp/ErrorLogger.fs b/src/fsharp/ErrorLogger.fs
index d854d897573..cb2b585168c 100755
--- a/src/fsharp/ErrorLogger.fs
+++ b/src/fsharp/ErrorLogger.fs
@@ -54,9 +54,9 @@ let rec findOriginalException err =
| WrappedError(err, _) -> findOriginalException err
| _ -> err
-type Suggestions = unit -> Set
+type Suggestions = unit -> Collections.Generic.HashSet
-let NoSuggestions : Suggestions = fun () -> Set.empty
+let NoSuggestions : Suggestions = fun () -> Collections.Generic.HashSet()
/// Thrown when we stop processing the F# Interactive entry or #load.
exception StopProcessingExn of exn option with
diff --git a/src/fsharp/ExtensionTyping.fs b/src/fsharp/ExtensionTyping.fs
index 57ddfff1a6e..dade9c9650e 100755
--- a/src/fsharp/ExtensionTyping.fs
+++ b/src/fsharp/ExtensionTyping.fs
@@ -4,7 +4,7 @@
namespace Microsoft.FSharp.Compiler
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
module internal ExtensionTyping =
open System
diff --git a/src/fsharp/ExtensionTyping.fsi b/src/fsharp/ExtensionTyping.fsi
index 7ac14362cbc..f796881c357 100755
--- a/src/fsharp/ExtensionTyping.fsi
+++ b/src/fsharp/ExtensionTyping.fsi
@@ -4,7 +4,7 @@
namespace Microsoft.FSharp.Compiler
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
module internal ExtensionTyping =
diff --git a/src/fsharp/FSComp.txt b/src/fsharp/FSComp.txt
index 6e5dc678d20..deeb8d5daf0 100644
--- a/src/fsharp/FSComp.txt
+++ b/src/fsharp/FSComp.txt
@@ -361,7 +361,7 @@ csCtorHasNoArgumentOrReturnProperty,"The object constructor '%s' has no argument
csNoOverloadsFound,"No overloads match for method '%s'."
csMethodIsOverloaded,"A unique overload for method '%s' could not be determined based on type information prior to this program point. A type annotation may be needed."
csCandidates,"Candidates: %s"
-csSeeAvailableOverloads,"The available overloads are shown below (or in the Error List window)."
+csSeeAvailableOverloads,"The available overloads are shown below."
512,parsDoCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on 'do' bindings, but '%s' was given."
513,parsEofInHashIf,"End of file in #if section begun at or after here"
514,parsEofInString,"End of file in string begun at or before here"
diff --git a/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj b/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
index a6505441b5b..8aba433807d 100644
--- a/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
+++ b/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
@@ -22,16 +22,13 @@
CompilerLocationUtils.fs
-
- CreateFSharpManifestResourceName.fsi
-
CreateFSharpManifestResourceName.fs
-
- Fsc.fsi
-
-
+
+ FSharpCommandLineBuilder.fs
+
+
Fsc.fs
@@ -75,7 +72,7 @@
-
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
@@ -93,22 +90,5 @@
FSharp.Core
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
diff --git a/src/fsharp/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj b/src/fsharp/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj
index f81d227e8d6..b68ab16911c 100644
--- a/src/fsharp/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj
+++ b/src/fsharp/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj
@@ -20,7 +20,7 @@
netcore
- $(DefineConstants);EXTENSIONTYPING;$(TargetDotnetProfile.ToLower())
+ $(DefineConstants);$(TargetDotnetProfile.ToLower())true
diff --git a/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fsi b/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fsi
deleted file mode 100644
index 549f1ab8366..00000000000
--- a/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fsi
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-namespace Microsoft.FSharp.Build
-
-[]
-type CreateFSharpManifestResourceName =
- inherit Microsoft.Build.Tasks.CreateCSharpManifestResourceName
- public new : unit -> CreateFSharpManifestResourceName
- member UseStandardResourceNames : bool with get,set
\ No newline at end of file
diff --git a/src/fsharp/FSharp.Build/FSharp.Build.fsproj b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
index 5c8982e34c4..405deb589ad 100644
--- a/src/fsharp/FSharp.Build/FSharp.Build.fsproj
+++ b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
@@ -20,23 +20,16 @@
falsefalse
-
-
-
-
-
-
-
+
- Microsoft.FSharp.Targets
@@ -66,7 +59,7 @@
-
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
@@ -80,23 +73,6 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
- {DED3BBD7-53F4-428A-8C9F-27968E768605}
diff --git a/src/fsharp/FSharp.Build/FSharpCommandLineBuilder.fs b/src/fsharp/FSharp.Build/FSharpCommandLineBuilder.fs
new file mode 100644
index 00000000000..8ea25e12d61
--- /dev/null
+++ b/src/fsharp/FSharp.Build/FSharpCommandLineBuilder.fs
@@ -0,0 +1,106 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.FSharp.Build
+
+open System
+open System.Text
+open Microsoft.Build.Framework
+open Microsoft.Build.Utilities
+open Internal.Utilities
+
+[]
+[]
+do()
+
+type FSharpCommandLineBuilder () =
+
+ // In addition to generating a command-line that will be handed to cmd.exe, we also generate
+ // an array of individual arguments. The former needs to be quoted (and cmd.exe will strip the
+ // quotes while parsing), whereas the latter is not. See bug 4357 for background; this helper
+ // class gets us out of the business of unparsing-then-reparsing arguments.
+
+ let builder = new CommandLineBuilder()
+ let mutable args = [] // in reverse order
+ let mutable srcs = [] // in reverse order
+
+ /// Return a list of the arguments (with no quoting for the cmd.exe shell)
+ member x.CapturedArguments() = List.rev args
+
+ /// Return a list of the sources (with no quoting for the cmd.exe shell)
+ member x.CapturedFilenames() = List.rev srcs
+
+ /// Return a full command line (with quoting for the cmd.exe shell)
+ override x.ToString() = builder.ToString()
+
+ member x.AppendFileNamesIfNotNull(filenames:ITaskItem array, sep:string) =
+ builder.AppendFileNamesIfNotNull(filenames, sep)
+ // do not update "args", not used
+ for item in filenames do
+ let tmp = new CommandLineBuilder()
+ tmp.AppendSwitchUnquotedIfNotNull("", item.ItemSpec) // we don't want to quote the filename, this is a way to get that
+ let s = tmp.ToString()
+ if s <> String.Empty then
+ srcs <- tmp.ToString() :: srcs
+
+ member x.AppendSwitchIfNotNull(switch:string, values:string array, sep:string) =
+ builder.AppendSwitchIfNotNull(switch, values, sep)
+ let tmp = new CommandLineBuilder()
+ tmp.AppendSwitchUnquotedIfNotNull(switch, values, sep)
+ let s = tmp.ToString()
+ if s <> String.Empty then
+ args <- s :: args
+
+ member x.AppendSwitchIfNotNull(switch:string, value:string, ?metadataNames:string array) =
+ let metadataNames = defaultArg metadataNames [||]
+ builder.AppendSwitchIfNotNull(switch, value)
+ let tmp = new CommandLineBuilder()
+ tmp.AppendSwitchUnquotedIfNotNull(switch, value)
+ let providedMetaData =
+ metadataNames
+ |> Array.filter (String.IsNullOrWhiteSpace >> not)
+ if providedMetaData.Length > 0 then
+ tmp.AppendTextUnquoted ","
+ tmp.AppendTextUnquoted (providedMetaData|> String.concat ",")
+ let s = tmp.ToString()
+ if s <> String.Empty then
+ args <- s :: args
+
+ member x.AppendSwitchUnquotedIfNotNull(switch:string, value:string) =
+ assert(switch = "") // we only call this method for "OtherFlags"
+ // Unfortunately we still need to mimic what cmd.exe does, but only for "OtherFlags".
+ let ParseCommandLineArgs(commandLine:string) = // returns list in reverse order
+ let mutable args = []
+ let mutable i = 0 // index into commandLine
+ let len = commandLine.Length
+ while i < len do
+ // skip whitespace
+ while i < len && System.Char.IsWhiteSpace(commandLine, i) do
+ i <- i + 1
+ if i < len then
+ // parse an argument
+ let sb = new StringBuilder()
+ let mutable finished = false
+ let mutable insideQuote = false
+ while i < len && not finished do
+ match commandLine.[i] with
+ | '"' -> insideQuote <- not insideQuote; i <- i + 1
+ | c when not insideQuote && System.Char.IsWhiteSpace(c) -> finished <- true
+ | c -> sb.Append(c) |> ignore; i <- i + 1
+ args <- sb.ToString() :: args
+ args
+ builder.AppendSwitchUnquotedIfNotNull(switch, value)
+ let tmp = new CommandLineBuilder()
+ tmp.AppendSwitchUnquotedIfNotNull(switch, value)
+ let s = tmp.ToString()
+ if s <> String.Empty then
+ args <- ParseCommandLineArgs(s) @ args
+
+ member x.AppendSwitch(switch:string) =
+ builder.AppendSwitch(switch)
+ args <- switch :: args
+
+ member internal x.GetCapturedArguments() =
+ [|
+ yield! x.CapturedArguments()
+ yield! x.CapturedFilenames()
+ |]
diff --git a/src/fsharp/FSharp.Build/FSharpEmbedResXSource.fs b/src/fsharp/FSharp.Build/FSharpEmbedResXSource.fs
index 1954d8f56cd..0150ef26ec5 100644
--- a/src/fsharp/FSharp.Build/FSharpEmbedResXSource.fs
+++ b/src/fsharp/FSharp.Build/FSharpEmbedResXSource.fs
@@ -42,7 +42,7 @@ module internal {1} =
// simple up-to-date check
if File.Exists(resx) && File.Exists(sourcePath) &&
- File.GetLastWriteTime(resx) <= File.GetLastWriteTime(sourcePath) then
+ File.GetLastWriteTimeUtc(resx) <= File.GetLastWriteTimeUtc(sourcePath) then
printMessage (sprintf "Skipping generation: '%s' since it is up-to-date." sourcePath)
Some(sourcePath)
else
diff --git a/src/fsharp/FSharp.Build/FSharpEmbedResourceText.fs b/src/fsharp/FSharp.Build/FSharpEmbedResourceText.fs
index b7d46807c79..3e2e58eddb5 100644
--- a/src/fsharp/FSharp.Build/FSharpEmbedResourceText.fs
+++ b/src/fsharp/FSharp.Build/FSharpEmbedResourceText.fs
@@ -351,8 +351,8 @@ open Printf
if File.Exists(outFilename) &&
File.Exists(outXmlFilename) &&
File.Exists(filename) &&
- File.GetLastWriteTime(filename) <= File.GetLastWriteTime(outFilename) &&
- File.GetLastWriteTime(filename) <= File.GetLastWriteTime(outXmlFilename) then
+ File.GetLastWriteTimeUtc(filename) <= File.GetLastWriteTimeUtc(outFilename) &&
+ File.GetLastWriteTimeUtc(filename) <= File.GetLastWriteTimeUtc(outXmlFilename) then
printMessage (sprintf "Skipping generation of %s and %s since up-to-date" outFilename outXmlFilename)
Some (outFilename, outXmlFilename)
else
diff --git a/src/fsharp/FSharp.Build/Fsc.fs b/src/fsharp/FSharp.Build/Fsc.fs
index 2d1bc51cea7..f397c50914c 100644
--- a/src/fsharp/FSharp.Build/Fsc.fs
+++ b/src/fsharp/FSharp.Build/Fsc.fs
@@ -3,125 +3,28 @@
namespace Microsoft.FSharp.Build
open System
-open System.Text
-open System.Diagnostics.CodeAnalysis
+open System.Diagnostics
+open System.Globalization
open System.IO
open System.Reflection
open Microsoft.Build.Framework
open Microsoft.Build.Utilities
open Internal.Utilities
-[]
-[]
-
-[]
-do()
-
-
#if FX_RESHAPED_REFLECTION
open Microsoft.FSharp.Core.ReflectionAdapters
#endif
-type FscCommandLineBuilder () =
-
- // In addition to generating a command-line that will be handed to cmd.exe, we also generate
- // an array of individual arguments. The former needs to be quoted (and cmd.exe will strip the
- // quotes while parsing), whereas the latter is not. See bug 4357 for background; this helper
- // class gets us out of the business of unparsing-then-reparsing arguments.
-
- let builder = new CommandLineBuilder()
- let mutable args = [] // in reverse order
- let mutable srcs = [] // in reverse order
- /// Return a list of the arguments (with no quoting for the cmd.exe shell)
- member x.CapturedArguments() =
- List.rev args
- /// Return a list of the sources (with no quoting for the cmd.exe shell)
- member x.CapturedFilenames() =
- List.rev srcs
- /// Return a full command line (with quoting for the cmd.exe shell)
- override x.ToString() =
- builder.ToString()
-
- member x.AppendFileNamesIfNotNull(filenames:ITaskItem array, sep:string) =
- builder.AppendFileNamesIfNotNull(filenames, sep)
- // do not update "args", not used
- for item in filenames do
- let tmp = new CommandLineBuilder()
- tmp.AppendSwitchUnquotedIfNotNull("", item.ItemSpec) // we don't want to quote the filename, this is a way to get that
- let s = tmp.ToString()
- if s <> String.Empty then
- srcs <- tmp.ToString() :: srcs
-
- member x.AppendSwitchIfNotNull(switch:string, values:string array, sep:string) =
- builder.AppendSwitchIfNotNull(switch, values, sep)
- let tmp = new CommandLineBuilder()
- tmp.AppendSwitchUnquotedIfNotNull(switch, values, sep)
- let s = tmp.ToString()
- if s <> String.Empty then
- args <- s :: args
-
- member x.AppendSwitchIfNotNull(switch:string, value:string, ?metadataNames:string array) =
- let metadataNames = defaultArg metadataNames [||]
- builder.AppendSwitchIfNotNull(switch, value)
- let tmp = new CommandLineBuilder()
- tmp.AppendSwitchUnquotedIfNotNull(switch, value)
- let providedMetaData =
- metadataNames
- |> Array.filter (String.IsNullOrWhiteSpace >> not)
- if providedMetaData.Length > 0 then
- tmp.AppendTextUnquoted ","
- tmp.AppendTextUnquoted (providedMetaData|> String.concat ",")
- let s = tmp.ToString()
- if s <> String.Empty then
- args <- s :: args
-
- member x.AppendSwitchUnquotedIfNotNull(switch:string, value:string) =
- assert(switch = "") // we only call this method for "OtherFlags"
- // Unfortunately we still need to mimic what cmd.exe does, but only for "OtherFlags".
- let ParseCommandLineArgs(commandLine:string) = // returns list in reverse order
- let mutable args = []
- let mutable i = 0 // index into commandLine
- let len = commandLine.Length
- while i < len do
- // skip whitespace
- while i < len && System.Char.IsWhiteSpace(commandLine, i) do
- i <- i + 1
- if i < len then
- // parse an argument
- let sb = new StringBuilder()
- let mutable finished = false
- let mutable insideQuote = false
- while i < len && not finished do
- match commandLine.[i] with
- | '"' -> insideQuote <- not insideQuote; i <- i + 1
- | c when not insideQuote && System.Char.IsWhiteSpace(c) -> finished <- true
- | c -> sb.Append(c) |> ignore; i <- i + 1
- args <- sb.ToString() :: args
- args
- builder.AppendSwitchUnquotedIfNotNull(switch, value)
- let tmp = new CommandLineBuilder()
- tmp.AppendSwitchUnquotedIfNotNull(switch, value)
- let s = tmp.ToString()
- if s <> String.Empty then
- args <- ParseCommandLineArgs(s) @ args
-
- member x.AppendSwitch(switch:string) =
- builder.AppendSwitch(switch)
- args <- switch :: args
-
- member internal x.GetCapturedArguments() =
- [|
- yield! x.CapturedArguments()
- yield! x.CapturedFilenames()
- |]
-
//There are a lot of flags on fsc.exe.
//For now, not all of them are represented in the "Fsc class" object model.
//The goal is to have the most common/important flags available via the Fsc class, and the
//rest can be "backdoored" through the .OtherFlags property.
-type [] Fsc() as this =
- inherit ToolTask()
+[]
+type public Fsc () as this =
+
+ inherit ToolTask ()
+
let mutable baseAddress : string = null
let mutable capturedArguments : string list = [] // list of individual args, to pass to HostObject Compile()
let mutable capturedFilenames : string list = [] // list of individual source filenames, to pass to HostObject Compile()
@@ -160,9 +63,9 @@ type [.Assembly.Location))
+ let mutable toolPath : string =
+ let locationOfThisDll =
+ try Some(Path.GetDirectoryName(typeof.Assembly.Location))
with _ -> None
match FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(locationOfThisDll) with
| Some s -> s
@@ -178,18 +81,11 @@ type [ null with e-> false
- do if not runningOnMono then
- typeof.InvokeMember("YieldDuringToolExecution",(BindingFlags.Instance ||| BindingFlags.SetProperty ||| BindingFlags.Public),null,this,[| box true |]) |> ignore
-#else
- do this.YieldDuringToolExecution <- true // See bug 6483; this makes parallel build faster, and is fine to set unconditionally
-#endif
+ // See bug 6483; this makes parallel build faster, and is fine to set unconditionally
+ do this.YieldDuringToolExecution <- true
let generateCommandLineBuilder () =
- let builder = new FscCommandLineBuilder()
+ let builder = new FSharpCommandLineBuilder()
// OutputAssembly
builder.AppendSwitchIfNotNull("-o:", outputAssembly)
// CodePage
@@ -198,7 +94,7 @@ type [ null
@@ -219,7 +115,7 @@ type [ null then
for item in defineConstants do
- builder.AppendSwitchIfNotNull("--define:", item.ItemSpec)
+ builder.AppendSwitchIfNotNull("--define:", item.ItemSpec)
// DocumentationFile
builder.AppendSwitchIfNotNull("--doc:", documentationFile)
// GenerateInterfaceFile
@@ -238,7 +134,7 @@ type [ "anycpu"
| "X86" , _, _ -> "x86"
| "X64" , _, _ -> "x64"
- | "ITANIUM", _, _ -> "Itanium"
- | _ -> null)
+ | _ -> null)
// Resources
if resources <> null then
for item in resources do
match useStandardResourceNames with
| true -> builder.AppendSwitchIfNotNull("--resource:", item.ItemSpec, [|item.GetMetadata("LogicalName"); item.GetMetadata("Access")|])
| false -> builder.AppendSwitchIfNotNull("--resource:", item.ItemSpec)
-
+
// VersionFile
builder.AppendSwitchIfNotNull("--versionfile:", versionFile)
// References
@@ -266,7 +161,7 @@ type [ null
| _ -> referencePath.Split([|';'; ','|], StringSplitOptions.RemoveEmptyEntries)
-
+
builder.AppendSwitchIfNotNull("--lib:", referencePathArray, ",")
// TargetType
builder.AppendSwitchIfNotNull("--target:",
@@ -296,9 +191,9 @@ type [ [|"76"|]
- | _ -> (warningsAsErrors + " 76 ").Split([|' '; ';'; ','|], StringSplitOptions.RemoveEmptyEntries)
+ | _ -> (warningsAsErrors + " 76 ").Split([|' '; ';'; ','|], StringSplitOptions.RemoveEmptyEntries)
- builder.AppendSwitchIfNotNull("--warnaserror:", warningsAsErrorsArray, ",")
+ builder.AppendSwitchIfNotNull("--warnaserror:", warningsAsErrorsArray, ",")
// Win32ResourceFile
builder.AppendSwitchIfNotNull("--win32res:", win32res)
@@ -306,16 +201,16 @@ type [: Specify the codepage to use when opening source files
member fsc.CodePage
@@ -369,7 +264,7 @@ type [: Do not report the given specific warning.
member fsc.DisabledWarnings
with get() = disabledWarnings
- and set(a) = disabledWarnings <- a
+ and set(a) = disabledWarnings <- a
// --define : Define the given conditional compilation symbol.
member fsc.DefineConstants
@@ -399,7 +294,7 @@ type [:
// Sign the assembly the given keypair file, as produced
@@ -435,13 +330,13 @@ type [: Name the output file.
+ // -o : Name the output file
member fsc.OutputAssembly
with get() = outputAssembly
and set(s) = outputAssembly <- s
// --pdb :
- // Name the debug output file.
+ // Name the debug output file
member fsc.PdbFile
with get() = pdbFile
and set(s) = pdbFile <- s
@@ -449,36 +344,35 @@ type [: Limit which platforms this code can run on:
// x86
// x64
- // Itanium
// anycpu
// anycpu32bitpreferred
member fsc.Platform
with get() = platform
- and set(s) = platform <- s
+ and set(s) = platform <- s
// indicator whether anycpu32bitpreferred is applicable or not
member fsc.Prefer32Bit
with get() = prefer32bit
- and set(s) = prefer32bit <- s
+ and set(s) = prefer32bit <- s
member fsc.PreferredUILang
with get() = preferredUILang
- and set(s) = preferredUILang <- s
+ and set(s) = preferredUILang <- s
- member fsc.ProvideCommandLineArgs
+ member fsc.ProvideCommandLineArgs
with get() = provideCommandLineArgs
and set(p) = provideCommandLineArgs <- p
member fsc.PublicSign
with get() = publicSign
- and set(s) = publicSign <- s
+ and set(s) = publicSign <- s
// -r : Reference an F# or .NET assembly.
- member fsc.References
- with get() = references
+ member fsc.References
+ with get() = references
and set(a) = references <- a
- // --lib
+ // --lib
member fsc.ReferencePath
with get() = referencePath
and set(s) = referencePath <- s
@@ -489,7 +383,7 @@ type [:
member fsc.VersionFile
with get() = versionFile
and set(s) = versionFile <- s
- // For specifying a win32 native resource file (.res)
+ // For specifying a win32 native resource file (.res)
member fsc.Win32ResourceFile
with get() = win32res
and set(s) = win32res <- s
-
+
// For specifying a win32 manifest file
member fsc.Win32ManifestFile
with get() = win32manifest
and set(m) = win32manifest <- m
- // For specifying the warning level (0-4)
+ // For specifying the warning level (0-4)
member fsc.WarningLevel
with get() = warningLevel
and set(s) = warningLevel <- s
@@ -591,7 +486,7 @@ type [ Array.map (fun (arg: string) -> TaskItem(arg) :> ITaskItem)
|> Array.toList
@@ -604,30 +499,42 @@ type [ base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands)
| _ ->
let sources = sources|>Array.map(fun i->i.ItemSpec)
-#if FX_NO_CONVERTER
- let baseCallDelegate = new Func(fun () -> fsc.BaseExecuteTool(pathToTool, responseFileCommands, commandLineCommands) )
-#else
- let baseCall = fun (dummy : int) -> fsc.BaseExecuteTool(pathToTool, responseFileCommands, commandLineCommands)
- // We are using a Converter rather than a "unit->int" because it is too hard to
- // figure out how to pass an F# function object via reflection.
- let baseCallDelegate = new System.Converter(baseCall)
-#endif
- try
- let ret =
- (host.GetType()).InvokeMember("Compile", BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.InvokeMethod ||| BindingFlags.Instance, null, host,
- [| baseCallDelegate; box (capturedArguments |> List.toArray); box (capturedFilenames |> List.toArray) |],
- System.Globalization.CultureInfo.InvariantCulture)
- unbox ret
- with
- | :? System.Reflection.TargetInvocationException as tie when (match tie.InnerException with | :? Microsoft.Build.Exceptions.BuildAbortedException -> true | _ -> false) ->
- fsc.Log.LogError(tie.InnerException.Message, [| |])
- -1 // ok, this is what happens when VS IDE cancels the build, no need to assert, just log the build-canceled error and return -1 to denote task failed
+ let invokeCompiler baseCallDelegate =
+ try
+ let ret =
+ (host.GetType()).InvokeMember("Compile", BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.InvokeMethod ||| BindingFlags.Instance, null, host,
+ [| baseCallDelegate; box (capturedArguments |> List.toArray); box (capturedFilenames |> List.toArray) |],
+ CultureInfo.InvariantCulture)
+ unbox ret
+ with
+ | :? TargetInvocationException as tie when (match tie.InnerException with | :? Microsoft.Build.Exceptions.BuildAbortedException -> true | _ -> false) ->
+ fsc.Log.LogError(tie.InnerException.Message, [| |])
+ -1 // ok, this is what happens when VS IDE cancels the build, no need to assert, just log the build-canceled error and return -1 to denote task failed
+ | e -> reraise()
+
+ // Todo: Remove !FX_NO_CONVERTER code path for VS2017.7
+ // Earlier buildtasks usesd System.Converter for cross platform we are moving to Func
+ // This is so that during the interim, earlier VS's will still load the OSS project
+ let baseCallDelegate = Func(fun () -> fsc.BaseExecuteTool(pathToTool, responseFileCommands, commandLineCommands) )
+ try
+ invokeCompiler baseCallDelegate
+ with
| e ->
- System.Diagnostics.Debug.Assert(false, "HostObject received by Fsc task did not have a Compile method or the compile method threw an exception. "+(e.ToString()))
- reraise()
+#if !FX_NO_CONVERTER
+ try
+ let baseCall = fun (dummy : int) -> fsc.BaseExecuteTool(pathToTool, responseFileCommands, commandLineCommands)
+ // We are using a Converter rather than a "unit->int" because it is too hard to
+ // figure out how to pass an F# function object via reflection.
+ let baseCallDelegate = new System.Converter(baseCall)
+ invokeCompiler baseCallDelegate
+ with
+ | e ->
+#endif
+ Debug.Assert(false, "HostObject received by Fsc task did not have a Compile method or the compile method threw an exception. "+(e.ToString()))
+ reraise()
override fsc.GenerateCommandLineCommands() =
- let builder = new FscCommandLineBuilder()
+ let builder = new FSharpCommandLineBuilder()
if not (String.IsNullOrEmpty(dotnetFscCompilerPath)) then builder.AppendSwitch(dotnetFscCompilerPath)
builder.ToString()
@@ -640,18 +547,14 @@ type []
- do()
diff --git a/src/fsharp/FSharp.Build/Fsc.fsi b/src/fsharp/FSharp.Build/Fsc.fsi
deleted file mode 100644
index e05d4f9e69e..00000000000
--- a/src/fsharp/FSharp.Build/Fsc.fsi
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-/// This namespace contains. MSBuild tasks for the FsYacc and FsLex tools.
-namespace Microsoft.FSharp.Build
-type Fsc = class
- inherit Microsoft.Build.Utilities.ToolTask
- new : unit -> Fsc
- override GenerateCommandLineCommands : unit -> System.String
- override GenerateFullPathToTool : unit -> System.String
- override ToolName : System.String
- override StandardErrorEncoding : System.Text.Encoding
- override StandardOutputEncoding : System.Text.Encoding
-
- member internal InternalGenerateFullPathToTool : unit -> System.String
- member internal InternalGenerateCommandLineCommands : unit -> System.String
- member internal InternalGenerateResponseFileCommands : unit -> System.String
- member internal InternalExecuteTool : string * string * string -> int
- member internal GetCapturedArguments : unit -> string[]
- member BaseAddress : string with get,set
- member CodePage : string with get,set
- member CommandLineArgs : Microsoft.Build.Framework.ITaskItem [] with get,set
- member DebugSymbols : bool with get,set
- member DebugType : string with get,set
- member DefineConstants : Microsoft.Build.Framework.ITaskItem [] with get,set
- member DelaySign : bool with get,set
- member DisabledWarnings : string with get,set
- member DocumentationFile : string with get,set
- member DotnetFscCompilerPath : string with get,set
- member Embed : string with get,set
- member EmbedAllSources : bool with get,set
- member GenerateInterfaceFile : string with get,set
- member HighEntropyVA : bool with get,set
- member KeyFile : string with get,set
- member LCID : string with get,set
- member NoFramework : bool with get,set
- member Optimize : bool with get,set
- member OtherFlags : string with get,set
- member OutputAssembly : string with get,set
- member PdbFile : string with get,set
- member Platform : string with get,set
- member Prefer32Bit : bool with get,set
- member PreferredUILang : string with get,set
- member ProvideCommandLineArgs : bool with get,set
- member PublicSign : bool with get,set
- member VersionFile : string with get,set
- member References : Microsoft.Build.Framework.ITaskItem [] with get,set
- member ReferencePath : string with get,set
- member Resources : Microsoft.Build.Framework.ITaskItem [] with get,set
- member SkipCompilerExecution : bool with get,set
- member SourceLink : string with get,set
- member Sources : Microsoft.Build.Framework.ITaskItem [] with get,set
- member SubsystemVersion : string with get,set
- member Tailcalls : bool with get,set
- member TargetType : string with get,set
- member ToolPath : string with get,set
- member TargetProfile : string with get,set
- member TreatWarningsAsErrors : bool with get,set
- member UseStandardResourceNames : bool with get,set
- member Utf8Output : bool with get,set
- member VisualStudioStyleErrors : bool with get,set
- member WarningLevel : string with get,set
- member WarningsAsErrors : string with get,set
- member Win32ResourceFile : string with get,set
- member Win32ManifestFile : string with get,set
- end
diff --git a/src/fsharp/FSharp.Build/Microsoft.FSharp.Targets b/src/fsharp/FSharp.Build/Microsoft.FSharp.Targets
index 919c159d4b5..4274f54af2a 100644
--- a/src/fsharp/FSharp.Build/Microsoft.FSharp.Targets
+++ b/src/fsharp/FSharp.Build/Microsoft.FSharp.Targets
@@ -328,6 +328,48 @@ this file.
============================================================
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj b/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
index 257443d115b..554547215cd 100644
--- a/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
+++ b/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
@@ -10,7 +10,6 @@
AnyCPU{649FA588-F02E-457C-9FCF-87E46407481E}Library
- EXTENSIONTYPING;$(DefineConstants)FSharp.Compiler.Interactive.Settings512
diff --git a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
index 4b72bcf00f0..214f60cdc9f 100644
--- a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
+++ b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
@@ -10,7 +10,6 @@
AnyCPULibraryFSharp.Compiler.Private
- EXTENSIONTYPING;$(DefineConstants)COMPILER;$(DefineConstants)$(NoWarn);62;9{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
@@ -546,6 +545,12 @@
Symbols/Exprs.fs
+
+ Symbols/SymbolPatterns.fsi
+
+
+ Symbols/SymbolPatterns.fs
+
@@ -644,7 +649,13 @@
Service/ServiceStructure.fs
-
+
+ Service/ServiceAnalysis.fsi
+
+
+ Service/ServiceAnalysis.fs
+
+
FSIstrings.txt
@@ -677,7 +688,7 @@
- ..\..\..\packages\Microsoft.DiaSymReader.PortablePdb.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll
+ ..\..\..\packages\Microsoft.DiaSymReader.PortablePdb.1.2.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll..\..\..\packages\Microsoft.DiaSymReader.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.dll
@@ -692,44 +703,19 @@
..\..\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dlltrue
+
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
+
+
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.dll
+
+
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Utilities.Core.dll
+
+
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll
+
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Utilities.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll
-
-
-
-
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
-
- {DED3BBD7-53F4-428A-8C9F-27968E768605}
diff --git a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.netcore.nuspec b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.netcore.nuspec
index 302e10bbe27..3b663e8d3d5 100644
--- a/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.netcore.nuspec
+++ b/src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.netcore.nuspec
@@ -31,13 +31,13 @@
-
+
-
+
diff --git a/src/fsharp/FSharp.Compiler.Private/project.json b/src/fsharp/FSharp.Compiler.Private/project.json
index bee86e2f411..09cfefb19fc 100644
--- a/src/fsharp/FSharp.Compiler.Private/project.json
+++ b/src/fsharp/FSharp.Compiler.Private/project.json
@@ -17,7 +17,7 @@
"System.Threading.Tasks.Parallel": "4.3.0",
"System.Threading.Thread": "4.3.0",
"System.Threading.ThreadPool": "4.3.0",
- "Microsoft.DiaSymReader.PortablePdb": "1.1.0",
+ "Microsoft.DiaSymReader.PortablePdb": "1.2.0",
"Microsoft.DiaSymReader": "1.1.0",
"System.ValueTuple": "4.3.1"
},
diff --git a/src/fsharp/FSharp.Compiler.Unittests/FSharp.Compiler.Unittests.fsproj b/src/fsharp/FSharp.Compiler.Unittests/FSharp.Compiler.Unittests.fsproj
index 1e4f6603e7d..765e8cc5bb9 100644
--- a/src/fsharp/FSharp.Compiler.Unittests/FSharp.Compiler.Unittests.fsproj
+++ b/src/fsharp/FSharp.Compiler.Unittests/FSharp.Compiler.Unittests.fsproj
@@ -17,9 +17,6 @@
falsefalse
-
- $(DefineConstants);EXTENSIONTYPING
- truefalse
diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
index bf3b7397d7b..0b70058263e 100644
--- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
+++ b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
@@ -25,7 +25,7 @@
-
+
@@ -33,16 +33,16 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -54,16 +54,16 @@
tools, build and runtime/native make unnecessary copies.
this approach gives a very small deployment. Which is kind of necessary.
-->
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec b/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec
index ac1069ee47b..021b458ed30 100644
--- a/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec
+++ b/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec
@@ -24,7 +24,7 @@
-
+
@@ -32,8 +32,8 @@
-
-
+
+
@@ -46,16 +46,16 @@
tools, build and runtime/native make unnecessary copies.
this approach gives a very small deployment. Which is kind of necessary.
-->
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj b/src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj
index 379990b793b..9a655b05f7d 100644
--- a/src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj
+++ b/src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj
@@ -24,7 +24,7 @@
$(NoWarn);217
- $(DefineConstants);EXTENSIONTYPING;$(TargetDotnetProfile.ToLower())
+ $(DefineConstants);$(TargetDotnetProfile.ToLower())true
diff --git a/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListType.fs b/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListType.fs
index 009736b3656..452add35fdd 100644
--- a/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListType.fs
+++ b/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListType.fs
@@ -245,16 +245,26 @@ type ListType() =
Assert.AreEqual(lst.[6..], ([]: int list))
CheckThrowsIndexOutRangException((fun _ -> lst.[7..] |> ignore))
- CheckThrowsIndexOutRangException((fun _ -> lst.[.. -1] |> ignore))
+
+ Assert.AreEqual(lst.[..(-1)], ([]: int list))
Assert.AreEqual(lst.[..0], [1])
Assert.AreEqual(lst.[..1], [1;2])
Assert.AreEqual(lst.[..2], [1;2;3])
Assert.AreEqual(lst.[..3], [1;2;3;4])
Assert.AreEqual(lst.[..4], [1;2;3;4;5])
Assert.AreEqual(lst.[..5], [1;2;3;4;5;6])
- CheckThrowsIndexOutRangException((fun _ -> lst.[..6] |> ignore))
+ CheckThrowsIndexOutRangException((fun _ -> lst.[..6] |> ignore))
+
+ Assert.AreEqual(lst.[0..(-1)], ([]: int list))
+ Assert.AreEqual(lst.[0..0], [1])
+ Assert.AreEqual(lst.[0..1], [1;2])
+ Assert.AreEqual(lst.[0..2], [1;2;3])
+ Assert.AreEqual(lst.[0..3], [1;2;3;4])
+ Assert.AreEqual(lst.[0..4], [1;2;3;4;5])
+ Assert.AreEqual(lst.[0..5], [1;2;3;4;5;6])
+ CheckThrowsIndexOutRangException((fun _ -> lst.[0..6] |> ignore))
- Assert.AreEqual(lst.[1..-1], ([]: int list))
+ Assert.AreEqual(lst.[1..(-1)], ([]: int list))
Assert.AreEqual(lst.[1..0], ([]: int list))
Assert.AreEqual(lst.[1..1], [2])
Assert.AreEqual(lst.[1..2], [2;3])
@@ -270,8 +280,8 @@ type ListType() =
Assert.AreEqual(lst.[3..1], ([]: int list))
Assert.AreEqual(lst.[4..1], ([]: int list))
- Assert.AreEqual(lst.[-3..-4], ([]: int list))
- CheckThrowsIndexOutRangException((fun _ -> lst.[-4..-3] |> ignore))
+ Assert.AreEqual(lst.[-3..(-4)], ([]: int list))
+ CheckThrowsIndexOutRangException((fun _ -> lst.[-4..(-3)] |> ignore))
let empty : obj list = List.empty
Assert.AreEqual(empty.[*], ([]: obj list))
@@ -280,4 +290,4 @@ type ListType() =
CheckThrowsIndexOutRangException((fun _ -> empty.[..0] |> ignore))
CheckThrowsIndexOutRangException((fun _ -> empty.[0..0] |> ignore))
CheckThrowsIndexOutRangException((fun _ -> empty.[0..1] |> ignore))
- CheckThrowsIndexOutRangException((fun _ -> empty.[3..5] |> ignore))
\ No newline at end of file
+ CheckThrowsIndexOutRangException((fun _ -> empty.[3..5] |> ignore))
diff --git a/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs b/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs
index 6fa946563c8..d0574d52d60 100644
--- a/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs
+++ b/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs
@@ -162,7 +162,7 @@ type AsyncModule() =
let tickstamps = ref [] // like timestamps but for ticks :)
for i = 1 to 10 do
- tickstamps := DateTime.Now.Ticks :: !tickstamps
+ tickstamps := DateTime.UtcNow.Ticks :: !tickstamps
do! Async.Sleep(20)
return !tickstamps
@@ -233,7 +233,7 @@ type AsyncModule() =
[]
member this.``AwaitWaitHandle.Timeout``() =
use waitHandle = new System.Threading.ManualResetEvent(false)
- let startTime = DateTime.Now
+ let startTime = DateTime.UtcNow
let r =
Async.AwaitWaitHandle(waitHandle, 500)
@@ -241,7 +241,7 @@ type AsyncModule() =
Assert.IsFalse(r, "Timeout expected")
- let endTime = DateTime.Now
+ let endTime = DateTime.UtcNow
let delta = endTime - startTime
Assert.IsTrue(delta.TotalMilliseconds < 1100.0, sprintf "Expected faster timeout than %.0f ms" delta.TotalMilliseconds)
diff --git a/src/fsharp/FSharp.Core.Unittests/FSharp.Core/SampleTuples/Microsoft.FSharp.TupleSample.nuspec b/src/fsharp/FSharp.Core.Unittests/FSharp.Core/SampleTuples/Microsoft.FSharp.TupleSample.nuspec
index 33c3bd8f319..312296a1ae8 100644
--- a/src/fsharp/FSharp.Core.Unittests/FSharp.Core/SampleTuples/Microsoft.FSharp.TupleSample.nuspec
+++ b/src/fsharp/FSharp.Core.Unittests/FSharp.Core/SampleTuples/Microsoft.FSharp.TupleSample.nuspec
@@ -17,7 +17,7 @@
-
-
+
+
diff --git a/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.1.xxx.nuspec b/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.1.xxx.nuspec
index c97e0fd543e..84ca12cf79f 100644
--- a/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.1.xxx.nuspec
+++ b/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.1.xxx.nuspec
@@ -71,56 +71,56 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.2.xxx.nuspec b/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.2.xxx.nuspec
index d69b1df56d1..26e97553648 100644
--- a/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.2.xxx.nuspec
+++ b/src/fsharp/FSharp.Core.nuget/FSharp.Core.4.2.xxx.nuspec
@@ -52,15 +52,15 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/src/fsharp/FSharp.Core.nuget/Microsoft.Portable.FSharp.Core.4.1.xxx.nuspec b/src/fsharp/FSharp.Core.nuget/Microsoft.Portable.FSharp.Core.4.1.xxx.nuspec
index 128b62cb3fd..22812ebf2eb 100644
--- a/src/fsharp/FSharp.Core.nuget/Microsoft.Portable.FSharp.Core.4.1.xxx.nuspec
+++ b/src/fsharp/FSharp.Core.nuget/Microsoft.Portable.FSharp.Core.4.1.xxx.nuspec
@@ -14,14 +14,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/fsharp/FSharp.Core/Testing.FSharp.Core.nuspec b/src/fsharp/FSharp.Core/Testing.FSharp.Core.nuspec
index 208611c36ad..746986fc7a3 100644
--- a/src/fsharp/FSharp.Core/Testing.FSharp.Core.nuspec
+++ b/src/fsharp/FSharp.Core/Testing.FSharp.Core.nuspec
@@ -42,8 +42,8 @@
-
-
-
+
+
+
diff --git a/src/fsharp/FSharp.Core/list.fs b/src/fsharp/FSharp.Core/list.fs
index 6b31ea2b0f8..45eccc3f3a3 100644
--- a/src/fsharp/FSharp.Core/list.fs
+++ b/src/fsharp/FSharp.Core/list.fs
@@ -216,11 +216,10 @@ namespace Microsoft.FSharp.Collections
| [] -> state
| _ ->
let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(folder)
- let rec loop s xs =
- match xs with
- | [] -> s
- | h::t -> loop (f.Invoke(s,h)) t
- loop state list
+ let mutable acc = state
+ for x in list do
+ acc <- f.Invoke(acc, x)
+ acc
[]
let pairwise (list: 'T list) =
diff --git a/src/fsharp/FSharp.Core/prim-types.fs b/src/fsharp/FSharp.Core/prim-types.fs
index 18e8539fc3c..36ae18b7ae0 100644
--- a/src/fsharp/FSharp.Core/prim-types.fs
+++ b/src/fsharp/FSharp.Core/prim-types.fs
@@ -3157,7 +3157,7 @@ namespace Microsoft.FSharp.Collections
// similar to 'take' but with n representing an index, not a number of elements
// and with exceptions matching array slicing
let sliceTake n l =
- if n < 0 then outOfRange()
+ if n < 0 then [] else
match l with
| [] -> outOfRange()
| x::xs ->
diff --git a/src/fsharp/FSharp.Core/printf.fs b/src/fsharp/FSharp.Core/printf.fs
index 63ab20f6512..f3d47e1c0ab 100644
--- a/src/fsharp/FSharp.Core/printf.fs
+++ b/src/fsharp/FSharp.Core/printf.fs
@@ -230,6 +230,43 @@ module internal PrintfImpl =
env.Finish()
)
)
+
+ static member FinalFastEnd1<'A>
+ (
+ s0, conv1
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) ->
+ let env = env()
+ Utils.Write(env, s0, (conv1 a))
+ env.Finish()
+ )
+ )
+
+ static member FinalFastStart1<'A>
+ (
+ conv1, s1
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) ->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1)
+ env.Finish()
+ )
+ )
+
+ static member FinalFast1<'A>
+ (
+ conv1
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) ->
+ let env = env()
+ env.Write (conv1 a)
+ env.Finish()
+ )
+ )
+
static member Final2<'A, 'B>
(
s0, conv1, s1, conv2, s2
@@ -242,6 +279,42 @@ module internal PrintfImpl =
)
)
+ static member FinalFastEnd2<'A, 'B>
+ (
+ s0, conv1, s1, conv2
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) ->
+ let env = env()
+ Utils.Write(env, s0, (conv1 a), s1, (conv2 b))
+ env.Finish()
+ )
+ )
+
+ static member FinalFastStart2<'A, 'B>
+ (
+ conv1, s1, conv2, s2
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) ->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2)
+ env.Finish()
+ )
+ )
+
+ static member FinalFast2<'A, 'B>
+ (
+ conv1, s1, conv2
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) ->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b))
+ env.Finish()
+ )
+ )
+
static member Final3<'A, 'B, 'C>
(
s0, conv1, s1, conv2, s2, conv3, s3
@@ -254,6 +327,42 @@ module internal PrintfImpl =
)
)
+ static member FinalFastEnd3<'A, 'B, 'C>
+ (
+ s0, conv1, s1, conv2, s2, conv3
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) ->
+ let env = env()
+ Utils.Write(env, s0, (conv1 a), s1, (conv2 b), s2, (conv3 c))
+ env.Finish()
+ )
+ )
+
+ static member FinalFastStart3<'A, 'B, 'C>
+ (
+ conv1, s1, conv2, s2, conv3, s3
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) ->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3)
+ env.Finish()
+ )
+ )
+
+ static member FinalFast3<'A, 'B, 'C>
+ (
+ conv1, s1, conv2, s2, conv3
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) ->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c))
+ env.Finish()
+ )
+ )
+
static member Final4<'A, 'B, 'C, 'D>
(
s0, conv1, s1, conv2, s2, conv3, s3, conv4, s4
@@ -265,6 +374,43 @@ module internal PrintfImpl =
env.Finish()
)
)
+
+ static member FinalFastEnd4<'A, 'B, 'C, 'D>
+ (
+ s0, conv1, s1, conv2, s2, conv3, s3, conv4
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D)->
+ let env = env()
+ Utils.Write(env, s0, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d))
+ env.Finish()
+ )
+ )
+
+ static member FinalFastStart4<'A, 'B, 'C, 'D>
+ (
+ conv1, s1, conv2, s2, conv3, s3, conv4, s4
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D)->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d), s4)
+ env.Finish()
+ )
+ )
+
+ static member FinalFast4<'A, 'B, 'C, 'D>
+ (
+ conv1, s1, conv2, s2, conv3, s3, conv4
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D)->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d))
+ env.Finish()
+ )
+ )
+
static member Final5<'A, 'B, 'C, 'D, 'E>
(
s0, conv1, s1, conv2, s2, conv3, s3, conv4, s4, conv5, s5
@@ -276,6 +422,43 @@ module internal PrintfImpl =
env.Finish()
)
)
+
+ static member FinalFastEnd5<'A, 'B, 'C, 'D, 'E>
+ (
+ s0, conv1, s1, conv2, s2, conv3, s3, conv4, s4, conv5
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D) (e : 'E)->
+ let env = env()
+ Utils.Write(env, s0, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d), s4, (conv5 e))
+ env.Finish()
+ )
+ )
+
+ static member FinalFastStart5<'A, 'B, 'C, 'D, 'E>
+ (
+ conv1, s1, conv2, s2, conv3, s3, conv4, s4, conv5, s5
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D) (e : 'E)->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d), s4, (conv5 e), s5)
+ env.Finish()
+ )
+ )
+
+ static member FinalFast5<'A, 'B, 'C, 'D, 'E>
+ (
+ conv1, s1, conv2, s2, conv3, s3, conv4, s4, conv5
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D) (e : 'E)->
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d), s4, (conv5 e))
+ env.Finish()
+ )
+ )
+
static member Chained1<'A, 'Tail>
(
s0, conv1,
@@ -290,6 +473,22 @@ module internal PrintfImpl =
next env : 'Tail
)
)
+
+ static member ChainedFastStart1<'A, 'Tail>
+ (
+ conv1,
+ next
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) ->
+ let env() =
+ let env = env()
+ env.Write(conv1 a)
+ env
+ next env : 'Tail
+ )
+ )
+
static member Chained2<'A, 'B, 'Tail>
(
s0, conv1, s1, conv2,
@@ -305,6 +504,21 @@ module internal PrintfImpl =
)
)
+ static member ChainedFastStart2<'A, 'B, 'Tail>
+ (
+ conv1, s1, conv2,
+ next
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) ->
+ let env() =
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b))
+ env
+ next env : 'Tail
+ )
+ )
+
static member Chained3<'A, 'B, 'C, 'Tail>
(
s0, conv1, s1, conv2, s2, conv3,
@@ -320,6 +534,21 @@ module internal PrintfImpl =
)
)
+ static member ChainedFastStart3<'A, 'B, 'C, 'Tail>
+ (
+ conv1, s1, conv2, s2, conv3,
+ next
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) ->
+ let env() =
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c))
+ env
+ next env : 'Tail
+ )
+ )
+
static member Chained4<'A, 'B, 'C, 'D, 'Tail>
(
s0, conv1, s1, conv2, s2, conv3, s3, conv4,
@@ -334,6 +563,22 @@ module internal PrintfImpl =
next env : 'Tail
)
)
+
+ static member ChainedFastStart4<'A, 'B, 'C, 'D, 'Tail>
+ (
+ conv1, s1, conv2, s2, conv3, s3, conv4,
+ next
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D)->
+ let env() =
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d))
+ env
+ next env : 'Tail
+ )
+ )
+
static member Chained5<'A, 'B, 'C, 'D, 'E, 'Tail>
(
s0, conv1, s1, conv2, s2, conv3, s3, conv4, s4, conv5,
@@ -349,6 +594,21 @@ module internal PrintfImpl =
)
)
+ static member ChainedFastStart5<'A, 'B, 'C, 'D, 'E, 'Tail>
+ (
+ conv1, s1, conv2, s2, conv3, s3, conv4, s4, conv5,
+ next
+ ) =
+ (fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
+ (fun (a : 'A) (b : 'B) (c : 'C) (d : 'D) (e : 'E)->
+ let env() =
+ let env = env()
+ Utils.Write(env, (conv1 a), s1, (conv2 b), s2, (conv3 c), s3, (conv4 d), s4, (conv5 e))
+ env
+ next env : 'Tail
+ )
+ )
+
static member TFinal(s1 : string, s2 : string) =
(fun (env : unit -> PrintfEnv<'State, 'Residue, 'Result>) ->
(fun (f : 'State -> 'Residue) ->
@@ -995,11 +1255,11 @@ module internal PrintfImpl =
type private PrintfBuilder<'S, 'Re, 'Res>() =
let mutable count = 0
+ let mutable optimizedArgCount = 0
#if DEBUG
let verifyMethodInfoWasTaken (mi : System.Reflection.MemberInfo) =
if isNull mi then
ignore (System.Diagnostics.Debugger.Launch())
-#else
#endif
let buildSpecialChained(spec : FormatSpecifier, argTys : Type[], prefix : string, tail : obj, retTy) =
@@ -1007,7 +1267,6 @@ module internal PrintfImpl =
let mi = typeof>.GetMethod("LittleAChained", NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let mi = mi.MakeGenericMethod([| argTys.[1]; retTy |])
@@ -1017,7 +1276,6 @@ module internal PrintfImpl =
let mi = typeof>.GetMethod("TChained", NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let mi = mi.MakeGenericMethod([| retTy |])
let args = [| box prefix; tail |]
@@ -1032,7 +1290,6 @@ module internal PrintfImpl =
typeof>.GetMethod(name, NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let argTypes, args =
if spec.TypeChar = '%' then
@@ -1050,7 +1307,6 @@ module internal PrintfImpl =
let mi = typeof>.GetMethod("LittleAFinal", NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let mi = mi.MakeGenericMethod(argTys.[1] : Type)
let args = [| box prefix; box suffix |]
@@ -1059,7 +1315,6 @@ module internal PrintfImpl =
let mi = typeof>.GetMethod("TFinal", NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let args = [| box prefix; box suffix |]
mi.Invoke(null, args)
@@ -1073,7 +1328,6 @@ module internal PrintfImpl =
typeof>.GetMethod(name, NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let mi, args =
@@ -1087,23 +1341,46 @@ module internal PrintfImpl =
mi.Invoke(null, args)
- let buildPlainFinal(args : obj[], argTypes : Type[]) =
- let mi = typeof>.GetMethod("Final" + (let x = argTypes.Length in x.ToString()), NonPublicStatics)
+ let buildPlainFinal(args : obj[], argTypes : Type[]) =
+ let argsCount = args.Length
+ let methodName,args =
+ if argsCount > 0 && args.[0].ToString() = "" then
+ if argsCount > 1 && args.[argsCount - 1].ToString() = "" then
+ let args = Array.sub args 1 (argsCount - 2)
+ optimizedArgCount <- optimizedArgCount + 2
+ "FinalFast", args
+ else
+ optimizedArgCount <- optimizedArgCount + 1
+ "FinalFastStart", args |> Array.skip 1
+ elif argsCount > 0 && args.[argsCount - 1].ToString() = "" then
+ let args = Array.sub args 0 (argsCount - 1)
+ optimizedArgCount <- optimizedArgCount + 1
+ "FinalFastEnd", args
+ else
+ "Final",args
+
+ let mi = typeof>.GetMethod(methodName + argTypes.Length.ToString(), NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let mi = mi.MakeGenericMethod(argTypes)
mi.Invoke(null, args)
- let buildPlainChained(args : obj[], argTypes : Type[]) =
- let mi = typeof>.GetMethod("Chained" + (let x = (argTypes.Length - 1) in x.ToString()), NonPublicStatics)
+ let buildPlainChained(args : obj[], argTypes : Type[]) =
+ let argsCount = args.Length
+ let methodName,args =
+ if argsCount > 0 && args.[0].ToString() = "" then
+ optimizedArgCount <- optimizedArgCount + 1
+ "ChainedFastStart", args |> Array.skip 1
+ else
+ "Chained", args
+
+ let mi = typeof>.GetMethod(methodName + (argTypes.Length - 1).ToString(), NonPublicStatics)
#if DEBUG
verifyMethodInfoWasTaken mi
-#else
#endif
let mi = mi.MakeGenericMethod(argTypes)
- mi.Invoke(null, args)
+ mi.Invoke(null, args)
let builderStack = PrintfBuilderStack()
@@ -1178,8 +1455,6 @@ module internal PrintfImpl =
builderStack.PushContinuationWithType(currentCont, funcTy)
ContinuationOnStack
else
-
-
let hasCont = builderStack.HasContinuationOnStack(numberOfArgs)
let expectedNumberOfItemsOnStack = numberOfArgs * 2
@@ -1223,6 +1498,7 @@ module internal PrintfImpl =
numberOfArgs + 1
let parseFormatString (s : string) (funcTy : System.Type) : obj =
+ optimizedArgCount <- 0
let prefixPos, prefix = FormatString.findNextFormatSpecifier s 0
if prefixPos = s.Length then
box (fun (env : unit -> PrintfEnv<'S, 'Re, 'Res>) ->
@@ -1237,9 +1513,9 @@ module internal PrintfImpl =
builderStack.PopValueUnsafe()
else
buildPlain n prefix
-
+
member __.Build<'T>(s : string) : PrintfFactory<'S, 'Re, 'Res, 'T> * int =
- parseFormatString s typeof<'T> :?> _, (2 * count + 1) // second component is used in SprintfEnv as value for internal buffer
+ parseFormatString s typeof<'T> :?> _, (2 * count + 1) - optimizedArgCount // second component is used in SprintfEnv as value for internal buffer
/// Type of element that is stored in cache
/// Pair: factory for the printer + number of text blocks that printer will produce (used to preallocate buffers)
@@ -1278,7 +1554,18 @@ module internal PrintfImpl =
override __.Write(s : string) =
buf.[ptr] <- s
ptr <- ptr + 1
- override this.WriteT(s) = this.Write s
+ override __.WriteT(s) =
+ buf.[ptr] <- s
+ ptr <- ptr + 1
+
+ type SmallStringPrintfEnv<'Result>(k) =
+ inherit PrintfEnv(())
+
+ let mutable c = null
+
+ override __.Finish() : 'Result = k c
+ override __.Write(s : string) = if isNull c then c <- s else c <- c + s
+ override __.WriteT(s) = if isNull c then c <- s else c <- c + s
type StringBuilderPrintfEnv<'Result>(k, buf) =
inherit PrintfEnv(buf)
@@ -1314,12 +1601,21 @@ module Printf =
[]
let ksprintf continuation (format : StringFormat<'T, 'Result>) : 'T =
- doPrintf format (fun n ->
- StringPrintfEnv(continuation, n) :> PrintfEnv<_, _, _>
+ doPrintf format (fun n ->
+ if n <= 2 then
+ SmallStringPrintfEnv(continuation) :> PrintfEnv<_, _, _>
+ else
+ StringPrintfEnv(continuation, n) :> PrintfEnv<_, _, _>
)
[]
- let sprintf (format : StringFormat<'T>) = ksprintf id format
+ let sprintf (format : StringFormat<'T>) =
+ doPrintf format (fun n ->
+ if n <= 2 then
+ SmallStringPrintfEnv(id) :> PrintfEnv<_, _, _>
+ else
+ StringPrintfEnv(id, n) :> PrintfEnv<_, _, _>
+ )
[]
let kprintf continuation format = ksprintf continuation format
diff --git a/src/fsharp/Fsc-proto/Fsc-proto.fsproj b/src/fsharp/Fsc-proto/Fsc-proto.fsproj
index 1f86f23372a..fd3d209e512 100644
--- a/src/fsharp/Fsc-proto/Fsc-proto.fsproj
+++ b/src/fsharp/Fsc-proto/Fsc-proto.fsproj
@@ -11,6 +11,7 @@
Exe$(NoWarn);62fsc-proto
+ NO_EXTENSIONTYPING;$(DefineConstants)BUILDING_PROTO;$(DefineConstants)BUILDING_WITH_LKG;$(DefineConstants)COMPILER;$(DefineConstants)
@@ -453,7 +454,7 @@
- $(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.PortablePdb.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.PortablePdb.1.2.0\lib\portable-net45+win8\Microsoft.DiaSymReader.PortablePdb.dll$(FSharpSourcesRoot)\..\packages\Microsoft.DiaSymReader.1.1.0\lib\portable-net45+win8\Microsoft.DiaSymReader.dll
@@ -472,7 +473,7 @@
FSharp.Core
-
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
@@ -486,23 +487,6 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
diff --git a/src/fsharp/Fsc/Fsc.fsproj b/src/fsharp/Fsc/Fsc.fsproj
index 9775469cf1c..127f1c4753a 100644
--- a/src/fsharp/Fsc/Fsc.fsproj
+++ b/src/fsharp/Fsc/Fsc.fsproj
@@ -18,7 +18,6 @@
Exe$(NoWarn);62fsc
- EXTENSIONTYPING;$(DefineConstants)COMPILER;$(DefineConstants)true$(OtherFlags) --warnon:1182
diff --git a/src/fsharp/IlxGen.fs b/src/fsharp/IlxGen.fs
index dcc82333144..e0311b39529 100644
--- a/src/fsharp/IlxGen.fs
+++ b/src/fsharp/IlxGen.fs
@@ -400,7 +400,7 @@ and GenNamedTyAppAux (amap:ImportMap) m tyenv ptrsOK tcref tinst =
if ptrsOK = PtrTypesOK && tyconRefEq g tcref g.nativeptr_tcr && (freeInTypes CollectTypars tinst).FreeTypars.IsEmpty then
GenNamedTyAppAux amap m tyenv ptrsOK g.ilsigptr_tcr tinst
else
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match tcref.TypeReprInfo with
// Generate the base type, because that is always the representation of the erased type, unless the assembly is being injected
| TProvidedTypeExtensionPoint info when info.IsErased ->
@@ -6179,7 +6179,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon:Tycon) =
let tcref = mkLocalTyconRef tycon
if tycon.IsTypeAbbrev then () else
match tycon.TypeReprInfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedNamespaceExtensionPoint _ -> ()
| TProvidedTypeExtensionPoint _ -> ()
#endif
diff --git a/src/fsharp/InfoReader.fs b/src/fsharp/InfoReader.fs
index 375571f1afe..c6f8a7629ce 100644
--- a/src/fsharp/InfoReader.fs
+++ b/src/fsharp/InfoReader.fs
@@ -53,7 +53,7 @@ let GetImmediateIntrinsicMethInfosOfType (optFilter,ad) g amap m typ =
let minfos =
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let st = info.ProvidedType
let meths =
@@ -122,7 +122,7 @@ let GetImmediateIntrinsicPropInfosOfType (optFilter,ad) g amap m typ =
let pinfos =
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let st = info.ProvidedType
let matchingProps =
@@ -185,7 +185,7 @@ type InfoReader(g:TcGlobals, amap:Import.ImportMap) =
let GetImmediateIntrinsicILFieldsOfType (optFilter,ad) m typ =
let infos =
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let st = info.ProvidedType
match optFilter with
@@ -210,7 +210,7 @@ type InfoReader(g:TcGlobals, amap:Import.ImportMap) =
let ComputeImmediateIntrinsicEventsOfType (optFilter,ad) m typ =
let infos =
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let st = info.ProvidedType
match optFilter with
@@ -426,7 +426,7 @@ let GetIntrinsicConstructorInfosOfType (infoReader:InfoReader) m ty =
let amap = infoReader.amap
if isAppTy g ty then
match metadataOfTy g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let st = info.ProvidedType
[ for ci in st.PApplyArray((fun st -> st.GetConstructors()), "GetConstructors", m) do
diff --git a/src/fsharp/MethodCalls.fs b/src/fsharp/MethodCalls.fs
index ab6d2c0c762..8221e808746 100644
--- a/src/fsharp/MethodCalls.fs
+++ b/src/fsharp/MethodCalls.fs
@@ -27,7 +27,7 @@ open Microsoft.FSharp.Compiler.Tastops.DebugPrint
open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.TypeRelations
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -654,7 +654,7 @@ let MakeMethInfoCall amap m minfo minst args =
BuildFSharpMethodCall g m (typ,vref) valUseFlags minst args |> fst
| DefaultStructCtor(_,typ) ->
mkDefault (m,typ)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,m) ->
let isProp = false // not necessarily correct, but this is only used post-creflect where this flag is irrelevant
let ilMethodRef = Import.ImportProvidedMethodBaseAsILMethodRef amap m mi
@@ -668,7 +668,7 @@ let MakeMethInfoCall amap m minfo minst args =
#endif
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// This imports a provided method, and checks if it is a known compiler intrinsic like "1 + 2"
let TryImportProvidedMethodBaseAsLibraryIntrinsic (amap:Import.ImportMap, m:range, mbase: Tainted) =
let methodName = mbase.PUntaint((fun x -> x.Name),m)
@@ -718,7 +718,7 @@ let BuildMethodCall tcVal g amap isMutable m isProp minfo valUseFlags minst objA
valUseFlags
match minfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// By this time this is an erased method info, e.g. one returned from an expression
// REVIEW: copied from tastops, which doesn't allow protected methods
| ProvidedMeth (amap,providedMeth,_,_) ->
@@ -835,7 +835,7 @@ let CoerceFromFSharpFuncToDelegate g amap infoReader ad callerArgTy m callerArgE
//-------------------------------------------------------------------------
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// This file is not a great place for this functionality to sit, it's here because of BuildMethodCall
module ProvidedMethodCalls =
diff --git a/src/fsharp/MethodOverrides.fs b/src/fsharp/MethodOverrides.fs
index 56092362db0..a326248b553 100644
--- a/src/fsharp/MethodOverrides.fs
+++ b/src/fsharp/MethodOverrides.fs
@@ -650,7 +650,7 @@ let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader:InfoReader, nenv,
// Note you only have to explicitly implement 'System.IComparable' to customize structural comparison AND equality on F# types
if isImplementation &&
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
not tycon.IsProvidedGeneratedTycon &&
#endif
Option.isNone tycon.GeneratedCompareToValues &&
@@ -667,7 +667,7 @@ let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader:InfoReader, nenv,
AugmentWithHashCompare.CheckAugmentationAttribs isImplementation g amap tycon
// Check some conditions about generic comparison and hashing. We can only check this condition after we've done the augmentation
if isImplementation
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
&& not tycon.IsProvidedGeneratedTycon
#endif
then
diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs
index cc50d5bb15d..a80ddbf1df6 100644
--- a/src/fsharp/NameResolution.fs
+++ b/src/fsharp/NameResolution.fs
@@ -27,7 +27,7 @@ open Microsoft.FSharp.Compiler.InfoReader
open Microsoft.FSharp.Compiler.PrettyNaming
open System.Collections.Generic
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -899,7 +899,9 @@ let AddResults res1 res2 =
| Result x,Exception _ -> Result x
// If we have error messages for the same symbol, then we can merge suggestions.
| Exception (UndefinedName(n1,f,id1,suggestions1)),Exception (UndefinedName(n2,_,id2,suggestions2)) when n1 = n2 && id1.idText = id2.idText && id1.idRange = id2.idRange ->
- Exception(UndefinedName(n1,f,id1,fun () -> Set.union (suggestions1()) (suggestions2())))
+ let suggestions = HashSet(suggestions1())
+ suggestions.UnionWith(suggestions2())
+ Exception(UndefinedName(n1,f,id1,fun () -> suggestions))
// This prefers error messages coming from deeper failing long identifier paths
| Exception (UndefinedName(n1,_,_,_) as e1),Exception (UndefinedName(n2,_,_,_) as e2) ->
if n1 < n2 then Exception e2 else Exception e1
@@ -1066,7 +1068,7 @@ type PermitDirectReferenceToGeneratedType =
| No
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Check for direct references to generated provided types.
let CheckForDirectReferenceToGeneratedType (tcref: TyconRef, genOk, m) =
@@ -1141,7 +1143,7 @@ let LookupTypeNameInEntityMaybeHaveArity (amap, m, ad, nm, staticResInfo:TypeNam
match LookupTypeNameInEntityHaveArity nm staticResInfo mtyp with
| Some tycon -> [modref.NestedTyconRef tycon]
| None -> []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let tcrefs =
match tcrefs with
| [] -> ResolveProvidedTypeNameInEntity (amap, m, nm, modref)
@@ -1171,7 +1173,7 @@ let GetNestedTypesOfType (ad, ncenv:NameResolver, optFilter, staticResInfo, chec
let tycon = tcref.Deref
let mty = tycon.ModuleOrNamespaceType
// No dotting through type generators to get to a nested type!
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if checkForGenerated then
CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m)
#else
@@ -1183,7 +1185,7 @@ let GetNestedTypesOfType (ad, ncenv:NameResolver, optFilter, staticResInfo, chec
let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, m, ad, nm, staticResInfo, tcref)
tcrefs |> List.map (MakeNestedType ncenv tinst m)
| None ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match tycon.TypeReprInfo with
| TProvidedTypeExtensionPoint info ->
[ for nestedType in info.ProvidedType.PApplyArray((fun sty -> sty.GetNestedTypes()), "GetNestedTypes", m) do
@@ -1222,12 +1224,32 @@ type ItemOccurence =
/// Result gets suppressed over this text range
| RelatedText
+type OpenDeclaration =
+ { LongId: Ident list
+ Range: range option
+ Modules: ModuleOrNamespaceRef list
+ AppliedScope: range
+ IsOwnNamespace: bool }
+
+ static member Create(longId: Ident list, modules: ModuleOrNamespaceRef list, appliedScope: range, isOwnNamespace: bool) =
+ { LongId = longId
+ Range =
+ match longId with
+ | [] -> None
+ | first :: rest ->
+ let last = rest |> List.tryLast |> Option.defaultValue first
+ Some (mkRange appliedScope.FileName first.idRange.Start last.idRange.End)
+ Modules = modules
+ AppliedScope = appliedScope
+ IsOwnNamespace = isOwnNamespace }
+
/// An abstract type for reporting the results of name resolution and type checking.
type ITypecheckResultsSink =
abstract NotifyEnvWithScope : range * NameResolutionEnv * AccessorDomain -> unit
abstract NotifyExprHasType : pos * TType * Tastops.DisplayEnv * NameResolutionEnv * AccessorDomain * range -> unit
abstract NotifyNameResolution : pos * Item * Item * TyparInst * ItemOccurence * Tastops.DisplayEnv * NameResolutionEnv * AccessorDomain * range * bool -> unit
abstract NotifyFormatSpecifierLocation : range * int -> unit
+ abstract NotifyOpenDeclaration : OpenDeclaration -> unit
abstract CurrentSource : string option
let (|ValRefOfProp|_|) (pi : PropInfo) = pi.ArbitraryValRef
@@ -1460,6 +1482,7 @@ type TcResultsSinkImpl(g, ?source: string) =
member __.GetHashCode((p:pos,i)) = p.Line + 101 * p.Column + hash i
member __.Equals((p1,i1),(p2,i2)) = posEq p1 p2 && i1 = i2 } )
let capturedMethodGroupResolutions = ResizeArray<_>()
+ let capturedOpenDeclarations = ResizeArray<_>()
let allowedRange (m:range) = not m.IsSynthetic
member this.GetResolutions() =
@@ -1468,6 +1491,8 @@ type TcResultsSinkImpl(g, ?source: string) =
member this.GetSymbolUses() =
TcSymbolUses(g, capturedNameResolutions, capturedFormatSpecifierLocations.ToArray())
+ member this.OpenDeclarations = Seq.toList capturedOpenDeclarations
+
interface ITypecheckResultsSink with
member sink.NotifyEnvWithScope(m,nenv,ad) =
if allowedRange m then
@@ -1504,6 +1529,9 @@ type TcResultsSinkImpl(g, ?source: string) =
member sink.NotifyFormatSpecifierLocation(m, numArgs) =
capturedFormatSpecifierLocations.Add((m, numArgs))
+ member sink.NotifyOpenDeclaration(openDeclaration) =
+ capturedOpenDeclarations.Add(openDeclaration)
+
member sink.CurrentSource = source
@@ -1550,6 +1578,11 @@ let CallExprHasTypeSink (sink:TcResultsSink) (m:range,nenv,typ,denv,ad) =
| None -> ()
| Some sink -> sink.NotifyExprHasType(m.End,typ,denv,nenv,ad,m)
+let CallOpenDeclarationSink (sink:TcResultsSink) (openDeclaration: OpenDeclaration) =
+ match sink.CurrentSink with
+ | None -> ()
+ | Some sink -> sink.NotifyOpenDeclaration(openDeclaration)
+
//-------------------------------------------------------------------------
// Check inferability of type parameters in resolved items.
//-------------------------------------------------------------------------
@@ -1696,7 +1729,7 @@ let CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities
| _ ->
tcrefs
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
for (_,tcref) in tcrefs do
// Type generators can't be returned by name resolution, unless PermitDirectReferenceToGeneratedType.Yes
CheckForDirectReferenceToGeneratedType (tcref, genOk, m)
@@ -1730,23 +1763,23 @@ let rec ResolveLongIndentAsModuleOrNamespace atMostOne amap m fullyQualified (ne
|> Seq.collect (fun kv -> kv.Value)
|> Seq.filter (fun modref -> IsEntityAccessible amap m ad modref)
|> Seq.collect (fun e -> [e.DisplayName; e.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
+ |> HashSet
UndefinedName(0,FSComp.SR.undefinedNameNamespaceOrModule,id,suggestModulesAndNamespaces))
- let moduleNotFoundErrorCache = ref None
- let moduleNotFound (modref: ModuleOrNamespaceRef) (mty:ModuleOrNamespaceType) id depth =
- match !moduleNotFoundErrorCache with
- | Some error -> error
- | None ->
+ let mutable moduleNotFoundErrorCache = None
+ let moduleNotFound (modref: ModuleOrNamespaceRef) (mty:ModuleOrNamespaceType) (id:Ident) depth =
+ match moduleNotFoundErrorCache with
+ | Some (oldId, error) when oldId = id.idRange -> error
+ | _ ->
let suggestNames() =
mty.ModulesAndNamespacesByDemangledName
|> Seq.filter (fun kv -> IsEntityAccessible amap m ad (modref.NestedTyconRef kv.Value))
|> Seq.collect (fun e -> [e.Value.DisplayName; e.Value.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
+ |> HashSet
let error = raze (UndefinedName(depth,FSComp.SR.undefinedNameNamespace,id,suggestNames))
- moduleNotFoundErrorCache := Some error
+ moduleNotFoundErrorCache <- Some(id.idRange, error)
error
match moduleOrNamespaces.TryFind id.idText with
@@ -1900,7 +1933,7 @@ let SelectMethInfosFromExtMembers (infoReader:InfoReader) optFilter apparentTy m
// F#-defined IL-style extension methods are not seen as extension methods in F# code
| FSMeth(g,_,vref,_) ->
yield (FSMeth(g, apparentTy, vref, Some pri))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// // Provided extension methods are not yet supported
| ProvidedMeth(amap,providedMeth,_,m) ->
yield (ProvidedMeth(amap, providedMeth, Some pri,m))
@@ -1958,7 +1991,7 @@ let CoreDisplayName(pinfo:PropInfo) =
| FSProp(_,_,Some get,_) -> get.CoreDisplayName
| FSProp _ -> failwith "unexpected (property must have either getter or setter)"
| ILProp(_,ILPropInfo(_,def)) -> def.Name
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) -> pi.PUntaint((fun pi -> pi.Name), m)
#endif
@@ -1983,16 +2016,13 @@ let DecodeFSharpEvent (pinfos:PropInfo list) ad g (ncenv:NameResolver) m =
/// Returns all record label names for the given type.
let GetRecordLabelsForType g nenv typ =
+ let result = HashSet()
if isRecdTy g typ then
- let typeName = NicePrint.minimalStringOfType nenv.eDisplayEnv typ
- nenv.eFieldLabels
- |> Seq.filter (fun kv ->
- kv.Value
- |> List.exists (fun r -> r.TyconRef.DisplayName = typeName))
- |> Seq.map (fun kv -> kv.Key)
- |> Set.ofSeq
- else
- Set.empty
+ let typeName = NicePrint.minimalStringOfType nenv.eDisplayEnv typ
+ for KeyValue(k, v) in nenv.eFieldLabels do
+ if v |> List.exists (fun r -> r.TyconRef.DisplayName = typeName) then
+ result.Add k |> ignore
+ result
// REVIEW: this shows up on performance logs. Consider for example endless resolutions of "List.map" to
// the empty set of results, or "x.Length" for a list or array type. This indicates it could be worth adding a cache here.
@@ -2081,21 +2111,22 @@ let rec ResolveLongIdentInTypePrim (ncenv:NameResolver) nenv lookupKind (resInfo
let suggestions1 =
ExtensionPropInfosOfTypeInScope ncenv.InfoReader nenv (None, ad) m typ
|> List.map (fun p -> p.PropertyName)
- |> Set.ofList
+
let suggestions2 =
ExtensionMethInfosOfTypeInScope ncenv.InfoReader nenv None m typ
|> List.map (fun m -> m.DisplayName)
- |> Set.ofList
+
let suggestions3 =
GetIntrinsicPropInfosOfType ncenv.InfoReader (None, ad, AllowMultiIntfInstantiations.No) findFlag m typ
|> List.map (fun p -> p.PropertyName)
- |> Set.ofList
+
let suggestions4 =
GetIntrinsicMethInfosOfType ncenv.InfoReader (None, ad, AllowMultiIntfInstantiations.No) findFlag m typ
|> List.filter (fun m -> not m.IsClassConstructor && not m.IsConstructor)
|> List.map (fun m -> m.DisplayName)
- |> Set.ofList
+
let suggestions5 = GetRecordLabelsForType g nenv typ
+
let suggestions6 =
match lookupKind with
| LookupKind.Expr | LookupKind.Pattern ->
@@ -2103,17 +2134,17 @@ let rec ResolveLongIdentInTypePrim (ncenv:NameResolver) nenv lookupKind (resInfo
let tcref,_ = destAppTy g typ
tcref.UnionCasesArray
|> Array.map (fun uc -> uc.DisplayName)
- |> Set.ofArray
else
- Set.empty
- | _ -> Set.empty
+ [||]
+ | _ -> [||]
- suggestions1
- |> Set.union suggestions2
- |> Set.union suggestions3
- |> Set.union suggestions4
- |> Set.union suggestions5
- |> Set.union suggestions6
+ [ yield! suggestions1
+ yield! suggestions2
+ yield! suggestions3
+ yield! suggestions4
+ yield! suggestions5
+ yield! suggestions6 ]
+ |> HashSet
raze (UndefinedName (depth,FSComp.SR.undefinedNameFieldConstructorOrMember, id, suggestMembers))
@@ -2133,7 +2164,7 @@ let ResolveLongIdentInType sink ncenv nenv lookupKind m ad lid findFlag typeName
item,rest
let private ResolveLongIdentInTyconRef (ncenv:NameResolver) nenv lookupKind resInfo depth m ad lid typeNameResInfo tcref =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// No dotting through type generators to get to a member!
CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m)
#endif
@@ -2228,13 +2259,11 @@ let rec ResolveExprLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv (typeN
modref.ModuleOrNamespaceType.AllEntities
|> Seq.filter (fun e -> IsEntityAccessible ncenv.amap m ad (modref.NestedTyconRef e))
|> Seq.map (fun e -> e.DisplayName)
- |> Set.ofSeq
let submodules =
mty.ModulesAndNamespacesByDemangledName
|> Seq.filter (fun kv -> IsEntityAccessible ncenv.amap m ad (modref.NestedTyconRef kv.Value))
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
let unions =
modref.ModuleOrNamespaceType.AllEntities
@@ -2245,25 +2274,23 @@ let rec ResolveExprLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv (typeN
else
tycon.UnionCasesArray)
|> Seq.map (fun uc -> uc.DisplayName)
- |> Set.ofSeq
let vals =
modref.ModuleOrNamespaceType.AllValsByLogicalName
|> Seq.filter (fun e -> IsValAccessible ad (mkNestedValRef modref e.Value))
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
let exns =
modref.ModuleOrNamespaceType.ExceptionDefinitionsByDemangledName
|> Seq.filter (fun e -> IsTyconReprAccessible ncenv.amap m ad (modref.NestedTyconRef e.Value))
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
- types
- |> Set.union submodules
- |> Set.union unions
- |> Set.union vals
- |> Set.union exns
+ [ yield! types
+ yield! submodules
+ yield! unions
+ yield! vals
+ yield! exns ]
+ |> HashSet
raze (UndefinedName(depth,FSComp.SR.undefinedNameValueConstructorNamespaceOrType,id,suggestPossibleTypesAndNames))
| results -> AtMostOneResult id.idRange results
@@ -2362,20 +2389,17 @@ let rec ResolveExprLongIdentPrim sink (ncenv:NameResolver) fullyQualified m ad n
let suggestedNames =
nenv.eUnqualifiedItems
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
let suggestedTypes =
nenv.TyconsByDemangledNameAndArity fullyQualified
|> Seq.filter (fun e -> IsEntityAccessible ncenv.amap m ad e.Value)
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
let suggestedModulesAndNamespaces =
nenv.ModulesAndNamespaces fullyQualified
|> Seq.collect (fun kv -> kv.Value)
|> Seq.filter (fun modref -> IsEntityAccessible ncenv.amap m ad modref)
|> Seq.collect (fun e -> [e.DisplayName; e.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
let unions =
// check if the user forgot to use qualified access
@@ -2390,12 +2414,12 @@ let rec ResolveExprLongIdentPrim sink (ncenv:NameResolver) fullyQualified m ad n
else
None)
|> Seq.map (fun t -> t.DisplayName + "." + id.idText)
- |> Set.ofSeq
- suggestedNames
- |> Set.union suggestedTypes
- |> Set.union suggestedModulesAndNamespaces
- |> Set.union unions
+ [ yield! suggestedNames
+ yield! suggestedTypes
+ yield! suggestedModulesAndNamespaces
+ yield! unions ]
+ |> HashSet
raze (UndefinedName(0,FSComp.SR.undefinedNameValueOfConstructor,id,suggestNamesAndTypes))
ForceRaise failingCase
@@ -2483,33 +2507,28 @@ let rec ResolveExprLongIdentPrim sink (ncenv:NameResolver) fullyQualified m ad n
search +++ moduleSearch +++ tyconSearch
let suggestEverythingInScope() =
- let suggestedModulesAndNamespaces =
- nenv.ModulesAndNamespaces fullyQualified
- |> Seq.collect (fun kv -> kv.Value)
- |> Seq.filter (fun modref -> IsEntityAccessible ncenv.amap m ad modref)
- |> Seq.collect (fun e -> [e.DisplayName; e.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
-
- let suggestedTypes =
- nenv.TyconsByDemangledNameAndArity fullyQualified
- |> Seq.filter (fun e -> IsEntityAccessible ncenv.amap m ad e.Value)
- |> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
-
- let suggestedNames =
- nenv.eUnqualifiedItems
- |> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
+ seq { yield!
+ nenv.ModulesAndNamespaces fullyQualified
+ |> Seq.collect (fun kv -> kv.Value)
+ |> Seq.filter (fun modref -> IsEntityAccessible ncenv.amap m ad modref)
+ |> Seq.collect (fun e -> [e.DisplayName; e.DemangledModuleOrNamespaceName])
- suggestedNames
- |> Set.union suggestedTypes
- |> Set.union suggestedModulesAndNamespaces
+ yield!
+ nenv.TyconsByDemangledNameAndArity fullyQualified
+ |> Seq.filter (fun e -> IsEntityAccessible ncenv.amap m ad e.Value)
+ |> Seq.map (fun e -> e.Value.DisplayName)
+
+ yield!
+ nenv.eUnqualifiedItems
+ |> Seq.map (fun e -> e.Value.DisplayName)
+ } |> HashSet
match innerSearch with
| Exception (UndefinedName(0,_,id1,suggestionsF)) when id.idRange = id1.idRange ->
let mergeSuggestions() =
- suggestEverythingInScope()
- |> Set.union (suggestionsF())
+ let res = suggestEverythingInScope()
+ res.UnionWith(suggestionsF())
+ res
let failingCase = raze (UndefinedName(0,FSComp.SR.undefinedNameValueNamespaceTypeOrModule,id,mergeSuggestions))
ForceRaise failingCase
@@ -2604,15 +2623,15 @@ let rec ResolvePatternLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv num
mty.ModulesAndNamespacesByDemangledName
|> Seq.filter (fun kv -> IsEntityAccessible ncenv.amap m ad (modref.NestedTyconRef kv.Value))
|> Seq.collect (fun e -> [e.Value.DisplayName; e.Value.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
let suggestedTypes =
nenv.TyconsByDemangledNameAndArity FullyQualifiedFlag.OpenQualified
|> Seq.filter (fun e -> IsEntityAccessible ncenv.amap m ad e.Value)
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
- Set.union submodules suggestedTypes
+ [ yield! submodules
+ yield! suggestedTypes ]
+ |> HashSet
raze (UndefinedName(depth,FSComp.SR.undefinedNameConstructorModuleOrNamespace,id,suggestPossibleTypes))
| results -> AtMostOneResult id.idRange results
@@ -2701,7 +2720,7 @@ let rec ResolveTypeLongIdentInTyconRefPrim (ncenv:NameResolver) (typeNameResInfo
match lid with
| [] -> error(Error(FSComp.SR.nrUnexpectedEmptyLongId(),m))
| [id] ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// No dotting through type generators to get to a nested type!
CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m)
#endif
@@ -2715,11 +2734,11 @@ let rec ResolveTypeLongIdentInTyconRefPrim (ncenv:NameResolver) (typeNameResInfo
let suggestTypes() =
tcref.ModuleOrNamespaceType.TypesByDemangledNameAndArity id.idRange
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
+ |> HashSet
raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,suggestTypes))
| id::rest ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// No dotting through type generators to get to a nested type!
CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m)
#endif
@@ -2736,7 +2755,7 @@ let rec ResolveTypeLongIdentInTyconRefPrim (ncenv:NameResolver) (typeNameResInfo
let suggestTypes() =
tcref.ModuleOrNamespaceType.TypesByDemangledNameAndArity id.idRange
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
+ |> HashSet
raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,suggestTypes))
@@ -2756,7 +2775,7 @@ let SuggestTypeLongIdentInModuleOrNamespace depth (modref:ModuleOrNamespaceRef)
modref.ModuleOrNamespaceType.AllEntities
|> Seq.filter (fun e -> IsEntityAccessible amap m ad (modref.NestedTyconRef e))
|> Seq.collect (fun e -> [e.DisplayName; e.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
+ |> HashSet
let errorTextF s = FSComp.SR.undefinedNameTypeIn(s,fullDisplayTextOfModRef modref)
UndefinedName(depth,errorTextF,id,suggestPossibleTypes)
@@ -2783,7 +2802,7 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace (ncenv:NameResolver) (ty
modref.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName
|> Seq.filter (fun kv -> IsEntityAccessible ncenv.amap m ad (modref.NestedTyconRef kv.Value))
|> Seq.collect (fun e -> [e.Value.DisplayName; e.Value.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
+ |> HashSet
raze (UndefinedName(depth,FSComp.SR.undefinedNameNamespaceOrModule,id,suggestPossibleModules))
let tyconSearch =
@@ -2794,7 +2813,7 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace (ncenv:NameResolver) (ty
let suggestTypes() =
modref.ModuleOrNamespaceType.TypesByDemangledNameAndArity id.idRange
|> Seq.map (fun e -> e.Value.DisplayName)
- |> Set.ofSeq
+ |> HashSet
raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,suggestTypes))
tyconSearch +++ modulSearch
@@ -2837,7 +2856,7 @@ let rec ResolveTypeLongIdentPrim (ncenv:NameResolver) occurence fullyQualified m
if e.Value.DisplayName.EndsWith "Attribute" then
yield e.Value.DisplayName.Replace("Attribute","")]
| _ -> [e.Value.DisplayName; e.Value.DemangledModuleOrNamespaceName])
- |> Set.ofSeq
+ |> HashSet
raze (UndefinedName(0,FSComp.SR.undefinedNameType,id,suggestPossibleTypes))
@@ -2960,18 +2979,19 @@ let SuggestOtherLabelsOfSameRecordType g (nenv:NameResolutionEnv) typ (id:Ident)
allFields
|> List.map (fun fld -> fld.idText)
|> List.filter ((<>) id.idText)
- |> Set.ofList
- Set.difference labelsOfPossibleRecord givenFields
-
+ labelsOfPossibleRecord.ExceptWith givenFields
+ labelsOfPossibleRecord
let SuggestLabelsOfRelatedRecords g (nenv:NameResolutionEnv) (id:Ident) (allFields:Ident list) =
let suggestLabels() =
- let givenFields = allFields |> List.map (fun fld -> fld.idText) |> List.filter ((<>) id.idText) |> Set.ofList
+ let givenFields = allFields |> List.map (fun fld -> fld.idText) |> List.filter ((<>) id.idText) |> HashSet
let fullyQualfied =
- if Set.isEmpty givenFields then
+ if givenFields.Count = 0 then
// return labels from all records
- NameMap.domainL nenv.eFieldLabels |> Set.ofList |> Set.remove "contents"
+ let result = NameMap.domainL nenv.eFieldLabels |> HashSet
+ result.Remove "contents" |> ignore
+ result
else
let possibleRecords =
[for fld in givenFields do
@@ -2979,10 +2999,10 @@ let SuggestLabelsOfRelatedRecords g (nenv:NameResolutionEnv) (id:Ident) (allFiel
| None -> ()
| Some recordTypes -> yield! (recordTypes |> List.map (fun r -> r.TyconRef.DisplayName, fld)) ]
|> List.groupBy fst
- |> List.map (fun (r,fields) -> r, fields |> List.map snd |> Set.ofList)
- |> List.filter (fun (_,fields) -> Set.isSubset givenFields fields)
+ |> List.map (fun (r,fields) -> r, fields |> List.map snd)
+ |> List.filter (fun (_,fields) -> givenFields.IsSubsetOf fields)
|> List.map fst
- |> Set.ofList
+ |> HashSet
let labelsOfPossibleRecords =
nenv.eFieldLabels
@@ -2991,11 +3011,12 @@ let SuggestLabelsOfRelatedRecords g (nenv:NameResolutionEnv) (id:Ident) (allFiel
|> List.map (fun r -> r.TyconRef.DisplayName)
|> List.exists possibleRecords.Contains)
|> Seq.map (fun kv -> kv.Key)
- |> Set.ofSeq
+ |> HashSet
- Set.difference labelsOfPossibleRecords givenFields
+ labelsOfPossibleRecords.ExceptWith givenFields
+ labelsOfPossibleRecords
- if not (Set.isEmpty fullyQualfied) then fullyQualfied else
+ if fullyQualfied.Count > 0 then fullyQualfied else
// check if the user forgot to use qualified access
nenv.eTyconsByDemangledNameAndArity
@@ -3009,7 +3030,7 @@ let SuggestLabelsOfRelatedRecords g (nenv:NameResolutionEnv) (id:Ident) (allFiel
else
None)
|> Seq.map (fun t -> t.DisplayName + "." + id.idText)
- |> Set.ofSeq
+ |> HashSet
UndefinedName(0,FSComp.SR.undefinedNameRecordLabel, id, suggestLabels)
@@ -3544,7 +3565,7 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso
if addersAndRemovers.IsEmpty then minfos
else minfos |> List.filter (fun minfo -> not (addersAndRemovers.Contains minfo.LogicalName))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// Filter out the ones with mangled names from applying static parameters
let minfos =
let methsWithStaticParams =
@@ -4170,7 +4191,7 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics typ
if addersAndRemovers.IsEmpty then minfos
else minfos |> List.filter (fun minfo -> not (addersAndRemovers.Contains minfo.LogicalName))
- #if EXTENSIONTYPING
+ #if !NO_EXTENSIONTYPING
// Filter out the ones with mangled names from applying static parameters
let minfos =
let methsWithStaticParams =
diff --git a/src/fsharp/NameResolution.fsi b/src/fsharp/NameResolution.fsi
index 60ea7a0e660..93f0009ff8b 100755
--- a/src/fsharp/NameResolution.fsi
+++ b/src/fsharp/NameResolution.fsi
@@ -22,6 +22,9 @@ type NameResolver =
member amap : ImportMap
member g : TcGlobals
+/// Get the active pattern elements defined in a module, if any. Cache in the slot in the module type.
+val ActivePatternElemsOfModuleOrNamespace : ModuleOrNamespaceRef -> NameMap
+
[]
/// Represents the item with which a named argument is associated.
type ArgumentContainer =
@@ -307,7 +310,26 @@ type internal TcSymbolUses =
/// Get the locations of all the printf format specifiers in the file
member GetFormatSpecifierLocationsAndArity : unit -> (range * int)[]
-
+/// Represents open declaration statement.
+type internal OpenDeclaration =
+ { /// Long identifier as it's presented in soruce code.
+ LongId: Ident list
+
+ /// Full range of the open declaration.
+ Range : range option
+
+ /// Modules or namespaces which is opened with this declaration.
+ Modules: ModuleOrNamespaceRef list
+
+ /// Scope in which open declaration is visible.
+ AppliedScope: range
+
+ /// If it's `namespace Xxx.Yyy` declaration.
+ IsOwnNamespace: bool }
+
+ /// Create a new instance of OpenDeclaration.
+ static member Create : longId: Ident list * modules: ModuleOrNamespaceRef list * appliedScope: range * isOwnNamespace: bool -> OpenDeclaration
+
/// An abstract type for reporting the results of name resolution and type checking
type ITypecheckResultsSink =
@@ -323,6 +345,9 @@ type ITypecheckResultsSink =
/// Record that a printf format specifier occurred at a specific location in the source
abstract NotifyFormatSpecifierLocation : range * int -> unit
+ /// Record that an open declaration occured in a given scope range
+ abstract NotifyOpenDeclaration : OpenDeclaration -> unit
+
/// Get the current source
abstract CurrentSource : string option
@@ -337,6 +362,10 @@ type internal TcResultsSinkImpl =
/// Get all the uses of all symbols reported to the sink
member GetSymbolUses : unit -> TcSymbolUses
+
+ /// Get all open declarations reported to the sink
+ member OpenDeclarations : OpenDeclaration list
+
interface ITypecheckResultsSink
/// An abstract type for reporting the results of name resolution and type checking, and which allows
@@ -364,6 +393,9 @@ val internal CallNameResolutionSinkReplacing : TcResultsSink -> range * Name
/// Report a specific name resolution at a source range
val internal CallExprHasTypeSink : TcResultsSink -> range * NameResolutionEnv * TType * DisplayEnv * AccessorDomain -> unit
+/// Report an open declaration
+val internal CallOpenDeclarationSink : TcResultsSink -> OpenDeclaration -> unit
+
/// Get all the available properties of a type (both intrinsic and extension)
val internal AllPropInfosOfTypeInScope : InfoReader -> NameResolutionEnv -> string option * AccessorDomain -> FindMemberFlag -> range -> TType -> PropInfo list
diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs
index 2387b0365c3..258f12a520c 100755
--- a/src/fsharp/NicePrint.fs
+++ b/src/fsharp/NicePrint.fs
@@ -27,7 +27,7 @@ open Microsoft.FSharp.Compiler.PrettyNaming
open Microsoft.FSharp.Core.Printf
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
open Microsoft.FSharp.Core.CompilerServices
#endif
@@ -1370,7 +1370,7 @@ module InfoMemberPrinting =
let prettyTyparInst, prettyMethInfo, minst = prettifyILMethInfo amap m methInfo typarInst ilminfo
let resL = layoutMethInfoCSharpStyle amap m denv prettyMethInfo minst
prettyTyparInst, resL
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ ->
let prettyTyparInst, _ = PrettyTypes.PrettifyInst amap.g typarInst
prettyTyparInst, layoutMethInfoCSharpStyle amap m denv methInfo methInfo.FormalMethodInst
@@ -1469,7 +1469,7 @@ module private TastDefinitionPrinting =
| TAsmRepr _
| TILObjectRepr _
| TMeasureableRepr _
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint _
| TProvidedNamespaceExtensionPoint _
#endif
@@ -1477,7 +1477,7 @@ module private TastDefinitionPrinting =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let private layoutILFieldInfo denv amap m (e: ILFieldInfo) =
let staticL = if e.IsStatic then WordL.keywordStatic else emptyL
let nameL = wordL (tagField (adjustILName e.FieldName))
@@ -1642,7 +1642,7 @@ module private TastDefinitionPrinting =
let tpsL = layoutTyparDecls denv nameL tycon.IsPrefixDisplay tps
typewordL ^^ tpsL
let start = Option.map tagKeyword start
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match tycon.IsProvided with
| true ->
layoutProvidedTycon denv infoReader ad m start lhsL ty
diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs
index 6e2672e2302..3ea19645b6b 100644
--- a/src/fsharp/Optimizer.fs
+++ b/src/fsharp/Optimizer.fs
@@ -1806,7 +1806,7 @@ and OptimizeExprOp cenv env (op, tyargs, args, m) =
Info = UnknownValue }
(* Handle these as special cases since mutables are allowed inside their bodies *)
| TOp.While (spWhile, marker), _, [Expr.Lambda(_, _, _, [_], e1, _, _);Expr.Lambda(_, _, _, [_], e2, _, _)] -> OptimizeWhileLoop cenv { env with inLoop=true } (spWhile, marker, e1, e2, m)
- | TOp.For(spStart, dir), _, [Expr.Lambda(_, _, _, [_], e1, _, _);Expr.Lambda(_, _, _, [_], e2, _, _);Expr.Lambda(_, _, _, [v], e3, _, _)] when false -> OptimizeFastIntegerForLoop cenv { env with inLoop=true } (spStart, v, e1, dir, e2, e3, m)
+ | TOp.For(spStart, dir), _, [Expr.Lambda(_, _, _, [_], e1, _, _);Expr.Lambda(_, _, _, [_], e2, _, _);Expr.Lambda(_, _, _, [v], e3, _, _)] -> OptimizeFastIntegerForLoop cenv { env with inLoop=true } (spStart, v, e1, dir, e2, e3, m)
| TOp.TryFinally(spTry, spFinally), [resty], [Expr.Lambda(_, _, _, [_], e1, _, _); Expr.Lambda(_, _, _, [_], e2, _, _)] -> OptimizeTryFinally cenv env (spTry, spFinally, e1, e2, m, resty)
| TOp.TryCatch(spTry, spWith), [resty], [Expr.Lambda(_, _, _, [_], e1, _, _); Expr.Lambda(_, _, _, [vf], ef, _, _); Expr.Lambda(_, _, _, [vh], eh, _, _)] -> OptimizeTryCatch cenv env (e1, vf, ef, vh, eh, m, resty, spTry, spWith)
| TOp.TraitCall(traitInfo), [], args -> OptimizeTraitCall cenv env (traitInfo, args, m)
diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs
index 029de52c39f..8906c9a4e8f 100644
--- a/src/fsharp/PostInferenceChecks.fs
+++ b/src/fsharp/PostInferenceChecks.fs
@@ -1379,7 +1379,7 @@ let CheckRecdField isUnion cenv env (tycon:Tycon) (rfield:RecdField) =
CheckForByrefLikeType cenv env rfield.FormalType (fun () -> errorR(Error(FSComp.SR.chkCantStoreByrefValue(), tycon.Range)))
let CheckEntityDefn cenv env (tycon:Entity) =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if not tycon.IsProvidedGeneratedTycon then
#endif
let env = { env with reflect = env.reflect || HasFSharpAttribute cenv.g cenv.g.attrib_ReflectedDefinitionAttribute tycon.Attribs }
diff --git a/src/fsharp/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs
index 5ca9483fe8a..0f599ff60fd 100644
--- a/src/fsharp/QuotationTranslator.fs
+++ b/src/fsharp/QuotationTranslator.fs
@@ -802,7 +802,7 @@ and ConvType cenv env m typ =
| TType_ucase(UCRef(tcref,_),tyargs) // Note: we erase union case 'types' when converting to quotations
| TType_app(tcref,tyargs) ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match TryElimErasableTyconRef cenv m tcref with
| Some baseTy -> ConvType cenv env m baseTy
| _ ->
@@ -926,7 +926,7 @@ and ConvDecisionTree cenv env tgs typR x =
and IsILTypeRefStaticLinkLocal cenv m (tr:ILTypeRef) =
ignore cenv; ignore m
match tr.Scope with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ILScopeRef.Assembly aref
when not cenv.g.isInteractive &&
aref.Name <> cenv.g.ilg.primaryAssemblyName && // optimization to avoid this check in the common case
@@ -985,7 +985,7 @@ and ConvILType cenv env m ty =
| ILType.FunctionPointer _ -> wfail(Error(FSComp.SR.crefQuotationsCantContainThisType(), m))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
and TryElimErasableTyconRef cenv m (tcref:TyconRef) =
match tcref.TypeReprInfo with
// Get the base type
@@ -994,7 +994,7 @@ and TryElimErasableTyconRef cenv m (tcref:TyconRef) =
#endif
and ConvTyconRef cenv (tcref:TyconRef) m =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match TryElimErasableTyconRef cenv m tcref with
| Some baseTy -> ConvTyconRef cenv (tcrefOfAppTy cenv.g baseTy) m
| None ->
diff --git a/src/fsharp/SignatureConformance.fs b/src/fsharp/SignatureConformance.fs
index cd41c20fca9..21d2fd06132 100644
--- a/src/fsharp/SignatureConformance.fs
+++ b/src/fsharp/SignatureConformance.fs
@@ -17,7 +17,7 @@ open Microsoft.FSharp.Compiler.Tastops
open Microsoft.FSharp.Compiler.Lib
open Microsoft.FSharp.Compiler.Infos
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -446,7 +446,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) =
| (TRecdRepr _
| TUnionRepr _
| TILObjectRepr _
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint _
| TProvidedNamespaceExtensionPoint _
#endif
@@ -498,7 +498,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) =
| (TMeasureableRepr ty1), (TMeasureableRepr ty2) ->
if typeAEquiv g aenv ty1 ty2 then true else (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName),m)); false)
| TNoRepr, TNoRepr -> true
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint info1 , TProvidedTypeExtensionPoint info2 ->
Tainted.EqTainted info1.ProvidedType.TypeProvider info2.ProvidedType.TypeProvider && ProvidedType.TaintedEquals(info1.ProvidedType,info2.ProvidedType)
| TProvidedNamespaceExtensionPoint _, TProvidedNamespaceExtensionPoint _ ->
diff --git a/src/fsharp/TastOps.fs b/src/fsharp/TastOps.fs
index 5b0c0eaf0aa..226e994c8d6 100644
--- a/src/fsharp/TastOps.fs
+++ b/src/fsharp/TastOps.fs
@@ -22,7 +22,7 @@ open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.Layout
open Microsoft.FSharp.Compiler.Layout.TaggedTextOps
open Microsoft.FSharp.Compiler.PrettyNaming
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -627,14 +627,14 @@ let reduceTyconRefAbbrev (tcref:TyconRef) tyargs =
reduceTyconAbbrev tcref.Deref tyargs
let reduceTyconMeasureableOrProvided (g:TcGlobals) (tycon:Tycon) tyargs =
-#if !EXTENSIONTYPING
+#if NO_EXTENSIONTYPING
ignore g // otherwise g would be unused
#endif
let repr = tycon.TypeReprInfo
match repr with
| TMeasureableRepr ty ->
if isNil tyargs then ty else instType (mkTyconInst tycon tyargs) ty
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint info when info.IsErased -> info.BaseTypeForErased (range0, g.obj_ty)
#endif
| _ -> invalidArg "tc" "this type definition is not a refinement"
@@ -921,7 +921,7 @@ let measureEquiv g m1 m2 = measureAEquiv g TypeEquivEnv.Empty m1 m2
let isErasedType g ty =
match stripTyEqns g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TType_app (tcref, _) -> tcref.IsProvidedErasedTycon
#endif
| _ -> false
@@ -1516,19 +1516,19 @@ let isILAppTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) ->
let isNativePtrTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tyconRefEq g g.nativeptr_tcr tcref | _ -> false)
let isByrefTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tyconRefEq g g.byref_tcr tcref | _ -> false)
let isByrefLikeTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> isByrefLikeTyconRef g tcref | _ -> false)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let extensionInfoOfTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _) -> tcref.TypeReprInfo | _ -> TNoRepr)
#endif
type TypeDefMetadata =
| ILTypeMetadata of TILObjectReprData
| FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata of TProvidedTypeInfo
#endif
let metadataOfTycon (tycon:Tycon) =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match tycon.TypeReprInfo with
| TProvidedTypeExtensionPoint info -> ProvidedTypeMetadata info
| _ ->
@@ -1540,7 +1540,7 @@ let metadataOfTycon (tycon:Tycon) =
let metadataOfTy g ty =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match extensionInfoOfTy g ty with
| TProvidedTypeExtensionPoint info -> ProvidedTypeMetadata info
| _ ->
@@ -1554,7 +1554,7 @@ let metadataOfTy g ty =
let isILReferenceTy g ty =
match metadataOfTy g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> not info.IsStructOrEnum
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> not td.IsStructOrEnum
@@ -1562,7 +1562,7 @@ let isILReferenceTy g ty =
let isILInterfaceTycon (tycon:Tycon) =
match metadataOfTycon tycon with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.IsInterface
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> (td.tdKind = ILTypeDefKind.Interface)
@@ -1594,7 +1594,7 @@ let isFSharpInterfaceTy g ty =
let isDelegateTy g ty =
match metadataOfTy g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.IsDelegate ()
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> (td.tdKind = ILTypeDefKind.Delegate)
@@ -1605,7 +1605,7 @@ let isDelegateTy g ty =
let isInterfaceTy g ty =
match metadataOfTy g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.IsInterface
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> (td.tdKind = ILTypeDefKind.Interface)
@@ -1613,7 +1613,7 @@ let isInterfaceTy g ty =
let isClassTy g ty =
match metadataOfTy g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.IsClass
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> (td.tdKind = ILTypeDefKind.Class)
@@ -2781,7 +2781,7 @@ let TryFindILAttributeOpt attr attrs =
let TryBindTyconRefAttribute g (m:range) (AttribInfo (atref, _) as args) (tcref:TyconRef) f1 f2 f3 =
ignore m; ignore f3
match metadataOfTycon tcref.Deref with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)), m)
match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)), m) with
@@ -3394,7 +3394,7 @@ module DebugPrint = begin
| _ -> failwith "unreachable"
let reprL =
match tycon.TypeReprInfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint _
| TProvidedNamespaceExtensionPoint _
#endif
@@ -4443,7 +4443,7 @@ let InferArityOfExprBinding g allowTypeDirectedDetupling (v:Val) e =
let underlyingTypeOfEnumTy (g: TcGlobals) typ =
assert(isEnumTy g typ)
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.UnderlyingTypeOfEnum()
#endif
| ILTypeMetadata (TILObjectReprData(_, _, tdef)) ->
@@ -4885,7 +4885,7 @@ and remapTyconRepr g tmenv repr =
| TRecdRepr x -> TRecdRepr (remapRecdFields g tmenv x)
| TUnionRepr x -> TUnionRepr (remapUnionCases g tmenv x)
| TILObjectRepr _ -> failwith "cannot remap IL type definitions"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedNamespaceExtensionPoint _ -> repr
| TProvidedTypeExtensionPoint info ->
TProvidedTypeExtensionPoint
@@ -6114,18 +6114,56 @@ let mkCallNewQuerySource (g:TcGlobals) m ty1 ty2 e1 = m
let mkCallCreateEvent (g:TcGlobals) m ty1 ty2 e1 e2 e3 = mkApps g (typedExprForIntrinsic g m g.create_event_info, [[ty1;ty2]], [ e1;e2;e3 ], m)
let mkCallGenericComparisonWithComparerOuter (g:TcGlobals) m ty comp e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_comparison_withc_outer_info, [[ty]], [ comp;e1;e2 ], m)
-let mkCallEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.equals_operator_info, [[ty]], [ e1;e2 ], m)
let mkCallGenericEqualityEROuter (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_equality_er_outer_info, [[ty]], [ e1;e2 ], m)
let mkCallGenericEqualityWithComparerOuter (g:TcGlobals) m ty comp e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_equality_withc_outer_info, [[ty]], [comp;e1;e2], m)
let mkCallGenericHashWithComparerOuter (g:TcGlobals) m ty comp e1 = mkApps g (typedExprForIntrinsic g m g.generic_hash_withc_outer_info, [[ty]], [comp;e1], m)
-let mkCallSubtractionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_subtraction_info, [[ty; ty; ty]], [e1;e2], m)
+let mkCallEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.equals_operator_info, [[ty]], [ e1;e2 ], m)
+let mkCallNotEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.not_equals_operator, [[ty]], [ e1;e2 ], m)
+let mkCallLessThanOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.less_than_operator, [[ty]], [ e1;e2 ], m)
+let mkCallLessThanOrEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.less_than_or_equals_operator, [[ty]], [ e1;e2 ], m)
+let mkCallGreaterThanOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.greater_than_operator, [[ty]], [ e1;e2 ], m)
+let mkCallGreaterThanOrEqualsOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.greater_than_or_equals_operator, [[ty]], [ e1;e2 ], m)
-let mkCallArrayLength (g:TcGlobals) m ty el = mkApps g (typedExprForIntrinsic g m g.array_length_info, [[ty]], [el], m)
-let mkCallArrayGet (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.array_get_info, [[ty]], [ e1 ; e2 ], m)
+let mkCallAdditionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_addition_info, [[ty; ty; ty]], [e1;e2], m)
+let mkCallSubtractionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_subtraction_info, [[ty; ty; ty]], [e1;e2], m)
+let mkCallMultiplyOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_multiply_info, [[ty; ty; ty]], [e1;e2], m)
+let mkCallDivisionOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_division_info, [[ty; ty; ty]], [e1;e2], m)
+let mkCallModulusOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.unchecked_modulus_info, [[ty; ty; ty]], [e1;e2], m)
+let mkCallBitwiseAndOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_and_info, [[ty]], [e1;e2], m)
+let mkCallBitwiseOrOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_or_info, [[ty]], [e1;e2], m)
+let mkCallBitwiseXorOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_xor_info, [[ty]], [e1;e2], m)
+let mkCallShiftLeftOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_shift_left_info, [[ty]], [e1;e2], m)
+let mkCallShiftRightOperator (g:TcGlobals) m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.bitwise_shift_right_info, [[ty]], [e1;e2], m)
+
+let mkCallUnaryNegOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.unchecked_unary_minus_info, [[ty]], [e1], m)
+let mkCallUnaryNotOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.bitwise_unary_not_info, [[ty]], [e1], m)
+
+let mkCallToByteOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.byte_operator_info, [[ty]], [e1], m)
+let mkCallToSByteOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.sbyte_operator_info, [[ty]], [e1], m)
+let mkCallToInt16Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int16_operator_info, [[ty]], [e1], m)
+let mkCallToUInt16Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint16_operator_info, [[ty]], [e1], m)
+let mkCallToIntOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int_operator_info, [[ty]], [e1], m)
+let mkCallToEnumOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.enum_operator_info, [[ty]], [e1], m)
+let mkCallToInt32Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int32_operator_info, [[ty]], [e1], m)
+let mkCallToUInt32Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint32_operator_info, [[ty]], [e1], m)
+let mkCallToInt64Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.int64_operator_info, [[ty]], [e1], m)
+let mkCallToUInt64Operator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.uint64_operator_info, [[ty]], [e1], m)
+let mkCallToSingleOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.float32_operator_info, [[ty]], [e1], m)
+let mkCallToDoubleOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.float_operator_info, [[ty]], [e1], m)
+let mkCallToIntPtrOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.nativeint_operator_info, [[ty]], [e1], m)
+let mkCallToUIntPtrOperator (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.unativeint_operator_info, [[ty]], [e1], m)
+
+let mkCallArrayLength (g:TcGlobals) m ty e1 = mkApps g (typedExprForIntrinsic g m g.array_length_info, [[ty]], [e1], m)
+let mkCallArrayGet (g:TcGlobals) m ty e1 idx1 = mkApps g (typedExprForIntrinsic g m g.array_get_info, [[ty]], [ e1 ; idx1 ], m)
let mkCallArray2DGet (g:TcGlobals) m ty e1 idx1 idx2 = mkApps g (typedExprForIntrinsic g m g.array2D_get_info, [[ty]], [ e1 ; idx1; idx2 ], m)
let mkCallArray3DGet (g:TcGlobals) m ty e1 idx1 idx2 idx3 = mkApps g (typedExprForIntrinsic g m g.array3D_get_info, [[ty]], [ e1 ; idx1; idx2; idx3 ], m)
let mkCallArray4DGet (g:TcGlobals) m ty e1 idx1 idx2 idx3 idx4 = mkApps g (typedExprForIntrinsic g m g.array4D_get_info, [[ty]], [ e1 ; idx1; idx2; idx3; idx4 ], m)
+let mkCallArraySet (g:TcGlobals) m ty e1 idx1 v = mkApps g (typedExprForIntrinsic g m g.array_set_info, [[ty]], [ e1 ; idx1; v ], m)
+let mkCallArray2DSet (g:TcGlobals) m ty e1 idx1 idx2 v = mkApps g (typedExprForIntrinsic g m g.array2D_set_info, [[ty]], [ e1 ; idx1; idx2; v ], m)
+let mkCallArray3DSet (g:TcGlobals) m ty e1 idx1 idx2 idx3 v = mkApps g (typedExprForIntrinsic g m g.array3D_set_info, [[ty]], [ e1 ; idx1; idx2; idx3; v ], m)
+let mkCallArray4DSet (g:TcGlobals) m ty e1 idx1 idx2 idx3 idx4 v = mkApps g (typedExprForIntrinsic g m g.array4D_set_info, [[ty]], [ e1 ; idx1; idx2; idx3; idx4; v ], m)
+
let mkCallNewDecimal (g:TcGlobals) m (e1, e2, e3, e4, e5) = mkApps g (typedExprForIntrinsic g m g.new_decimal_info, [], [ e1;e2;e3;e4;e5 ], m)
let mkCallNewFormat (g:TcGlobals) m aty bty cty dty ety e1 = mkApps g (typedExprForIntrinsic g m g.new_format_info, [[aty;bty;cty;dty;ety]], [ e1 ], m)
@@ -6324,7 +6362,7 @@ let mkCompilationMappingAttrForQuotationResource (g:TcGlobals) (nm, tys: ILTypeR
[ ILAttribElem.String (Some nm); ILAttribElem.Array (g.ilg.typ_Type, [ for ty in tys -> ILAttribElem.TypeRef (Some ty) ]) ],
[])
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
//----------------------------------------------------------------------------
// Decode extensible typing attributes
//----------------------------------------------------------------------------
@@ -7319,7 +7357,7 @@ let isSealedTy g ty =
isArrayTy g ty ||
match metadataOfTy g ty with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata st -> st.IsSealed
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> td.IsSealed
diff --git a/src/fsharp/TastOps.fsi b/src/fsharp/TastOps.fsi
index 38220852ecc..0de158c052e 100755
--- a/src/fsharp/TastOps.fsi
+++ b/src/fsharp/TastOps.fsi
@@ -19,7 +19,7 @@ open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.Layout
open Microsoft.FSharp.Compiler.Lib
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -993,7 +993,7 @@ val mkPrintfFormatTy : TcGlobals -> TType -> TType -> TType -> TType -> TType ->
type TypeDefMetadata =
| ILTypeMetadata of TILObjectReprData
| FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata of TProvidedTypeInfo
#endif
@@ -1201,15 +1201,54 @@ val mkCallArrayGet : TcGlobals -> range -> TType -> Expr -> Expr -> Ex
val mkCallArray2DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallArray3DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallArray4DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
+val mkCallArraySet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
+val mkCallArray2DSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr
+val mkCallArray3DSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
+val mkCallArray4DSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
+
val mkCallRaise : TcGlobals -> range -> TType -> Expr -> Expr
val mkCallGenericComparisonWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallGenericEqualityEROuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
-val mkCallEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
-val mkCallSubtractionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
val mkCallGenericEqualityWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr
val mkCallGenericHashWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallNotEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallLessThanOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallLessThanOrEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallGreaterThanOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallGreaterThanOrEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+
+val mkCallAdditionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallSubtractionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallMultiplyOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallDivisionOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallModulusOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallBitwiseAndOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallBitwiseOrOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallBitwiseXorOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallShiftLeftOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+val mkCallShiftRightOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr
+
+val mkCallUnaryNegOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallUnaryNotOperator : TcGlobals -> range -> TType -> Expr -> Expr
+
+val mkCallToByteOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToSByteOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToInt16Operator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToUInt16Operator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToIntOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToEnumOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToInt32Operator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToUInt32Operator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToInt64Operator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToUInt64Operator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToSingleOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToDoubleOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToIntPtrOperator : TcGlobals -> range -> TType -> Expr -> Expr
+val mkCallToUIntPtrOperator : TcGlobals -> range -> TType -> Expr -> Expr
+
val mkCallDeserializeQuotationFSharp20Plus : TcGlobals -> range -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallDeserializeQuotationFSharp40Plus : TcGlobals -> range -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr
val mkCallCastQuotation : TcGlobals -> range -> TType -> Expr -> Expr
@@ -1286,7 +1325,7 @@ val TyconRefHasAttribute : TcGlobals -> range -> BuiltinAttribInfo -> TyconRef -
/// Try to find the AttributeUsage attribute, looking for the value of the AllowMultiple named parameter
val TryFindAttributeUsageAttribute : TcGlobals -> range -> TyconRef -> bool option
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// returns Some(assemblyName) for success
val TryDecodeTypeProviderAssemblyAttr : ILGlobals -> ILAttribute -> string option
#endif
diff --git a/src/fsharp/TastPickle.fs b/src/fsharp/TastPickle.fs
index 10e8897d60e..18307ce1559 100755
--- a/src/fsharp/TastPickle.fs
+++ b/src/fsharp/TastPickle.fs
@@ -665,7 +665,7 @@ let u_encoded_nleref = u_tup2 u_int (u_array u_int)
let u_nleref st = lookup_uniq st st.inlerefs (u_int st)
let encode_nleref ccuTab stringTab nlerefTab thisCcu (nleref: NonLocalEntityRef) =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// Remap references to statically-linked Entity nodes in provider-generated entities to point to the current assembly.
// References to these nodes _do_ appear in F# assembly metadata, because they may be public.
let nleref =
@@ -1646,7 +1646,7 @@ and p_tycon_repr x st =
| TFSharpObjectRepr r -> p_byte 1 st; p_byte 3 st; p_tycon_objmodel_data r st; false
| TMeasureableRepr ty -> p_byte 1 st; p_byte 4 st; p_typ ty st; false
| TNoRepr -> p_byte 0 st; false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint info ->
if info.IsErased then
// Pickle erased type definitions as a NoRepr
diff --git a/src/fsharp/TcGlobals.fs b/src/fsharp/TcGlobals.fs
index 0e126f3469b..e89a3043acb 100755
--- a/src/fsharp/TcGlobals.fs
+++ b/src/fsharp/TcGlobals.fs
@@ -290,12 +290,25 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
else "[" + (String.replicate (rank - 1) ",") + "]`1"
mk_MFCore_tcref fslibCcu type_sig)
+ let v_byte_ty = mkNonGenericTy v_byte_tcr
+ let v_sbyte_ty = mkNonGenericTy v_sbyte_tcr
+ let v_int16_ty = mkNonGenericTy v_int16_tcr
+ let v_uint16_ty = mkNonGenericTy v_uint16_tcr
+ let v_int_ty = mkNonGenericTy v_int_tcr
+ let v_enum_ty = mkNonGenericTy v_int_tcr
+ let v_int32_ty = mkNonGenericTy v_int32_tcr
+ let v_uint32_ty = mkNonGenericTy v_uint32_tcr
+ let v_int64_ty = mkNonGenericTy v_int64_tcr
+ let v_uint64_ty = mkNonGenericTy v_uint64_tcr
+ let v_float32_ty = mkNonGenericTy v_float32_tcr
+ let v_float_ty = mkNonGenericTy v_float_tcr
+ let v_nativeint_ty = mkNonGenericTy v_nativeint_tcr
+ let v_unativeint_ty = mkNonGenericTy v_unativeint_tcr
+
let v_bool_ty = mkNonGenericTy v_bool_tcr
- let v_int_ty = mkNonGenericTy v_int_tcr
let v_char_ty = mkNonGenericTy v_char_tcr
let v_obj_ty = mkNonGenericTy v_obj_tcr
let v_string_ty = mkNonGenericTy v_string_tcr
- let v_byte_ty = mkNonGenericTy v_byte_tcr
let v_decimal_ty = mkSysNonGenericTy sys "Decimal"
let v_unit_ty = mkNonGenericTy v_unit_tcr_nice
let v_system_Type_typ = mkSysNonGenericTy sys "Type"
@@ -554,10 +567,27 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
let v_unchecked_addition_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Addition" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy)
let v_unchecked_subtraction_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Subtraction" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy)
let v_unchecked_multiply_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Multiply" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy)
+ let v_unchecked_division_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Division" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy)
+ let v_unchecked_modulus_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Modulus" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy)
let v_unchecked_unary_plus_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_UnaryPlus" , None , None , [vara], mk_unop_ty varaTy)
let v_unchecked_unary_minus_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_UnaryNegation" , None , None , [vara], mk_unop_ty varaTy)
let v_unchecked_unary_not_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "not" , None , Some "Not" , [], mk_unop_ty v_bool_ty)
+ let v_byte_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "byte" , None , Some "ToByte", [vara], ([[varaTy]], v_byte_ty))
+ let v_sbyte_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "sbyte" , None , Some "ToSByte", [vara], ([[varaTy]], v_sbyte_ty))
+ let v_int16_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "int16" , None , Some "ToInt16", [vara], ([[varaTy]], v_int16_ty))
+ let v_uint16_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "uint16" , None , Some "ToUInt16", [vara], ([[varaTy]], v_uint16_ty))
+ let v_int_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "int" , None , Some "ToInt", [vara], ([[varaTy]], v_int_ty))
+ let v_enum_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "enum" , None , Some "ToEnum", [vara], ([[varaTy]], v_enum_ty))
+ let v_int32_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "int32" , None , Some "ToInt32", [vara], ([[varaTy]], v_int32_ty))
+ let v_uint32_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "uint32" , None , Some "ToUInt32", [vara], ([[varaTy]], v_uint32_ty))
+ let v_int64_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "int64" , None , Some "ToInt64", [vara], ([[varaTy]], v_int64_ty))
+ let v_uint64_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "uint64" , None , Some "ToUInt64", [vara], ([[varaTy]], v_uint64_ty))
+ let v_float32_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "float32" , None , Some "ToSingle", [vara], ([[varaTy]], v_float32_ty))
+ let v_float_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "float" , None , Some "ToDouble", [vara], ([[varaTy]], v_float_ty))
+ let v_nativeint_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "nativeint" , None , Some "ToIntPtr", [vara], ([[varaTy]], v_nativeint_ty))
+ let v_unativeint_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "unativeint" , None , Some "ToUIntPtr", [vara], ([[varaTy]], v_unativeint_ty))
+
let v_raise_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "raise" , None , Some "Raise" , [vara], ([[mkSysNonGenericTy sys "Exception"]], varaTy))
let v_failwith_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "failwith" , None , Some "FailWith" , [vara], ([[v_string_ty]], varaTy))
let v_invalid_arg_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "invalidArg" , None , Some "InvalidArg" , [vara], ([[v_string_ty]; [v_string_ty]], varaTy))
@@ -571,13 +601,19 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
let v_sizeof_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "sizeof" , None , Some "SizeOf" , [vara], ([], v_int_ty))
let v_unchecked_defaultof_info = makeIntrinsicValRef(fslib_MFOperatorsUnchecked_nleref, "defaultof" , None , Some "DefaultOf", [vara], ([], varaTy))
let v_typedefof_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "typedefof" , None , Some "TypeDefOf", [vara], ([], v_system_Type_typ))
- let v_enum_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "enum" , None , Some "ToEnum" , [vara], ([[v_int_ty]], varaTy))
let v_range_op_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Range" , None , None , [vara], ([[varaTy];[varaTy]], mkSeqTy varaTy))
let v_range_step_op_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_RangeStep" , None , None , [vara;varb], ([[varaTy];[varbTy];[varaTy]], mkSeqTy varaTy))
let v_range_int32_op_info = makeIntrinsicValRef(fslib_MFOperatorIntrinsics_nleref, "RangeInt32" , None , None , [], ([[v_int_ty];[v_int_ty];[v_int_ty]], mkSeqTy v_int_ty))
+
+ let v_array_length_info = makeIntrinsicValRef(fslib_MFArrayModule_nleref, "length" , None , Some "Length" , [vara], ([[mkArrayType 1 varaTy]], v_int_ty))
+ let v_array_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray" , None , None , [vara], ([[mkArrayType 1 varaTy]; [v_int_ty]], varaTy))
let v_array2D_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray2D" , None , None , [vara], ([[mkArrayType 2 varaTy];[v_int_ty]; [v_int_ty]], varaTy))
let v_array3D_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray3D" , None , None , [vara], ([[mkArrayType 3 varaTy];[v_int_ty]; [v_int_ty]; [v_int_ty]], varaTy))
let v_array4D_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray4D" , None , None , [vara], ([[mkArrayType 4 varaTy];[v_int_ty]; [v_int_ty]; [v_int_ty]; [v_int_ty]], varaTy))
+ let v_array_set_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "SetArray" , None , None , [vara], ([[mkArrayType 1 varaTy]; [v_int_ty]; [varaTy]], v_unit_ty))
+ let v_array2D_set_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "SetArray2D" , None , None , [vara], ([[mkArrayType 2 varaTy];[v_int_ty]; [v_int_ty]; [varaTy]], v_unit_ty))
+ let v_array3D_set_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "SetArray3D" , None , None , [vara], ([[mkArrayType 3 varaTy];[v_int_ty]; [v_int_ty]; [v_int_ty]; [varaTy]], v_unit_ty))
+ let v_array4D_set_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "SetArray4D" , None , None , [vara], ([[mkArrayType 4 varaTy];[v_int_ty]; [v_int_ty]; [v_int_ty]; [v_int_ty]; [varaTy]], v_unit_ty))
let v_seq_collect_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "collect" , None , Some "Collect", [vara;varb;varc], ([[varaTy --> varbTy]; [mkSeqTy varaTy]], mkSeqTy varcTy))
let v_seq_delay_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "delay" , None , Some "Delay" , [varb], ([[v_unit_ty --> mkSeqTy varbTy]], mkSeqTy varbTy))
@@ -604,8 +640,6 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
let v_splice_expr_info = makeIntrinsicValRef(fslib_MFExtraTopLevelOperators_nleref, "op_Splice" , None , None , [vara], ([[mkQuotedExprTy varaTy]], varaTy))
let v_splice_raw_expr_info = makeIntrinsicValRef(fslib_MFExtraTopLevelOperators_nleref, "op_SpliceUntyped" , None , None , [vara], ([[mkRawQuotedExprTy]], varaTy))
let v_new_decimal_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "MakeDecimal" , None , None , [], ([[v_int_ty]; [v_int_ty]; [v_int_ty]; [v_bool_ty]; [v_byte_ty]], v_decimal_ty))
- let v_array_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray" , None , None , [vara], ([[mkArrayType 1 varaTy]; [v_int_ty]], varaTy))
- let v_array_length_info = makeIntrinsicValRef(fslib_MFArrayModule_nleref, "length" , None , Some "Length" , [vara], ([[mkArrayType 1 varaTy]], v_int_ty))
let v_deserialize_quoted_FSharp_20_plus_info = makeIntrinsicValRef(fslib_MFQuotations_nleref, "Deserialize" , Some "Expr" , None , [], ([[v_system_Type_typ ;mkListTy v_system_Type_typ ;mkListTy mkRawQuotedExprTy ; mkArrayType 1 v_byte_ty]], mkRawQuotedExprTy ))
let v_deserialize_quoted_FSharp_40_plus_info = makeIntrinsicValRef(fslib_MFQuotations_nleref, "Deserialize40" , Some "Expr" , None , [], ([[v_system_Type_typ ;mkArrayType 1 v_system_Type_typ; mkArrayType 1 v_system_Type_typ; mkArrayType 1 mkRawQuotedExprTy; mkArrayType 1 v_byte_ty]], mkRawQuotedExprTy ))
let v_cast_quotation_info = makeIntrinsicValRef(fslib_MFQuotations_nleref, "Cast" , Some "Expr" , None , [vara], ([[mkRawQuotedExprTy]], mkQuotedExprTy varaTy))
@@ -852,15 +886,15 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
member __.choice5_tcr = v_choice5_tcr
member __.choice6_tcr = v_choice6_tcr
member __.choice7_tcr = v_choice7_tcr
- member val nativeint_ty = mkNonGenericTy v_nativeint_tcr
- member val unativeint_ty = mkNonGenericTy v_unativeint_tcr
- member val int32_ty = mkNonGenericTy v_int32_tcr
- member val int16_ty = mkNonGenericTy v_int16_tcr
- member val int64_ty = mkNonGenericTy v_int64_tcr
- member val uint16_ty = mkNonGenericTy v_uint16_tcr
- member val uint32_ty = mkNonGenericTy v_uint32_tcr
- member val uint64_ty = mkNonGenericTy v_uint64_tcr
- member val sbyte_ty = mkNonGenericTy v_sbyte_tcr
+ member val nativeint_ty = v_nativeint_ty
+ member val unativeint_ty = v_unativeint_ty
+ member val int32_ty = v_int32_ty
+ member val int16_ty = v_int16_ty
+ member val int64_ty = v_int64_ty
+ member val uint16_ty = v_uint16_ty
+ member val uint32_ty = v_uint32_ty
+ member val uint64_ty = v_uint64_ty
+ member val sbyte_ty = v_sbyte_ty
member __.byte_ty = v_byte_ty
member __.bool_ty = v_bool_ty
member __.int_ty = v_int_ty
@@ -871,8 +905,8 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
member __.decimal_ty = v_decimal_ty
member val exn_ty = mkNonGenericTy v_exn_tcr
- member val float_ty = mkNonGenericTy v_float_tcr
- member val float32_ty = mkNonGenericTy v_float32_tcr
+ member val float_ty = v_float_ty
+ member val float32_ty = v_float32_ty
/// Memoization table to help minimize the number of ILSourceDocument objects we create
member __.memoize_file x = v_memoize_file.Apply x
@@ -1093,7 +1127,37 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
member val unchecked_subtraction_vref = ValRefForIntrinsic v_unchecked_subtraction_info
member val unchecked_multiply_vref = ValRefForIntrinsic v_unchecked_multiply_info
member val unchecked_defaultof_vref = ValRefForIntrinsic v_unchecked_defaultof_info
+
+ member __.bitwise_or_info = v_bitwise_or_info
+ member __.bitwise_and_info = v_bitwise_and_info
+ member __.bitwise_xor_info = v_bitwise_xor_info
+ member __.bitwise_unary_not_info = v_bitwise_unary_not_info
+ member __.bitwise_shift_left_info = v_bitwise_shift_left_info
+ member __.bitwise_shift_right_info = v_bitwise_shift_right_info
+ member __.unchecked_addition_info = v_unchecked_addition_info
member __.unchecked_subtraction_info = v_unchecked_subtraction_info
+ member __.unchecked_multiply_info = v_unchecked_multiply_info
+ member __.unchecked_division_info = v_unchecked_division_info
+ member __.unchecked_modulus_info = v_unchecked_modulus_info
+ member __.unchecked_unary_plus_info = v_unchecked_unary_plus_info
+ member __.unchecked_unary_minus_info = v_unchecked_unary_minus_info
+ member __.unchecked_unary_not_info = v_unchecked_unary_not_info
+
+ member __.byte_operator_info = v_byte_operator_info
+ member __.sbyte_operator_info = v_sbyte_operator_info
+ member __.int16_operator_info = v_int16_operator_info
+ member __.uint16_operator_info = v_uint16_operator_info
+ member __.int_operator_info = v_int_operator_info
+ member __.enum_operator_info = v_enum_operator_info
+ member __.int32_operator_info = v_int32_operator_info
+ member __.uint32_operator_info = v_uint32_operator_info
+ member __.int64_operator_info = v_int64_operator_info
+ member __.uint64_operator_info = v_uint64_operator_info
+ member __.float32_operator_info = v_float32_operator_info
+ member __.float_operator_info = v_float_operator_info
+ member __.nativeint_operator_info = v_nativeint_operator_info
+ member __.unativeint_operator_info = v_unativeint_operator_info
+
member val compare_operator_vref = ValRefForIntrinsic v_compare_operator_info
member val equals_operator_vref = ValRefForIntrinsic v_equals_operator_info
member val equals_nullable_operator_vref = ValRefForIntrinsic v_equals_nullable_operator_info
@@ -1112,7 +1176,13 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
member val invalid_op_vref = ValRefForIntrinsic v_invalid_op_info
member val failwithf_vref = ValRefForIntrinsic v_failwithf_info
- member __.equals_operator_info = v_equals_operator_info
+ member __.equals_operator_info = v_equals_operator_info
+ member __.not_equals_operator = v_not_equals_operator_info
+ member __.less_than_operator = v_less_than_operator_info
+ member __.less_than_or_equals_operator = v_less_than_or_equals_operator_info
+ member __.greater_than_operator = v_greater_than_operator_info
+ member __.greater_than_or_equals_operator = v_greater_than_or_equals_operator_info
+
member __.raise_info = v_raise_info
member __.failwith_info = v_failwith_info
member __.invalid_arg_info = v_invalid_arg_info
@@ -1123,14 +1193,13 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
member __.methodhandleof_info = v_methodhandleof_info
member __.typeof_info = v_typeof_info
member __.typedefof_info = v_typedefof_info
- member __.array_length_info = v_array_length_info
member val reraise_vref = ValRefForIntrinsic v_reraise_info
member val methodhandleof_vref = ValRefForIntrinsic v_methodhandleof_info
member val typeof_vref = ValRefForIntrinsic v_typeof_info
member val sizeof_vref = ValRefForIntrinsic v_sizeof_info
member val typedefof_vref = ValRefForIntrinsic v_typedefof_info
- member val enum_vref = ValRefForIntrinsic v_enum_info
+ member val enum_vref = ValRefForIntrinsic v_enum_operator_info
member val enumOfValue_vref = ValRefForIntrinsic v_enumOfValue_info
member val range_op_vref = ValRefForIntrinsic v_range_op_info
member val range_step_op_vref = ValRefForIntrinsic v_range_step_op_info
@@ -1192,10 +1261,17 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d
member __.create_event_info = v_create_event_info
member __.seq_to_list_info = v_seq_to_list_info
member __.seq_to_array_info = v_seq_to_array_info
+
+ member __.array_length_info = v_array_length_info
member __.array_get_info = v_array_get_info
- member __.array2D_get_info = v_array2D_get_info
- member __.array3D_get_info = v_array3D_get_info
- member __.array4D_get_info = v_array4D_get_info
+ member __.array2D_get_info = v_array2D_get_info
+ member __.array3D_get_info = v_array3D_get_info
+ member __.array4D_get_info = v_array4D_get_info
+ member __.array_set_info = v_array_set_info
+ member __.array2D_set_info = v_array2D_set_info
+ member __.array3D_set_info = v_array3D_set_info
+ member __.array4D_set_info = v_array4D_set_info
+
member __.deserialize_quoted_FSharp_20_plus_info = v_deserialize_quoted_FSharp_20_plus_info
member __.deserialize_quoted_FSharp_40_plus_info = v_deserialize_quoted_FSharp_40_plus_info
member __.cast_quotation_info = v_cast_quotation_info
diff --git a/src/fsharp/TypeChecker.fs b/src/fsharp/TypeChecker.fs
index 95c4b119d95..c193ce6fc86 100755
--- a/src/fsharp/TypeChecker.fs
+++ b/src/fsharp/TypeChecker.fs
@@ -40,7 +40,7 @@ open Microsoft.FSharp.Compiler.NameResolution
open Microsoft.FSharp.Compiler.PrettyNaming
open Microsoft.FSharp.Compiler.InfoReader
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -441,11 +441,32 @@ let AddLocalTyconsAndReport tcSink scopem g amap m tycons env =
// Open a structure or an IL namespace
//-------------------------------------------------------------------------
-let OpenModulesOrNamespaces tcSink g amap scopem root env mvvs =
+let OpenModulesOrNamespaces tcSink g amap scopem root env mvvs openDeclaration =
let env =
if isNil mvvs then env else
ModifyNameResEnv (fun nenv -> AddModulesAndNamespacesContentsToNameEnv g amap env.eAccessRights scopem root nenv mvvs) env
CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
+ CallOpenDeclarationSink tcSink openDeclaration
+ match openDeclaration.Range with
+ | None -> ()
+ | Some _ ->
+ let rec loop (acc: (Item * range) list) (idents: Ident list) =
+ match idents with
+ | [] -> acc
+ | [id] when id.idText = MangledGlobalName -> acc
+ | id :: rest ->
+ let idents = List.rev idents
+ let range = id.idRange
+ let acc =
+ match ResolveLongIndentAsModuleOrNamespace ResultCollectionSettings.AllResults amap range OpenQualified env.NameEnv env.eAccessRights idents with
+ | Result modrefs ->
+ (acc, modrefs) ||> List.fold (fun acc (_, modref, _) ->
+ (Item.ModuleOrNamespaces [modref], range) :: acc)
+ | _ -> acc
+ loop acc rest
+
+ for item, range in loop [] (List.rev openDeclaration.LongId) do
+ CallNameResolutionSink tcSink (range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights)
env
let AddRootModuleOrNamespaceRefs g amap m env modrefs =
@@ -658,11 +679,11 @@ let LocateEnv ccu env enclosingNamespacePath =
env
let BuildRootModuleType enclosingNamespacePath (cpath:CompilationPath) mtyp =
- (enclosingNamespacePath, (cpath, (mtyp, None)))
- ||> List.foldBack (fun id (cpath, (mtyp, mspec)) ->
+ (enclosingNamespacePath, (cpath, (mtyp, [])))
+ ||> List.foldBack (fun id (cpath, (mtyp, mspecs)) ->
let a, b = wrapModuleOrNamespaceTypeInNamespace id cpath.ParentCompPath mtyp
- cpath.ParentCompPath, (a, match mspec with Some _ -> mspec | None -> Some b))
- |> snd
+ cpath.ParentCompPath, (a, b :: mspecs))
+ |> fun (_, (mtyp, mspecs)) -> mtyp, List.rev mspecs
let BuildRootModuleExpr enclosingNamespacePath (cpath:CompilationPath) mexpr =
(enclosingNamespacePath, (cpath, mexpr))
@@ -691,7 +712,10 @@ let ImplicitlyOpenOwnNamespace tcSink g amap scopem enclosingNamespacePath env =
let ad = env.eAccessRights
match ResolveLongIndentAsModuleOrNamespace ResultCollectionSettings.AllResults amap scopem OpenQualified env.eNameResEnv ad enclosingNamespacePathToOpen with
- | Result modrefs -> OpenModulesOrNamespaces tcSink g amap scopem false env (List.map p23 modrefs)
+ | Result modrefs ->
+ let modrefs = List.map p23 modrefs
+ let openDecl = OpenDeclaration.Create (enclosingNamespacePathToOpen, modrefs, scopem, true)
+ OpenModulesOrNamespaces tcSink g amap scopem false env modrefs openDecl
| Exception _ -> env
@@ -699,6 +723,36 @@ let ImplicitlyOpenOwnNamespace tcSink g amap scopem enclosingNamespacePath env =
// Helpers for unification
//-------------------------------------------------------------------------
+/// When the context is matching the oldRange then this function shrinks it to newRange.
+/// This can be used to change context over no-op expressions like parens.
+let ShrinkContext env oldRange newRange =
+ match env.eContextInfo with
+ | ContextInfo.NoContext
+ | ContextInfo.RecordFields
+ | ContextInfo.TupleInRecordFields
+ | ContextInfo.ReturnInComputationExpression
+ | ContextInfo.YieldInComputationExpression
+ | ContextInfo.RuntimeTypeTest _
+ | ContextInfo.DowncastUsedInsteadOfUpcast _ ->
+ env
+ | ContextInfo.CollectionElement (b,m) ->
+ if m <> oldRange then env else
+ { env with eContextInfo = ContextInfo.CollectionElement(b,newRange) }
+ | ContextInfo.FollowingPatternMatchClause m ->
+ if m <> oldRange then env else
+ { env with eContextInfo = ContextInfo.FollowingPatternMatchClause newRange }
+ | ContextInfo.PatternMatchGuard m ->
+ if m <> oldRange then env else
+ { env with eContextInfo = ContextInfo.PatternMatchGuard newRange }
+ | ContextInfo.IfExpression m ->
+ if m <> oldRange then env else
+ { env with eContextInfo = ContextInfo.IfExpression newRange }
+ | ContextInfo.OmittedElseBranch m ->
+ if m <> oldRange then env else
+ { env with eContextInfo = ContextInfo.OmittedElseBranch newRange }
+ | ContextInfo.ElseBranchResult m ->
+ if m <> oldRange then env else
+ { env with eContextInfo = ContextInfo.ElseBranchResult newRange }
/// Optimized unification routine that avoids creating new inference
/// variables unnecessarily
@@ -1837,6 +1891,7 @@ let MakeAndPublishSimpleVals cenv env m names mergeNamesInOneNameresEnv =
nameResolutions.Add(pos, item, itemGroup, itemTyparInst, occurence, denv, nenv, ad, m, replacing)
member this.NotifyExprHasType(_, _, _, _, _, _) = assert false // no expr typings in MakeSimpleVals
member this.NotifyFormatSpecifierLocation(_, _) = ()
+ member this.NotifyOpenDeclaration(_) = ()
member this.CurrentSource = None }
use _h = WithNewTypecheckResultsSink(sink, cenv.tcSink)
@@ -2975,7 +3030,7 @@ let BuildPossiblyConditionalMethodCall cenv env isMutable m isProp minfo valUseF
mkUnit cenv.g m, cenv.g.unit_ty
| _ ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match minfo with
| ProvidedMeth(_, mi, _, _) ->
// BuildInvokerExpressionForProvidedMethodCall converts references to F# intrinsics back to values
@@ -3039,7 +3094,7 @@ let BuildILFieldGet g amap m objExpr (finfo:ILFieldInfo) =
let valu = if isValueType then AsValue else AsObject
let tinst = finfo.TypeInst
let fieldType = finfo.FieldType (amap, m)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let ty = tyOfExpr g objExpr
match finfo with
| ProvidedField _ when (isErasedType g ty) ->
@@ -4417,16 +4472,16 @@ and TcTyparOrMeasurePar optKind cenv (env:TcEnv) newOk tpenv (Typar(id, _, _) as
let predictions1 =
env.eNameResEnv.eTypars
|> Seq.map (fun p -> "'" + p.Key)
- |> Set.ofSeq
let predictions2 =
match tpenv with
| UnscopedTyparEnv elements ->
elements
|> Seq.map (fun p -> "'" + p.Key)
- |> Set.ofSeq
- Set.union predictions1 predictions2
+ [ yield! predictions1
+ yield! predictions2 ]
+ |> HashSet
let reportedId = Ident("'" + id.idText, id.idRange)
error (UndefinedName(0, FSComp.SR.undefinedNameTypeParameter, reportedId, predictTypeParameters))
@@ -4678,7 +4733,7 @@ and TcTyparConstraints cenv newOk checkCxs occ env tpenv wcs =
let _, tpenv = List.fold (fun (ridx, tpenv) tc -> ridx - 1, TcTyparConstraint ridx cenv newOk checkCxs occ env tpenv tc) (List.length wcs - 1, tpenv) wcs
tpenv
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
and TcStaticConstantParameter cenv (env:TcEnv) tpenv kind (v:SynType) idOpt container =
let fail() = error(Error(FSComp.SR.etInvalidStaticArgument(NicePrint.minimalStringOfType env.DisplayEnv kind), v.Range))
let record ttype =
@@ -4867,7 +4922,7 @@ and TcTypeApp cenv newOk checkCxs occ env tpenv m tcref pathTypeArgs (synArgTys:
CheckTyconAccessible cenv.amap m env.eAccessRights tcref |> ignore
CheckEntityAttributes cenv.g tcref m |> CommitOperationResult
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// Provided types are (currently) always non-generic. Their names may include mangled
// static parameters, which are passed by the provider.
if tcref.Deref.IsProvided then TcProvidedTypeApp cenv env tpenv tcref synArgTys m else
@@ -5610,6 +5665,7 @@ and TcExprUndelayed cenv overallTy env tpenv (expr: SynExpr) =
// We invoke CallExprHasTypeSink for every construct which is atomic in the syntax, i.e. where a '.' immediately following the
// construct is a dot-lookup for the result of the construct.
CallExprHasTypeSink cenv.tcSink (mWholeExprIncludingParentheses, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights)
+ let env = ShrinkContext env mWholeExprIncludingParentheses expr2.Range
TcExpr cenv overallTy env tpenv expr2
| SynExpr.DotIndexedGet _ | SynExpr.DotIndexedSet _
@@ -6398,7 +6454,7 @@ and FreshenObjExprAbstractSlot cenv (env: TcEnv) (implty:TType) virtNameAndArity
let suggestVirtualMembers() =
virtNameAndArityPairs
|> List.map (fst >> fst)
- |> Set.ofList
+ |> HashSet
if containsNonAbstractMemberWithSameName then
errorR(ErrorWithSuggestions(FSComp.SR.tcMemberFoundIsNotAbstractOrVirtual(tcref.DisplayName, bindName), mBinding, bindName, suggestVirtualMembers))
@@ -8581,7 +8637,7 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del
| (DelayedTypeApp(tys, mTypeArgs, mExprAndTypeArgs) :: otherDelayed) ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match TryTcMethodAppToStaticConstantArgs cenv env tpenv (minfos, Some (tys, mTypeArgs), mExprAndTypeArgs, mItem) with
| Some minfoAfterStaticArguments ->
@@ -8612,7 +8668,7 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del
TcMethodApplicationThen cenv env overallTy None tpenv (Some tyargs) [] mExprAndTypeArgs mItem methodName ad NeverMutates false meths afterResolution NormalValUse [] ExprAtomicFlag.Atomic otherDelayed
| _ ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if not minfos.IsEmpty && minfos.[0].ProvidedStaticParameterInfo.IsSome then
error(Error(FSComp.SR.etMissingStaticArgumentsToMethod(), mItem))
#endif
@@ -8634,7 +8690,7 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del
let objTyAfterTyArgs, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv mExprAndTypeArgs objTy tyargs
CallExprHasTypeSink cenv.tcSink (mExprAndArg, env.NameEnv, objTyAfterTyArgs, env.DisplayEnv, env.eAccessRights)
let itemAfterTyArgs, minfosAfterTyArgs =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// If the type is provided and took static arguments then the constructor will have changed
// to a provided constructor on the statically instantiated type. Re-resolve that constructor.
match objTyAfterTyArgs with
@@ -8997,7 +9053,7 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela
// To get better warnings we special case some of the few known mutate-a-struct method names
let mutates = (if methodName = "MoveNext" || methodName = "GetNextArg" then DefinitelyMutates else PossiblyMutates)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match TryTcMethodAppToStaticConstantArgs cenv env tpenv (minfos, tyargsOpt, mExprAndItem, mItem) with
| Some minfoAfterStaticArguments ->
// Replace the resolution including the static parameters, plus the extra information about the original method info
@@ -10077,11 +10133,11 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr expr cont =
| SynExpr.Sequential (sp, true, e1, e2, m) when not isCompExpr ->
let e1', _ = TcStmtThatCantBeCtorBody cenv env tpenv e1
// tailcall
+ let env = ShrinkContext env m e2.Range
TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr e2 (fun (e2', tpenv) ->
cont (Expr.Sequential(e1', e2', NormalSeq, sp, m), tpenv))
| SynExpr.LetOrUse (isRec, isUse, binds, body, m) when not (isUse && isCompExpr) ->
-
if isRec then
// TcLinearExprs processes at most one recursive binding, this is not tailcalling
CheckRecursiveBindingIds binds
@@ -10094,6 +10150,7 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr expr cont =
else
// TcLinearExprs processes multiple 'let' bindings in a tail recursive way
let mkf, envinner, tpenv = TcLetBinding cenv isUse env ExprContainerInfo ExpressionBinding tpenv (binds, m, body.Range)
+ let envinner = ShrinkContext envinner m body.Range
TcLinearExprs bodyChecker cenv envinner overallTy tpenv isCompExpr body (fun (x, tpenv) ->
cont (fst (mkf (x, overallTy)), tpenv))
| _ ->
@@ -12067,9 +12124,11 @@ let TcOpenDecl tcSink (g:TcGlobals) amap m scopem env (longId : Ident list) =
if IsPartiallyQualifiedNamespace modref then
errorR(Error(FSComp.SR.tcOpenUsedWithPartiallyQualifiedPath(fullDisplayTextOfModRef modref), m)))
- modrefs |> List.iter (fun (_, modref, _) -> CheckEntityAttributes g modref m |> CommitOperationResult)
+ let modrefs = List.map p23 modrefs
+ modrefs |> List.iter (fun modref -> CheckEntityAttributes g modref m |> CommitOperationResult)
- let env = OpenModulesOrNamespaces tcSink g amap scopem false env (List.map p23 modrefs)
+ let openDecl = OpenDeclaration.Create (longId, modrefs, scopem, false)
+ let env = OpenModulesOrNamespaces tcSink g amap scopem false env modrefs openDecl
env
@@ -14658,7 +14717,7 @@ module EstablishTypeDefinitionCores =
tycon.entity_tycon_repr <- repr
attrs, getFinalAttrs
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Get the items on the r.h.s. of a 'type X = ABC<...>' definition
let private TcTyconDefnCore_GetGenerateDeclaration_Rhs rhsType =
match rhsType with
@@ -14881,7 +14940,7 @@ module EstablishTypeDefinitionCores =
| SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.Ok, rhsType, m) ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// Check we have not already decided that this is a generative provided type definition. If we have already done this (i.e. this is the second pass
// for a generative provided type definition, then there is no more work to do).
if (match tycon.entity_tycon_repr with TNoRepr -> true | _ -> false) then
@@ -16338,7 +16397,13 @@ let rec TcSignatureElementNonMutRec cenv parent typeNames endm (env: TcEnv) synS
// For 'namespace rec' and 'module rec' we add the thing being defined
let mtypNS = !(envNS.eModuleOrNamespaceTypeAccumulator)
- let mtypRoot, mspecNSOpt = BuildRootModuleType enclosingNamespacePath envNS.eCompPath mtypNS
+ let mtypRoot, mspecNSs = BuildRootModuleType enclosingNamespacePath envNS.eCompPath mtypNS
+ let mspecNSOpt = List.tryHead mspecNSs
+
+ mspecNSs |> List.iter (fun mspec ->
+ let modref = mkLocalModRef mspec
+ let item = Item.ModuleOrNamespaces [modref]
+ CallNameResolutionSink cenv.tcSink (mspec.Range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights))
// For 'namespace rec' and 'module rec' we add the thing being defined
let envNS = if isRec then AddLocalRootModuleOrNamespace cenv.tcSink cenv.g cenv.amap m envNS mtypRoot else envNS
@@ -16643,7 +16708,13 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv:cenv) parent typeNames scopem
let envNS = ImplicitlyOpenOwnNamespace cenv.tcSink cenv.g cenv.amap m enclosingNamespacePath envNS
let mtypNS = !(envNS.eModuleOrNamespaceTypeAccumulator)
- let mtypRoot, mspecNSOpt = BuildRootModuleType enclosingNamespacePath envNS.eCompPath mtypNS
+ let mtypRoot, mspecNSs = BuildRootModuleType enclosingNamespacePath envNS.eCompPath mtypNS
+ let mspecNSOpt = List.tryHead mspecNSs
+
+ mspecNSs |> List.iter (fun mspec ->
+ let modref = mkLocalModRef mspec
+ let item = Item.ModuleOrNamespaces [modref]
+ CallNameResolutionSink cenv.tcSink (mspec.Range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights))
// For 'namespace rec' and 'module rec' we add the thing being defined
let envNS = if isRec then AddLocalRootModuleOrNamespace cenv.tcSink cenv.g cenv.amap m envNS mtypRoot else envNS
@@ -16834,7 +16905,9 @@ let ApplyAssemblyLevelAutoOpenAttributeToTcEnv g amap (ccu: CcuThunk) scopem env
let modref = mkNonLocalTyconRef (mkNonLocalEntityRef ccu (Array.ofList h)) t
match modref.TryDeref with
| VNone -> warn()
- | VSome _ -> OpenModulesOrNamespaces TcResultsSink.NoSink g amap scopem root env [modref]
+ | VSome _ ->
+ let openDecl = OpenDeclaration.Create ([], [modref], scopem, false)
+ OpenModulesOrNamespaces TcResultsSink.NoSink g amap scopem root env [modref] openDecl
// Add the CCU and apply the "AutoOpen" attributes
let AddCcuToTcEnv(g, amap, scopem, env, assemblyName, ccu, autoOpens, internalsVisible) =
diff --git a/src/fsharp/fsc.fs b/src/fsharp/fsc.fs
index b880d24dfb6..e18f782dc21 100644
--- a/src/fsharp/fsc.fs
+++ b/src/fsharp/fsc.fs
@@ -13,6 +13,7 @@
module internal Microsoft.FSharp.Compiler.Driver
open System
+open System.Collections.Concurrent
open System.Collections.Generic
open System.Diagnostics
open System.Globalization
@@ -53,7 +54,7 @@ open Microsoft.FSharp.Compiler.Tast
open Microsoft.FSharp.Compiler.Tastops
open Microsoft.FSharp.Compiler.TcGlobals
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -1103,7 +1104,7 @@ module StaticLinker =
// Don't save interface, optimization or resource definitions for provider-generated assemblies.
// These are "fake".
let isProvided (ccu: CcuThunk option) =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match ccu with
| Some c -> c.IsProviderGenerated
| None -> false
@@ -1333,7 +1334,7 @@ module StaticLinker =
// prior to this point.
let StaticLink (ctok, tcConfig:TcConfig, tcImports:TcImports, ilGlobals:ILGlobals) =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let providerGeneratedAssemblies =
[ // Add all EST-generated assemblies into the static linking set
@@ -1347,7 +1348,7 @@ module StaticLinker =
(fun ilxMainModule -> LegacyFindAndAddMscorlibTypesForStaticLinkingIntoFSharpCoreLibraryForNet20 (tcConfig, ilGlobals, ilxMainModule))
elif not tcConfig.standalone && tcConfig.extraStaticLinkRoots.IsEmpty
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
&& providerGeneratedAssemblies.IsEmpty
#endif
then
@@ -1360,7 +1361,7 @@ module StaticLinker =
ReportTime tcConfig "Static link"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
Morphs.enableMorphCustomAttributeData()
let providerGeneratedILModules = FindProviderGeneratedILModules (ctok, tcImports, providerGeneratedAssemblies)
@@ -1758,7 +1759,7 @@ let main0(ctok, argv, legacyReferenceResolver, bannerAlreadyPrinted, openBinarie
let inputs =
// Deduplicate module names
- let moduleNamesDict = Dictionary>()
+ let moduleNamesDict = ConcurrentDictionary>()
inputs
|> List.map (fun (input,x) -> DeduplicateParsedInputModuleName moduleNamesDict input,x)
diff --git a/src/fsharp/fsi/Fsi.fsproj b/src/fsharp/fsi/Fsi.fsproj
index 66b633519ad..ea99ddf1486 100644
--- a/src/fsharp/fsi/Fsi.fsproj
+++ b/src/fsharp/fsi/Fsi.fsproj
@@ -18,7 +18,6 @@
$(NoWarn);62fsi0x0A000000
- EXTENSIONTYPING;$(DefineConstants)COMPILER;$(DefineConstants)FSI_SHADOW_COPY_REFERENCES;$(DefineConstants)FSI_SERVER;$(DefineConstants)
diff --git a/src/fsharp/fsi/fsi.fs b/src/fsharp/fsi/fsi.fs
index c5e3d54509b..3a178a5c185 100644
--- a/src/fsharp/fsi/fsi.fs
+++ b/src/fsharp/fsi/fsi.fs
@@ -1671,7 +1671,7 @@ module internal MagicAssemblyResolution =
| Some (OkResult (warns,[r])) -> OkResult (warns, Choice1Of2 r.resolvedPath)
| _ ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match tcImports.TryFindProviderGeneratedAssemblyByName(ctok, simpleAssemName) with
| Some(assembly) -> OkResult([],Choice2Of2 assembly)
| None ->
@@ -2464,8 +2464,6 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i
do tcConfigB.useFsiAuxLib <- fsi.UseFsiAuxLib
#if FSI_TODO_NETCORE
- // "CompilationAndEvaluation" assembly resolution for F# Interactive is not yet properly figured out on .NET Core
- do tcConfigB.resolutionEnvironment <- ResolutionEnvironment.EditingOrCompilation false
do tcConfigB.useSimpleResolution <- true
do SetTargetProfile tcConfigB "netcore" // always assume System.Runtime codegen
#endif
@@ -2564,7 +2562,7 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i
// Explanation: This callback is invoked during compilation to resolve assembly references
// We don't yet propagate the ctok through these calls (though it looks plausible to do so).
let ctok = AssumeCompilationThreadWithoutEvidence ()
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match tcImports.TryFindProviderGeneratedAssemblyByName (ctok, aref.Name) with
| Some assembly -> Some (Choice2Of2 assembly)
| None ->
diff --git a/src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj b/src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj
index 0e8d910cb99..ff1fe0c1176 100644
--- a/src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj
+++ b/src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj
@@ -13,7 +13,6 @@
$(NoWarn);62fsiAnyCpu0x0A000000
- EXTENSIONTYPING;$(DefineConstants)COMPILER;$(DefineConstants)FSI_SHADOW_COPY_REFERENCES;$(DefineConstants)FSI_SERVER;$(DefineConstants)
diff --git a/src/fsharp/import.fs b/src/fsharp/import.fs
index f444cca7e52..9d89864908c 100644
--- a/src/fsharp/import.fs
+++ b/src/fsharp/import.fs
@@ -17,7 +17,7 @@ open Microsoft.FSharp.Compiler.AbstractIL.IL
open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.ErrorLogger
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -27,7 +27,7 @@ type AssemblyLoader =
/// Resolve an Abstract IL assembly reference to a Ccu
abstract FindCcuFromAssemblyRef : CompilationThreadToken * range * ILAssemblyRef -> CcuResolutionResult
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Get a flag indicating if an assembly is a provided assembly, plus the
/// table of information recording remappings from type names in the provided assembly to type
@@ -100,7 +100,7 @@ let ImportTypeRefData (env:ImportMap) m (scoref,path,typeName) =
fakeTyconRef.Deref
with _ ->
error (Error(FSComp.SR.impReferencedTypeCouldNotBeFoundInAssembly(String.concat "." (Array.append path [| typeName |]), ccu.AssemblyName),m))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
// Validate (once because of caching)
match tycon.TypeReprInfo with
| TProvidedTypeExtensionPoint info ->
@@ -195,7 +195,7 @@ let rec CanImportILType (env:ImportMap) m typ =
| ILType.Modified(_,_,ty) -> CanImportILType env m ty
| ILType.TypeVar _u16 -> true
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Import a provided type reference as an F# type TyconRef
let ImportProvidedNamedType (env:ImportMap) (m:range) (st:Tainted) =
@@ -566,7 +566,7 @@ let ImportILAssembly(amap:(unit -> ImportMap),m,auxModuleLoader,sref,sourceDir,f
let ccuData : CcuData =
{ IsFSharp=false
UsesFSharp20PlusQuotations=false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
InvalidateEvent=invalidateCcu
IsProviderGenerated = false
ImportProvidedType = (fun ty -> ImportProvidedType (amap()) m ty)
diff --git a/src/fsharp/import.fsi b/src/fsharp/import.fsi
index d13328d3360..02415e922f8 100644
--- a/src/fsharp/import.fsi
+++ b/src/fsharp/import.fsi
@@ -8,7 +8,7 @@ open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.Range
open Microsoft.FSharp.Compiler.AbstractIL.IL
open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif
@@ -21,7 +21,7 @@ type AssemblyLoader =
/// Resolve an Abstract IL assembly reference to a Ccu
abstract FindCcuFromAssemblyRef : CompilationThreadToken * range * ILAssemblyRef -> CcuResolutionResult
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Get a flag indicating if an assembly is a provided assembly, plus the
/// table of information recording remappings from type names in the provided assembly to type
/// names in the statically linked, embedded assembly.
@@ -60,7 +60,7 @@ val internal ImportILType : ImportMap -> range -> TType list -> ILType -> TType
/// Pre-check for ability to import an IL type as an F# type.
val internal CanImportILType : ImportMap -> range -> ILType -> bool
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Import a provided type as an F# type.
val internal ImportProvidedType : ImportMap -> range -> (* TType list -> *) Tainted -> TType
diff --git a/src/fsharp/infos.fs b/src/fsharp/infos.fs
index 96d8ec9aba8..5ac157c8d42 100755
--- a/src/fsharp/infos.fs
+++ b/src/fsharp/infos.fs
@@ -23,7 +23,7 @@ open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.Lib
open Microsoft.FSharp.Core.Printf
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
open Microsoft.FSharp.Core.CompilerServices
#endif
@@ -55,14 +55,14 @@ let isExnDeclTy g typ =
/// Get the base type of a type, taking into account type instantiations. Return None if the
/// type has no base type.
let GetSuperTypeOfType g amap m typ =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let typ = (if isAppTy g typ && (tcrefOfAppTy g typ).IsProvided then stripTyEqns g typ else stripTyEqnsAndMeasureEqns g typ)
#else
let typ = stripTyEqnsAndMeasureEqns g typ
#endif
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
let st = info.ProvidedType
let superOpt = st.PApplyOption((fun st -> match st.BaseType with null -> None | t -> Some t),m)
@@ -125,7 +125,7 @@ let rec GetImmediateInterfacesOfType skipUnref g amap m typ =
yield mkAppTy g.system_GenericIEquatable_tcref [typ]]
else
match metadataOfTy g typ with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info ->
[ for ity in info.ProvidedType.PApplyArray((fun st -> st.GetInterfaces()), "GetInterfaces", m) do
yield Import.ImportProvidedType amap m ity ]
@@ -398,7 +398,7 @@ type ValRef with
// as backing data for MethInfo, PropInfo etc.
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Get the return type of a provided method, where 'void' is returned as 'None'
let GetCompiledReturnTyOfProvidedMethodInfo amap m (mi:Tainted) =
let returnType =
@@ -583,7 +583,7 @@ type ParamData =
//-------------------------------------------------------------------------
// Helper methods associated with type providers
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
type ILFieldInit with
/// Compute the ILFieldInit for the given provided constant value for a provided enum type.
@@ -862,7 +862,7 @@ type MethInfo =
/// Describes a use of a pseudo-method corresponding to the default constructor for a .NET struct type
| DefaultStructCtor of TcGlobals * TType
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Describes a use of a method backed by provided metadata
| ProvidedMeth of Import.ImportMap * Tainted * ExtensionMethodPriority option * range
#endif
@@ -876,7 +876,7 @@ type MethInfo =
| ILMeth(_g,ilminfo,_) -> ilminfo.ApparentEnclosingType
| FSMeth(_g,typ,_,_) -> typ
| DefaultStructCtor(_g,typ) -> typ
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,m) ->
Import.ImportProvidedType amap m (mi.PApply((fun mi -> mi.DeclaringType),m))
#endif
@@ -895,7 +895,7 @@ type MethInfo =
match x with
| ILMeth _ -> None
| FSMeth _ -> None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth (_, mb, _, m) ->
let staticParams = mb.PApplyWithProvider((fun (mb,provider) -> mb.GetStaticParametersForMethod(provider)), range=m)
let staticParams = staticParams.PApplyArray(id, "GetStaticParametersForMethod", m)
@@ -911,7 +911,7 @@ type MethInfo =
match x with
| ILMeth(_,_,pri) -> pri
| FSMeth(_,_,_,pri) -> pri
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,_,pri,_) -> pri
#endif
| DefaultStructCtor _ -> None
@@ -927,7 +927,7 @@ type MethInfo =
match x with
| ILMeth(_,y,_) -> "ILMeth: " + y.ILName
| FSMeth(_,_,vref,_) -> "FSMeth: " + vref.LogicalName
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> "ProvidedMeth: " + mi.PUntaint((fun mi -> mi.Name),m)
#endif
| DefaultStructCtor _ -> ".ctor"
@@ -938,7 +938,7 @@ type MethInfo =
match x with
| ILMeth(_,y,_) -> y.ILName
| FSMeth(_,_,vref,_) -> vref.LogicalName
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.Name),m)
#endif
| DefaultStructCtor _ -> ".ctor"
@@ -953,7 +953,7 @@ type MethInfo =
member x.HasDirectXmlComment =
match x with
| FSMeth(g,_,vref,_) -> valRefInThisAssembly g.compilingFslib vref
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> true
#endif
| _ -> false
@@ -972,7 +972,7 @@ type MethInfo =
| ILMeth(g,_,_) -> g
| FSMeth(g,_,_,_) -> g
| DefaultStructCtor (g,_) -> g
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,_,_,_) -> amap.g
#endif
@@ -986,7 +986,7 @@ type MethInfo =
let _,memberMethodTypars,_,_ = AnalyzeTypeOfMemberVal x.IsCSharpStyleExtensionMember g (typ,vref)
memberMethodTypars
| DefaultStructCtor _ -> []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> [] // There will already have been an error if there are generic parameters here.
#endif
@@ -1001,7 +1001,7 @@ type MethInfo =
| ILMeth(_,_,_) -> XmlDoc.Empty
| FSMeth(_,_,vref,_) -> vref.XmlDoc
| DefaultStructCtor _ -> XmlDoc.Empty
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m)->
XmlDoc (mi.PUntaint((fun mix -> (mix :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(mi.TypeProvider.PUntaintNoFailure(id))),m))
#endif
@@ -1020,7 +1020,7 @@ type MethInfo =
| ILMeth(_,ilminfo,_) -> [ilminfo.NumParams]
| FSMeth(g,_,vref,_) -> GetArgInfosOfMember x.IsCSharpStyleExtensionMember g vref |> List.map List.length
| DefaultStructCtor _ -> [0]
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> [mi.PUntaint((fun mi -> mi.GetParameters().Length),m)] // Why is this a list? Answer: because the method might be curried
#endif
@@ -1032,7 +1032,7 @@ type MethInfo =
| ILMeth(_,ilmeth,_) -> ilmeth.IsInstance
| FSMeth(_,_,vref,_) -> vref.IsInstanceMember || x.IsCSharpStyleExtensionMember
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> not mi.IsConstructor && not mi.IsStatic),m)
#endif
@@ -1046,7 +1046,7 @@ type MethInfo =
| ILMeth(_,ilmeth,_) -> ilmeth.IsProtectedAccessibility
| FSMeth _ -> false
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsFamily), m)
#endif
@@ -1055,7 +1055,7 @@ type MethInfo =
| ILMeth(_,ilmeth,_) -> ilmeth.IsVirtual
| FSMeth(_,_,vref,_) -> vref.IsVirtualMember
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsVirtual), m)
#endif
@@ -1064,7 +1064,7 @@ type MethInfo =
| ILMeth(_,ilmeth,_) -> ilmeth.IsConstructor
| FSMeth(_g,_,vref,_) -> (vref.MemberInfo.Value.MemberFlags.MemberKind = MemberKind.Constructor)
| DefaultStructCtor _ -> true
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsConstructor), m)
#endif
@@ -1076,7 +1076,7 @@ type MethInfo =
| VSome x -> x.IsClassConstructor
| _ -> false
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsConstructor && mi.IsStatic), m) // Note: these are never public anyway
#endif
@@ -1087,7 +1087,7 @@ type MethInfo =
isInterfaceTy g x.EnclosingType ||
vref.MemberInfo.Value.MemberFlags.IsDispatchSlot
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> x.IsVirtual // Note: follow same implementation as ILMeth
#endif
@@ -1098,7 +1098,7 @@ type MethInfo =
| ILMeth(_,ilmeth,_) -> ilmeth.IsFinal
| FSMeth(_g,_,_vref,_) -> false
| DefaultStructCtor _ -> true
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsFinal), m)
#endif
@@ -1113,7 +1113,7 @@ type MethInfo =
| ILMeth(_,ilmeth,_) -> ilmeth.IsAbstract
| FSMeth(g,_,vref,_) -> isInterfaceTy g minfo.EnclosingType || vref.IsDispatchSlotMember
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsAbstract), m)
#endif
@@ -1123,7 +1123,7 @@ type MethInfo =
(match x with
| ILMeth(_,x,_) -> x.IsNewSlot
| FSMeth(_,_,vref,_) -> vref.IsDispatchSlotMember
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsHideBySig), m) // REVIEW: Check this is correct
#endif
| DefaultStructCtor _ -> false))
@@ -1134,7 +1134,7 @@ type MethInfo =
| ILMeth _ -> false
| FSMeth(g,_,vref,_) -> vref.IsFSharpExplicitInterfaceImplementation g
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> false
#endif
@@ -1144,7 +1144,7 @@ type MethInfo =
| ILMeth _ -> false
| FSMeth(_,_,vref,_) -> vref.IsDefiniteFSharpOverrideMember
| DefaultStructCtor _ -> false
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> false
#endif
@@ -1183,7 +1183,7 @@ type MethInfo =
member x.IsFSharpEventPropertyMethod =
match x with
| FSMeth(g,_,vref,_) -> vref.IsFSharpEventProperty(g)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> false
#endif
| _ -> false
@@ -1216,7 +1216,7 @@ type MethInfo =
| ILMeth(_,x1,_), ILMeth(_,x2,_) -> (x1.RawMetadata === x2.RawMetadata)
| FSMeth(g,_,vref1,_), FSMeth(_,_,vref2,_) -> valRefEq g vref1 vref2
| DefaultStructCtor(g,ty1), DefaultStructCtor(_,ty2) -> tyconRefEq g (tcrefOfAppTy g ty1) (tcrefOfAppTy g ty2)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi1,_,_),ProvidedMeth(_,mi2,_,_) -> ProvidedMethodBase.TaintedEquals (mi1, mi2)
#endif
| _ -> false
@@ -1229,7 +1229,7 @@ type MethInfo =
| FSMeth(_,_,vref,_) -> hash vref.LogicalName
| DefaultStructCtor(_,_ty) -> 34892 // "ty" doesn't support hashing. We could use "hash (tcrefOfAppTy g ty).CompiledName" or
// something but we don't have a "g" parameter here yet. But this hash need only be very approximate anyway
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_,mi,_,_) -> ProvidedMethodInfo.TaintedGetHashCode(mi)
#endif
@@ -1242,7 +1242,7 @@ type MethInfo =
| ILMethInfo(_,typ,Some declaringTyconRef,md,_) -> MethInfo.CreateILExtensionMeth(amap, m, instType inst typ, declaringTyconRef, pri, md)
| FSMeth(g,typ,vref,pri) -> FSMeth(g,instType inst typ,vref,pri)
| DefaultStructCtor(g,typ) -> DefaultStructCtor(g,instType inst typ)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ ->
match inst with
| [] -> x
@@ -1259,7 +1259,7 @@ type MethInfo =
let _,_,retTy,_ = AnalyzeTypeOfMemberVal x.IsCSharpStyleExtensionMember g (typ,vref)
retTy |> Option.map (instType inst)
| DefaultStructCtor _ -> None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,m) ->
GetCompiledReturnTyOfProvidedMethodInfo amap m mi
#endif
@@ -1279,7 +1279,7 @@ type MethInfo =
let inst = GetInstantiationForMemberVal g x.IsCSharpStyleExtensionMember (typ,vref,minst)
paramTypes |> List.mapSquared (fun (ParamNameAndType(_,ty)) -> instType inst ty)
| DefaultStructCtor _ -> []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,m) ->
// A single group of tupled arguments
[ [ for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters",m) do
@@ -1302,7 +1302,7 @@ type MethInfo =
[ typ ]
else []
| DefaultStructCtor _ -> []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,m) ->
if x.IsInstance then [ Import.ImportProvidedType amap m (mi.PApply((fun mi -> mi.DeclaringType),m)) ] // find the type of the 'this' argument
else []
@@ -1405,7 +1405,7 @@ type MethInfo =
| DefaultStructCtor _ ->
[[]]
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,_) ->
// A single group of tupled arguments
[ [for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) do
@@ -1468,7 +1468,7 @@ type MethInfo =
let paramType = ImportILTypeFromMetadata amap m ftinfo.ILScopeRef ftinfo.TypeInst formalMethTyparTys p.Type
yield TSlotParam(p.Name, paramType, p.IsIn, p.IsOut, p.IsOptional, []) ] ]
formalRetTy, formalParams
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth (_,mi,_,_) ->
// GENERIC TYPE PROVIDERS: for generics, formal types should be generated here, not the actual types
// For non-generic type providers there is no difference
@@ -1498,7 +1498,7 @@ type MethInfo =
items |> ParamNameAndType.InstantiateCurried inst
| DefaultStructCtor _ ->
[[]]
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(amap,mi,_,_) ->
// A single set of tupled parameters
[ [for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) do
@@ -1538,7 +1538,7 @@ type MethInfo =
memberParentTypars
| DefaultStructCtor(g,typ) ->
(tcrefOfAppTy g typ).Typars(m)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth (amap,_,_,_) ->
(tcrefOfAppTy amap.g x.EnclosingType).Typars(m)
#endif
@@ -1552,7 +1552,7 @@ type MethInfo =
type ILFieldInfo =
/// Represents a single use of a field backed by Abstract IL metadata
| ILFieldInfo of ILTypeInfo * ILFieldDef // .NET IL fields
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Represents a single use of a field backed by provided metadata
| ProvidedField of Import.ImportMap * Tainted * range
#endif
@@ -1561,7 +1561,7 @@ type ILFieldInfo =
member x.EnclosingType =
match x with
| ILFieldInfo(tinfo,_) -> tinfo.ToType
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(amap,fi,m) -> (Import.ImportProvidedType amap m (fi.PApply((fun fi -> fi.DeclaringType),m)))
#endif
@@ -1569,7 +1569,7 @@ type ILFieldInfo =
member x.ILTypeRef =
match x with
| ILFieldInfo(tinfo,_) -> tinfo.ILTypeRef
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(amap,fi,m) -> (Import.ImportProvidedTypeAsILType amap m (fi.PApply((fun fi -> fi.DeclaringType),m))).TypeRef
#endif
@@ -1580,7 +1580,7 @@ type ILFieldInfo =
member x.TypeInst =
match x with
| ILFieldInfo(tinfo,_) -> tinfo.TypeInst
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField _ -> [] /// GENERIC TYPE PROVIDERS
#endif
@@ -1588,7 +1588,7 @@ type ILFieldInfo =
member x.FieldName =
match x with
| ILFieldInfo(_,pd) -> pd.Name
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(_,fi,m) -> fi.PUntaint((fun fi -> fi.Name),m)
#endif
@@ -1596,7 +1596,7 @@ type ILFieldInfo =
member x.IsInitOnly =
match x with
| ILFieldInfo(_,pd) -> pd.IsInitOnly
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(_,fi,m) -> fi.PUntaint((fun fi -> fi.IsInitOnly),m)
#endif
@@ -1604,7 +1604,7 @@ type ILFieldInfo =
member x.IsValueType =
match x with
| ILFieldInfo(tinfo,_) -> tinfo.IsValueType
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(amap,_,_) -> isStructTy amap.g x.EnclosingType
#endif
@@ -1612,7 +1612,7 @@ type ILFieldInfo =
member x.IsStatic =
match x with
| ILFieldInfo(_,pd) -> pd.IsStatic
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(_,fi,m) -> fi.PUntaint((fun fi -> fi.IsStatic),m)
#endif
@@ -1620,7 +1620,7 @@ type ILFieldInfo =
member x.IsSpecialName =
match x with
| ILFieldInfo(_,pd) -> pd.IsSpecialName
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(_,fi,m) -> fi.PUntaint((fun fi -> fi.IsSpecialName),m)
#endif
@@ -1628,7 +1628,7 @@ type ILFieldInfo =
member x.LiteralValue =
match x with
| ILFieldInfo(_,pd) -> if pd.IsLiteral then pd.LiteralValue else None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(_,fi,m) ->
if fi.PUntaint((fun fi -> fi.IsLiteral),m) then
Some (ILFieldInit.FromProvidedObj m (fi.PUntaint((fun fi -> fi.GetRawConstantValue()),m)))
@@ -1640,7 +1640,7 @@ type ILFieldInfo =
member x.ILFieldType =
match x with
| ILFieldInfo (_,fdef) -> fdef.Type
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(amap,fi,m) -> Import.ImportProvidedTypeAsILType amap m (fi.PApply((fun fi -> fi.FieldType),m))
#endif
@@ -1648,14 +1648,14 @@ type ILFieldInfo =
member x.FieldType(amap,m) =
match x with
| ILFieldInfo (tinfo,fdef) -> ImportILTypeFromMetadata amap m tinfo.ILScopeRef tinfo.TypeInst [] fdef.Type
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(amap,fi,m) -> Import.ImportProvidedType amap m (fi.PApply((fun fi -> fi.FieldType),m))
#endif
static member ILFieldInfosUseIdenticalDefinitions x1 x2 =
match x1,x2 with
| ILFieldInfo(_, x1), ILFieldInfo(_, x2) -> (x1 === x2)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField(_,fi1,_), ProvidedField(_,fi2,_)-> ProvidedFieldInfo.TaintedEquals (fi1, fi2)
| _ -> false
#endif
@@ -1807,7 +1807,7 @@ type PropInfo =
| FSProp of TcGlobals * TType * ValRef option * ValRef option
/// An F# use of a property backed by Abstract IL metadata
| ILProp of TcGlobals * ILPropInfo
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// An F# use of a property backed by provided metadata
| ProvidedProp of Import.ImportMap * Tainted * range
#endif
@@ -1825,7 +1825,7 @@ type PropInfo =
match x with
| FSProp(g,_,Some vref,_)
| FSProp(g,_,_,Some vref) -> valRefInThisAssembly g.compilingFslib vref
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp _ -> true
#endif
| _ -> false
@@ -1836,7 +1836,7 @@ type PropInfo =
| ILProp(_,x) -> x.PropertyName
| FSProp(_,_,Some vref,_)
| FSProp(_,_,_, Some vref) -> vref.PropertyName
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) -> pi.PUntaint((fun pi -> pi.Name),m)
#endif
| FSProp _ -> failwith "unreachable"
@@ -1846,7 +1846,7 @@ type PropInfo =
match x with
| ILProp(_,x) -> x.HasGetter
| FSProp(_,_,x,_) -> Option.isSome x
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) -> pi.PUntaint((fun pi -> pi.CanRead),m)
#endif
@@ -1855,7 +1855,7 @@ type PropInfo =
match x with
| ILProp(_,x) -> x.HasSetter
| FSProp(_,_,_,x) -> Option.isSome x
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) -> pi.PUntaint((fun pi -> pi.CanWrite),m)
#endif
@@ -1866,7 +1866,7 @@ type PropInfo =
match x with
| ILProp(_,x) -> x.ILTypeInfo.ToType
| FSProp(_,typ,_,_) -> typ
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(amap,pi,m) ->
Import.ImportProvidedType amap m (pi.PApply((fun pi -> pi.DeclaringType),m))
#endif
@@ -1883,7 +1883,7 @@ type PropInfo =
| FSProp(_,_,Some vref,_)
| FSProp(_,_,_, Some vref) -> vref.IsVirtualMember
| FSProp _-> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
let mi = ArbitraryMethodInfoOfPropertyInfo pi m
mi.PUntaint((fun mi -> mi.IsVirtual), m)
@@ -1896,7 +1896,7 @@ type PropInfo =
| FSProp(_,_,Some vref,_)
| FSProp(_,_,_, Some vref) -> vref.IsDispatchSlotMember
| FSProp(_,_,None,None) -> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
let mi = ArbitraryMethodInfoOfPropertyInfo pi m
mi.PUntaint((fun mi -> mi.IsHideBySig), m)
@@ -1912,7 +1912,7 @@ type PropInfo =
| FSProp(g,typ,_, Some vref) ->
isInterfaceTy g typ || (vref.MemberInfo.Value.MemberFlags.IsDispatchSlot)
| FSProp _ -> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
let mi = ArbitraryMethodInfoOfPropertyInfo pi m
mi.PUntaint((fun mi -> mi.IsVirtual), m)
@@ -1925,7 +1925,7 @@ type PropInfo =
| FSProp(_,_,Some vref,_)
| FSProp(_,_,_, Some vref) -> not vref.IsInstanceMember
| FSProp(_,_,None,None) -> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
(ArbitraryMethodInfoOfPropertyInfo pi m).PUntaint((fun mi -> mi.IsStatic), m)
#endif
@@ -1961,7 +1961,7 @@ type PropInfo =
arginfos.Length = 1 && arginfos.Head.Length >= 2
| FSProp(_,_,None,None) ->
failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
pi.PUntaint((fun pi -> pi.GetIndexParameters().Length), m)>0
#endif
@@ -1970,7 +1970,7 @@ type PropInfo =
member x.IsFSharpEventProperty =
match x with
| FSProp(g,_,Some vref,None) -> vref.IsFSharpEventProperty(g)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp _ -> false
#endif
| _ -> false
@@ -1998,7 +1998,7 @@ type PropInfo =
| FSProp(_,_,Some vref,_)
| FSProp(_,_,_, Some vref) -> vref.XmlDoc
| FSProp(_,_,None,None) -> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
XmlDoc (pi.PUntaint((fun pix -> (pix :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(pi.TypeProvider.PUntaintNoFailure(id))), m))
#endif
@@ -2008,7 +2008,7 @@ type PropInfo =
match x with
| ILProp(g,_) -> g
| FSProp(g,_,_,_) -> g
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(amap,_,_) -> amap.g
#endif
@@ -2028,7 +2028,7 @@ type PropInfo =
ReturnTypeOfPropertyVal g vref.Deref |> instType inst
| FSProp _ -> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,m) ->
Import.ImportProvidedType amap m (pi.PApply((fun pi -> pi.PropertyType),m))
#endif
@@ -2045,7 +2045,7 @@ type PropInfo =
let inst = GetInstantiationForPropertyVal g (typ,vref)
ArgInfosOfPropertyVal g vref.Deref |> List.map (ParamNameAndType.FromArgInfo >> ParamNameAndType.Instantiate inst)
| FSProp _ -> failwith "unreachable"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp (_,pi,m) ->
[ for p in pi.PApplyArray((fun pi -> pi.GetIndexParameters()), "GetIndexParameters", m) do
let paramName = p.PUntaint((fun p -> match p.Name with null -> None | s -> Some (mkSynId m s)), m)
@@ -2067,7 +2067,7 @@ type PropInfo =
match x with
| ILProp(g,x) -> ILMeth(g,x.GetterMethod(g),None)
| FSProp(g,typ,Some vref,_) -> FSMeth(g,typ,vref,None)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(amap,pi,m) ->
let meth = GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetGetMethod()) FSComp.SR.etPropertyCanReadButHasNoGetter
ProvidedMeth(amap, meth, None, m)
@@ -2080,7 +2080,7 @@ type PropInfo =
match x with
| ILProp(g,x) -> ILMeth(g,x.SetterMethod(g),None)
| FSProp(g,typ,_,Some vref) -> FSMeth(g,typ,vref,None)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(amap,pi,m) ->
let meth = GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetSetMethod()) FSComp.SR.etPropertyCanWriteButHasNoSetter
ProvidedMeth(amap, meth, None, m)
@@ -2099,7 +2099,7 @@ type PropInfo =
| ILProp(_, x1), ILProp(_, x2) -> (x1.RawMetadata === x2.RawMetadata)
| FSProp(g, _, vrefa1, vrefb1), FSProp(_, _, vrefa2, vrefb2) ->
(optVrefEq g (vrefa1, vrefa2)) && (optVrefEq g (vrefb1, vrefb2))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi1,_), ProvidedProp(_,pi2,_) -> ProvidedPropertyInfo.TaintedEquals (pi1, pi2)
#endif
| _ -> false
@@ -2112,7 +2112,7 @@ type PropInfo =
// Hash on option*option
let vth = (vrefOpt1 |> Option.map (fun vr -> vr.LogicalName), (vrefOpt2 |> Option.map (fun vr -> vr.LogicalName)))
hash vth
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_,pi,_) -> ProvidedPropertyInfo.TaintedGetHashCode(pi)
#endif
@@ -2191,7 +2191,7 @@ type EventInfo =
| FSEvent of TcGlobals * PropInfo * ValRef * ValRef
/// An F# use of an event backed by .NET metadata
| ILEvent of TcGlobals * ILEventInfo
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// An F# use of an event backed by provided metadata
| ProvidedEvent of Import.ImportMap * Tainted * range
#endif
@@ -2203,7 +2203,7 @@ type EventInfo =
match x with
| ILEvent(_,e) -> e.ILTypeInfo.ToType
| FSEvent (_,p,_,_) -> p.EnclosingType
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (amap,ei,m) -> Import.ImportProvidedType amap m (ei.PApply((fun ei -> ei.DeclaringType),m))
#endif
@@ -2211,7 +2211,7 @@ type EventInfo =
member x.HasDirectXmlComment =
match x with
| FSEvent (_,p,_,_) -> p.HasDirectXmlComment
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent _ -> true
#endif
| _ -> false
@@ -2221,7 +2221,7 @@ type EventInfo =
match x with
| ILEvent _ -> XmlDoc.Empty
| FSEvent (_,p,_,_) -> p.XmlDoc
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_,ei,m) ->
XmlDoc (ei.PUntaint((fun eix -> (eix :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(ei.TypeProvider.PUntaintNoFailure(id))), m))
#endif
@@ -2231,7 +2231,7 @@ type EventInfo =
match x with
| ILEvent(_,e) -> e.Name
| FSEvent (_,p,_,_) -> p.PropertyName
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_,ei,m) -> ei.PUntaint((fun ei -> ei.Name), m)
#endif
@@ -2240,7 +2240,7 @@ type EventInfo =
match x with
| ILEvent(g,e) -> e.IsStatic(g)
| FSEvent (_,p,_,_) -> p.IsStatic
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_,ei,m) ->
let meth = GetAndSanityCheckProviderMethod m ei (fun ei -> ei.GetAddMethod()) FSComp.SR.etEventNoAdd
meth.PUntaint((fun mi -> mi.IsStatic), m)
@@ -2251,7 +2251,7 @@ type EventInfo =
match x with
| ILEvent(g,_) -> g
| FSEvent(g,_,_,_) -> g
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (amap,_,_) -> amap.g
#endif
@@ -2265,7 +2265,7 @@ type EventInfo =
match x with
| ILEvent(g,e) -> ILMeth(g,e.AddMethod(g),None)
| FSEvent(g,p,addValRef,_) -> FSMeth(g,p.EnclosingType,addValRef,None)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (amap,ei,m) ->
let meth = GetAndSanityCheckProviderMethod m ei (fun ei -> ei.GetAddMethod()) FSComp.SR.etEventNoAdd
ProvidedMeth(amap, meth, None, m)
@@ -2276,7 +2276,7 @@ type EventInfo =
match x with
| ILEvent(g,e) -> ILMeth(g,e.RemoveMethod(g),None)
| FSEvent(g,p,_,removeValRef) -> FSMeth(g,p.EnclosingType,removeValRef,None)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (amap,ei,m) ->
let meth = GetAndSanityCheckProviderMethod m ei (fun ei -> ei.GetRemoveMethod()) FSComp.SR.etEventNoRemove
ProvidedMeth(amap, meth, None, m)
@@ -2299,7 +2299,7 @@ type EventInfo =
| FSEvent(g,p,_,_) ->
FindDelegateTypeOfPropertyEvent g amap x.EventName m (p.GetPropertyType(amap,m))
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_,ei,_) ->
Import.ImportProvidedType amap m (ei.PApply((fun ei -> ei.EventHandlerType), m))
#endif
@@ -2311,7 +2311,7 @@ type EventInfo =
| FSEvent(g, pi1, vrefa1, vrefb1), FSEvent(_, pi2, vrefa2, vrefb2) ->
PropInfo.PropInfosUseIdenticalDefinitions pi1 pi2 && valRefEq g vrefa1 vrefa2 && valRefEq g vrefb1 vrefb2
| ILEvent(_, x1), ILEvent(_, x2) -> (x1.RawMetadata === x2.RawMetadata)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_,ei1,_), ProvidedEvent (_,ei2,_) -> ProvidedEventInfo.TaintedEquals (ei1, ei2)
#endif
| _ -> false
@@ -2321,7 +2321,7 @@ type EventInfo =
match ei with
| ILEvent(_, x1) -> hash x1.RawMetadata.Name
| FSEvent(_, pi, vref1, vref2) -> hash ( pi.ComputeHashCode(), vref1.LogicalName, vref2.LogicalName)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_,ei,_) -> ProvidedEventInfo.TaintedGetHashCode(ei)
#endif
diff --git a/src/fsharp/range.fs b/src/fsharp/range.fs
index f627e00157c..aed660be56c 100755
--- a/src/fsharp/range.fs
+++ b/src/fsharp/range.fs
@@ -170,7 +170,11 @@ type range(code:int64) =
override r.Equals(obj) = match obj with :? range as r2 -> code = r2.Code | _ -> false
override r.GetHashCode() = hash code
-let mkRange f b e = range (fileIndexOfFile f, b, e)
+let mkRange f b e =
+ // remove relative parts from full path
+ let normalizedFilePath = if Path.IsPathRooted f then try Path.GetFullPath f with _ -> f else f
+ range (fileIndexOfFile normalizedFilePath, b, e)
+
let mkFileIndexRange fi b e = range (fi, b, e)
(* end representation, start derived ops *)
diff --git a/src/fsharp/symbols/Exprs.fs b/src/fsharp/symbols/Exprs.fs
index 76f3dad6d7c..1eba79a8d24 100644
--- a/src/fsharp/symbols/Exprs.fs
+++ b/src/fsharp/symbols/Exprs.fs
@@ -199,6 +199,62 @@ module FSharpExprConvert =
| Expr.Op(TOp.ValFieldSet rfref, _, _, _) when IsStaticInitializationField rfref -> Some ()
| _ -> None
+ let (|ILUnaryOp|_|) e =
+ match e with
+ | AI_neg -> Some mkCallUnaryNegOperator
+ | AI_not -> Some mkCallUnaryNotOperator
+ | _ -> None
+
+ let (|ILBinaryOp|_|) e =
+ match e with
+ | AI_add
+ | AI_add_ovf
+ | AI_add_ovf_un -> Some mkCallAdditionOperator
+ | AI_sub
+ | AI_sub_ovf
+ | AI_sub_ovf_un -> Some mkCallSubtractionOperator
+ | AI_mul
+ | AI_mul_ovf
+ | AI_mul_ovf_un -> Some mkCallMultiplyOperator
+ | AI_div
+ | AI_div_un -> Some mkCallDivisionOperator
+ | AI_rem
+ | AI_rem_un -> Some mkCallModulusOperator
+ | AI_ceq -> Some mkCallEqualsOperator
+ | AI_clt
+ | AI_clt_un -> Some mkCallLessThanOperator
+ | AI_cgt
+ | AI_cgt_un -> Some mkCallGreaterThanOperator
+ | AI_and -> Some mkCallBitwiseAndOperator
+ | AI_or -> Some mkCallBitwiseOrOperator
+ | AI_xor -> Some mkCallBitwiseXorOperator
+ | AI_shl -> Some mkCallShiftLeftOperator
+ | AI_shr
+ | AI_shr_un -> Some mkCallShiftRightOperator
+ | _ -> None
+
+ let (|ILConvertOp|_|) e =
+ match e with
+ | AI_conv basicTy
+ | AI_conv_ovf basicTy
+ | AI_conv_ovf_un basicTy ->
+ match basicTy with
+ | DT_R -> None
+ | DT_I1 -> Some mkCallToSByteOperator
+ | DT_U1 -> Some mkCallToByteOperator
+ | DT_I2 -> Some mkCallToInt16Operator
+ | DT_U2 -> Some mkCallToUInt16Operator
+ | DT_I4 -> Some mkCallToInt32Operator
+ | DT_U4 -> Some mkCallToUInt32Operator
+ | DT_I8 -> Some mkCallToInt64Operator
+ | DT_U8 -> Some mkCallToUInt64Operator
+ | DT_R4 -> Some mkCallToSingleOperator
+ | DT_R8 -> Some mkCallToDoubleOperator
+ | DT_I -> Some mkCallToIntPtrOperator
+ | DT_U -> Some mkCallToUIntPtrOperator
+ | DT_REF -> None
+ | _ -> None
+
let ConvType cenv typ = FSharpType(cenv, typ)
let ConvTypes cenv typs = List.map (ConvType cenv) typs
let ConvILTypeRefApp (cenv:Impl.cenv) m tref tyargs =
@@ -532,11 +588,43 @@ module FSharpExprConvert =
let argR = ConvExpr cenv env arg
E.ILFieldSet(None, typR, fspec.Name, argR)
+ | TOp.ILAsm([ AI_ldnull; AI_cgt_un ], _), _, [arg] ->
+ let elemTy = tyOfExpr cenv.g arg
+ let nullVal = mkNull m elemTy
+ let op = mkCallNotEqualsOperator cenv.g m elemTy arg nullVal
+ ConvExprPrim cenv env op
+
+ | TOp.ILAsm([ I_ldlen; AI_conv DT_I4 ], _), _, [arr] ->
+ let arrayTy = tyOfExpr cenv.g arr
+ let elemTy = destArrayTy cenv.g arrayTy
+ let op = mkCallArrayLength cenv.g m elemTy arr
+ ConvExprPrim cenv env op
+
+ | TOp.ILAsm([ I_newarr (ILArrayShape [(Some 0, None)], _)], _), [elemTy], xa ->
+ E.NewArray(ConvType cenv elemTy, ConvExprs cenv env xa)
+
+ | TOp.ILAsm([ I_ldelem_any (ILArrayShape [(Some 0, None)], _)], _), [elemTy], [arr; idx1] ->
+ let op = mkCallArrayGet cenv.g m elemTy arr idx1
+ ConvExprPrim cenv env op
- | TOp.ILAsm([ AI_ceq ], _), _, [arg1;arg2] ->
+ | TOp.ILAsm([ I_stelem_any (ILArrayShape [(Some 0, None)], _)], _), [elemTy], [arr; idx1; v] ->
+ let op = mkCallArraySet cenv.g m elemTy arr idx1 v
+ ConvExprPrim cenv env op
+
+ | TOp.ILAsm([ ILUnaryOp unaryOp ], _), _, [arg] ->
+ let ty = tyOfExpr cenv.g arg
+ let op = unaryOp cenv.g m ty arg
+ ConvExprPrim cenv env op
+
+ | TOp.ILAsm([ ILBinaryOp binaryOp ], _), _, [arg1;arg2] ->
let ty = tyOfExpr cenv.g arg1
- let eq = mkCallEqualsOperator cenv.g m ty arg1 arg2
- ConvExprPrim cenv env eq
+ let op = binaryOp cenv.g m ty arg1 arg2
+ ConvExprPrim cenv env op
+
+ | TOp.ILAsm([ ILConvertOp convertOp ], _), _, [arg] ->
+ let ty = tyOfExpr cenv.g arg
+ let op = convertOp cenv.g m ty arg
+ ConvExprPrim cenv env op
| TOp.ILAsm([ I_throw ], _), _, [arg1] ->
let raiseExpr = mkCallRaise cenv.g m (tyOfExpr cenv.g expr) arg1
@@ -605,17 +693,18 @@ module FSharpExprConvert =
| TOp.While _, [], [Expr.Lambda(_, _, _, [_], test, _, _);Expr.Lambda(_, _, _, [_], body, _, _)] ->
E.WhileLoop(ConvExpr cenv env test, ConvExpr cenv env body)
- | TOp.For(_, (FSharpForLoopUp |FSharpForLoopDown as dir) ), [], [Expr.Lambda(_, _, _, [_], lim0, _, _); Expr.Lambda(_, _, _, [_], SimpleArrayLoopUpperBound, lm, _); SimpleArrayLoopBody cenv.g (arr, elemTy, body)] ->
+ | TOp.For(_, dir), [], [Expr.Lambda(_, _, _, [_], lim0, _, _); Expr.Lambda(_, _, _, [_], SimpleArrayLoopUpperBound, lm, _); SimpleArrayLoopBody cenv.g (arr, elemTy, body)] ->
let lim1 =
let len = mkCallArrayLength cenv.g lm elemTy arr // Array.length arr
- mkCallSubtractionOperator cenv.g lm cenv.g.int32_ty len (Expr.Const(Const.Int32 1, m, cenv.g.int32_ty)) // len - 1
- E.FastIntegerForLoop(ConvExpr cenv env lim0, ConvExpr cenv env lim1, ConvExpr cenv env body, (dir = FSharpForLoopUp))
-
- | TOp.For(_, dir), [], [Expr.Lambda(_, _, _, [_], lim0, _, _);Expr.Lambda(_, _, _, [_], lim1, _, _);body] ->
- match dir with
- | FSharpForLoopUp -> E.FastIntegerForLoop(ConvExpr cenv env lim0, ConvExpr cenv env lim1, ConvExpr cenv env body, true)
- | FSharpForLoopDown -> E.FastIntegerForLoop(ConvExpr cenv env lim0, ConvExpr cenv env lim1, ConvExpr cenv env body, false)
- | _ -> failwith "unexpected for-loop form"
+ mkCallSubtractionOperator cenv.g lm cenv.g.int32_ty len (mkOne cenv.g lm) // len - 1
+ E.FastIntegerForLoop(ConvExpr cenv env lim0, ConvExpr cenv env lim1, ConvExpr cenv env body, dir <> FSharpForLoopDown)
+
+ | TOp.For(_, dir), [], [Expr.Lambda(_, _, _, [_], lim0, _, _); Expr.Lambda(_, _, _, [_], lim1, lm, _); body] ->
+ let lim1 =
+ if dir = CSharpForLoopUp then
+ mkCallSubtractionOperator cenv.g lm cenv.g.int32_ty lim1 (mkOne cenv.g lm) // len - 1
+ else lim1
+ E.FastIntegerForLoop(ConvExpr cenv env lim0, ConvExpr cenv env lim1, ConvExpr cenv env body, dir <> FSharpForLoopDown)
| TOp.ILCall(_, _, _, isNewObj, valUseFlags, _isProp, _, ilMethRef, enclTypeArgs, methTypeArgs, _tys), [], callArgs ->
ConvILCall cenv env (isNewObj, valUseFlags, ilMethRef, enclTypeArgs, methTypeArgs, callArgs, m)
diff --git a/src/fsharp/symbols/SymbolHelpers.fs b/src/fsharp/symbols/SymbolHelpers.fs
index 4632f3a5d9b..e95870cb976 100644
--- a/src/fsharp/symbols/SymbolHelpers.fs
+++ b/src/fsharp/symbols/SymbolHelpers.fs
@@ -62,16 +62,15 @@ type FSharpErrorInfo(fileName, s: pos, e: pos, severity: FSharpErrorSeverity, me
override __.ToString()= sprintf "%s (%d,%d)-(%d,%d) %s %s %s" fileName (int s.Line) (s.Column + 1) (int e.Line) (e.Column + 1) subcategory (if severity=FSharpErrorSeverity.Warning then "warning" else "error") message
/// Decompose a warning or error into parts: position, severity, message, error number
- static member CreateFromException(exn, isError, trim:bool, fallbackRange:range) =
+ static member CreateFromException(exn, isError, fallbackRange:range) =
let m = match GetRangeOfDiagnostic exn with Some m -> m | None -> fallbackRange
- let e = if trim then m.Start else m.End
let msg = bufs (fun buf -> OutputPhasedDiagnostic buf exn false)
let errorNum = GetDiagnosticNumber exn
- FSharpErrorInfo(m.FileName, m.Start, e, (if isError then FSharpErrorSeverity.Error else FSharpErrorSeverity.Warning), msg, exn.Subcategory(), errorNum)
+ FSharpErrorInfo(m.FileName, m.Start, m.End, (if isError then FSharpErrorSeverity.Error else FSharpErrorSeverity.Warning), msg, exn.Subcategory(), errorNum)
/// Decompose a warning or error into parts: position, severity, message, error number
- static member CreateFromExceptionAndAdjustEof(exn, isError, trim:bool, fallbackRange:range, (linesCount:int, lastLength:int)) =
- let r = FSharpErrorInfo.CreateFromException(exn, isError, trim, fallbackRange)
+ static member CreateFromExceptionAndAdjustEof(exn, isError, fallbackRange:range, (linesCount:int, lastLength:int)) =
+ let r = FSharpErrorInfo.CreateFromException(exn, isError, fallbackRange)
// Adjust to make sure that errors reported at Eof are shown at the linesCount
let startline, schange = min (r.StartLineAlternate, false) (linesCount, true)
@@ -93,7 +92,7 @@ type ErrorScope() =
PushErrorLoggerPhaseUntilUnwind (fun _oldLogger ->
{ new ErrorLogger("ErrorScope") with
member x.DiagnosticSink(exn, isError) =
- let err = FSharpErrorInfo.CreateFromException(exn, isError, false, range.Zero)
+ let err = FSharpErrorInfo.CreateFromException(exn, isError, range.Zero)
errors <- err :: errors
if isError && firstError.IsNone then
firstError <- Some err.Message
@@ -180,18 +179,18 @@ module ErrorHelpers =
let ReportError (options, allErrors, mainInputFileName, fileInfo, (exn, sev)) =
[ let isError = (sev = FSharpErrorSeverity.Error) || ReportWarningAsError options exn
if (isError || ReportWarning options exn) then
- let oneError trim exn =
+ let oneError exn =
[ // We use the first line of the file as a fallbackRange for reporting unexpected errors.
// Not ideal, but it's hard to see what else to do.
let fallbackRange = rangeN mainInputFileName 1
- let ei = FSharpErrorInfo.CreateFromExceptionAndAdjustEof (exn, isError, trim, fallbackRange, fileInfo)
+ let ei = FSharpErrorInfo.CreateFromExceptionAndAdjustEof (exn, isError, fallbackRange, fileInfo)
if allErrors || (ei.FileName = mainInputFileName) || (ei.FileName = TcGlobals.DummyFileNameForRangesWithoutASpecificLocation) then
yield ei ]
let mainError, relatedErrors = SplitRelatedDiagnostics exn
- yield! oneError false mainError
+ yield! oneError mainError
for e in relatedErrors do
- yield! oneError true e ]
+ yield! oneError e ]
let CreateErrorInfos (options, allErrors, mainInputFileName, errors) =
let fileInfo = (Int32.MaxValue, Int32.MaxValue)
@@ -342,14 +341,14 @@ module internal SymbolHelpers =
let rangeOfPropInfo preferFlag (pinfo:PropInfo) =
match pinfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp(_, pi, _) -> ComputeDefinitionLocationOfProvidedItem pi
#endif
| _ -> pinfo.ArbitraryValRef |> Option.map (rangeOfValRef preferFlag)
let rangeOfMethInfo (g:TcGlobals) preferFlag (minfo:MethInfo) =
match minfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth(_, mi, _, _) -> ComputeDefinitionLocationOfProvidedItem mi
#endif
| DefaultStructCtor(_, AppTy g (tcref, _)) -> Some(rangeOfEntityRef preferFlag tcref)
@@ -357,7 +356,7 @@ module internal SymbolHelpers =
let rangeOfEventInfo preferFlag (einfo:EventInfo) =
match einfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent (_, ei, _) -> ComputeDefinitionLocationOfProvidedItem ei
#endif
| _ -> einfo.ArbitraryValRef |> Option.map (rangeOfValRef preferFlag)
@@ -403,7 +402,7 @@ module internal SymbolHelpers =
// Provided type definitions do not have a useful F# CCU for the purposes of goto-definition.
let computeCcuOfTyconRef (tcref:TyconRef) =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if tcref.IsProvided then None else
#endif
ccuOfTyconRef tcref
@@ -562,7 +561,7 @@ module internal SymbolHelpers =
Some (ccuFileName, "M:"+actualTypeName+"."+normalizedName+genArity+XmlDocArgsEnc g (formalTypars, fmtps) args)
| DefaultStructCtor _ -> None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> None
#endif
@@ -578,7 +577,7 @@ module internal SymbolHelpers =
let GetXmlDocSigOfProp infoReader m pinfo =
match pinfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp _ -> None // No signature is possible. If an xml comment existed it would have been returned by PropInfo.XmlDoc in infos.fs
#endif
| FSProp (g, typ, _, _) as fspinfo ->
@@ -783,7 +782,7 @@ module internal SymbolHelpers =
protectAssemblyExploration 1027 (fun () ->
match item with
| ItemWhereTypIsPreferred ty ->
- if isAppTy g ty then hash (tcrefOfAppTy g ty).Stamp
+ if isAppTy g ty then hash (tcrefOfAppTy g ty).LogicalName
else 1010
| Item.ILField(ILFieldInfo(_, fld)) ->
System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode fld // hash on the object identity of the AbstractIL metadata blob for the field
@@ -796,12 +795,12 @@ module internal SymbolHelpers =
| Item.CtorGroup(name, meths) -> name.GetHashCode() + (meths |> List.fold (fun st a -> st + a.ComputeHashCode()) 0)
| (Item.Value vref | Item.CustomBuilder (_, vref)) -> hash vref.LogicalName
| Item.ActivePatternCase(APElemRef(_apinfo, vref, idx)) -> hash (vref.LogicalName, idx)
- | Item.ExnCase(tcref) -> hash tcref.Stamp
+ | Item.ExnCase(tcref) -> hash tcref.LogicalName
| Item.UnionCase(UnionCaseInfo(_, UCRef(tcref, n)), _) -> hash(tcref.Stamp, n)
| Item.RecdField(RecdFieldInfo(_, RFRef(tcref, n))) -> hash(tcref.Stamp, n)
| Item.Event evt -> evt.ComputeHashCode()
| Item.Property(_name, pis) -> hash (pis |> List.map (fun pi -> pi.ComputeHashCode()))
- | Item.UnqualifiedType(tcref :: _) -> hash tcref.Stamp
+ | Item.UnqualifiedType(tcref :: _) -> hash tcref.LogicalName
| _ -> failwith "unreachable") }
let CompletionItemDisplayPartialEquality g =
@@ -1231,7 +1230,7 @@ module internal SymbolHelpers =
| _ ->
FSharpStructuredToolTipElement.None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Determine if an item is a provided type
let (|ItemIsProvidedType|_|) g item =
@@ -1307,7 +1306,7 @@ module internal SymbolHelpers =
sprintf "%s.%s%s" typeString minfo.RawMetadata.Name paramString |> Some
| DefaultStructCtor _ -> None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _ -> None
#endif
@@ -1338,7 +1337,7 @@ module internal SymbolHelpers =
match finfo with
| ILFieldInfo(tinfo, fdef) ->
(tinfo.TyconRef |> ticksAndArgCountTextOfTyconRef)+"."+fdef.Name |> Some
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedField _ -> None
#endif
| Item.Types(_, ((AppTy g (tcref, _)) :: _))
@@ -1364,7 +1363,7 @@ module internal SymbolHelpers =
// namespaces from type providers need to be handled separately because they don't have compiled representation
// otherwise we'll fail at tast.fs
match modref.Deref.TypeReprInfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedNamespaceExtensionPoint _ ->
modref.CompilationPathOpt
|> Option.bind (fun path ->
@@ -1392,7 +1391,7 @@ module internal SymbolHelpers =
let tcref = tinfo.TyconRef
(tcref |> ticksAndArgCountTextOfTyconRef)+"."+pdef.Name |> Some
| FSProp _ -> None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedProp _ -> None
#endif
| Item.Property(_, []) -> None // Pathological case of the above
@@ -1411,7 +1410,7 @@ module internal SymbolHelpers =
| Parent tcref -> (tcref |> ticksAndArgCountTextOfTyconRef)+"."+vref.PropertyName|> Some
| ParentNone -> None
| None -> None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedEvent _ -> None
#endif
| Item.CtorGroup(_, minfos) ->
@@ -1427,7 +1426,7 @@ module internal SymbolHelpers =
| (DefaultStructCtor (g, typ) :: _) ->
let tcref = tcrefOfAppTy g typ
(ticksAndArgCountTextOfTyconRef tcref) + ".#ctor" |> Some
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedMeth _::_ -> None
#endif
| Item.CustomOperation (_, _, Some minfo) -> getKeywordForMethInfo minfo
@@ -1467,7 +1466,7 @@ module internal SymbolHelpers =
| Item.Property(_, pinfos) ->
let pinfo = List.head pinfos
if pinfo.IsIndexer then [item] else []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ItemIsWithStaticArguments m g _ -> [item] // we pretend that provided-types-with-static-args are method-like in order to get ParamInfo for them
#endif
| Item.CustomOperation(_name, _helpText, _minfo) -> [item]
diff --git a/src/fsharp/symbols/SymbolHelpers.fsi b/src/fsharp/symbols/SymbolHelpers.fsi
index c36f931fe8d..1d1762a7f4f 100755
--- a/src/fsharp/symbols/SymbolHelpers.fsi
+++ b/src/fsharp/symbols/SymbolHelpers.fsi
@@ -46,8 +46,8 @@ type internal FSharpErrorInfo =
member Message:string
member Subcategory:string
member ErrorNumber:int
- static member internal CreateFromExceptionAndAdjustEof : PhasedDiagnostic * isError: bool * trim: bool * range * lastPosInFile:(int*int) -> FSharpErrorInfo
- static member internal CreateFromException : PhasedDiagnostic * isError: bool * trim: bool * range -> FSharpErrorInfo
+ static member internal CreateFromExceptionAndAdjustEof : PhasedDiagnostic * isError: bool * range * lastPosInFile:(int*int) -> FSharpErrorInfo
+ static member internal CreateFromException : PhasedDiagnostic * isError: bool * range -> FSharpErrorInfo
//----------------------------------------------------------------------------
// Object model for quick info
@@ -212,7 +212,7 @@ module internal SymbolHelpers =
val IsAttribute : InfoReader -> Item -> bool
val IsExplicitlySuppressed : TcGlobals -> Item -> bool
val FlattenItems : TcGlobals -> range -> Item -> Item list
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
val (|ItemIsProvidedType|_|) : TcGlobals -> Item -> TyconRef option
val (|ItemIsWithStaticArguments|_|): range -> TcGlobals -> Item -> Tainted[] option
val (|ItemIsProvidedTypeWithStaticArguments|_|): range -> TcGlobals -> Item -> Tainted[] option
diff --git a/vsintegration/src/FSharp.Editor/LanguageService/TypedAstUtils.fs b/src/fsharp/symbols/SymbolPatterns.fs
similarity index 68%
rename from vsintegration/src/FSharp.Editor/LanguageService/TypedAstUtils.fs
rename to src/fsharp/symbols/SymbolPatterns.fs
index b857ac6c586..8ae4b90bf9d 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/TypedAstUtils.fs
+++ b/src/fsharp/symbols/SymbolPatterns.fs
@@ -1,47 +1,48 @@
-module internal Microsoft.VisualStudio.FSharp.Editor.TypedAstUtils
-
-open System
-open Microsoft.FSharp.Compiler.SourceCodeServices
-open Microsoft.VisualStudio.FSharp.Editor
-
-open System.Text.RegularExpressions
-
-let isAttribute<'T> (attribute: FSharpAttribute) =
- // CompiledName throws exception on DataContractAttribute generated by SQLProvider
- match Option.attempt (fun _ -> attribute.AttributeType.CompiledName) with
- | Some name when name = typeof<'T>.Name -> true
- | _ -> false
-
-let tryGetAttribute<'T> (attributes: seq) =
- attributes |> Seq.tryFind isAttribute<'T>
-
-let hasModuleSuffixAttribute (entity: FSharpEntity) =
- entity.Attributes
- |> tryGetAttribute
- |> Option.bind (fun a ->
- Option.attempt (fun _ -> a.ConstructorArguments)
- |> Option.bind (fun args -> args |> Seq.tryPick (fun (_, arg) ->
- let res =
- match arg with
- | :? int32 as arg when arg = int CompilationRepresentationFlags.ModuleSuffix ->
- Some()
- | :? CompilationRepresentationFlags as arg when arg = CompilationRepresentationFlags.ModuleSuffix ->
- Some()
- | _ ->
- None
- res)))
- |> Option.isSome
-
-let isOperator (name: string) =
- name.StartsWith "( " && name.EndsWith " )" && name.Length > 4
- && name.Substring (2, name.Length - 4)
- |> String.forall (fun c -> c <> ' ' && not (Char.IsLetter c))
-
-let private UnnamedUnionFieldRegex = Regex("^Item(\d+)?$", RegexOptions.Compiled)
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.FSharp.Compiler.SourceCodeServices
+
+/// Patterns over FSharpSymbol and derivatives.
+[]
+module Symbol =
+ open System.Text.RegularExpressions
+ open System
+
+ let isAttribute<'T> (attribute: FSharpAttribute) =
+ // CompiledName throws exception on DataContractAttribute generated by SQLProvider
+ try attribute.AttributeType.CompiledName = typeof<'T>.Name with _ -> false
+
+ let tryGetAttribute<'T> (attributes: seq) =
+ attributes |> Seq.tryFind isAttribute<'T>
+
+ module Option =
+ let attempt f = try Some(f()) with _ -> None
+
+ let hasModuleSuffixAttribute (entity: FSharpEntity) =
+ entity.Attributes
+ |> tryGetAttribute
+ |> Option.bind (fun a ->
+ Option.attempt (fun _ -> a.ConstructorArguments)
+ |> Option.bind (fun args -> args |> Seq.tryPick (fun (_, arg) ->
+ let res =
+ match arg with
+ | :? int32 as arg when arg = int CompilationRepresentationFlags.ModuleSuffix ->
+ Some()
+ | :? CompilationRepresentationFlags as arg when arg = CompilationRepresentationFlags.ModuleSuffix ->
+ Some()
+ | _ ->
+ None
+ res)))
+ |> Option.isSome
+
+ let isOperator (name: string) =
+ name.StartsWith "( " && name.EndsWith " )" && name.Length > 4
+ && name.Substring (2, name.Length - 4)
+ |> String.forall (fun c -> c <> ' ' && not (Char.IsLetter c))
+
+ let UnnamedUnionFieldRegex = Regex("^Item(\d+)?$", RegexOptions.Compiled)
-let isUnnamedUnionCaseField (field: FSharpField) = UnnamedUnionFieldRegex.IsMatch(field.Name)
-
-module TypedAstPatterns =
+ let isUnnamedUnionCaseField (field: FSharpField) = UnnamedUnionFieldRegex.IsMatch(field.Name)
let (|AbbreviatedType|_|) (entity: FSharpEntity) =
if entity.IsFSharpAbbreviation then Some entity.AbbreviatedType
@@ -76,21 +77,28 @@ module TypedAstPatterns =
match ty with
| None -> false
| Some ty ->
- match ty.TryGetFullName() with
- | None -> false
- | Some fullName ->
- fullName = "System.Attribute" || isAttributeType (getBaseType ty)
+ try ty.FullName = "System.Attribute" || isAttributeType (getBaseType ty)
+ with _ -> false
isAttributeType (Some entity)
if isAttribute entity then Some() else None
+ let hasAttribute<'T> (attributes: seq) =
+ attributes |> Seq.exists isAttribute<'T>
+
let (|ValueType|_|) (e: FSharpEntity) =
if e.IsEnum || e.IsValueType || hasAttribute e.Attributes then Some()
else None
+#if !NO_EXTENSIONTYPING
let (|Class|_|) (original: FSharpEntity, abbreviated: FSharpEntity, _) =
if abbreviated.IsClass
&& (not abbreviated.IsStaticInstantiation || original.IsFSharpAbbreviation) then Some()
+ else None
+#else
+ let (|Class|_|) (original: FSharpEntity, abbreviated: FSharpEntity, _) =
+ if abbreviated.IsClass && original.IsFSharpAbbreviation then Some()
else None
+#endif
let (|Record|_|) (e: FSharpEntity) = if e.IsFSharpRecord then Some() else None
let (|UnionType|_|) (e: FSharpEntity) = if e.IsFSharpUnion then Some() else None
@@ -106,17 +114,21 @@ module TypedAstPatterns =
|| (e.IsFSharp && e.IsOpaque && not e.IsFSharpModule && not e.IsNamespace) then Some()
else None
+#if !NO_EXTENSIONTYPING
let (|ProvidedType|_|) (e: FSharpEntity) =
if (e.IsProvided || e.IsProvidedAndErased || e.IsProvidedAndGenerated) && e.CompiledName = e.DisplayName then
Some()
else None
+#endif
let (|ByRef|_|) (e: FSharpEntity) = if e.IsByRef then Some() else None
let (|Array|_|) (e: FSharpEntity) = if e.IsArrayType then Some() else None
let (|FSharpModule|_|) (entity: FSharpEntity) = if entity.IsFSharpModule then Some() else None
let (|Namespace|_|) (entity: FSharpEntity) = if entity.IsNamespace then Some() else None
+#if !NO_EXTENSIONTYPING
let (|ProvidedAndErasedType|_|) (entity: FSharpEntity) = if entity.IsProvidedAndErased then Some() else None
+#endif
let (|Enum|_|) (entity: FSharpEntity) = if entity.IsEnum then Some() else None
let (|Tuple|_|) (ty: FSharpType option) =
@@ -190,17 +202,18 @@ module TypedAstPatterns =
/// Constructor (enclosingEntity)
let (|Constructor|_|) (func: FSharpMemberOrFunctionOrValue) =
match func.CompiledName with
- | ".ctor" | ".cctor" -> Some func.EnclosingEntity
+ | ".ctor" | ".cctor" -> func.EnclosingEntity
| _ -> None
let (|Function|_|) excluded (func: FSharpMemberOrFunctionOrValue) =
- match func.FullTypeSafe |> Option.map getAbbreviatedType with
- | Some typ when typ.IsFunctionType
- && not func.IsPropertyGetterMethod
- && not func.IsPropertySetterMethod
- && not excluded
- && not (isOperator func.DisplayName) -> Some()
- | _ -> None
+ try let typ = func.FullType |> getAbbreviatedType
+ if typ.IsFunctionType
+ && not func.IsPropertyGetterMethod
+ && not func.IsPropertySetterMethod
+ && not excluded
+ && not (isOperator func.DisplayName) then Some()
+ else None
+ with _ -> None
let (|ExtensionMember|_|) (func: FSharpMemberOrFunctionOrValue) =
if func.IsExtensionMember then Some() else None
diff --git a/src/fsharp/symbols/SymbolPatterns.fsi b/src/fsharp/symbols/SymbolPatterns.fsi
new file mode 100644
index 00000000000..4499e3098c8
--- /dev/null
+++ b/src/fsharp/symbols/SymbolPatterns.fsi
@@ -0,0 +1,60 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.FSharp.Compiler.SourceCodeServices
+
+[]
+#if COMPILER_PUBLIC_API
+module Symbol =
+#else
+module internal Symbol =
+#endif
+ open System.Text.RegularExpressions
+ open System
+
+ val isAttribute<'T> : FSharpAttribute -> bool
+ val tryGetAttribute<'T> : seq -> FSharpAttribute option
+ val hasModuleSuffixAttribute : FSharpEntity -> bool
+ val isOperator : name: string -> bool
+ val isUnnamedUnionCaseField : FSharpField -> bool
+ val (|AbbreviatedType|_|) : FSharpEntity -> FSharpType option
+ val (|TypeWithDefinition|_|) : FSharpType -> FSharpEntity option
+ val getEntityAbbreviatedType : FSharpEntity -> (FSharpEntity * FSharpType option)
+ val getAbbreviatedType : FSharpType -> FSharpType
+ val (|Attribute|_|) : FSharpEntity -> unit option
+ val hasAttribute<'T> : seq -> bool
+ val (|ValueType|_|) : FSharpEntity -> unit option
+ val (|Class|_|) : original: FSharpEntity * abbreviated: FSharpEntity * 'a -> unit option
+ val (|Record|_|) : FSharpEntity -> unit option
+ val (|UnionType|_|) : FSharpEntity -> unit option
+ val (|Delegate|_|) : FSharpEntity -> unit option
+ val (|FSharpException|_|) : FSharpEntity -> unit option
+ val (|Interface|_|) : FSharpEntity -> unit option
+ val (|AbstractClass|_|) : FSharpEntity -> unit option
+ val (|FSharpType|_|) : FSharpEntity -> unit option
+#if !NO_EXTENSIONTYPING
+ val (|ProvidedType|_|) : FSharpEntity -> unit option
+#endif
+ val (|ByRef|_|) : FSharpEntity -> unit option
+ val (|Array|_|) : FSharpEntity -> unit option
+ val (|FSharpModule|_|) : FSharpEntity -> unit option
+ val (|Namespace|_|) : FSharpEntity -> unit option
+#if !NO_EXTENSIONTYPING
+ val (|ProvidedAndErasedType|_|) : FSharpEntity -> unit option
+#endif
+ val (|Enum|_|) : FSharpEntity -> unit option
+ val (|Tuple|_|) : FSharpType option -> unit option
+ val (|RefCell|_|) : FSharpType -> unit option
+ val (|FunctionType|_|) : FSharpType -> unit option
+ val (|Pattern|_|) : FSharpSymbol -> unit option
+ val (|Field|_|) : FSharpSymbol -> (FSharpField * FSharpType) option
+ val (|MutableVar|_|) : FSharpSymbol -> unit option
+ val (|FSharpEntity|_|) : FSharpSymbol -> (FSharpEntity * FSharpEntity * FSharpType option) option
+ val (|Parameter|_|) : FSharpSymbol -> unit option
+ val (|UnionCase|_|) : FSharpSymbol -> FSharpUnionCase option
+ val (|RecordField|_|) : FSharpSymbol -> FSharpField option
+ val (|ActivePatternCase|_|) : FSharpSymbol -> FSharpActivePatternCase option
+ val (|MemberFunctionOrValue|_|) : FSharpSymbol -> FSharpMemberOrFunctionOrValue option
+ val (|Constructor|_|) : FSharpMemberOrFunctionOrValue -> FSharpEntity option
+ val (|Function|_|) : excluded: bool -> FSharpMemberOrFunctionOrValue -> unit option
+ val (|ExtensionMember|_|) : FSharpMemberOrFunctionOrValue -> unit option
+ val (|Event|_|) : FSharpMemberOrFunctionOrValue -> unit option
\ No newline at end of file
diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs
index db5f96b3d17..c97b62e9d48 100644
--- a/src/fsharp/symbols/Symbols.fs
+++ b/src/fsharp/symbols/Symbols.fs
@@ -128,7 +128,7 @@ module Impl =
/// Convert an IL type definition accessibility into an F# accessibility
let getApproxFSharpAccessibilityOfEntity (entity: EntityRef) =
match metadataOfTycon entity.Deref with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata _info ->
// This is an approximation - for generative type providers some type definitions can be private.
taccessPublic
@@ -230,7 +230,7 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
inherit FSharpSymbol(cenv,
(fun () ->
checkEntityIsResolved(entity);
- if entity.IsModule then Item.ModuleOrNamespaces [entity]
+ if entity.IsModuleOrNamespace then Item.ModuleOrNamespaces [entity]
else Item.UnqualifiedType [entity]),
(fun _this thisCcu2 ad ->
checkForCrossProjectAccessibility (thisCcu2, ad) (cenv.thisCcu, getApproxFSharpAccessibilityOfEntity entity))
@@ -288,7 +288,7 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
member x.QualifiedName =
checkIsResolved()
let fail() = invalidOp (sprintf "the type '%s' does not have a qualified name" x.LogicalName)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if entity.IsTypeAbbrev || entity.IsProvidedErasedTycon || entity.IsNamespace then fail()
#else
if entity.IsTypeAbbrev || entity.IsNamespace then fail()
@@ -305,12 +305,12 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
member x.TryFullName =
if isUnresolved() then None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
elif entity.IsTypeAbbrev || entity.IsProvidedErasedTycon then None
#else
elif entity.IsTypeAbbrev then None
#endif
- elif entity.IsNamespace then Some entity.DemangledModuleOrNamespaceName
+ elif entity.IsNamespace then Some entity.DemangledModuleOrNamespaceName
else
match entity.CompiledRepresentation with
| CompiledTypeRepr.ILAsmNamed(tref, _, _) -> Some tref.FullName
@@ -346,7 +346,7 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
member __.ArrayRank =
checkIsResolved()
rankOfArrayTyconRef cenv.g entity
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member __.IsProvided =
isResolved() &&
entity.IsProvided
@@ -366,7 +366,7 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
member __.IsClass =
isResolved() &&
match metadataOfTycon entity.Deref with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.IsClass
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> (td.tdKind = ILTypeDefKind.Class)
@@ -387,7 +387,7 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
member __.IsDelegate =
isResolved() &&
match metadataOfTycon entity.Deref with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| ProvidedTypeMetadata info -> info.IsDelegate ()
#endif
| ILTypeMetadata (TILObjectReprData(_, _, td)) -> (td.tdKind = ILTypeDefKind.Delegate)
@@ -530,7 +530,7 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
member x.StaticParameters =
match entity.TypeReprInfo with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint info ->
let m = x.DeclarationLocation
let typeBeforeArguments = info.ProvidedType
@@ -619,6 +619,14 @@ and FSharpEntity(cenv:cenv, entity:EntityRef) =
yield! walkParts parts ]
res
+ member x.ActivePatternCases =
+ protect <| fun () ->
+ ActivePatternElemsOfModuleOrNamespace x.Entity
+ |> Map.toList
+ |> List.map (fun (_, apref) ->
+ let item = Item.ActivePatternCase apref
+ FSharpActivePatternCase(cenv, apref.ActivePatternInfo, apref.ActivePatternVal.Type, apref.CaseIndex, Some apref.ActivePatternVal, item))
+
override x.Equals(other: obj) =
box x === other ||
match other with
@@ -1788,6 +1796,7 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
member x.IsConstructor =
match d with
| C _ -> true
+ | V v -> v.IsConstructor
| _ -> false
member x.Data = d
@@ -2047,7 +2056,7 @@ and FSharpAttribute(cenv: cenv, attrib: AttribInfo) =
override __.ToString() =
if entityIsUnresolved attrib.TyconRef then "attribute ???" else "attribute " + attrib.TyconRef.CompiledName + "(...)"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
and FSharpStaticParameter(cenv, sp: Tainted< ExtensionTyping.ProvidedParameterInfo >, m) =
inherit FSharpSymbol(cenv,
(fun () ->
@@ -2170,7 +2179,7 @@ and FSharpAssembly internal (cenv, ccu: CcuThunk) =
member __.CodeLocation = ccu.SourceCodeDirectory
member __.FileName = ccu.FileName
member __.SimpleName = ccu.AssemblyName
- #if EXTENSIONTYPING
+ #if !NO_EXTENSIONTYPING
member __.IsProviderGenerated = ccu.IsProviderGenerated
#endif
member __.Contents = FSharpAssemblySignature(cenv, ccu)
@@ -2259,6 +2268,14 @@ type FSharpSymbol with
| :? FSharpMemberFunctionOrValue as x -> Some x.Accessibility
| _ -> None
+/// Represents open declaration in F# code.
+type FSharpOpenDeclaration =
+ { LongId: Ident list
+ Range: range option
+ Modules: FSharpEntity list
+ AppliedScope: range
+ IsOwnNamespace: bool }
+
[]
type FSharpSymbolUse(g:TcGlobals, denv: DisplayEnv, symbol:FSharpSymbol, itemOcc, range: range) =
member __.Symbol = symbol
diff --git a/src/fsharp/symbols/Symbols.fsi b/src/fsharp/symbols/Symbols.fsi
index 8cc1c0ed06b..2cfd8a2f47e 100644
--- a/src/fsharp/symbols/Symbols.fsi
+++ b/src/fsharp/symbols/Symbols.fsi
@@ -7,6 +7,7 @@ open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.AccessibilityLogic
open Microsoft.FSharp.Compiler.CompileOps
open Microsoft.FSharp.Compiler.Range
+open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.Tast
open Microsoft.FSharp.Compiler.TcGlobals
open Microsoft.FSharp.Compiler.NameResolution
@@ -123,7 +124,7 @@ and [] internal FSharpAssembly =
/// The simple name for the assembly
member SimpleName : string
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Indicates if the assembly was generated by a type provider and is due for static linking
member IsProviderGenerated : bool
#endif
@@ -207,7 +208,7 @@ and [] internal FSharpEntity =
/// Get the rank of an array type
member ArrayRank : int
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Indicates if the entity is a 'fake' symbol related to a static instantiation of a type provider
member IsStaticInstantiation : bool
@@ -225,7 +226,7 @@ and [] internal FSharpEntity =
/// Get the generic parameters, possibly including unit-of-measure parameters
member GenericParameters: IList
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Get the static parameters for a provided type
member StaticParameters: IList
#endif
@@ -329,6 +330,9 @@ and [] internal FSharpEntity =
/// Get all compilation paths, taking `Module` suffixes into account.
member AllCompilationPaths : string list
+ /// Get all active pattern cases defined in all active patterns in the module.
+ member ActivePatternCases : FSharpActivePatternCase list
+
/// Represents a delegate signature in an F# symbol
#if COMPILER_PUBLIC_API
and [] FSharpDelegateSignature =
@@ -539,7 +543,7 @@ and [] internal FSharpGenericParameter =
member Constraints: IList
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// A subtype of FSharpSymbol that represents a static parameter to an F# type provider
#if COMPILER_PUBLIC_API
and [] FSharpStaticParameter =
@@ -1065,7 +1069,26 @@ and [] internal FSharpAttribute =
/// Format the attribute using the rules of the given display context
member Format : context: FSharpDisplayContext -> string
+/// Represents open declaration in F# code.
+#if COMPILER_PUBLIC_API
+type FSharpOpenDeclaration =
+#else
+type internal FSharpOpenDeclaration =
+#endif
+ { /// Idents.
+ LongId: Ident list
+
+ /// Range of the open declaration.
+ Range: range option
+ /// Modules or namespaces which is opened with this declaration.
+ Modules: FSharpEntity list
+
+ /// Scope in which open declaration is visible.
+ AppliedScope: range
+
+ /// If it's `namespace Xxx.Yyy` declaration.
+ IsOwnNamespace: bool }
/// Represents the use of an F# symbol from F# source code
[]
diff --git a/src/fsharp/tainted.fs b/src/fsharp/tainted.fs
index 74ee1836481..5d43f463900 100644
--- a/src/fsharp/tainted.fs
+++ b/src/fsharp/tainted.fs
@@ -2,7 +2,7 @@
namespace Microsoft.FSharp.Compiler
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open System
open Microsoft.FSharp.Compiler.Range
diff --git a/src/fsharp/tainted.fsi b/src/fsharp/tainted.fsi
index aaec679bb0d..228efbf606f 100644
--- a/src/fsharp/tainted.fsi
+++ b/src/fsharp/tainted.fsi
@@ -2,7 +2,7 @@
namespace Microsoft.FSharp.Compiler
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open System
diff --git a/src/fsharp/tast.fs b/src/fsharp/tast.fs
index 26a4c1178d8..8e5ba69dcd7 100755
--- a/src/fsharp/tast.fs
+++ b/src/fsharp/tast.fs
@@ -26,7 +26,7 @@ open Microsoft.FSharp.Compiler.QuotationPickler
open Microsoft.FSharp.Core.Printf
open Microsoft.FSharp.Compiler.Rational
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
open Microsoft.FSharp.Core.CompilerServices
#endif
@@ -472,7 +472,7 @@ let getNameOfScopeRef sref =
| ILScopeRef.Assembly aref -> aref.Name
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
let ComputeDefinitionLocationOfProvidedItem (p : Tainted<#IProvidedCustomAttributeProvider>) =
let attrs = p.PUntaintNoFailure(fun x -> x.GetDefinitionLocationAttribute(p.TypeProvider.PUntaintNoFailure(id)))
match attrs with
@@ -590,7 +590,7 @@ type Entity =
/// The display name of the namespace, module or type, e.g. List instead of List`1, including static parameters if any
member x.DisplayNameWithStaticParameters = x.GetDisplayName(true, false)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member x.IsStaticInstantiationTycon =
x.IsProvidedErasedTycon &&
let _nm,args = PrettyNaming.demangleProvidedTypeName x.LogicalName
@@ -609,7 +609,7 @@ type Entity =
else
nm
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if x.IsProvidedErasedTycon then
let nm,args = PrettyNaming.demangleProvidedTypeName nm
if withStaticParameters && args.Length > 0 then
@@ -626,7 +626,7 @@ type Entity =
/// The code location where the module, namespace or type is defined.
member x.Range =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match x.TypeReprInfo with
| TProvidedTypeExtensionPoint info ->
match ComputeDefinitionLocationOfProvidedItem info.ProvidedType with
@@ -663,7 +663,7 @@ type Entity =
/// or comes from another F# assembly then it does not (because the documentation will get read from
/// an XML file).
member x.XmlDoc =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match x.TypeReprInfo with
| TProvidedTypeExtensionPoint info -> XmlDoc (info.ProvidedType.PUntaintNoFailure(fun st -> (st :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(info.ProvidedType.TypeProvider.PUntaintNoFailure(id))))
| _ ->
@@ -738,7 +738,7 @@ type Entity =
/// Indicates if the entity is an F# module definition
member x.IsModule = x.IsModuleOrNamespace && (match x.ModuleOrNamespaceType.ModuleOrNamespaceKind with Namespace -> false | _ -> true)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Indicates if the entity is a provided type or namespace definition
member x.IsProvided =
@@ -769,7 +769,7 @@ type Entity =
/// Indicates if the entity is erased, either a measure definition, or an erased provided type definition
member x.IsErased =
x.IsMeasureableReprTycon
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
|| x.IsProvidedErasedTycon
#endif
@@ -957,7 +957,7 @@ type Entity =
/// Indicates if this is an enum type definition
member x.IsEnumTycon =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match x.TypeReprInfo with
| TProvidedTypeExtensionPoint info -> info.IsEnum
| TProvidedNamespaceExtensionPoint _ -> false
@@ -986,7 +986,7 @@ type Entity =
/// Indicates if this is a struct or enum type definition , i.e. a value type definition
member x.IsStructOrEnumTycon =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match x.TypeReprInfo with
| TProvidedTypeExtensionPoint info -> info.IsStructOrEnum
| TProvidedNamespaceExtensionPoint _ -> false
@@ -1044,7 +1044,7 @@ type Entity =
/// Gets the data indicating the compiled representation of a type or module in terms of Abstract IL data structures.
member x.CompiledRepresentation =
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match x.TypeReprInfo with
// We should never be computing this property for erased types
| TProvidedTypeExtensionPoint info when info.IsErased ->
@@ -1220,7 +1220,7 @@ and
/// Indicates the type is parameterized on a measure (e.g. float<_>) but erases to some other type (e.g. float)
| TMeasureableRepr of TType
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// TProvidedTypeExtensionPoint
///
/// Indicates the representation information for a provided type.
@@ -1247,7 +1247,7 @@ and
/// TILObjectReprData(scope, nesting, definition)
TILObjectReprData = TILObjectReprData of ILScopeRef * ILTypeDef list * ILTypeDef
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
and
[]
@@ -1596,7 +1596,7 @@ and
modulesByDemangledNameCache := None
allEntitiesByMangledNameCache := None
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Mutation used in hosting scenarios to hold the hosted types in this module or namespace
member mtyp.AddProvidedTypeEntity(entity:Entity) =
entities <- QueueList.appendOne entities entity
@@ -1734,7 +1734,7 @@ and Construct =
static member NewEmptyModuleOrNamespaceType mkind =
Construct.NewModuleOrNamespaceType mkind [] []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
static member NewProvidedTyconRepr(resolutionEnvironment,st:Tainted,importProvidedType,isSuppressRelocate,m) =
@@ -2666,13 +2666,13 @@ and NonLocalEntityRef =
let next = entity.ModuleOrNamespaceType.AllEntitiesByCompiledAndLogicalMangledNames.TryFind(path.[i])
match next with
| Some res -> NonLocalEntityRef.TryDerefEntityPath(ccu, path, (i+1), res)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| None -> NonLocalEntityRef.TryDerefEntityPathViaProvidedType(ccu, path, i, entity)
#else
| None -> VNone
#endif
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Try to find the entity corresponding to the given path, using type-providers to link the data
static member TryDerefEntityPathViaProvidedType(ccu: CcuThunk, path:string[], i:int, entity:Entity) =
// Errors during linking are not necessarily given good ranges. This has always been the case in F# 2.0, but also applies to
@@ -2998,7 +2998,7 @@ and
/// Get a blob of data indicating how this type is nested inside other namespaces, modules and types.
member x.CompilationPathOpt = x.Deref.CompilationPathOpt
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Indicates if the entity is a provided namespace fragment
member x.IsProvided = x.Deref.IsProvided
@@ -3596,7 +3596,7 @@ and
/// Indicates that this DLL was compiled using the F# compiler and has F# metadata
IsFSharp: bool
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Is the CCu an assembly injected by a type provider
IsProviderGenerated: bool
@@ -3687,7 +3687,7 @@ and CcuThunk =
/// Holds the filename for the DLL, if any
member ccu.FileName = ccu.Deref.FileName
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Is the CCu an EST injected assembly
member ccu.IsProviderGenerated = ccu.Deref.IsProviderGenerated
@@ -4672,7 +4672,7 @@ let tyconRefUsesLocalXmlDoc compilingFslib (x: TyconRef) =
match x with
| ERefLocal _ -> true
| ERefNonLocal _ ->
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match x.TypeReprInfo with
| TProvidedTypeExtensionPoint _ -> true
| _ ->
diff --git a/src/fsharp/test.snk b/src/fsharp/test.snk
deleted file mode 100644
index c16543bdc48..00000000000
Binary files a/src/fsharp/test.snk and /dev/null differ
diff --git a/src/fsharp/vs/IncrementalBuild.fs b/src/fsharp/vs/IncrementalBuild.fs
index 44056bea56d..6145eabe330 100755
--- a/src/fsharp/vs/IncrementalBuild.fs
+++ b/src/fsharp/vs/IncrementalBuild.fs
@@ -4,8 +4,9 @@ namespace Microsoft.FSharp.Compiler
open System
-open System.IO
+open System.Collections.Concurrent
open System.Collections.Generic
+open System.IO
open System.Threading
open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.NameResolution
@@ -463,7 +464,7 @@ module internal IncrementalBuild =
/// Bind a set of build rules to a set of input values.
let ToBound(buildRules:BuildRules, inputs: BuildInput list) =
- let now = DateTime.Now
+ let now = DateTime.UtcNow
let rec applyScalarExpr(se, results) =
match se with
| ScalarInput(id, n) ->
@@ -1028,6 +1029,7 @@ type TypeCheckAccumulator =
tcEnvAtEndOfFile: TcEnv
tcResolutions: TcResolutions list
tcSymbolUses: TcSymbolUses list
+ tcOpenDeclarations: OpenDeclaration list
topAttribs:TopAttribs option
typedImplFiles:TypedImplFile list
tcDependencyFiles: string list
@@ -1102,6 +1104,7 @@ type PartialCheckResults =
Errors: (PhasedDiagnostic * FSharpErrorSeverity) list
TcResolutions: TcResolutions list
TcSymbolUses: TcSymbolUses list
+ TcOpenDeclarations: OpenDeclaration list
TcDependencyFiles: string list
TopAttribs: TopAttribs option
TimeStamp: System.DateTime
@@ -1116,6 +1119,7 @@ type PartialCheckResults =
Errors = tcAcc.tcErrors
TcResolutions = tcAcc.tcResolutions
TcSymbolUses = tcAcc.tcSymbolUses
+ TcOpenDeclarations = tcAcc.tcOpenDeclarations
TcDependencyFiles = tcAcc.tcDependencyFiles
TopAttribs = tcAcc.topAttribs
TimeStamp = timestamp
@@ -1188,7 +1192,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
let flags, isExe = tcConfig.ComputeCanContainEntryPoint(sourceFiles |> List.map snd)
((sourceFiles, flags) ||> List.map2 (fun (m, nm) flag -> (m, nm, (flag, isExe))))
- let defaultTimeStamp = DateTime.Now
+ let defaultTimeStamp = DateTime.UtcNow
let basicDependencies =
[ for (UnresolvedAssemblyReference(referenceText, _)) in unresolvedReferences do
@@ -1236,7 +1240,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
cache.GetFileTimeStamp filename
// Deduplicate module names
- let moduleNamesDict = Dictionary>()
+ let moduleNamesDict = ConcurrentDictionary>()
/// This is a build task function that gets placed into the build rules as the computation for a VectorMap
///
@@ -1289,7 +1293,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
disposeCleanupItem()
let! tcImports = TcImports.BuildNonFrameworkTcImports(ctok, tcConfigP, tcGlobals, frameworkTcImports, nonFrameworkResolutions, unresolvedReferences)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
tcImports.GetCcusExcludingBase() |> Seq.iter (fun ccu ->
// When a CCU reports an invalidation, merge them together and just report a
// general "imports invalidated". This triggers a rebuild.
@@ -1327,6 +1331,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
tcEnvAtEndOfFile=tcInitial
tcResolutions=[]
tcSymbolUses=[]
+ tcOpenDeclarations=[]
topAttribs=None
typedImplFiles=[]
tcDependencyFiles=basicDependencies
@@ -1375,6 +1380,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
typedImplFiles=typedImplFiles
tcResolutions=tcAcc.tcResolutions @ [tcResolutions]
tcSymbolUses=tcAcc.tcSymbolUses @ [tcSymbolUses]
+ tcOpenDeclarations=tcAcc.tcOpenDeclarations @ sink.OpenDeclarations
tcErrors = tcAcc.tcErrors @ parseErrors @ capturingErrorLogger.GetErrors()
tcDependencyFiles = filename :: tcAcc.tcDependencyFiles }
}
@@ -1550,7 +1556,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput
member __.ImportedCcusInvalidated = importsInvalidated.Publish
member __.AllDependenciesDeprecated = allDependencies
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
member __.ThereAreLiveTypeProviders =
let liveTPs =
match cleanupItem with
diff --git a/src/fsharp/vs/IncrementalBuild.fsi b/src/fsharp/vs/IncrementalBuild.fsi
index 47ec0a7b624..e664cadc78b 100755
--- a/src/fsharp/vs/IncrementalBuild.fsi
+++ b/src/fsharp/vs/IncrementalBuild.fsi
@@ -54,6 +54,9 @@ type internal PartialCheckResults =
/// Represents the collected uses of symbols from type checking
TcSymbolUses: TcSymbolUses list
+ /// Represents open declarations
+ TcOpenDeclarations: OpenDeclaration list
+
TcDependencyFiles: string list
/// Represents the collected attributes to apply to the module of assuembly generates
@@ -97,7 +100,7 @@ type internal IncrementalBuilder =
/// The list of files the build depends on
member AllDependenciesDeprecated : string[]
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Whether there are any 'live' type providers that may need a refresh when a project is Cleaned
member ThereAreLiveTypeProviders : bool
#endif
diff --git a/src/fsharp/vs/ServiceAnalysis.fs b/src/fsharp/vs/ServiceAnalysis.fs
new file mode 100644
index 00000000000..5923459c031
--- /dev/null
+++ b/src/fsharp/vs/ServiceAnalysis.fs
@@ -0,0 +1,159 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.FSharp.Compiler.SourceCodeServices
+
+open Microsoft.FSharp.Compiler
+open Microsoft.FSharp.Compiler.Ast
+open Microsoft.FSharp.Compiler.Range
+
+module UnusedOpens =
+ open Microsoft.FSharp.Compiler.PrettyNaming
+ open System.Runtime.CompilerServices
+
+ type Module =
+ { Entity: FSharpEntity
+ IsNestedAutoOpen: bool }
+
+ member this.ChildSymbols =
+ seq { for ent in this.Entity.NestedEntities do
+ yield ent :> FSharpSymbol
+
+ if ent.IsFSharpRecord then
+ for rf in ent.FSharpFields do
+ yield upcast rf
+
+ if ent.IsFSharpUnion && not (Symbol.hasAttribute ent.Attributes) then
+ for unionCase in ent.UnionCases do
+ yield upcast unionCase
+
+ if Symbol.hasAttribute ent.Attributes then
+ for fv in ent.MembersFunctionsAndValues do
+ // fv.IsExtensionMember is always false for C# extension methods returning by `MembersFunctionsAndValues`,
+ // so we have to check Extension attribute instead.
+ // (note: fv.IsExtensionMember has proper value for symbols returning by GetAllUsesOfAllSymbolsInFile though)
+ if Symbol.hasAttribute fv.Attributes then
+ yield upcast fv
+
+ for apCase in this.Entity.ActivePatternCases do
+ yield upcast apCase
+
+ for fv in this.Entity.MembersFunctionsAndValues do
+ yield upcast fv
+ } |> Seq.cache
+
+ type ModuleGroup =
+ { Modules: Module list }
+
+ static member Create (modul: FSharpEntity) =
+ let rec getModuleAndItsAutoOpens (isNestedAutoOpen: bool) (modul: FSharpEntity) =
+ [ yield { Entity = modul; IsNestedAutoOpen = isNestedAutoOpen }
+ for ent in modul.NestedEntities do
+ if ent.IsFSharpModule && Symbol.hasAttribute ent.Attributes then
+ yield! getModuleAndItsAutoOpens true ent ]
+ { Modules = getModuleAndItsAutoOpens false modul }
+
+ /// Represents single open statement.
+ type OpenStatement =
+ { /// All modules which this open declaration effectively opens, _not_ including auto open ones.
+ Modules: ModuleGroup list
+ /// Range of open statement itself.
+ Range: range
+ /// Scope on which this open declaration is applied.
+ AppliedScope: range }
+
+ let getOpenStatements (openDeclarations: FSharpOpenDeclaration list) : OpenStatement list =
+ openDeclarations
+ |> List.filter (fun x -> not x.IsOwnNamespace)
+ |> List.choose (fun openDecl ->
+ match openDecl.LongId, openDecl.Range with
+ | firstId :: _, Some range ->
+ if firstId.idText = MangledGlobalName then
+ None
+ else
+ Some { Modules = openDecl.Modules |> List.map ModuleGroup.Create
+ Range = range
+ AppliedScope = openDecl.AppliedScope }
+ | _ -> None)
+
+ let filterSymbolUses (getSourceLineStr: int -> string) (symbolUses: FSharpSymbolUse[]) : FSharpSymbolUse[] =
+ symbolUses
+ |> Array.filter (fun su ->
+ match su.Symbol with
+ | :? FSharpMemberOrFunctionOrValue as fv when fv.IsExtensionMember ->
+ // extension members should be taken into account even though they have a prefix (as they do most of the time)
+ true
+ | _ ->
+ let partialName = QuickParse.GetPartialLongNameEx (getSourceLineStr su.RangeAlternate.StartLine, su.RangeAlternate.EndColumn - 1)
+ // for the rest of symbols we pick only those which are the first part of a long idend, because it's they which are
+ // conteined in opened namespaces / modules. For example, we pick `IO` from long ident `IO.File.OpenWrite` because
+ // it's `open System` which really brings it into scope.
+ partialName.QualifyingIdents = [])
+
+ type UsedModule =
+ { Module: FSharpEntity
+ AppliedScope: range }
+
+ let getUnusedOpens (checkFileResults: FSharpCheckFileResults, getSourceLineStr: int -> string) : Async =
+
+ let filterOpenStatements (openStatements: OpenStatement list) (symbolUses: FSharpSymbolUse[]) : OpenStatement list =
+
+ let rec filterInner acc (openStatements: OpenStatement list) (usedModules: UsedModule list) =
+
+ let getUsedModules (openStatement: OpenStatement) =
+ let notAlreadyUsedModuleGroups =
+ openStatement.Modules
+ |> List.choose (fun x ->
+ let notUsedModules =
+ x.Modules
+ |> List.filter (fun x ->
+ not (usedModules
+ |> List.exists (fun used ->
+ rangeContainsRange used.AppliedScope openStatement.AppliedScope &&
+ used.Module.IsEffectivelySameAs x.Entity)))
+
+ match notUsedModules with
+ | [] -> None
+ | _ when notUsedModules |> List.exists (fun x -> not x.IsNestedAutoOpen) ->
+ Some { Modules = notUsedModules }
+ | _ -> None)
+
+ match notAlreadyUsedModuleGroups with
+ | [] -> []
+ | _ ->
+ let symbolUsesInScope = symbolUses |> Array.filter (fun symbolUse -> rangeContainsRange openStatement.AppliedScope symbolUse.RangeAlternate)
+ notAlreadyUsedModuleGroups
+ |> List.filter (fun modulGroup ->
+ modulGroup.Modules
+ |> List.exists (fun modul ->
+ symbolUsesInScope
+ |> Array.exists (fun symbolUse ->
+ let usedByEnclosingEntity =
+ match symbolUse.Symbol with
+ | :? FSharpMemberOrFunctionOrValue as f ->
+ match f.EnclosingEntity with
+ | Some ent when ent.IsNamespace || ent.IsFSharpModule ->
+ Some (ent.IsEffectivelySameAs modul.Entity)
+ | _ -> None
+ | _ -> None
+ match usedByEnclosingEntity with
+ | Some x -> x
+ | None -> modul.ChildSymbols |> Seq.exists (fun x -> x.IsEffectivelySameAs symbolUse.Symbol)
+ )))
+ |> List.collect (fun mg ->
+ mg.Modules |> List.map (fun x -> { Module = x.Entity; AppliedScope = openStatement.AppliedScope }))
+
+ match openStatements with
+ | os :: xs ->
+ match getUsedModules os with
+ | [] -> filterInner (os :: acc) xs usedModules
+ | um -> filterInner acc xs (um @ usedModules)
+ | [] -> List.rev acc
+
+ filterInner [] openStatements []
+
+ async {
+ let! symbolUses = checkFileResults.GetAllUsesOfAllSymbolsInFile()
+ let symbolUses = filterSymbolUses getSourceLineStr symbolUses
+ let openStatements = getOpenStatements checkFileResults.OpenDeclarations
+ return filterOpenStatements openStatements symbolUses |> List.map (fun os -> os.Range)
+ }
\ No newline at end of file
diff --git a/src/fsharp/vs/ServiceAnalysis.fsi b/src/fsharp/vs/ServiceAnalysis.fsi
new file mode 100644
index 00000000000..6290c5d43e5
--- /dev/null
+++ b/src/fsharp/vs/ServiceAnalysis.fsi
@@ -0,0 +1,15 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.FSharp.Compiler.SourceCodeServices
+
+open Microsoft.FSharp.Compiler.Ast
+open Microsoft.FSharp.Compiler.NameResolution
+open Microsoft.FSharp.Compiler.Range
+
+#if COMPILER_PUBLIC_API
+module UnusedOpens =
+#else
+module internal UnusedOpens =
+#endif
+ /// Get all unused open declarations in a file
+ val getUnusedOpens : checkFileResults: FSharpCheckFileResults * getSourceLineStr: (int -> string) -> Async
\ No newline at end of file
diff --git a/src/fsharp/vs/ServiceAssemblyContent.fs b/src/fsharp/vs/ServiceAssemblyContent.fs
index 414098d2166..2cc99bceeaf 100644
--- a/src/fsharp/vs/ServiceAssemblyContent.fs
+++ b/src/fsharp/vs/ServiceAssemblyContent.fs
@@ -97,37 +97,6 @@ module Extensions =
type FSharpAssemblySignature with
member x.TryGetEntities() = try x.Entities :> _ seq with _ -> Seq.empty
-[]
-module Utils =
- let isAttribute<'T> (attribute: FSharpAttribute) =
- // CompiledName throws exception on DataContractAttribute generated by SQLProvider
- match (try Some attribute.AttributeType.CompiledName with _ -> None) with
- | Some name when name = typeof<'T>.Name -> true
- | _ -> false
-
- let hasAttribute<'T> (attributes: seq) =
- attributes |> Seq.exists isAttribute<'T>
-
- let tryGetAttribute<'T> (attributes: seq) =
- attributes |> Seq.tryFind isAttribute<'T>
-
- let hasModuleSuffixAttribute (entity: FSharpEntity) =
- entity.Attributes
- |> tryGetAttribute
- |> Option.bind (fun a ->
- try Some a.ConstructorArguments with _ -> None
- |> Option.bind (fun args -> args |> Seq.tryPick (fun (_, arg) ->
- let res =
- match arg with
- | :? int32 as arg when arg = int CompilationRepresentationFlags.ModuleSuffix ->
- Some()
- | :? CompilationRepresentationFlags as arg when arg = CompilationRepresentationFlags.ModuleSuffix ->
- Some()
- | _ ->
- None
- res)))
- |> Option.isSome
-
[]
type LookupType =
| Fuzzy
@@ -150,16 +119,18 @@ type AssemblyContentType = Public | Full
type Parent =
{ Namespace: Idents option
- ThisRequiresQualifiedAccess: Idents option
- TopRequiresQualifiedAccess: Idents option
+ ThisRequiresQualifiedAccess: (* isForMemberOrValue *) bool -> Idents option
+ TopRequiresQualifiedAccess: (* isForMemberOrValue *) bool -> Idents option
AutoOpen: Idents option
- WithModuleSuffix: Idents option }
+ WithModuleSuffix: Idents option
+ IsModule: bool }
static member Empty =
{ Namespace = None
- ThisRequiresQualifiedAccess = None
- TopRequiresQualifiedAccess = None
+ ThisRequiresQualifiedAccess = fun _ -> None
+ TopRequiresQualifiedAccess = fun _ -> None
AutoOpen = None
- WithModuleSuffix = None }
+ WithModuleSuffix = None
+ IsModule = true }
static member RewriteParentIdents (parentIdents: Idents option) (idents: Idents) =
match parentIdents with
| Some p when p.Length <= idents.Length ->
@@ -186,7 +157,7 @@ type Parent =
else ident)
let removeModuleSuffix (idents: Idents) =
- if entity.IsFSharpModule && idents.Length > 0 && hasModuleSuffixAttribute entity then
+ if entity.IsFSharpModule && idents.Length > 0 && Symbol.hasModuleSuffixAttribute entity then
let lastIdent = idents.[idents.Length - 1]
if lastIdent.EndsWith "Module" then
idents |> Array.replace (idents.Length - 1) (lastIdent.Substring(0, lastIdent.Length - 6))
@@ -202,18 +173,6 @@ type Parent =
|> removeGenericParamsCount
|> removeModuleSuffix))
-module TypedAstPatterns =
- let (|TypeWithDefinition|_|) (ty: FSharpType) =
- if ty.HasTypeDefinition then Some ty.TypeDefinition
- else None
-
- let (|Attribute|_|) (entity: FSharpEntity) =
- let isAttribute (entity: FSharpEntity) =
- try entity.IsAttributeType with _ -> false
- if isAttribute entity then Some() else None
-
- let (|FSharpModule|_|) (entity: FSharpEntity) = if entity.IsFSharpModule then Some() else None
-
type AssemblyContentCacheEntry =
{ FileWriteTime: DateTime
ContentType: AssemblyContentType
@@ -233,33 +192,34 @@ module AssemblyContentProvider =
{ FullName = fullName
CleanedIdents = cleanIdents
Namespace = ns
- NearestRequireQualifiedAccessParent = parent.ThisRequiresQualifiedAccess |> Option.map parent.FixParentModuleSuffix
- TopRequireQualifiedAccessParent = parent.TopRequiresQualifiedAccess |> Option.map parent.FixParentModuleSuffix
+ NearestRequireQualifiedAccessParent = parent.ThisRequiresQualifiedAccess false |> Option.map parent.FixParentModuleSuffix
+ TopRequireQualifiedAccessParent = parent.TopRequiresQualifiedAccess false |> Option.map parent.FixParentModuleSuffix
AutoOpenParent = parent.AutoOpen |> Option.map parent.FixParentModuleSuffix
Symbol = entity
Kind = fun lookupType ->
match entity, lookupType with
- | TypedAstPatterns.FSharpModule, _ ->
+ | Symbol.FSharpModule, _ ->
EntityKind.Module
- { IsAutoOpen = hasAttribute entity.Attributes
- HasModuleSuffix = hasModuleSuffixAttribute entity }
+ { IsAutoOpen = Symbol.hasAttribute entity.Attributes
+ HasModuleSuffix = Symbol.hasModuleSuffixAttribute entity }
| _, LookupType.Fuzzy ->
EntityKind.Type
| _, LookupType.Precise ->
match entity with
- | TypedAstPatterns.Attribute -> EntityKind.Attribute
+ | Symbol.Attribute -> EntityKind.Attribute
| _ -> EntityKind.Type
})
let private traverseMemberFunctionAndValues ns (parent: Parent) (membersFunctionsAndValues: seq) =
membersFunctionsAndValues
+ |> Seq.filter (fun x -> not x.IsInstanceMember)
|> Seq.collect (fun func ->
let processIdents fullName idents =
{ FullName = fullName
CleanedIdents = parent.FixParentModuleSuffix idents
Namespace = ns
- NearestRequireQualifiedAccessParent = parent.ThisRequiresQualifiedAccess |> Option.map parent.FixParentModuleSuffix
- TopRequireQualifiedAccessParent = parent.TopRequiresQualifiedAccess |> Option.map parent.FixParentModuleSuffix
+ NearestRequireQualifiedAccessParent = parent.ThisRequiresQualifiedAccess true |> Option.map parent.FixParentModuleSuffix
+ TopRequireQualifiedAccessParent = parent.TopRequiresQualifiedAccess true |> Option.map parent.FixParentModuleSuffix
AutoOpenParent = parent.AutoOpen |> Option.map parent.FixParentModuleSuffix
Symbol = func
Kind = fun _ -> EntityKind.FunctionOrValue func.IsActivePattern }
@@ -284,7 +244,7 @@ module AssemblyContentProvider =
let rec private traverseEntity contentType (parent: Parent) (entity: FSharpEntity) =
seq {
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if not entity.IsProvided then
#endif
match contentType, entity.Accessibility.IsPublic with
@@ -296,16 +256,16 @@ module AssemblyContentProvider =
| Some x -> yield x
| None -> ()
- let thisRequiresQualifierAccess =
- if entity.IsFSharp && hasAttribute entity.Attributes then
- parent.FormatEntityFullName entity |> Option.map snd
- else None
+ let rqa = parent.FormatEntityFullName entity |> Option.map snd
+ let rqaForType = if entity.IsFSharp && Symbol.hasAttribute entity.Attributes then rqa else None
+ let thisRequiresQualifierAccess (isForMethodOrValue: bool) = if isForMethodOrValue then rqa else rqaForType
let currentParent =
- { ThisRequiresQualifiedAccess = thisRequiresQualifierAccess |> Option.orElse parent.ThisRequiresQualifiedAccess
- TopRequiresQualifiedAccess = parent.TopRequiresQualifiedAccess |> Option.orElse thisRequiresQualifierAccess
+ { ThisRequiresQualifiedAccess = thisRequiresQualifierAccess >> Option.orElse (parent.ThisRequiresQualifiedAccess false)
+ TopRequiresQualifiedAccess = fun forMV -> (parent.TopRequiresQualifiedAccess false) |> Option.orElse (thisRequiresQualifierAccess forMV)
+
AutoOpen =
- let isAutoOpen = entity.IsFSharpModule && hasAttribute entity.Attributes
+ let isAutoOpen = entity.IsFSharpModule && Symbol.hasAttribute entity.Attributes
match isAutoOpen, parent.AutoOpen with
// if parent is also AutoOpen, then keep the parent
| true, Some parent -> Some parent
@@ -315,16 +275,17 @@ module AssemblyContentProvider =
| false, _ -> None
WithModuleSuffix =
- if entity.IsFSharpModule && hasModuleSuffixAttribute entity then
+ if entity.IsFSharpModule && Symbol.hasModuleSuffixAttribute entity then
currentEntity |> Option.map (fun e -> e.CleanedIdents)
else parent.WithModuleSuffix
- Namespace = ns }
- if entity.IsFSharpModule then
- match entity.TryGetMembersFunctionsAndValues with
- | xs when xs.Count > 0 ->
- yield! traverseMemberFunctionAndValues ns currentParent xs
- | _ -> ()
+ Namespace = ns
+ IsModule = entity.IsFSharpModule }
+
+ match entity.TryGetMembersFunctionsAndValues with
+ | xs when xs.Count > 0 ->
+ yield! traverseMemberFunctionAndValues ns currentParent xs
+ | _ -> ()
for e in (try entity.NestedEntities :> _ seq with _ -> Seq.empty) do
yield! traverseEntity contentType currentParent e
@@ -360,7 +321,7 @@ module AssemblyContentProvider =
// on-demand. However a more compete review may be warranted.
use _ignoreAllDiagnostics = new ErrorScope()
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
match assemblies |> List.filter (fun x -> not x.IsProviderGenerated), fileName with
#else
match assemblies, fileName with
diff --git a/src/fsharp/vs/ServiceAssemblyContent.fsi b/src/fsharp/vs/ServiceAssemblyContent.fsi
index c92c741cfbc..03e8ccfa81a 100644
--- a/src/fsharp/vs/ServiceAssemblyContent.fsi
+++ b/src/fsharp/vs/ServiceAssemblyContent.fsi
@@ -255,10 +255,4 @@ module internal Extensions =
type FSharpAssemblySignature with
/// Safe version of `Entities`.
- member TryGetEntities : unit -> seq
-
-/// Operations over `FSharpAttribute`.
-[]
-module internal Utils =
- /// Returns `true` if a collection of attributes contains one of given type.
- val hasAttribute<'T> : attributes: seq -> bool
+ member TryGetEntities : unit -> seq
\ No newline at end of file
diff --git a/src/fsharp/vs/ServiceDeclarationLists.fs b/src/fsharp/vs/ServiceDeclarationLists.fs
index a36dc3ce69a..1a9a90c83c7 100644
--- a/src/fsharp/vs/ServiceDeclarationLists.fs
+++ b/src/fsharp/vs/ServiceDeclarationLists.fs
@@ -176,7 +176,7 @@ module internal DescriptionListsImpl =
prettyTyparInst, parameters, prettyRetTyL, prettyConstraintsL
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
/// Get the set of static parameters associated with an item
let StaticParamsOfItem (infoReader:InfoReader) m denv item =
@@ -382,7 +382,7 @@ module internal DescriptionListsImpl =
| ILTypeDefKind.Delegate -> FSharpGlyph.Delegate
| TAsmRepr _ -> FSharpGlyph.Typedef
| TMeasureableRepr _-> FSharpGlyph.Typedef
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| TProvidedTypeExtensionPoint _-> FSharpGlyph.Typedef
| TProvidedNamespaceExtensionPoint _-> FSharpGlyph.Typedef
#endif
@@ -470,7 +470,7 @@ module internal DescriptionListsImpl =
| Item.Property(_,pinfos) ->
let pinfo = List.head pinfos
if pinfo.IsIndexer then [item] else []
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| SymbolHelpers.ItemIsWithStaticArguments m g _ ->
// we pretend that provided-types-with-static-args are method-like in order to get ParamInfo for them
[item]
@@ -796,7 +796,7 @@ type FSharpMethodGroup( name: string, unsortedMethods: FSharpMethodGroupItem[] )
let hasStaticParameters =
match flatItem with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| SymbolHelpers.ItemIsProvidedTypeWithStaticArguments m g _ -> false
#endif
| _ -> true
@@ -808,7 +808,7 @@ type FSharpMethodGroup( name: string, unsortedMethods: FSharpMethodGroupItem[] )
parameters = (prettyParams |> Array.ofList),
hasParameters = hasStaticParameters,
hasParamArrayArg = hasParamArrayArg,
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
staticParameters = StaticParamsOfItem infoReader m denv flatItem
#else
staticParameters = [| |]
diff --git a/src/fsharp/vs/ServiceInterfaceStubGenerator.fs b/src/fsharp/vs/ServiceInterfaceStubGenerator.fs
index e6ccfffbab3..4f62581f1bf 100644
--- a/src/fsharp/vs/ServiceInterfaceStubGenerator.fs
+++ b/src/fsharp/vs/ServiceInterfaceStubGenerator.fs
@@ -220,7 +220,7 @@ module internal InterfaceStubGenerator =
let nm, namesWithIndices = normalizeArgName namesWithIndices nm
// Detect an optional argument
- let isOptionalArg = hasAttribute arg.Attributes
+ let isOptionalArg = Symbol.hasAttribute arg.Attributes
let argName = if isOptionalArg then "?" + nm else nm
(if hasTypeAnnotation && argName <> "()" then
argName + ": " + formatType ctx arg.Type
@@ -295,7 +295,7 @@ module internal InterfaceStubGenerator =
else displayName
let internal isEventMember (m: FSharpMemberOrFunctionOrValue) =
- m.IsEvent || hasAttribute m.Attributes
+ m.IsEvent || Symbol.hasAttribute m.Attributes
let internal formatMember (ctx: Context) m verboseMode =
let getParamArgs (argInfos: FSharpParameter list list) (ctx: Context) (v: FSharpMemberOrFunctionOrValue) =
@@ -325,7 +325,7 @@ module internal InterfaceStubGenerator =
| _, true, _, name -> name + parArgs
// Ordinary functions or values
| false, _, _, name when
- not (hasAttribute v.LogicalEnclosingEntity.Attributes) ->
+ not (Symbol.hasAttribute v.LogicalEnclosingEntity.Attributes) ->
name + " " + parArgs
// Ordinary static members or things (?) that require fully qualified access
| _, _, _, name -> name + parArgs
diff --git a/src/fsharp/vs/ServiceParseTreeWalk.fs b/src/fsharp/vs/ServiceParseTreeWalk.fs
index 992570be687..9dddedb6276 100755
--- a/src/fsharp/vs/ServiceParseTreeWalk.fs
+++ b/src/fsharp/vs/ServiceParseTreeWalk.fs
@@ -90,9 +90,15 @@ module internal AstTraversal =
/// VisitLetOrUse allows overriding behavior when visiting module or local let or use bindings
abstract VisitLetOrUse : SynBinding list * range -> 'T option
default this.VisitLetOrUse (_, _) = None
-
+ /// VisitType allows overriding behavior when visiting simple pats
abstract VisitSimplePats : SynSimplePat list -> 'T option
default this.VisitSimplePats (_) = None
+ /// VisitPat allows overriding behavior when visiting patterns
+ abstract VisitPat : (SynPat -> 'T option) * SynPat -> 'T option
+ default this.VisitPat (defaultTraverse, pat) = defaultTraverse pat
+ /// VisitType allows overriding behavior when visiting type hints (x: ..., etc.)
+ abstract VisitType : (SynType -> 'T option) * SynType -> 'T option
+ default this.VisitType (defaultTraverse, ty) = defaultTraverse ty
let dive node range project =
range,(fun() -> project node)
@@ -189,12 +195,12 @@ module internal AstTraversal =
dive synExpr2 synExpr2.Range traverseSynExpr]
|> pick expr
| SynExpr.Const(_synConst, _range) -> None
- | SynExpr.Typed(synExpr, _synType, _range) -> traverseSynExpr synExpr
+ | SynExpr.Typed(synExpr, synType, _range) -> [ traverseSynExpr synExpr; traverseSynType synType ] |> List.tryPick id
| SynExpr.Tuple(synExprList, _, _range)
| SynExpr.StructTuple(synExprList, _, _range) -> synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr
| SynExpr.ArrayOrList(_, synExprList, _range) -> synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr
| SynExpr.Record(inheritOpt,copyOpt,fields, _range) ->
- [
+ [
let diveIntoSeparator offsideColumn scPosOpt copyOpt =
match scPosOpt with
| Some scPos ->
@@ -448,6 +454,50 @@ module internal AstTraversal =
visitor.VisitExpr(path, traverseSynExpr path, defaultTraverse, expr)
+ and traversePat (pat: SynPat) =
+ let defaultTraverse p =
+ match p with
+ | SynPat.Paren (p, _) -> traversePat p
+ | SynPat.Or (p1, p2, _) -> [ p1; p2] |> List.tryPick traversePat
+ | SynPat.Ands (ps, _)
+ | SynPat.Tuple (ps, _)
+ | SynPat.StructTuple (ps, _)
+ | SynPat.ArrayOrList (_, ps, _) -> ps |> List.tryPick traversePat
+ | SynPat.Attrib (p, _, _) -> traversePat p
+ | SynPat.LongIdent(_, _, _, args, _, _) ->
+ match args with
+ | SynConstructorArgs.Pats ps -> ps |> List.tryPick traversePat
+ | SynConstructorArgs.NamePatPairs (ps, _) ->
+ ps |> List.map snd |> List.tryPick traversePat
+ | SynPat.Typed (p, ty, _) ->
+ [ traversePat p; traverseSynType ty ] |> List.tryPick id
+ | _ -> None
+
+ visitor.VisitPat (defaultTraverse, pat)
+
+ and traverseSynType (ty: SynType) =
+ let defaultTraverse ty =
+ match ty with
+ | SynType.App (typeName, _, typeArgs, _, _, _, _)
+ | SynType.LongIdentApp (typeName, _, _, typeArgs, _, _, _) ->
+ [ yield typeName
+ yield! typeArgs ]
+ |> List.tryPick traverseSynType
+ | SynType.Fun (ty1, ty2, _) -> [ty1; ty2] |> List.tryPick traverseSynType
+ | SynType.MeasurePower (ty, _, _)
+ | SynType.HashConstraint (ty, _)
+ | SynType.WithGlobalConstraints (ty, _, _)
+ | SynType.Array (_, ty, _) -> traverseSynType ty
+ | SynType.StaticConstantNamed (ty1, ty2, _)
+ | SynType.MeasureDivide (ty1, ty2, _) -> [ty1; ty2] |> List.tryPick traverseSynType
+ | SynType.Tuple (tys, _)
+ | SynType.StructTuple (tys, _) -> tys |> List.map snd |> List.tryPick traverseSynType
+ | SynType.StaticConstantExpr (expr, _) -> traverseSynExpr [] expr
+ | SynType.Anon _ -> None
+ | _ -> None
+
+ visitor.VisitType (defaultTraverse, ty)
+
and normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters path traverseInherit (synMemberDefns:SynMemberDefns) =
synMemberDefns
// property getters are setters are two members that can have the same range, so do some somersaults to deal with this
@@ -566,8 +616,10 @@ module internal AstTraversal =
let defaultTraverse b =
let path = TraverseStep.Binding b :: path
match b with
- | (SynBinding.Binding(_synAccessOption, _synBindingKind, _, _, _synAttributes, _preXmlDoc, _synValData, _synPat, _synBindingReturnInfoOption, synExpr, _range, _sequencePointInfoForBinding)) ->
- traverseSynExpr path synExpr
+ | (SynBinding.Binding(_synAccessOption, _synBindingKind, _, _, _synAttributes, _preXmlDoc, _synValData, synPat, _synBindingReturnInfoOption, synExpr, _range, _sequencePointInfoForBinding)) ->
+ [ traversePat synPat
+ traverseSynExpr path synExpr ]
+ |> List.tryPick id
visitor.VisitBinding(defaultTraverse,b)
match parseTree with
diff --git a/src/fsharp/vs/ServiceStructure.fs b/src/fsharp/vs/ServiceStructure.fs
index 0009b3d9ad8..35e3d2383e4 100644
--- a/src/fsharp/vs/ServiceStructure.fs
+++ b/src/fsharp/vs/ServiceStructure.fs
@@ -545,7 +545,9 @@ module Structure =
| [], [] -> List.rev res
| [], _ -> List.rev (currentBulk::res)
| r :: rest, [] -> loop rest res [r]
- | r :: rest, last :: _ when r.StartLine = last.EndLine + 1 ->
+ | r :: rest, last :: _
+ when r.StartLine = last.EndLine + 1 ||
+ sourceLines.[last.EndLine..r.StartLine - 2] |> Array.forall System.String.IsNullOrWhiteSpace ->
loop rest res (r::currentBulk)
| r :: rest, _ -> loop rest (currentBulk::res) [r]
loop input [] []
diff --git a/src/fsharp/vs/ServiceStructure.fsi b/src/fsharp/vs/ServiceStructure.fsi
index 4e4fc9dde14..4c85cd9784d 100644
--- a/src/fsharp/vs/ServiceStructure.fsi
+++ b/src/fsharp/vs/ServiceStructure.fsi
@@ -7,7 +7,11 @@ open System.Collections.Generic
open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.Range
+#if COMPILER_PUBLIC_API
+module Structure =
+#else
module internal Structure =
+#endif
/// Collapse indicates the way a range/snapshot should be collapsed. `Same` is for a scope inside
/// some kind of scope delimiter, e.g. `[| ... |]`, `[ ... ]`, `{ ... }`, etc. `Below` is for expressions
/// following a binding or the right hand side of a pattern, e.g. `let x = ...`
diff --git a/src/fsharp/vs/ServiceUntypedParse.fs b/src/fsharp/vs/ServiceUntypedParse.fs
index c5e30bf3df0..dff684fe526 100755
--- a/src/fsharp/vs/ServiceUntypedParse.fs
+++ b/src/fsharp/vs/ServiceUntypedParse.fs
@@ -79,6 +79,8 @@ type CompletionContext =
| ParameterList of pos * HashSet
| AttributeApplication
| OpenDeclaration
+ /// completing pattern type (e.g. foo (x: |))
+ | PatternType
//----------------------------------------------------------------------------
// FSharpParseFileResults
@@ -1272,6 +1274,12 @@ module UntypedParseImpl =
else
None
| _ -> defaultTraverse decl
+
+ member __.VisitType(defaultTraverse, ty) =
+ match ty with
+ | SynType.LongIdent _ when rangeContainsPos ty.Range pos ->
+ Some CompletionContext.PatternType
+ | _ -> defaultTraverse ty
}
AstTraversal.Traverse(pos, pt, walker)
diff --git a/src/fsharp/vs/ServiceUntypedParse.fsi b/src/fsharp/vs/ServiceUntypedParse.fsi
index 9a2c8379d53..62485fdefa2 100755
--- a/src/fsharp/vs/ServiceUntypedParse.fsi
+++ b/src/fsharp/vs/ServiceUntypedParse.fsi
@@ -104,6 +104,8 @@ type internal CompletionContext =
| ParameterList of pos * HashSet
| AttributeApplication
| OpenDeclaration
+ /// completing pattern type (e.g. foo (x: |))
+ | PatternType
#if COMPILER_PUBLIC_API
type ModuleKind = { IsAutoOpen: bool; HasModuleSuffix: bool }
diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs
index a42c4e6825a..b0b2ebbfdde 100644
--- a/src/fsharp/vs/service.fs
+++ b/src/fsharp/vs/service.fs
@@ -165,7 +165,8 @@ type TypeCheckInfo
reactorOps : IReactorOperations,
checkAlive : (unit -> bool),
textSnapshotInfo:obj option,
- implementationFiles: TypedImplFile list) =
+ implementationFiles: TypedImplFile list,
+ openDeclarations: OpenDeclaration list) =
let textSnapshotInfo = defaultArg textSnapshotInfo null
let (|CNR|) (cnr:CapturedNameResolution) =
@@ -869,10 +870,32 @@ type TypeCheckInfo
|> Option.map (fun (items, denv, m) ->
items |> List.filter (fun x -> match x.Item with Item.ModuleOrNamespaces _ -> true | _ -> false), denv, m)
+ // Completion at '(x: ...)"
+ | Some (CompletionContext.PatternType) ->
+ GetDeclaredItems (parseResultsOpt, lineStr, origLongIdentOpt, colAtEndOfNamesAndResidue, residueOpt, lastDotPos, line, loc, filterCtors, resolveOverloads, hasTextChangedSinceLastTypecheck, false, getAllSymbols)
+ |> Option.map (fun (items, denv, m) ->
+ items
+ |> List.filter (fun cItem ->
+ match cItem.Item with
+ | Item.ModuleOrNamespaces _
+ | Item.Types _
+ | Item.UnqualifiedType _
+ | Item.ExnCase _ -> true
+ | _ -> false), denv, m)
+
// Other completions
| cc ->
- let isInRangeOperator = (match cc with Some (CompletionContext.RangeOperator) -> true | _ -> false)
- GetDeclaredItems (parseResultsOpt, lineStr, origLongIdentOpt, colAtEndOfNamesAndResidue, residueOpt, lastDotPos, line, loc, filterCtors,resolveOverloads, hasTextChangedSinceLastTypecheck, isInRangeOperator, getAllSymbols)
+ match residueOpt |> Option.bind Seq.tryHead with
+ | Some ''' ->
+ // The last token in
+ // let x = 'E
+ // is Ident with text "'E", however it's either unfinished char literal or generic parameter.
+ // We should not provide any completion in the former case, and we don't provide it for the latter one for now
+ // because providing generic parameters list is context aware, which we don't have here (yet).
+ None
+ | _ ->
+ let isInRangeOperator = (match cc with Some (CompletionContext.RangeOperator) -> true | _ -> false)
+ GetDeclaredItems (parseResultsOpt, lineStr, origLongIdentOpt, colAtEndOfNamesAndResidue, residueOpt, lastDotPos, line, loc, filterCtors,resolveOverloads, hasTextChangedSinceLastTypecheck, isInRangeOperator, getAllSymbols)
res |> Option.map (fun (items, denv, m) -> items, denv, completionContext, m)
@@ -1182,7 +1205,7 @@ type TypeCheckInfo
| None ->
let fail defaultReason =
match item.Item with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| SymbolHelpers.ItemIsProvidedType g (tcref) -> FSharpFindDeclResult.DeclNotFound (FSharpFindDeclFailureReason.ProvidedType(tcref.DisplayName))
| Item.CtorGroup(name, ProvidedMeth(_)::_)
| Item.MethodGroup(name, ProvidedMeth(_)::_, _)
@@ -1361,6 +1384,9 @@ type TypeCheckInfo
member __.ImplementationFiles = implementationFiles
+ /// All open declarations in the file, including auto open modules
+ member __.OpenDeclarations = openDeclarations
+
override __.ToString() = "TypeCheckInfo(" + mainInputFileName + ")"
type FSharpParsingOptions =
@@ -1444,7 +1470,7 @@ module internal Parser =
errorCount <- errorCount + 1
match exn with
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
| { Exception = (:? TypeProviderError as tpe) } -> tpe.Iter(fun e -> report { exn with Exception = e })
#endif
| e -> report e
@@ -1693,13 +1719,14 @@ module internal Parser =
projectFileName,
mainInputFileName,
sink.GetResolutions(),
- sink.GetSymbolUses(),
+ sink.GetSymbolUses(),
tcEnvAtEnd.NameEnv,
loadClosure,
reactorOps,
checkAlive,
textSnapshotInfo,
- typedImplFiles)
+ typedImplFiles,
+ sink.OpenDeclarations)
return errors, TypeCheckAborted.No scope
| None ->
return errors, TypeCheckAborted.Yes
@@ -1766,7 +1793,7 @@ type FSharpCheckProjectResults(projectFileName:string, tcConfigOption, keepAssem
| None -> invalidOp ("The project has no results due to critical errors in the project options. Check the HasCriticalErrors before accessing the detaild results. Errors: " + String.concat "\n" [ for e in errors -> e.Message ])
| Some d -> d
- let tcConfig() =
+ let getTcConfig() =
match tcConfigOption with
| None -> invalidOp ("The project has no results due to critical errors in the project options. Check the HasCriticalErrors before accessing the detaild results. Errors: " + String.concat "\n" [ for e in errors -> e.Message ])
| Some d -> d
@@ -1778,7 +1805,7 @@ type FSharpCheckProjectResults(projectFileName:string, tcConfigOption, keepAssem
member info.AssemblySignature =
let (tcGlobals, tcImports, thisCcu, ccuSig, _tcSymbolUses, topAttribs, _tcAssemblyData, _ilAssemRef, _ad, _tcAssemblyExpr, _dependencyFiles) = getDetails()
FSharpAssemblySignature(tcGlobals, thisCcu, tcImports, topAttribs, ccuSig)
-
+
member info.TypedImplementionFiles =
if not keepAssemblyContents then invalidOp "The 'keepAssemblyContents' flag must be set to true on the FSharpChecker in order to access the checked contents of assemblies"
let (tcGlobals, tcImports, thisCcu, _ccuSig, _tcSymbolUses, _topAttribs, _tcAssemblyData, _ilAssemRef, _ad, tcAssemblyExpr, _dependencyFiles) = getDetails()
@@ -1790,13 +1817,13 @@ type FSharpCheckProjectResults(projectFileName:string, tcConfigOption, keepAssem
member info.AssemblyContents = FSharpAssemblyContents(info.TypedImplementionFiles)
-
member info.OptimizedAssemblyContents =
let tcGlobals, thisCcu, tcImports, mimpls = info.TypedImplementionFiles
let outfile = null
let importMap = tcImports.GetImportMap()
let optEnv0 = GetInitialOptimizationEnv (tcImports, tcGlobals)
- let optimizedImpls, _optimizationData, _ = ApplyAllOptimizations (tcConfig(), tcGlobals, (LightweightTcValForUsingInBuildMethodCall tcGlobals), outfile, importMap, false, optEnv0, thisCcu, mimpls)
+ let tcConfig = getTcConfig()
+ let optimizedImpls, _optimizationData, _ = ApplyAllOptimizations (tcConfig, tcGlobals, (LightweightTcValForUsingInBuildMethodCall tcGlobals), outfile, importMap, false, optEnv0, thisCcu, mimpls)
let mimpls =
match optimizedImpls with
| TypedAssemblyAfterOptimization files ->
@@ -2011,9 +2038,9 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp
(fun () -> [| |])
(fun scope ->
[| for (item,itemOcc,denv,m) in scope.ScopeSymbolUses.GetAllUsesOfSymbols() do
- if itemOcc <> ItemOccurence.RelatedText then
- let symbol = FSharpSymbol.Create(scope.TcGlobals, scope.ThisCcu, scope.TcImports, item)
- yield FSharpSymbolUse(scope.TcGlobals, denv, symbol, itemOcc, m) |])
+ if itemOcc <> ItemOccurence.RelatedText then
+ let symbol = FSharpSymbol.Create(scope.TcGlobals, scope.ThisCcu, scope.TcImports, item)
+ yield FSharpSymbolUse(scope.TcGlobals, denv, symbol, itemOcc, m) |])
|> async.Return
member info.GetUsesOfSymbolInFile(symbol:FSharpSymbol) =
@@ -2050,6 +2077,19 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp
let cenv = Impl.cenv(scope.TcGlobals, scope.ThisCcu, scope.TcImports)
[ for mimpl in scope.ImplementationFiles -> FSharpImplementationFileContents(cenv, mimpl)])
+ member info.OpenDeclarations =
+ scopeOptX
+ |> Option.map (fun scope ->
+ let cenv = Impl.cenv(scope.TcGlobals, scope.ThisCcu, scope.TcImports)
+ scope.OpenDeclarations |> List.map (fun x ->
+ { LongId = x.LongId
+ Range = x.Range
+ Modules = x.Modules |> List.map (fun x -> FSharpEntity(cenv, x))
+ AppliedScope = x.AppliedScope
+ IsOwnNamespace = x.IsOwnNamespace }
+ : FSharpOpenDeclaration ))
+ |> Option.defaultValue []
+
override info.ToString() = "FSharpCheckFileResults(" + filename + ")"
//----------------------------------------------------------------------------
@@ -2107,10 +2147,10 @@ module CompileHelpers =
let errors = ResizeArray<_>()
let errorSink isError exn =
- let mainError,relatedErrors = SplitRelatedDiagnostics exn
- let oneError trim e = errors.Add(FSharpErrorInfo.CreateFromException (e, isError, trim, Range.range0))
- oneError false mainError
- List.iter (oneError true) relatedErrors
+ let mainError, relatedErrors = SplitRelatedDiagnostics exn
+ let oneError e = errors.Add(FSharpErrorInfo.CreateFromException (e, isError, Range.range0))
+ oneError mainError
+ List.iter oneError relatedErrors
let errorLogger =
{ new ErrorLogger("CompileAPI") with
@@ -2641,7 +2681,8 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC
List.last tcProj.TcSymbolUses,
tcProj.TcEnvAtEnd.NameEnv,
loadClosure, reactorOps, (fun () -> builder.IsAlive), None,
- tcProj.ImplementationFiles)
+ tcProj.ImplementationFiles,
+ tcProj.TcOpenDeclarations)
let typedResults = MakeCheckFileResults(filename, options, builder, scope, Array.ofList tcProj.TcDependencyFiles, creationErrors, parseResults.Errors, tcErrors)
return (parseResults, typedResults)
})
diff --git a/src/fsharp/vs/service.fsi b/src/fsharp/vs/service.fsi
index bb8d96ed2d5..d4286f0686d 100755
--- a/src/fsharp/vs/service.fsi
+++ b/src/fsharp/vs/service.fsi
@@ -273,6 +273,9 @@ type internal FSharpCheckFileResults =
/// Represents complete typechecked implementation files, including thier typechecked signatures if any.
member ImplementationFiles: FSharpImplementationFileContents list option
+ /// Open declarations in the file, including auto open modules.
+ member OpenDeclarations: FSharpOpenDeclaration list
+
/// A handle to the results of CheckFileInProject.
[]
#if COMPILER_PUBLIC_API
diff --git a/src/root.traversal.targets b/src/root.traversal.targets
index 585ecbbc4b6..f0515163d8e 100644
--- a/src/root.traversal.targets
+++ b/src/root.traversal.targets
@@ -1,16 +1,21 @@
+
+
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+
-
-
+
+
-
-
+
+
-
+
diff --git a/src/update.cmd b/src/update.cmd
index 89ed51b267a..87f79130ac1 100644
--- a/src/update.cmd
+++ b/src/update.cmd
@@ -8,7 +8,7 @@ if /i "%1" == "debug" goto :ok
if /i "%1" == "release" goto :ok
if /i "%1" == "signonly" goto :ok
-echo adding required strong name verification skipping, and NGening built binaries
+echo adding required strong name verification skipping and NGening built binaries
echo Usage:
echo update.cmd debug [-ngen]
echo update.cmd release [-ngen]
diff --git a/src/utils/EditDistance.fs b/src/utils/EditDistance.fs
index 3ab53e679f4..6beac0c408f 100644
--- a/src/utils/EditDistance.fs
+++ b/src/utils/EditDistance.fs
@@ -3,11 +3,13 @@
/// Functions to compute the edit distance between two strings
module internal Internal.Utilities.EditDistance
-/// Given an offset and a radius from that offset,
-/// does mChar exist in that part of str?
-let inline existsInWin (mChar: char) (str: string) offset rad =
- let startAt = max 0 (offset - rad)
- let endAt = min (offset + rad) (String.length str - 1)
+open System
+open System.Collections.Generic
+
+/// Given an offset and a radius from that offset, does mChar exist in that part of str?
+let inline existsInWin (mChar: char) (str: string) (offset: int) (rad: int) =
+ let startAt = Math.Max(0, offset - rad)
+ let endAt = Math.Min(offset + rad, str.Length - 1)
if endAt - startAt < 0 then false
else
let rec exists index =
@@ -15,61 +17,47 @@ let inline existsInWin (mChar: char) (str: string) offset rad =
elif index = endAt then false
else exists (index + 1)
exists startAt
-
-/// The jaro distance between s1 and s2
-let jaro s1 s2 =
- // The radius is half of the lesser
- // of the two string lengths rounded up.
+
+let jaro (s1: string) (s2: string) =
+ // The radius is half of the lesser of the two string lengths rounded up.
let matchRadius =
- let minLen =
- min (String.length s1) (String.length s2) in
- minLen / 2 + minLen % 2
-
+ let minLen = Math.Min(s1.Length, s2.Length)
+ minLen / 2 + minLen % 2
+
// An inner function which recursively finds the number
// of matched characters within the radius.
let commonChars (chars1: string) (chars2: string) =
- let rec inner i result =
- match i with
- | -1 -> result
- | _ -> if existsInWin chars1.[i] chars2 i matchRadius
- then inner (i - 1) (chars1.[i] :: result)
- else inner (i - 1) result
- inner (chars1.Length - 1) []
-
+ let result = ResizeArray(chars1.Length)
+ for i = 0 to chars1.Length - 1 do
+ let c = chars1.[i]
+ if existsInWin c chars2 i matchRadius then
+ result.Add c
+ result
+
// The sets of common characters and their lengths as floats
let c1 = commonChars s1 s2
let c2 = commonChars s2 s1
- let c1length = float (List.length c1)
- let c2length = float (List.length c2)
-
- // The number of transpositions within
- // the sets of common characters.
- let transpositions =
- let rec inner cl1 cl2 result =
- match cl1, cl2 with
- | [], _ | _, [] -> result
- | c1h :: c1t, c2h :: c2t ->
- if c1h <> c2h
- then inner c1t c2t (result + 1.0)
- else inner c1t c2t result
- let mismatches = inner c1 c2 0.0
+ let c1length = float c1.Count
+ let c2length = float c2.Count
+
+ // The number of transpositions within the sets of common characters.
+ let transpositions =
+ let mutable mismatches = 0.0
+ for i = 0 to (Math.Min(c1.Count, c2.Count)) - 1 do
+ if c1.[i] <> c2.[i] then
+ mismatches <- mismatches + 1.0
+
// If one common string is longer than the other
// each additional char counts as half a transposition
(mismatches + abs (c1length - c2length)) / 2.0
-
- let s1length = float (String.length s1)
- let s2length = float (String.length s2)
- let tLength = max c1length c2length
-
- // The jaro distance as given by
- // 1/3 ( m2/|s1| + m1/|s2| + (mc-t)/mc )
- let result = (c1length / s1length +
- c2length / s2length +
- (tLength - transpositions) / tLength)
- / 3.0
-
+
+ let tLength = Math.Max(c1length, c2length)
+
+ // The jaro distance as given by 1/3 ( m2/|s1| + m1/|s2| + (mc-t)/mc )
+ let result = (c1length / float s1.Length + c2length / float s2.Length + (tLength - transpositions) / tLength) / 3.0
+
// This is for cases where |s1|, |s2| or m are zero
- if System.Double.IsNaN result then 0.0 else result
+ if Double.IsNaN result then 0.0 else result
/// Calculates the Jaro-Winkler edit distance between two strings.
/// The edit distance is a metric that allows to measure the amount of similarity between two strings.
diff --git a/tests/fsharp/FSharp.Tests.FSharpSuite.fsproj b/tests/fsharp/FSharp.Tests.FSharpSuite.fsproj
index 0efd720bfe8..1c52cbf48ff 100644
--- a/tests/fsharp/FSharp.Tests.FSharpSuite.fsproj
+++ b/tests/fsharp/FSharp.Tests.FSharpSuite.fsproj
@@ -37,12 +37,21 @@
+
+
+ $(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.$(SystemCollectionsImmutableVersion)\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
+ True
+
+
+ $(FSharpSourcesRoot)\..\packages\System.Reflection.Metadata.1.4.2\lib\portable-net45+win8\System.Reflection.Metadata.dll
+ True
+ ..\..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dllTrue
diff --git a/tests/fsharp/app.config b/tests/fsharp/app.config
new file mode 100644
index 00000000000..bd1c9c33df5
--- /dev/null
+++ b/tests/fsharp/app.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/fsharp/core/signedtests/test-sha1-delay-attributes.bsl b/tests/fsharp/core/signedtests/test-sha1-delay-attributes.bsl
deleted file mode 100644
index 8e2f27b61da..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1-delay-attributes.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha1-delay-attributes.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha1-delay-cl.bsl b/tests/fsharp/core/signedtests/test-sha1-delay-cl.bsl
deleted file mode 100644
index 3274baa6b1a..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1-delay-cl.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha1-delay-cl.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha1-full-attributes.bsl b/tests/fsharp/core/signedtests/test-sha1-full-attributes.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1-full-attributes.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha1-full-cl.bsl b/tests/fsharp/core/signedtests/test-sha1-full-cl.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1-full-cl.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha1024-delay-attributes.bsl b/tests/fsharp/core/signedtests/test-sha1024-delay-attributes.bsl
deleted file mode 100644
index 27f1e41f67b..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1024-delay-attributes.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha1024-delay-attributes.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha1024-delay-cl.bsl b/tests/fsharp/core/signedtests/test-sha1024-delay-cl.bsl
deleted file mode 100644
index 92eac8caa1d..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1024-delay-cl.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha1024-delay-cl.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha1024-full-attributes.bsl b/tests/fsharp/core/signedtests/test-sha1024-full-attributes.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1024-full-attributes.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha1024-full-cl.bsl b/tests/fsharp/core/signedtests/test-sha1024-full-cl.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1024-full-cl.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha1024-public-cl.bsl b/tests/fsharp/core/signedtests/test-sha1024-public-cl.bsl
deleted file mode 100644
index 71f422b5173..00000000000
--- a/tests/fsharp/core/signedtests/test-sha1024-public-cl.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-Failed to verify assembly -- Strong name validation failed.
diff --git a/tests/fsharp/core/signedtests/test-sha256-delay-attributes.bsl b/tests/fsharp/core/signedtests/test-sha256-delay-attributes.bsl
deleted file mode 100644
index 3b25e77f94c..00000000000
--- a/tests/fsharp/core/signedtests/test-sha256-delay-attributes.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha256-delay-attributes.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha256-delay-cl.bsl b/tests/fsharp/core/signedtests/test-sha256-delay-cl.bsl
deleted file mode 100644
index cd769318462..00000000000
--- a/tests/fsharp/core/signedtests/test-sha256-delay-cl.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha256-delay-cl.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha256-full-attributes.bsl b/tests/fsharp/core/signedtests/test-sha256-full-attributes.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha256-full-attributes.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha256-full-cl.bsl b/tests/fsharp/core/signedtests/test-sha256-full-cl.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha256-full-cl.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha512-delay-attributes.bsl b/tests/fsharp/core/signedtests/test-sha512-delay-attributes.bsl
deleted file mode 100644
index 1aef8fa382b..00000000000
--- a/tests/fsharp/core/signedtests/test-sha512-delay-attributes.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha512-delay-attributes.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha512-delay-cl.bsl b/tests/fsharp/core/signedtests/test-sha512-delay-cl.bsl
deleted file mode 100644
index 5e6f9795871..00000000000
--- a/tests/fsharp/core/signedtests/test-sha512-delay-cl.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-sha512-delay-cl.exe is a delay-signed or test-signed assembly
diff --git a/tests/fsharp/core/signedtests/test-sha512-full-attributes.bsl b/tests/fsharp/core/signedtests/test-sha512-full-attributes.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha512-full-attributes.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-sha512-full-cl.bsl b/tests/fsharp/core/signedtests/test-sha512-full-cl.bsl
deleted file mode 100644
index cb14d8045bb..00000000000
--- a/tests/fsharp/core/signedtests/test-sha512-full-cl.bsl
+++ /dev/null
@@ -1,3 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
diff --git a/tests/fsharp/core/signedtests/test-unsigned.bsl b/tests/fsharp/core/signedtests/test-unsigned.bsl
deleted file mode 100644
index 374becacaa1..00000000000
--- a/tests/fsharp/core/signedtests/test-unsigned.bsl
+++ /dev/null
@@ -1,4 +0,0 @@
-sn -q stops all output except error messages
-if the output is a valid file no output is produced.
-delay-signed and unsigned produce error messages.
-test-unsigned.exe does not represent a strongly named assembly
diff --git a/tests/fsharp/packages.config b/tests/fsharp/packages.config
index 3b0ea1fe3f8..20a3b06b923 100644
--- a/tests/fsharp/packages.config
+++ b/tests/fsharp/packages.config
@@ -1,4 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/tests/fsharp/test-framework.fs b/tests/fsharp/test-framework.fs
index 6b9a795ca68..915f6ac372f 100644
--- a/tests/fsharp/test-framework.fs
+++ b/tests/fsharp/test-framework.fs
@@ -118,8 +118,6 @@ type TestConfig =
FSI_FOR_SCRIPTS : string
fsi_flags : string
ILDASM : string
- SN : string
- NGEN : string
PEVERIFY : string
Directory: string
DotNetExe: string
@@ -169,30 +167,33 @@ let requireFile nm =
let config configurationName envVars =
- let SCRIPT_ROOT = __SOURCE_DIRECTORY__
+ let SCRIPT_ROOT = __SOURCE_DIRECTORY__
+ let packagesDir = SCRIPT_ROOT ++ ".." ++ ".." ++ "packages"
let FSCBinPath = SCRIPT_ROOT ++ ".." ++ ".." ++ configurationName ++ "net40" ++ "bin"
let csc_flags = "/nologo"
let fsc_flags = "-r:System.Core.dll --nowarn:20 --define:COMPILED"
let fsi_flags = "-r:System.Core.dll --nowarn:20 --define:INTERACTIVE --maxerrors:1 --abortonerror"
let CORDIR, CORSDK = WindowsPlatform.clrPaths envVars
let Is64BitOperatingSystem = WindowsPlatform.Is64BitOperatingSystem envVars
+ let architectureMoniker = if Is64BitOperatingSystem then "x64" else "x86"
let CSC = requireFile (CORDIR ++ "csc.exe")
- let NGEN = requireFile (CORDIR ++ "ngen.exe")
- let ILDASM = requireFile (CORSDK ++ "ildasm.exe")
- let SN = requireFile (CORSDK ++ "sn.exe")
+ let ILDASM = requireFile (packagesDir ++ ("runtime.win-" + architectureMoniker + ".Microsoft.NETCore.ILDAsm.2.0.3") ++ "runtimes" ++ ("win-" + architectureMoniker) ++ "native" ++ "ildasm.exe")
let PEVERIFY = requireFile (CORSDK ++ "peverify.exe")
let FSI_FOR_SCRIPTS =
match envVars |> Map.tryFind "_fsiexe" with
| Some fsiexe when (not (String.IsNullOrWhiteSpace fsiexe)) -> requireFile (SCRIPT_ROOT ++ ".." ++ ".." ++ (fsiexe.Trim([| '\"' |])))
| _ ->
// build.cmd sets that var, if it is not set, we are probably called directly from visual studio or the nunit console runner.
- let packagesDir = SCRIPT_ROOT ++ ".." ++ ".." ++ @"packages"
let fsharpCompilerTools = Directory.GetDirectories(packagesDir, "FSharp.Compiler.Tools.*")
match fsharpCompilerTools with
| [||] -> failwithf "Could not find any 'FSharp.Compiler.Tools' inside '%s'" packagesDir
| [| dir |] -> Path.Combine(dir, "tools", "fsi.exe")
| _ -> failwithf "Found more than one 'FSharp.Compiler.Tools' inside '%s', please clean up." packagesDir
- let dotNetExe = SCRIPT_ROOT ++ ".." ++ ".." ++ "Tools" ++ "dotnetcli" ++ "dotnet.exe"
+ let toolsDir = SCRIPT_ROOT ++ ".." ++ ".." ++ "Tools"
+ let dotNetExe = toolsDir ++ "dotnetcli" ++ "dotnet.exe"
+ // ildasm requires coreclr.dll to run which has already been restored to the tools directory
+ let coreclrSource = toolsDir ++ "dotnet20" ++ "shared" ++ "Microsoft.NETCore.App" ++ "2.0.0" ++ "coreclr.dll"
+ File.Copy(coreclrSource, Path.GetDirectoryName(ILDASM) ++ "coreclr.dll", overwrite=true)
#if !FSHARP_SUITE_DRIVES_CORECLR_TESTS
let FSI = requireFile (FSCBinPath ++ "fsi.exe")
@@ -217,8 +218,6 @@ let config configurationName envVars =
FSCBinPath = FSCBinPath |> Commands.pathAddBackslash
FSCOREDLLPATH = FSCOREDLLPATH
ILDASM = ILDASM
- SN = SN
- NGEN = NGEN
PEVERIFY = PEVERIFY
CSC = CSC
BUILD_CONFIG = configurationName
@@ -248,7 +247,6 @@ let logConfig (cfg: TestConfig) =
log "FSI =%s" cfg.FSI
log "fsi_flags =%s" cfg.fsi_flags
log "ILDASM =%s" cfg.ILDASM
- log "NGEN =%s" cfg.NGEN
log "PEVERIFY =%s" cfg.PEVERIFY
log "---------------------------------------------------------------"
@@ -452,7 +450,6 @@ let fscAppendErrExpectFail cfg errPath arg = Printf.ksprintf (Commands.fsc cfg.D
let csc cfg arg = Printf.ksprintf (Commands.csc (exec cfg) cfg.CSC) arg
let ildasm cfg arg = Printf.ksprintf (Commands.ildasm (exec cfg) cfg.ILDASM) arg
let peverify cfg = Commands.peverify (exec cfg) cfg.PEVERIFY "/nologo"
-let sn cfg outfile arg = execAppendOutIgnoreExitCode cfg cfg.Directory outfile cfg.SN arg
let peverifyWithArgs cfg args = Commands.peverify (exec cfg) cfg.PEVERIFY args
let fsi cfg = Printf.ksprintf (Commands.fsi (exec cfg) cfg.FSI)
let fsi_script cfg = Printf.ksprintf (Commands.fsi (exec cfg) cfg.FSI_FOR_SCRIPTS)
diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs
index 81f282abdda..4a4d35de55b 100644
--- a/tests/fsharp/tests.fs
+++ b/tests/fsharp/tests.fs
@@ -11,6 +11,7 @@ module ``FSharp-Tests-Core``
open System
open System.IO
open System.Reflection
+open System.Reflection.PortableExecutable
open NUnit.Framework
open TestFramework
open Scripting
@@ -568,84 +569,88 @@ module CoreTests =
let ``printing-5`` () =
printing "--quiet" "z.output.test.quiet.stdout.txt" "z.output.test.quiet.stdout.bsl" "z.output.test.quiet.stderr.txt" "z.output.test.quiet.stderr.bsl"
+ type SigningType =
+ | DelaySigned
+ | PublicSigned
+ | NotSigned
- let signedtest(args,bslfile) =
+ let signedtest(programId:string, args:string, expectedSigning:SigningType) =
let cfg = testConfig "core/signedtests"
- let cfg = { cfg with fsc_flags=cfg.fsc_flags + " " + args }
-
- let outfile = Path.ChangeExtension(bslfile,"sn.out")
- let exefile = Path.ChangeExtension(bslfile,"exe")
- do File.WriteAllLines(getfullpath cfg outfile,
- ["sn -q stops all output except error messages "
- "if the output is a valid file no output is produced. "
- "delay-signed and unsigned produce error messages. "])
-
- fsc cfg "%s -o:%s" cfg.fsc_flags exefile ["test.fs"]
- sn cfg outfile ("-q -vf "+exefile)
- let diffs = fsdiff cfg outfile bslfile
-
- match diffs with
- | "" -> ()
- | _ -> Assert.Fail (sprintf "'%s' and '%s' differ; %A" outfile bslfile diffs)
+ let newFlags = cfg.fsc_flags + " " + args
+
+ let exefile = programId + ".exe"
+ fsc cfg "%s -o:%s" newFlags exefile ["test.fs"]
+
+ let assemblyPath = Path.Combine(cfg.Directory, exefile)
+ let assemblyName = AssemblyName.GetAssemblyName(assemblyPath)
+ let publicKeyToken = assemblyName.GetPublicKeyToken()
+ let isPublicKeyTokenPresent = not (Array.isEmpty publicKeyToken)
+ use exeStream = new FileStream(assemblyPath, FileMode.Open)
+ let peHeader = PEHeaders(exeStream)
+ let isSigned = peHeader.CorHeader.Flags.HasFlag(CorFlags.StrongNameSigned)
+ let actualSigning =
+ match isSigned, isPublicKeyTokenPresent with
+ | true, true-> SigningType.PublicSigned
+ | true, false -> failwith "unreachable"
+ | false, true -> SigningType.DelaySigned
+ | false, false -> SigningType.NotSigned
+
+ Assert.AreEqual(expectedSigning, actualSigning)
[]
- let ``signedtest-1`` () = signedtest("","test-unsigned.bsl")
+ let ``signedtest-1`` () = signedtest("test-unsigned", "", SigningType.NotSigned)
[]
- let ``signedtest-2`` () = signedtest("--keyfile:sha1full.snk", "test-sha1-full-cl.bsl")
+ let ``signedtest-2`` () = signedtest("test-sha1-full-cl", "--keyfile:sha1full.snk", SigningType.PublicSigned)
[]
- let ``signedtest-3`` () = signedtest("--keyfile:sha256full.snk", "test-sha256-full-cl.bsl")
+ let ``signedtest-3`` () = signedtest("test-sha256-full-cl", "--keyfile:sha256full.snk", SigningType.PublicSigned)
[]
- let ``signedtest-4`` () = signedtest("--keyfile:sha512full.snk", "test-sha512-full-cl.bsl")
+ let ``signedtest-4`` () = signedtest("test-sha512-full-cl", "--keyfile:sha512full.snk", SigningType.PublicSigned)
[]
- let ``signedtest-5`` () = signedtest("--keyfile:sha1024full.snk", "test-sha1024-full-cl.bsl")
+ let ``signedtest-5`` () = signedtest("test-sha1024-full-cl", "--keyfile:sha1024full.snk", SigningType.PublicSigned)
[]
- let ``signedtest-6`` () = signedtest("--keyfile:sha1delay.snk --delaysign", "test-sha1-delay-cl.bsl")
+ let ``signedtest-6`` () = signedtest("test-sha1-delay-cl", "--keyfile:sha1delay.snk --delaysign", SigningType.DelaySigned)
[]
- let ``signedtest-7`` () = signedtest("--keyfile:sha256delay.snk --delaysign", "test-sha256-delay-cl.bsl")
+ let ``signedtest-7`` () = signedtest("test-sha256-delay-cl", "--keyfile:sha256delay.snk --delaysign", SigningType.DelaySigned)
[]
- let ``signedtest-8`` () = signedtest("--keyfile:sha512delay.snk --delaysign", "test-sha512-delay-cl.bsl")
+ let ``signedtest-8`` () = signedtest("test-sha512-delay-cl", "--keyfile:sha512delay.snk --delaysign", SigningType.DelaySigned)
[]
- let ``signedtest-9`` () = signedtest("--keyfile:sha1024delay.snk --delaysign", "test-sha1024-delay-cl.bsl")
+ let ``signedtest-9`` () = signedtest("test-sha1024-delay-cl", "--keyfile:sha1024delay.snk --delaysign", SigningType.DelaySigned)
// Test SHA1 key full signed Attributes
[]
- let ``signedtest-10`` () = signedtest("--define:SHA1","test-sha1-full-attributes.bsl")
+ let ``signedtest-10`` () = signedtest("test-sha1-full-attributes", "--define:SHA1", SigningType.PublicSigned)
// Test SHA1 key delayl signed Attributes
[]
- let ``signedtest-11`` () = signedtest("--keyfile:sha1delay.snk --define:SHA1 --define:DELAY", "test-sha1-delay-attributes.bsl")
+ let ``signedtest-11`` () = signedtest("test-sha1-delay-attributes", "--keyfile:sha1delay.snk --define:SHA1 --define:DELAY", SigningType.DelaySigned)
[]
- let ``signedtest-12`` () = signedtest("--define:SHA256", "test-sha256-full-attributes.bsl")
+ let ``signedtest-12`` () = signedtest("test-sha256-full-attributes", "--define:SHA256", SigningType.PublicSigned)
// Test SHA 256 bit key delay signed Attributes
[]
- let ``signedtest-13`` () = signedtest("--define:SHA256 --define:DELAY", "test-sha256-delay-attributes.bsl")
+ let ``signedtest-13`` () = signedtest("test-sha256-delay-attributes", "--define:SHA256 --define:DELAY", SigningType.DelaySigned)
// Test SHA 512 bit key fully signed Attributes
[]
- let ``signedtest-14`` () = signedtest("--define:SHA512", "test-sha512-full-attributes.bsl")
+ let ``signedtest-14`` () = signedtest("test-sha512-full-attributes", "--define:SHA512", SigningType.PublicSigned)
// Test SHA 512 bit key delay signed Attributes
[]
- let ``signedtest-15`` () = signedtest("--define:SHA512 --define:DELAY", "test-sha512-delay-attributes.bsl")
+ let ``signedtest-15`` () = signedtest("test-sha512-delay-attributes", "--define:SHA512 --define:DELAY", SigningType.DelaySigned)
// Test SHA 1024 bit key fully signed Attributes
[]
- let ``signedtest-16`` () = signedtest("--define:SHA1024", "test-sha1024-full-attributes.bsl")
-
- // Test dumpbin with SHA 1024 bit key public signed CL
- []
- let ``signedtest-17`` () = signedtest("--keyfile:sha1024delay.snk --publicsign", "test-sha1024-public-cl.bsl")
+ let ``signedtest-16`` () = signedtest("test-sha1024-full-attributes", "--define:SHA1024", SigningType.PublicSigned)
#endif
#if !FSHARP_SUITE_DRIVES_CORECLR_TESTS
@@ -1616,9 +1621,9 @@ module OptimizationTests =
fsc cfg "%s --optimize -o:test--optimize.exe -g -r:lib--optimize.dll -r:lib3--optimize.dll" cfg.fsc_flags ["test.fs "]
- ildasm cfg "/nobar /out=test.il" "test.exe"
+ ildasm cfg "/out=test.il" "test.exe"
- ildasm cfg "/nobar /out=test--optimize.il" "test--optimize.exe"
+ ildasm cfg "/out=test--optimize.il" "test--optimize.exe"
let ``test--optimize.il`` =
File.ReadLines (getfullpath cfg "test--optimize.il")
@@ -1641,7 +1646,7 @@ module OptimizationTests =
let stats () =
let cfg = testConfig "optimize/stats"
- ildasm cfg "/nobar /out=FSharp.Core.il" cfg.FSCOREDLLPATH
+ ildasm cfg "/out=FSharp.Core.il" cfg.FSCOREDLLPATH
let fscore = File.ReadLines(getfullpath cfg "FSharp.Core.il") |> Seq.toList
diff --git a/tests/fsharp/typecheck/sigs/neg01.bsl b/tests/fsharp/typecheck/sigs/neg01.bsl
index c9c6d3a4a13..e2a7c05659e 100644
--- a/tests/fsharp/typecheck/sigs/neg01.bsl
+++ b/tests/fsharp/typecheck/sigs/neg01.bsl
@@ -5,8 +5,8 @@ neg01a.fs(22,8,23,7): typecheck error FS0913: Types cannot contain nested type d
neg01b.fs(2,13,2,14): typecheck error FS0039: The value, constructor, namespace or type 'X' is not defined. Maybe you want one of the following:
+ z
+
A
B
-
- z
diff --git a/tests/fsharp/typecheck/sigs/neg14.bsl b/tests/fsharp/typecheck/sigs/neg14.bsl
index 1b4a4c976b9..f10030ee529 100644
--- a/tests/fsharp/typecheck/sigs/neg14.bsl
+++ b/tests/fsharp/typecheck/sigs/neg14.bsl
@@ -3,8 +3,8 @@ neg14a.fs(9,6,9,33): typecheck error FS0343: The type 'missingInterfaceInSignatu
neg14b.fs(2,13,2,14): typecheck error FS0039: The value, constructor, namespace or type 'X' is not defined. Maybe you want one of the following:
+ z
+
A
B
-
- z
diff --git a/tests/fsharp/typecheck/sigs/neg20.bsl b/tests/fsharp/typecheck/sigs/neg20.bsl
index fc46431486b..d8051fd7bb9 100644
--- a/tests/fsharp/typecheck/sigs/neg20.bsl
+++ b/tests/fsharp/typecheck/sigs/neg20.bsl
@@ -159,7 +159,7 @@ neg20.fs(129,19,129,22): typecheck error FS0001: This expression was expected to
but here has type
'string'
-neg20.fs(131,5,131,24): typecheck error FS0041: No overloads match for method 'OM3'. The available overloads are shown below (or in the Error List window).
+neg20.fs(131,5,131,24): typecheck error FS0041: No overloads match for method 'OM3'. The available overloads are shown below.
neg20.fs(131,5,131,24): typecheck error FS0041: Possible overload: 'static member C.OM3 : x:'b * y:int -> int'. Type constraint mismatch. The type
'obj'
is not compatible with type
@@ -199,7 +199,7 @@ neg20.fs(166,13,166,35): typecheck error FS0502: The member or object constructo
neg20.fs(167,13,167,31): typecheck error FS0502: The member or object constructor 'M5' takes 2 type argument(s) but is here given 1. The required signature is 'member C.M5 : y:'a * z:'b -> int'.
-neg20.fs(182,14,182,31): typecheck error FS0041: No overloads match for method 'M'. The available overloads are shown below (or in the Error List window).
+neg20.fs(182,14,182,31): typecheck error FS0041: No overloads match for method 'M'. The available overloads are shown below.
neg20.fs(182,14,182,31): typecheck error FS0041: Possible overload: 'static member C2.M : fmt:string * [] args:int [] -> string'. Type constraint mismatch. The type
'obj'
is not compatible with type
@@ -236,7 +236,7 @@ neg20.fs(184,34,184,39): typecheck error FS0001: This expression was expected to
but here has type
'obj'
-neg20.fs(188,14,188,31): typecheck error FS0041: No overloads match for method 'M'. The available overloads are shown below (or in the Error List window).
+neg20.fs(188,14,188,31): typecheck error FS0041: No overloads match for method 'M'. The available overloads are shown below.
neg20.fs(188,14,188,31): typecheck error FS0041: Possible overload: 'static member C3.M : fmt:string * [] args:string [] -> string'. Type constraint mismatch. The type
'obj'
is not compatible with type
diff --git a/tests/fsharp/typecheck/sigs/neg61.bsl b/tests/fsharp/typecheck/sigs/neg61.bsl
index db9bea49058..b513bb46a9c 100644
--- a/tests/fsharp/typecheck/sigs/neg61.bsl
+++ b/tests/fsharp/typecheck/sigs/neg61.bsl
@@ -83,7 +83,7 @@ neg61.fs(156,21,156,22): typecheck error FS3147: This 'let' definition may not b
neg61.fs(171,13,171,18): typecheck error FS3099: 'sumBy' is used with an incorrect number of arguments. This is a custom operation in this query or computation expression. Expected 1 argument(s), but given 0.
-neg61.fs(174,22,174,23): typecheck error FS0041: No overloads match for method 'Source'. The available overloads are shown below (or in the Error List window).
+neg61.fs(174,22,174,23): typecheck error FS0041: No overloads match for method 'Source'. The available overloads are shown below.
neg61.fs(174,22,174,23): typecheck error FS0041: Possible overload: 'member Linq.QueryBuilder.Source : source:System.Linq.IQueryable<'T> -> Linq.QuerySource<'T,'Q>'. Type constraint mismatch. The type
'int'
is not compatible with type
diff --git a/tests/fsharpqa/Source/CodeGen/Structure/DoNotInlineX.fs b/tests/fsharpqa/Source/CodeGen/Structure/DoNotInlineX.fs
index 058daf81589..6c4a6447ee5 100644
--- a/tests/fsharpqa/Source/CodeGen/Structure/DoNotInlineX.fs
+++ b/tests/fsharpqa/Source/CodeGen/Structure/DoNotInlineX.fs
@@ -4,6 +4,8 @@ open System
open System.Diagnostics
open System.IO
+let longtime = int(System.TimeSpan.FromSeconds(30.0).TotalMilliseconds) // longtime is 30 seconds
+
let programFiles =
let pf86 = Environment.GetEnvironmentVariable("ProgramFiles(x86)")
if String.IsNullOrEmpty(pf86) then Environment.GetEnvironmentVariable("ProgramFiles") else pf86
@@ -26,7 +28,7 @@ let start (p1 : string) = Process.Start(p1)
let CompileFile file args =
let p = Process.Start(fsc, file + " " + args)
- while not (p.HasExited) do ()
+ p.WaitForExit()
[]
let main (args : string[]) =
@@ -40,13 +42,13 @@ let main (args : string[]) =
printfn "Compiled DerivedType with %A" derivedFlag
let r1 = start "DerivedType.exe"
- while not r1.HasExited do ()
+ r1.WaitForExit(longtime)
printfn "Ran DerivedType.exe with result: %A" r1.ExitCode
CompileFile "BaseType.fs" "-a"
printfn "Compiled BaseType without %A" baseFlag
let r2 = start "DerivedType.exe"
- while not r2.HasExited do ()
+ r2.WaitForExit(longtime)
printfn "Ran DerivedType.exe with result: %A" r2.ExitCode
if r1.ExitCode = expectedResult1 && r2.ExitCode = expectedResult2 then 0 else 1
diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion03.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion03.fs
index 3bf626c591a..379425a04eb 100644
--- a/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion03.fs
+++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion03.fs
@@ -7,9 +7,9 @@ do
let asm = System.Reflection.Assembly.GetExecutingAssembly().GetName()
-let tspan = System.TimeSpan(System.DateTime.Now.Ticks - System.DateTime(2000,1,1).Ticks)
+let tspan = System.TimeSpan(System.DateTime.UtcNow.Ticks - System.DateTime(2000,1,1).Ticks)
let defaultBuild = (uint16)tspan.Days % System.UInt16.MaxValue - 1us
-let defaultRevision = (uint16)(System.DateTime.Now.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us
+let defaultRevision = (uint16)(System.DateTime.UtcNow.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us
printfn "%s" <| asm.Version.ToString()
let success =
diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion04.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion04.fs
index f6c9e45164f..87285efcc03 100644
--- a/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion04.fs
+++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/AttributeUsage/AssemblyVersion04.fs
@@ -7,7 +7,7 @@ do
let asm = System.Reflection.Assembly.GetExecutingAssembly().GetName()
-let defaultRevision = (uint16)(System.DateTime.Now.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us
+let defaultRevision = (uint16)(System.DateTime.UtcNow.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us
printfn "%s" <| asm.Version.ToString()
let success =
diff --git a/tests/fsharpqa/Source/Conformance/Expressions/Type-relatedExpressions/E_RigidTypeAnnotation03.fsx b/tests/fsharpqa/Source/Conformance/Expressions/Type-relatedExpressions/E_RigidTypeAnnotation03.fsx
index 80aa63ceace..2c0c7519831 100644
--- a/tests/fsharpqa/Source/Conformance/Expressions/Type-relatedExpressions/E_RigidTypeAnnotation03.fsx
+++ b/tests/fsharpqa/Source/Conformance/Expressions/Type-relatedExpressions/E_RigidTypeAnnotation03.fsx
@@ -23,11 +23,11 @@ let _ = T.M( @"\" : char )
exit 1
// Way more errors are reported, but this is a good enough list.
//This expression was expected to have type. 'sbyte' .but here has type. 'byte'
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
//This expression was expected to have type. 'float32' .but here has type. 'float<'u>'
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
//This expression was expected to have type. 'float32<'u>' .but here has type. 'decimal'
//Type mismatch\. Expecting a. 'decimal' .but given a. 'decimal'
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
//This expression was expected to have type. 'char' .but here has type. 'string'
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/TypeInference/E_TwoDifferentTypeVariablesGen00.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/TypeInference/E_TwoDifferentTypeVariablesGen00.fs
index c94cd93f0f5..a567c6e395d 100644
--- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/TypeInference/E_TwoDifferentTypeVariablesGen00.fs
+++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/TypeInference/E_TwoDifferentTypeVariablesGen00.fs
@@ -7,11 +7,11 @@
//This expression was expected to have type. 'int' .but here has type. ''b'
//A type parameter is missing a constraint 'when 'b :> C'
//Type constraint mismatch. The type.+''b'.+is not compatible with type
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
@@ -20,12 +20,12 @@
//This expression was expected to have type. 'int' .but here has type. ''b'
//A type parameter is missing a constraint 'when 'b :> C'
//Type constraint mismatch. The type.+''b'.+is not compatible with type
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
@@ -34,12 +34,12 @@
//This expression was expected to have type. 'int' .but here has type. ''b'
//A type parameter is missing a constraint 'when 'b :> C'
//Type constraint mismatch. The type.+''b'.+is not compatible with type
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
-//No overloads match for method 'M'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'M'\. The available overloads are shown below\.
diff --git a/tests/fsharpqa/Source/Conformance/LexicalAnalysis/SymbolicOperators/E_LessThanDotOpenParen001.fs b/tests/fsharpqa/Source/Conformance/LexicalAnalysis/SymbolicOperators/E_LessThanDotOpenParen001.fs
index 3da7c94ac1d..b7c161c5620 100644
--- a/tests/fsharpqa/Source/Conformance/LexicalAnalysis/SymbolicOperators/E_LessThanDotOpenParen001.fs
+++ b/tests/fsharpqa/Source/Conformance/LexicalAnalysis/SymbolicOperators/E_LessThanDotOpenParen001.fs
@@ -4,9 +4,9 @@
// want to verify we do not crash!
//This construct causes code to be less generic than indicated by the type annotations\. The type variable 'S has been constrained to be type 'int'
//This code is not sufficiently generic\. The type variable \^T when \^T : \(static member \( \+ \) : \^T \* \^T -> \^a\) could not be generalized because it would escape its scope
-//No overloads match for method 'op_PlusPlusPlus'\. The available overloads are shown below \(or in the Error List window\)\.
-//No overloads match for method 'op_PlusPlusPlus'\. The available overloads are shown below \(or in the Error List window\)\.
-//No overloads match for method 'op_PlusPlusPlus'\. The available overloads are shown below \(or in the Error List window\)\.
+//No overloads match for method 'op_PlusPlusPlus'\. The available overloads are shown below\.
+//No overloads match for method 'op_PlusPlusPlus'\. The available overloads are shown below\.
+//No overloads match for method 'op_PlusPlusPlus'\. The available overloads are shown below\.
type public TestType<'T,'S>() =
diff --git a/tests/fsharpqa/Source/Warnings/ElseBranchHasWrongType3.fs b/tests/fsharpqa/Source/Warnings/ElseBranchHasWrongType3.fs
new file mode 100644
index 00000000000..eb8a190fde7
--- /dev/null
+++ b/tests/fsharpqa/Source/Warnings/ElseBranchHasWrongType3.fs
@@ -0,0 +1,13 @@
+// #Warnings
+//All branches of an 'if' expression must have the same type. This expression was expected to have type 'string', but here has type 'int'.
+
+let f x = x + 4
+
+let y =
+ if true then
+ ""
+ else
+ "" |> ignore
+ (f 5)
+
+exit 0
diff --git a/tests/fsharpqa/Source/Warnings/ElseBranchHasWrongType4.fs b/tests/fsharpqa/Source/Warnings/ElseBranchHasWrongType4.fs
new file mode 100644
index 00000000000..09db1e3083f
--- /dev/null
+++ b/tests/fsharpqa/Source/Warnings/ElseBranchHasWrongType4.fs
@@ -0,0 +1,15 @@
+// #Warnings
+//All branches of an 'if' expression must have the same type. This expression was expected to have type 'string', but here has type 'int'.
+
+let f x = x + 4
+
+let y =
+ if true then
+ ""
+ else
+ "" |> ignore
+ let z = f 4
+ let a = 3 * z
+ (f a)
+
+exit 0
diff --git a/tests/fsharpqa/Source/Warnings/WarnIfMissingElseBranch3.fs b/tests/fsharpqa/Source/Warnings/WarnIfMissingElseBranch3.fs
new file mode 100644
index 00000000000..7e17b46f40e
--- /dev/null
+++ b/tests/fsharpqa/Source/Warnings/WarnIfMissingElseBranch3.fs
@@ -0,0 +1,8 @@
+// #Warnings
+//The 'if' expression is missing an 'else' branch. The 'then' branch has type 'string'. Because 'if' is an expression, and not a statement, add an 'else' branch which returns a value of the same type.
+
+let x = 10
+let y =
+ if x > 10 then ("test")
+
+exit 0
\ No newline at end of file
diff --git a/tests/fsharpqa/Source/Warnings/env.lst b/tests/fsharpqa/Source/Warnings/env.lst
index 5d3db7f38e7..8a80eb74d15 100644
--- a/tests/fsharpqa/Source/Warnings/env.lst
+++ b/tests/fsharpqa/Source/Warnings/env.lst
@@ -1,6 +1,7 @@
SOURCE=WrongNumericLiteral.fs # WrongNumericLiteral.fs
SOURCE=WarnIfMissingElseBranch.fs # WarnIfMissingElseBranch.fs
SOURCE=WarnIfMissingElseBranch2.fs # WarnIfMissingElseBranch2.fs
+ SOURCE=WarnIfMissingElseBranch3.fs # WarnIfMissingElseBranch3.fs
SOURCE=ReturnInsteadOfReturnBang.fs # ReturnInsteadOfReturnBang.fs
SOURCE=YieldInsteadOfYieldBang.fs # YieldInsteadOfYieldBang.fs
SOURCE=TupleInAbstractMethod.fs # TupleInAbstractMethod.fs
@@ -46,6 +47,8 @@
SOURCE=GuardHasWrongType.fs # GuardHasWrongType.fs
SOURCE=ElseBranchHasWrongType.fs # ElseBranchHasWrongType.fs
SOURCE=ElseBranchHasWrongType2.fs # ElseBranchHasWrongType2.fs
+ SOURCE=ElseBranchHasWrongType3.fs # ElseBranchHasWrongType3.fs
+ SOURCE=ElseBranchHasWrongType4.fs # ElseBranchHasWrongType4.fs
SOURCE=NestedElseBranchHasWrongType.fs # NestedElseBranchHasWrongType.fs
SOURCE=ElseBranchHasWrongContextType.fs # ElseBranchHasWrongContextType.fs
SOURCE=ElseBranchContextDoesntPropagateInAppl.fs # ElseBranchContextDoesntPropagateInAppl.fs
diff --git a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
index b102ee15ae3..c03e0df50f0 100644
--- a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
+++ b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
@@ -49,6 +49,10 @@
{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}FSharp.Compiler.Private
+
+ $(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
+ true
+
diff --git a/tests/service/CSharpProjectAnalysis.fs b/tests/service/CSharpProjectAnalysis.fs
index 188d733cd18..34f427435f7 100644
--- a/tests/service/CSharpProjectAnalysis.fs
+++ b/tests/service/CSharpProjectAnalysis.fs
@@ -111,8 +111,9 @@ let _ = CSharpOuterClass.InnerClass.StaticMember()
|> Async.RunSynchronously
|> Array.map (fun su -> su.Symbol.ToString())
|> shouldEqual
- [|"InnerEnum"; "CSharpOuterClass"; "field Case1"; "InnerClass";
- "CSharpOuterClass"; "member StaticMember"; "NestedEnumClass"|]
+ [|"FSharp"; "FSharp"; "Compiler"; "Service"; "Tests"; "InnerEnum";
+ "CSharpOuterClass"; "field Case1"; "InnerClass"; "CSharpOuterClass";
+ "member StaticMember"; "NestedEnumClass"|]
[]
let ``Ctor test`` () =
diff --git a/tests/service/Common.fs b/tests/service/Common.fs
index ef3049110e6..8b76fa107c7 100644
--- a/tests/service/Common.fs
+++ b/tests/service/Common.fs
@@ -236,7 +236,7 @@ let attribsOfSymbol (s:FSharpSymbol) =
if v.IsFSharpUnion then yield "union"
if v.IsInterface then yield "interface"
if v.IsMeasure then yield "measure"
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
if v.IsProvided then yield "provided"
if v.IsStaticInstantiation then yield "staticinst"
if v.IsProvidedAndErased then yield "erased"
diff --git a/tests/service/EditorTests.fs b/tests/service/EditorTests.fs
index e935737511e..5abd70b92e9 100644
--- a/tests/service/EditorTests.fs
+++ b/tests/service/EditorTests.fs
@@ -633,15 +633,18 @@ let _ =
|> Array.map (fun su ->
let r = su.RangeAlternate
su.Symbol.ToString(), (r.StartLine, r.StartColumn, r.EndLine, r.EndColumn))
+ |> Array.distinct
|> shouldEqual
- [|("ConsoleKey", (5, 10, 5, 20))
- ("field Tab", (5, 10, 5, 24))
- ("ConsoleKey", (6, 6, 6, 16))
- ("field OemClear", (6, 6, 6, 25))
- ("ConsoleKey", (6, 29, 6, 39))
- ("field A", (6, 29, 6, 41))
- ("ConsoleKey", (7, 11, 7, 21))
- ("field B", (7, 11, 7, 23))
+ // note: these "System" sysbol uses are not duplications because each of them corresponts to different namespaces
+ [|("System", (2, 5, 2, 11))
+ ("ConsoleKey", (5, 10, 5, 20));
+ ("field Tab", (5, 10, 5, 24));
+ ("ConsoleKey", (6, 6, 6, 16));
+ ("field OemClear", (6, 6, 6, 25));
+ ("ConsoleKey", (6, 29, 6, 39));
+ ("field A", (6, 29, 6, 41));
+ ("ConsoleKey", (7, 11, 7, 21));
+ ("field B", (7, 11, 7, 23));
("Test", (1, 0, 1, 0))|]
[]
@@ -712,6 +715,37 @@ type Class1() =
("member .cctor", (10, 5, 10, 11))
("Test", (1, 0, 1, 0))|]
+[]
+let ``IsConstructor property should return true for constructors`` () =
+ let input =
+ """
+type T(x: int) =
+ new() = T(0)
+let x: T()
+"""
+ let file = "/home/user/Test.fsx"
+ let _, typeCheckResults = parseAndCheckScript(file, input)
+ typeCheckResults.GetAllUsesOfAllSymbolsInFile()
+ |> Async.RunSynchronously
+ |> Array.map (fun su ->
+ let r = su.RangeAlternate
+ let isConstructor =
+ match su.Symbol with
+ | :? FSharpMemberOrFunctionOrValue as f -> f.IsConstructor
+ | _ -> false
+ su.Symbol.ToString(), (r.StartLine, r.StartColumn, r.EndLine, r.EndColumn), isConstructor)
+ |> Array.distinct
+ |> shouldEqual
+ [|("T", (2, 5, 2, 6), false)
+ ("int", (2, 10, 2, 13), false)
+ ("val x", (2, 7, 2, 8), false)
+ ("member .ctor", (2, 5, 2, 6), true)
+ ("member .ctor", (3, 4, 3, 7), true)
+ ("member .ctor", (3, 12, 3, 13), true)
+ ("T", (4, 7, 4, 8), false)
+ ("val x", (4, 4, 4, 5), false)
+ ("Test", (1, 0, 1, 0), false)|]
+
//-------------------------------------------------------------------------------
diff --git a/tests/service/ExprTests.fs b/tests/service/ExprTests.fs
index ed366d2d151..bf955c5aa63 100644
--- a/tests/service/ExprTests.fs
+++ b/tests/service/ExprTests.fs
@@ -528,7 +528,7 @@ let bool2 = false
let options = checker.GetProjectOptionsFromCommandLineArgs (projFileName, args)
//<@ let x = Some(3) in x.IsSome @>
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
[]
let ``Test Declarations project1`` () =
let wholeProjectResults = exprChecker.ParseAndCheckProject(Project1.options) |> Async.RunSynchronously
diff --git a/tests/service/FscTests.fs b/tests/service/FscTests.fs
index 97f1ee75922..ca3d3999e0a 100644
--- a/tests/service/FscTests.fs
+++ b/tests/service/FscTests.fs
@@ -76,6 +76,8 @@ type PEVerifier () =
#endif
static let execute (fileName : string, arguments : string) =
+ // Peverify may run quite a while some assemblies are pretty big. Make the timeout 3 minutes just in case.
+ let longtime = int (TimeSpan.FromMinutes(3.0).TotalMilliseconds)
printfn "executing '%s' with arguments %s" fileName arguments
let psi = new ProcessStartInfo(fileName, arguments)
psi.UseShellExecute <- false
@@ -87,7 +89,7 @@ type PEVerifier () =
use proc = Process.Start(psi)
let stdOut = proc.StandardOutput.ReadToEnd()
let stdErr = proc.StandardError.ReadToEnd()
- while not proc.HasExited do ()
+ proc.WaitForExit(longtime)
proc.ExitCode, stdOut, stdErr
member __.Verify(assemblyPath : string) =
diff --git a/tests/service/MultiProjectAnalysisTests.fs b/tests/service/MultiProjectAnalysisTests.fs
index b6adcce2049..aa38fa58457 100644
--- a/tests/service/MultiProjectAnalysisTests.fs
+++ b/tests/service/MultiProjectAnalysisTests.fs
@@ -499,14 +499,14 @@ let ``Test multi project symbols should pick up changes in dependent projects``
//---------------- Change the file by adding a line, then re-check everything --------------------
- let wt0 = System.DateTime.Now
- let wt1 = File.GetLastWriteTime MultiProjectDirty1.fileName1
+ let wt0 = System.DateTime.UtcNow
+ let wt1 = File.GetLastWriteTimeUtc MultiProjectDirty1.fileName1
printfn "Writing new content to file '%s'" MultiProjectDirty1.fileName1
System.Threading.Thread.Sleep(1000)
File.WriteAllText(MultiProjectDirty1.fileName1, System.Environment.NewLine + MultiProjectDirty1.content)
printfn "Wrote new content to file '%s'" MultiProjectDirty1.fileName1
- let wt2 = File.GetLastWriteTime MultiProjectDirty1.fileName1
+ let wt2 = File.GetLastWriteTimeUtc MultiProjectDirty1.fileName1
printfn "Current time: '%A', ticks = %d" wt0 wt0.Ticks
printfn "Old write time: '%A', ticks = %d" wt1 wt1.Ticks
printfn "New write time: '%A', ticks = %d" wt2 wt2.Ticks
@@ -550,13 +550,13 @@ let ``Test multi project symbols should pick up changes in dependent projects``
//---------------- Revert the change to the file --------------------
- let wt0b = System.DateTime.Now
- let wt1b = File.GetLastWriteTime MultiProjectDirty1.fileName1
+ let wt0b = System.DateTime.UtcNow
+ let wt1b = File.GetLastWriteTimeUtc MultiProjectDirty1.fileName1
printfn "Writing old content to file '%s'" MultiProjectDirty1.fileName1
System.Threading.Thread.Sleep(1000)
File.WriteAllText(MultiProjectDirty1.fileName1, MultiProjectDirty1.content)
printfn "Wrote old content to file '%s'" MultiProjectDirty1.fileName1
- let wt2b = File.GetLastWriteTime MultiProjectDirty1.fileName1
+ let wt2b = File.GetLastWriteTimeUtc MultiProjectDirty1.fileName1
printfn "Current time: '%A', ticks = %d" wt0b wt0b.Ticks
printfn "Old write time: '%A', ticks = %d" wt1b wt1b.Ticks
printfn "New write time: '%A', ticks = %d" wt2b wt2b.Ticks
diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs
index c09d8d4ca15..c1283e1527c 100644
--- a/tests/service/ProjectAnalysisTests.fs
+++ b/tests/service/ProjectAnalysisTests.fs
@@ -109,7 +109,7 @@ let ``Test project1 whole project errors`` () =
let ``Test Project1 should have protected FullName and TryFullName return same results`` () =
let wholeProjectResults = checker.ParseAndCheckProject(Project1.options) |> Async.RunSynchronously
let rec getFullNameComparisons (entity: FSharpEntity) =
- #if EXTENSIONTYPING
+ #if !NO_EXTENSIONTYPING
seq { if not entity.IsProvided && entity.Accessibility.IsPublic then
#else
seq { if entity.Accessibility.IsPublic then
@@ -127,7 +127,7 @@ let ``Test Project1 should have protected FullName and TryFullName return same r
let ``Test project1 should not throw exceptions on entities from referenced assemblies`` () =
let wholeProjectResults = checker.ParseAndCheckProject(Project1.options) |> Async.RunSynchronously
let rec getAllBaseTypes (entity: FSharpEntity) =
- #if EXTENSIONTYPING
+ #if !NO_EXTENSIONTYPING
seq { if not entity.IsProvided && entity.Accessibility.IsPublic then
#else
seq{
@@ -368,10 +368,11 @@ let ``Test project1 all uses of all signature symbols`` () =
("field DisableFormatting",
[("file2", ((28, 4), (28, 21))); ("file2", ((30, 16), (30, 45)))]);
("M",
- [("file1", ((1, 7), (1, 8))); ("file2", ((6, 28), (6, 29)));
- ("file2", ((9, 28), (9, 29))); ("file2", ((12, 27), (12, 28)));
- ("file2", ((38, 12), (38, 13))); ("file2", ((38, 22), (38, 23)));
- ("file2", ((39, 12), (39, 13))); ("file2", ((39, 28), (39, 29)))]);
+ [("file1", ((1, 7), (1, 8))); ("file2", ((3, 5), (3, 6)));
+ ("file2", ((6, 28), (6, 29))); ("file2", ((9, 28), (9, 29)));
+ ("file2", ((12, 27), (12, 28))); ("file2", ((38, 12), (38, 13)));
+ ("file2", ((38, 22), (38, 23))); ("file2", ((39, 12), (39, 13)));
+ ("file2", ((39, 28), (39, 29)))])
("val xxx",
[("file1", ((6, 4), (6, 7))); ("file1", ((7, 13), (7, 16)));
("file1", ((7, 19), (7, 22))); ("file2", ((6, 28), (6, 33)));
@@ -420,6 +421,7 @@ let ``Test project1 all uses of all symbols`` () =
("C", "M.C", "file1", ((9, 15), (9, 16)), ["class"]);
("CAbbrev", "M.CAbbrev", "file1", ((9, 5), (9, 12)), ["abbrev"]);
("M", "M", "file1", ((1, 7), (1, 8)), ["module"]);
+ ("M", "M", "file2", ((3, 5), (3, 6)), ["module"]);
("D1", "N.D1", "file2", ((5, 5), (5, 7)), ["class"]);
("( .ctor )", "N.D1.( .ctor )", "file2", ((5, 5), (5, 7)),
["member"; "ctor"]);
@@ -529,7 +531,7 @@ let ``Test project1 all uses of all symbols`` () =
set expected - set allUsesOfAllSymbols |> shouldEqual Set.empty
(set expected = set allUsesOfAllSymbols) |> shouldEqual true
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
[]
let ``Test file explicit parse symbols`` () =
@@ -3686,32 +3688,35 @@ let ``Test Project25 symbol uses of type-provided members`` () =
allUses |> shouldEqual
- [|("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
- ["class"; "provided"; "erased"]);
- ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
- ["class"; "provided"; "erased"]);
- ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
- ["class"; "provided"; "erased"]);
- ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
- ["class"; "provided"; "erased"]);
- ("TypeProviderTests.Project", "file1", ((4, 5), (4, 12)), ["abbrev"]);
- ("TypeProviderTests.Project", "file1", ((5, 8), (5, 15)), ["abbrev"]);
- ("FSharp.Data.XmlProvider<...>.GetSample", "file1", ((5, 8), (5, 25)),
- ["member"]);
- ("Microsoft.FSharp.Core.int", "file1", ((7, 23), (7, 26)), ["abbrev"]);
- ("Microsoft.FSharp.Core.int", "file1", ((7, 23), (7, 26)), ["abbrev"]);
- ("TypeProviderTests.Record.Field", "file1", ((7, 16), (7, 21)), ["field"]);
- ("TypeProviderTests.Record", "file1", ((7, 5), (7, 11)), ["record"]);
- ("TypeProviderTests.Record", "file1", ((8, 10), (8, 16)), ["record"]);
- ("TypeProviderTests.Record.Field", "file1", ((8, 17), (8, 22)), ["field"]);
- ("TypeProviderTests.r", "file1", ((8, 4), (8, 5)), ["val"]);
- ("FSharp.Data.XmlProvider", "file1", ((10, 8), (10, 19)),
- ["class"; "provided"; "erased"]);
- ("FSharp.Data.XmlProvider<...>", "file1", ((10, 8), (10, 68)),
- ["class"; "provided"; "staticinst"; "erased"]);
- ("FSharp.Data.XmlProvider<...>.GetSample", "file1", ((10, 8), (10, 78)),
- ["member"]);
- ("TypeProviderTests", "file1", ((2, 7), (2, 24)), ["module"])|]
+ [|("Microsoft.FSharp", "file1", ((3, 5), (3, 11)), ["namespace"]);
+ ("FSharp", "file1", ((3, 5), (3, 11)), ["namespace"]);
+ ("Microsoft.FSharp.Data", "file1", ((3, 12), (3, 16)), ["namespace"]);
+ ("FSharp.Data", "file1", ((3, 12), (3, 16)), ["namespace"; "provided"]);
+ ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
+ ["class"; "provided"; "erased"]);
+ ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
+ ["class"; "provided"; "erased"]);
+ ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
+ ["class"; "provided"; "erased"]);
+ ("FSharp.Data.XmlProvider", "file1", ((4, 15), (4, 26)),
+ ["class"; "provided"; "erased"]);
+ ("TypeProviderTests.Project", "file1", ((4, 5), (4, 12)), ["abbrev"]);
+ ("TypeProviderTests.Project", "file1", ((5, 8), (5, 15)), ["abbrev"]);
+ ("FSharp.Data.XmlProvider<...>.GetSample", "file1", ((5, 8), (5, 25)),
+ ["member"]);
+ ("Microsoft.FSharp.Core.int", "file1", ((7, 23), (7, 26)), ["abbrev"]);
+ ("Microsoft.FSharp.Core.int", "file1", ((7, 23), (7, 26)), ["abbrev"]);
+ ("TypeProviderTests.Record.Field", "file1", ((7, 16), (7, 21)), ["field"]);
+ ("TypeProviderTests.Record", "file1", ((7, 5), (7, 11)), ["record"]);
+ ("TypeProviderTests.Record", "file1", ((8, 10), (8, 16)), ["record"]);
+ ("TypeProviderTests.Record.Field", "file1", ((8, 17), (8, 22)), ["field"]);
+ ("TypeProviderTests.r", "file1", ((8, 4), (8, 5)), ["val"]);
+ ("FSharp.Data.XmlProvider", "file1", ((10, 8), (10, 19)),
+ ["class"; "provided"; "erased"]);
+ ("FSharp.Data.XmlProvider<...>", "file1", ((10, 8), (10, 68)),
+ ["class"; "provided"; "staticinst"; "erased"]);
+ ("FSharp.Data.XmlProvider<...>.GetSample", "file1", ((10, 8), (10, 78)),
+ ["member"]); ("TypeProviderTests", "file1", ((2, 7), (2, 24)), ["module"])|]
let getSampleSymbolUseOpt =
backgroundTypedParse1.GetSymbolUseAtLocation(5,25,"",["GetSample"])
|> Async.RunSynchronously
@@ -3947,7 +3952,7 @@ type Use() =
let fileNames = [fileName1]
let args = mkProjectCommandLineArgs (dllName, fileNames)
let options = checker.GetProjectOptionsFromCommandLineArgs (projFileName, args)
-#if EXTENSIONTYPING
+#if !NO_EXTENSIONTYPING
[]
let ``Test project28 all symbols in signature`` () =
let wholeProjectResults = checker.ParseAndCheckProject(Project28.options) |> Async.RunSynchronously
@@ -3957,7 +3962,7 @@ let ``Test project28 all symbols in signature`` () =
|> Seq.map (fun s ->
let typeName = s.GetType().Name
match s with
- #if EXTENSIONTYPING
+ #if !NO_EXTENSIONTYPING
| :? FSharpEntity as fse -> typeName, fse.DisplayName, fse.XmlDocSig
#endif
| :? FSharpField as fsf -> typeName, fsf.DisplayName, fsf.XmlDocSig
@@ -3966,7 +3971,7 @@ let ``Test project28 all symbols in signature`` () =
| :? FSharpActivePatternCase as ap -> typeName, ap.DisplayName, ap.XmlDocSig
| :? FSharpGenericParameter as fsg -> typeName, fsg.DisplayName, ""
| :? FSharpParameter as fsp -> typeName, fsp.DisplayName, ""
- #if EXTENSIONTYPING
+ #if !NO_EXTENSIONTYPING
| :? FSharpStaticParameter as fss -> typeName, fss.DisplayName, ""
#endif
| _ -> typeName, s.DisplayName, "unknown")
diff --git a/tests/service/ProjectOptionsTests.fs b/tests/service/ProjectOptionsTests.fs
index 39ecd5124b4..1e995681fdb 100644
--- a/tests/service/ProjectOptionsTests.fs
+++ b/tests/service/ProjectOptionsTests.fs
@@ -485,13 +485,12 @@ let ``Test OtherOptions order for GetProjectOptionsFromScript`` () =
let scriptPath = __SOURCE_DIRECTORY__ + @"/data/ScriptProject/" + scriptName + ".fsx"
let scriptSource = File.ReadAllText scriptPath
let projOpts, _diagnostics = checker.GetProjectOptionsFromScript(scriptPath, scriptSource) |> Async.RunSynchronously
-
projOpts.OtherOptions
|> Array.map (fun s -> if s.StartsWith "--" then s else Path.GetFileNameWithoutExtension s)
|> Array.forall (fun s -> Set.contains s expected2)
|> shouldEqual true
- let otherArgs = [|"--noframework"; "--warn:3"; "System.Numerics"; "mscorlib"; "FSharp.Core"; "System"; "System.Xml"; "System.Runtime.Remoting"; "System.Runtime.Serialization.Formatters.Soap"; "System.Data"; "System.Drawing"; "System.Core"; "System.Runtime"; "System.Linq"; "System.Reflection"; "System.Linq.Expressions"; "System.Threading.Tasks"; "System.IO"; "System.Net.Requests"; "System.Collections"; "System.Runtime.Numerics"; "System.Threading"; "System.Web"; "System.Web.Services"; "System.Windows.Forms"; "FSharp.Compiler.Interactive.Settings"|] |> Set.ofArray
+ let otherArgs = [|"--noframework"; "--warn:3"; "System.Numerics"; "System.ValueTuple"; "mscorlib"; "FSharp.Core"; "System"; "System.Xml"; "System.Runtime.Remoting"; "System.Runtime.Serialization.Formatters.Soap"; "System.Data"; "System.Drawing"; "System.Core"; "System.Runtime"; "System.Linq"; "System.Reflection"; "System.Linq.Expressions"; "System.Threading.Tasks"; "System.IO"; "System.Net.Requests"; "System.Collections"; "System.Runtime.Numerics"; "System.Threading"; "System.Web"; "System.Web.Services"; "System.Windows.Forms"; "FSharp.Compiler.Interactive.Settings"|] |> Set.ofArray
test "Main1" otherArgs
test "Main2" otherArgs
diff --git a/tests/service/StructureTests.fs b/tests/service/StructureTests.fs
new file mode 100644
index 00000000000..6e80a66bba2
--- /dev/null
+++ b/tests/service/StructureTests.fs
@@ -0,0 +1,560 @@
+#if INTERACTIVE
+#r "../../Debug/fcs/net45/FSharp.Compiler.Service.dll" // note, run 'build fcs debug' to generate this, this DLL has a public API so can be used from F# Interactive
+#r "../../packages/NUnit.3.5.0/lib/net45/nunit.framework.dll"
+#load "FsUnit.fs"
+#load "Common.fs"
+#else
+module Tests.Service.StructureTests
+#endif
+
+open System.IO
+open NUnit.Framework
+open Microsoft.FSharp.Compiler.SourceCodeServices
+open FSharp.Compiler.Service.Tests.Common
+open System.Text
+
+let fileName = Path.Combine (__SOURCE_DIRECTORY__, __SOURCE_FILE__)
+type Line = int
+type Col = int
+
+let (=>) (source: string) (expectedRanges: (Line * Col * Line * Col) list) =
+ let lines =
+ use reader = new StringReader(source)
+ [| let line = ref (reader.ReadLine())
+ while not (isNull !line) do
+ yield !line
+ line := reader.ReadLine()
+ if source.EndsWith "\n" then
+ // last trailing space not returned
+ // http://stackoverflow.com/questions/19365404/stringreader-omits-trailing-linebreak
+ yield "" |]
+
+ let formatList (xs: _ list) =
+ let sb = StringBuilder("[ ")
+ for r in xs do
+ sb.AppendLine (sprintf "%A" r) |> ignore
+ sprintf "%O ]" sb
+
+ let ast = parseSourceCode(fileName, source)
+ try
+ match ast with
+ | Some tree ->
+ let actual =
+ Structure.getOutliningRanges lines tree
+ |> Seq.filter (fun sr -> sr.Range.StartLine <> sr.Range.EndLine)
+ |> Seq.map (fun r -> r.Range.StartLine, r.Range.StartColumn, r.Range.EndLine, r.Range.EndColumn)
+ |> Seq.sort
+ |> List.ofSeq
+ let expected = List.sort expectedRanges
+ if actual <> expected then
+ failwithf "Expected %s, but was %s" (formatList expected) (formatList actual)
+ | None -> failwithf "Expected there to be a parse tree for source:\n%s" source
+ with _ ->
+ printfn "AST:\n%+A" ast
+ reraise()
+
+[]
+let ``empty file``() = "" => [ (1, 0, 2, 0) ]
+
+[]
+let ``nested module``() =
+ """
+module MyModule =
+ ()
+"""
+ => [ (1, 0, 4, 0)
+ (2, 0, 3, 6) ]
+
+[]
+let ``module with multiline function``() =
+ """
+module MyModule =
+ let foo() =
+ foo()
+"""
+ => [ (1, 0, 5, 0)
+ (2, 0, 4, 13)
+ (3, 4, 4, 13)
+ (3, 8, 4, 13) ]
+
+[]
+let ``DU``() =
+ """
+type Color =
+ | Red
+ | Green
+ | Blue
+"""
+ => [ (1, 0, 6, 0)
+ (2, 5, 5, 10)
+ (3, 4, 5, 10) ]
+
+[]
+let ``DU with interface``() =
+ """
+type Color =
+ | Red
+ | Green
+ | Blue
+
+ interface IDisposable with
+ member __.Dispose() =
+ (docEventListener :> IDisposable).Dispose()
+"""
+ => [ (1, 0, 10, 0)
+ (2, 5, 9, 55)
+ (3, 4, 5, 10)
+ (7, 4, 9, 55)
+ (8, 15, 9, 55)
+ (8, 15, 9, 55) ]
+
+[]
+let ``record with interface``() =
+ """
+type Color =
+ { Red: int
+ Green: int
+ Blue: int
+ }
+
+ interface IDisposable with
+ member __.Dispose() =
+ (docEventListener :> IDisposable).Dispose()
+"""
+ =>
+ [ (1, 0, 11, 0)
+ (2, 5, 10, 55)
+ (3, 4, 4, 14)
+ (3, 6, 4, 13)
+ (8, 4, 10, 55)
+ (9, 15, 10, 55)
+ (9, 15, 10, 55) ]
+
+[]
+let ``type with a do block``() =
+ """
+type Color() = // 2
+ let foo() =
+ ()
+
+ do
+ foo()
+ () // 8
+"""
+ => [ (1, 0, 9, 0)
+ (2, 5, 8, 10)
+ (3, 8, 4, 10)
+ (6, 4, 8, 10) ]
+
+[]
+let ``complex outlining test``() =
+ """
+module MyModule = // 2
+ let foo() = ()
+ let bar() =
+ ()
+
+ type Color = // 7
+ { Red: int
+ Green: int
+ Blue: int
+ }
+
+ interface IDisposable with // 13
+ member __.Dispose() =
+ (docEventListener :> IDisposable).Dispose()
+
+ module MyInnerModule = // 17
+
+ type RecordColor = // 19
+ { Red: int
+ Green: int
+ Blue: int
+ }
+
+ interface IDisposable with // 25
+ member __.Dispose() =
+ (docEventListener :> IDisposable).Dispose()
+"""
+ => [ (1, 0, 28, 0)
+ (2, 0, 27, 63)
+ (4, 4, 5, 10)
+ (4, 8, 5, 10)
+ (7, 9, 15, 59)
+ (8, 8, 11, 9)
+ (13, 8, 15, 59)
+ (14, 19, 15, 59)
+ (14, 19, 15, 59)
+ (17, 4, 27, 63)
+ (19, 13, 27, 63)
+ (20, 12, 23, 13)
+ (25, 12, 27, 63)
+ (26, 23, 27, 63)
+ (26, 23, 27, 63) ]
+
+
+[]
+let ``open statements``() =
+ """
+open M
+open N
+
+module M =
+ let x = 1
+
+ open M
+ open N
+
+ module M =
+ open M
+
+ let x = 1
+
+ module M =
+ open M
+ open N
+ let x = 1
+
+open M
+open N
+open H
+
+open G
+open H
+"""
+ => [ (1, 0, 26, 6)
+ (2, 5, 3, 6)
+ (5, 0, 19, 17)
+ (8, 9, 9, 10)
+ (11, 4, 14, 17)
+ (16, 4, 19, 17)
+ (17, 13, 18, 14)
+ (21, 5, 26, 6) ]
+
+[]
+let ``hash directives``() =
+ """
+#r @"a"
+#r "b"
+
+#r "c"
+
+#r "d"
+#r "e"
+let x = 1
+
+#r "f"
+#r "g"
+#load "x"
+#r "y"
+
+#load "a"
+ "b"
+ "c"
+
+#load "a"
+ "b"
+ "c"
+#r "d"
+"""
+ => [ (1, 0, 23, 6)
+ (2, 3, 8, 6)
+ (11, 3, 23, 6) ]
+
+[]
+let ``nested let bindings``() =
+ """
+let f x = // 2
+ let g x = // 3
+ let h = // 4
+ () // 5
+ () // 6
+ x // 7
+"""
+ => [ (1, 0, 8, 0)
+ (2, 0, 7, 5)
+ (2, 4, 7, 5)
+ (3, 8, 6, 10)
+ (4, 12, 5, 14) ]
+
+[]
+let ``match``() =
+ """
+match None with // 2
+| Some _ -> // 3
+ () // 4
+| None -> // 5
+ match None with // 6
+ | Some _ -> () // 7
+ | None -> // 8
+ let x = () // 9
+ () // 10
+"""
+ => [ (1, 0, 11, 0)
+ (2, 0, 10, 10)
+ (6, 4, 10, 10)
+ (6, 4, 10, 10)
+ (9, 8, 10, 10) ]
+
+[]
+let ``computation expressions``() =
+ """
+seq { // 2
+ yield () // 3
+ let f x = // 4
+ () // 5
+ yield! seq { // 6
+ yield () } // 7
+} // 8
+"""
+ => [ (1, 0, 8, 1)
+ (2, 0, 8, 1)
+ (4, 8, 5, 10)
+ (6, 4, 7, 18)
+ (6, 11, 7, 18) ]
+
+[]
+let ``list``() =
+ """
+let _ =
+ [ 1; 2
+ 3 ]
+"""
+ => [ (1, 0, 5, 0)
+ (2, 0, 4, 9)
+ (2, 4, 4, 9)
+ (3, 4, 4, 9) ]
+
+[]
+let ``object expressions``() =
+ """
+let _ =
+ { new System.IDisposable with
+ member __.Dispose() = () }
+"""
+ => [ (1, 0, 5, 0)
+ (2, 0, 4, 34)
+ (2, 4, 4, 34)
+ (3, 4, 4, 34) ]
+
+[]
+let ``try - with``() =
+ """
+try // 2
+ let f x = // 3
+ () // 4
+with _ -> // 5
+ let f x = // 6
+ () // 7
+ () // 8
+"""
+ => [ (1, 0, 9, 0)
+ (2, 0, 5, 0)
+ (2, 0, 8, 6)
+ (3, 8, 4, 10)
+ (5, 0, 8, 6)
+ (6, 4, 8, 6)
+ (6, 8, 7, 10) ]
+
+[]
+let ``try - finally``() =
+ """
+try // 2
+ let f x = // 3
+ () // 4
+finally // 5
+ let f x = // 6
+ () // 7
+ () // 8
+"""
+ => [ (1, 0, 9, 0)
+ (2, 0, 8, 6)
+ (3, 8, 4, 10)
+ (5, 0, 8, 6)
+ (6, 8, 7, 10) ]
+
+[]
+let ``if - then - else``() =
+ """
+if true then
+ let f x =
+ ()
+ ()
+else
+ let f x =
+ ()
+ ()
+"""
+ => [ (1, 0, 10, 0)
+ (2, 0, 9, 6)
+ (2, 8, 5, 6)
+ (3, 8, 4, 10)
+ (7, 8, 8, 10) ]
+
+[]
+let ``code quotation``() =
+ """
+<@
+ "code"
+ @>
+"""
+ => [ 1, 0, 4, 10
+ 2, 0, 4, 10 ]
+
+[]
+let ``raw code quotation``() =
+ """
+<@@
+ "code"
+ @@>
+"""
+ => [ (1, 0, 4, 11)
+ (2, 0, 4, 11) ]
+
+[]
+let ``match lambda aka function``() =
+ """
+function
+| 0 -> ()
+ ()
+"""
+ => [ (1, 0, 5, 0)
+ (2, 0, 4, 10)
+ (3, 8, 4, 10) ]
+
+[]
+let ``match guarded clause``() =
+ """
+let matchwith num =
+ match num with
+ | 0 -> ()
+ ()
+"""
+ => [ (1, 0, 6, 0)
+ (2, 0, 5, 13)
+ (2, 4, 5, 13)
+ (3, 4, 5, 13)
+ (4, 11, 5, 13) ]
+
+[]
+let ``for loop``() =
+ """
+for x = 100 downto 10 do
+ ()
+ ()
+"""
+ => [ (1, 0, 5, 0)
+ (2, 0, 4, 6) ]
+
+[]
+let ``for each``() =
+ """
+for x in 0 .. 100 ->
+ ()
+ ()
+"""
+ => [ (1, 0, 5, 0)
+ (2, 0, 4, 14)
+ (2, 18, 4, 14) ]
+
+[]
+let ``tuple``() =
+ """
+( 20340
+, 322
+, 123123 )
+"""
+ => [ (1, 0, 4, 10)
+ (2, 2, 4, 8) ]
+
+[]
+let ``do!``() =
+ """
+do!
+ printfn "allo"
+ printfn "allo"
+"""
+ => [(1, 0, 5, 0)
+ (2, 0, 4, 18)]
+
+[]
+let ``cexpr yield yield!``() =
+ """
+cexpr{
+ yield!
+ cexpr{
+ yield
+
+ 10
+ }
+ }
+"""
+ => [1, 0, 9, 5
+ 2, 0, 9, 5
+ 3, 4, 8, 17
+ 4, 8, 8, 17
+ 5, 20, 7, 26]
+
+[]
+let ``XML doc comments``() =
+ """
+/// Line 1
+/// Line 2
+module M =
+ /// Line 3
+ /// Line 4
+ type T() =
+ /// Line 5
+ /// Line 6
+ /// Line 7
+ let f x = x
+ /// Single line comment
+ let f x = x
+"""
+ => [ (1, 0, 14, 0)
+ (2, 0, 3, 10)
+ (4, 0, 13, 15)
+ (5, 4, 6, 14)
+ (7, 9, 11, 19)
+ (8, 8, 10, 18) ]
+
+[]
+let ``regular comments``() =
+ """
+// Line 1
+// Line 2
+module M =
+ // Line 3
+ // Line 4
+ type T() =
+ // Line 5
+ // Line 6
+ // Line 7
+ let f x = x
+ // Single line comment
+ let f x = x
+"""
+ => [ (1, 0, 14, 0)
+ (2, 0, 3, 9)
+ (4, 0, 13, 15)
+ (5, 4, 6, 13)
+ (7, 9, 11, 19)
+ (8, 8, 10, 17) ]
+
+[]
+let ``XML doc and regular comments in one block``() =
+ """
+// Line 1
+// Line 2
+/// Line 3
+/// Line 4
+// Line 5
+/// Line 6
+/// Line 7
+/// Line 8
+/// Line 9
+"""
+ => [ (1, 0, 11, 0)
+ (2, 0, 3, 9)
+ (4, 0, 5, 10)
+ (7, 0, 10, 10) ]
\ No newline at end of file
diff --git a/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj b/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj
index cfd59b04c4a..4f88e4a7873 100644
--- a/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj
+++ b/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj
@@ -48,7 +48,7 @@
- ..\..\..\..\packages\NUnit\lib\nunit.framework.dll
+ ..\..\..\..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dllTrueTrue
diff --git a/vsintegration/ProjectTemplates/NetCore259Project/NetCore259Project.csproj b/vsintegration/ProjectTemplates/NetCore259Project/NetCore259Project.csproj
deleted file mode 100644
index 8075167e5be..00000000000
--- a/vsintegration/ProjectTemplates/NetCore259Project/NetCore259Project.csproj
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..\..\..\src
- NetCore259Project
- ProjectTemplates
- true
- true
- false
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- false
- false
- false
- false
- false
- false
- false
- false
- false
- {D9D95330-3626-4199-B7AF-17B8E4AF6D87}
-
-
-
- Debug
- net40
- $(FSharpSourcesRoot)\..\$(Configuration)\$(TargetDotnetProfile)\bin\$(TemplateCategory)\$(AssemblyName)
-
-
-
-
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lci
- false
- false
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lci
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/NetCore259Project/Template/AssemblyInfo.fs b/vsintegration/ProjectTemplates/NetCore259Project/Template/AssemblyInfo.fs
deleted file mode 100644
index d4f0ec0fc43..00000000000
--- a/vsintegration/ProjectTemplates/NetCore259Project/Template/AssemblyInfo.fs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace $safeprojectname$.AssemblyInfo
-
-open System.Resources
-open System.Reflection
-open System.Runtime.CompilerServices
-open System.Runtime.InteropServices
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// []
-[]
-[]
-
-do
- ()
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/NetCore259Project/Template/NETCore259PortableLibrary.vstemplate b/vsintegration/ProjectTemplates/NetCore259Project/Template/NETCore259PortableLibrary.vstemplate
deleted file mode 100644
index 40a686a3236..00000000000
--- a/vsintegration/ProjectTemplates/NetCore259Project/Template/NETCore259PortableLibrary.vstemplate
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- Microsoft.FSharp.NETCore259PortableLibrary
- FSharp
- 4.5
- 1
- true
- PortableLibrary
- true
- true
-
-
-
- AssemblyInfo.fs
- PortableLibrary1.fs
- Script.fsx
-
-
-
- NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- NuGet.VisualStudio.TemplateWizard
-
-
-
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/NetCore259Project/Template/PortableLibrary.fsproj b/vsintegration/ProjectTemplates/NetCore259Project/Template/PortableLibrary.fsproj
deleted file mode 100644
index 14c55f91353..00000000000
--- a/vsintegration/ProjectTemplates/NetCore259Project/Template/PortableLibrary.fsproj
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 2.0
- $guid1$
- Library
- $safeprojectname$
- $safeprojectname$
- v4.5
- Profile259
- netcore
- 3.259.41.0
- true
- true
-
-
- true
- full
- false
- false
- bin\$(Configuration)\
- DEBUG;TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
- pdbonly
- true
- true
- bin\$(Configuration)\
- TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
-
- FSharp.Core
- FSharp.Core.dll
- $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETCore\$(TargetFSharpCoreVersion)\FSharp.Core.dll
-
-
- ..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
- True
-
-
-
-
-
-
-
-
- 12
-
-
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/NetCore259Project/Template/PortableLibrary1.fs b/vsintegration/ProjectTemplates/NetCore259Project/Template/PortableLibrary1.fs
deleted file mode 100644
index c8a8cd1b462..00000000000
--- a/vsintegration/ProjectTemplates/NetCore259Project/Template/PortableLibrary1.fs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace $safeprojectname$
-
-type Class1() =
- member this.X = "F#"
diff --git a/vsintegration/ProjectTemplates/NetCore259Project/Template/Script.fsx b/vsintegration/ProjectTemplates/NetCore259Project/Template/Script.fsx
deleted file mode 100644
index 82377f6da43..00000000000
--- a/vsintegration/ProjectTemplates/NetCore259Project/Template/Script.fsx
+++ /dev/null
@@ -1,6 +0,0 @@
-// Learn more about F# at http://fsharp.org. See the 'F# Tutorial' project
-// for more guidance on F# programming.
-
-#load "PortableLibrary1.fs"
-open $safeprojectname$
-
diff --git a/vsintegration/ProjectTemplates/NetCore78Project/NetCore78Project.csproj b/vsintegration/ProjectTemplates/NetCore78Project/NetCore78Project.csproj
deleted file mode 100644
index b8bd4d18b0d..00000000000
--- a/vsintegration/ProjectTemplates/NetCore78Project/NetCore78Project.csproj
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..\..\..\src
- NetCore78Project
- ProjectTemplates
- true
- true
- false
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- false
- false
- false
- false
- false
- false
- false
- false
- false
- {1A8DBF70-4178-4AE3-AF5F-39DDD5692210}
-
-
-
- Debug
- net40
- $(FSharpSourcesRoot)\..\$(Configuration)\$(TargetDotnetProfile)\bin\$(TemplateCategory)\$(AssemblyName)
-
-
-
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lci
- false
- false
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lci
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/NetCore78Project/Template/AssemblyInfo.fs b/vsintegration/ProjectTemplates/NetCore78Project/Template/AssemblyInfo.fs
deleted file mode 100644
index d4f0ec0fc43..00000000000
--- a/vsintegration/ProjectTemplates/NetCore78Project/Template/AssemblyInfo.fs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace $safeprojectname$.AssemblyInfo
-
-open System.Resources
-open System.Reflection
-open System.Runtime.CompilerServices
-open System.Runtime.InteropServices
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// []
-[]
-[]
-
-do
- ()
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/NetCore78Project/Template/NETCore78PortableLibrary.vstemplate b/vsintegration/ProjectTemplates/NetCore78Project/Template/NETCore78PortableLibrary.vstemplate
deleted file mode 100644
index bea03c28446..00000000000
--- a/vsintegration/ProjectTemplates/NetCore78Project/Template/NETCore78PortableLibrary.vstemplate
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- Microsoft.FSharp.NETCore78PortableLibrary
- FSharp
- 4.5
- 1
- true
- PortableLibrary
- true
- true
-
-
-
- AssemblyInfo.fs
- PortableLibrary1.fs
- Script.fsx
-
-
-
- NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- NuGet.VisualStudio.TemplateWizard
-
-
-
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/NetCore78Project/Template/PortableLibrary.fsproj b/vsintegration/ProjectTemplates/NetCore78Project/Template/PortableLibrary.fsproj
deleted file mode 100644
index a2dbe62ee0a..00000000000
--- a/vsintegration/ProjectTemplates/NetCore78Project/Template/PortableLibrary.fsproj
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 2.0
- $guid1$
- Library
- $safeprojectname$
- $safeprojectname$
- v4.5
- Profile78
- netcore
- 3.78.41.0
- true
- true
-
-
- true
- full
- false
- false
- bin\$(Configuration)\
- DEBUG;TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
- pdbonly
- true
- true
- bin\$(Configuration)\
- TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
-
- FSharp.Core
- FSharp.Core.dll
- $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETCore\$(TargetFSharpCoreVersion)\FSharp.Core.dll
-
-
- ..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
- True
-
-
-
-
-
-
-
-
- 12
-
-
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/NetCore78Project/Template/PortableLibrary1.fs b/vsintegration/ProjectTemplates/NetCore78Project/Template/PortableLibrary1.fs
deleted file mode 100644
index c8a8cd1b462..00000000000
--- a/vsintegration/ProjectTemplates/NetCore78Project/Template/PortableLibrary1.fs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace $safeprojectname$
-
-type Class1() =
- member this.X = "F#"
diff --git a/vsintegration/ProjectTemplates/NetCore78Project/Template/Script.fsx b/vsintegration/ProjectTemplates/NetCore78Project/Template/Script.fsx
deleted file mode 100644
index 82377f6da43..00000000000
--- a/vsintegration/ProjectTemplates/NetCore78Project/Template/Script.fsx
+++ /dev/null
@@ -1,6 +0,0 @@
-// Learn more about F# at http://fsharp.org. See the 'F# Tutorial' project
-// for more guidance on F# programming.
-
-#load "PortableLibrary1.fs"
-open $safeprojectname$
-
diff --git a/vsintegration/ProjectTemplates/NetCoreProject/NetCoreProject.csproj b/vsintegration/ProjectTemplates/NetCoreProject/NetCoreProject.csproj
deleted file mode 100644
index 353e40e2371..00000000000
--- a/vsintegration/ProjectTemplates/NetCoreProject/NetCoreProject.csproj
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..\..\..\src
- NetCoreProject
- ProjectTemplates
- true
- true
- false
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- false
- false
- false
- false
- false
- false
- false
- false
- false
- {5B739CF3-1116-4EB4-B598-6C16BEA81CE5}
-
-
-
- Debug
- net40
- $(FSharpSourcesRoot)\..\$(Configuration)\$(TargetDotnetProfile)\bin\$(TemplateCategory)\$(AssemblyName)
-
-
-
-
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lci
- false
- false
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lci
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/NetCoreProject/Template/AssemblyInfo.fs b/vsintegration/ProjectTemplates/NetCoreProject/Template/AssemblyInfo.fs
deleted file mode 100644
index d4f0ec0fc43..00000000000
--- a/vsintegration/ProjectTemplates/NetCoreProject/Template/AssemblyInfo.fs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace $safeprojectname$.AssemblyInfo
-
-open System.Resources
-open System.Reflection
-open System.Runtime.CompilerServices
-open System.Runtime.InteropServices
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// []
-[]
-[]
-
-do
- ()
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/NetCoreProject/Template/NETCore7PortableLibrary.vstemplate b/vsintegration/ProjectTemplates/NetCoreProject/Template/NETCore7PortableLibrary.vstemplate
deleted file mode 100644
index cbe5d2d8798..00000000000
--- a/vsintegration/ProjectTemplates/NetCoreProject/Template/NETCore7PortableLibrary.vstemplate
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- Microsoft.FSharp.NETCore7PortableLibrary
- FSharp
- 4.5
- 1
- true
- PortableLibrary
- true
- true
-
-
-
- AssemblyInfo.fs
- PortableLibrary1.fs
- Script.fsx
-
-
-
- NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- NuGet.VisualStudio.TemplateWizard
-
-
-
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/NetCoreProject/Template/PortableLibrary.fsproj b/vsintegration/ProjectTemplates/NetCoreProject/Template/PortableLibrary.fsproj
deleted file mode 100644
index 9fffc5eed06..00000000000
--- a/vsintegration/ProjectTemplates/NetCoreProject/Template/PortableLibrary.fsproj
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 2.0
- $guid1$
- Library
- $safeprojectname$
- $safeprojectname$
- v4.5
- Profile7
- netcore
- 3.7.41.0
- true
- true
-
-
- true
- full
- false
- false
- bin\$(Configuration)\
- DEBUG;TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
- pdbonly
- true
- true
- bin\$(Configuration)\
- TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
-
- FSharp.Core
- FSharp.Core.dll
- $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETCore\$(TargetFSharpCoreVersion)\FSharp.Core.dll
-
-
- ..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
- True
-
-
-
-
-
-
-
-
- 12
-
-
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/NetCoreProject/Template/PortableLibrary1.fs b/vsintegration/ProjectTemplates/NetCoreProject/Template/PortableLibrary1.fs
deleted file mode 100644
index c8a8cd1b462..00000000000
--- a/vsintegration/ProjectTemplates/NetCoreProject/Template/PortableLibrary1.fs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace $safeprojectname$
-
-type Class1() =
- member this.X = "F#"
diff --git a/vsintegration/ProjectTemplates/NetCoreProject/Template/Script.fsx b/vsintegration/ProjectTemplates/NetCoreProject/Template/Script.fsx
deleted file mode 100644
index 82377f6da43..00000000000
--- a/vsintegration/ProjectTemplates/NetCoreProject/Template/Script.fsx
+++ /dev/null
@@ -1,6 +0,0 @@
-// Learn more about F# at http://fsharp.org. See the 'F# Tutorial' project
-// for more guidance on F# programming.
-
-#load "PortableLibrary1.fs"
-open $safeprojectname$
-
diff --git a/vsintegration/ProjectTemplates/PortableLibraryProject/PortableLibraryProject.csproj b/vsintegration/ProjectTemplates/PortableLibraryProject/PortableLibraryProject.csproj
deleted file mode 100644
index 728746d55ef..00000000000
--- a/vsintegration/ProjectTemplates/PortableLibraryProject/PortableLibraryProject.csproj
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..\..\..\src
- PortableLibraryProject
- ProjectTemplates
- true
- true
- false
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
- false
- false
- false
- false
- false
- false
- false
- false
- false
- {DB374A0C-7560-479F-9B21-D37C81F7624F}
-
-
- Debug
- net40
- $(FSharpSourcesRoot)\..\$(Configuration)\$(TargetDotnetProfile)\bin\$(TemplateCategory)\$(AssemblyName)
-
-
-
-
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\AssemblyInfo.fs.lci
- false
- false
-
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(TemplateCategory)\$(AssemblyName)\Script.fsx.lci
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/AssemblyInfo.fs b/vsintegration/ProjectTemplates/PortableLibraryProject/Template/AssemblyInfo.fs
deleted file mode 100644
index d4f0ec0fc43..00000000000
--- a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/AssemblyInfo.fs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace $safeprojectname$.AssemblyInfo
-
-open System.Resources
-open System.Reflection
-open System.Runtime.CompilerServices
-open System.Runtime.InteropServices
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// []
-[]
-[]
-
-do
- ()
\ No newline at end of file
diff --git a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary.fsproj b/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary.fsproj
deleted file mode 100644
index 331ff81e6ac..00000000000
--- a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary.fsproj
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 2.0
- $guid1$
- Library
- $safeprojectname$
- $safeprojectname$
- v4.0
- Profile47
- 3.47.41.0
- true
- true
-
-
- true
- full
- false
- false
- bin\$(Configuration)\
- DEBUG;TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
- pdbonly
- true
- true
- bin\$(Configuration)\
- TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
-
- FSharp.Core
- FSharp.Core.dll
- $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETPortable\$(TargetFSharpCoreVersion)\FSharp.Core.dll
-
-
- ..\packages\System.ValueTuple.4.3.1\lib\portable-net40+sl4+win8+wp8\System.ValueTuple.dll
- True
-
-
-
-
-
-
-
-
- 11
-
-
-
-
- $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.Portable.FSharp.Targets
-
-
-
-
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.Portable.FSharp.Targets
-
-
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary.vstemplate b/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary.vstemplate
deleted file mode 100644
index 6c3001420cc..00000000000
--- a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary.vstemplate
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
- Microsoft.FSharp.PortableLibrary
- FSharp
- 4.0
- 1
- true
- PortableLibrary
- true
- true
-
-
-
- AssemblyInfo.fs
- PortableLibrary1.fs
- Script.fsx
-
-
-
- NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- NuGet.VisualStudio.TemplateWizard
-
-
-
-
-
-
-
diff --git a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary1.fs b/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary1.fs
deleted file mode 100644
index c8a8cd1b462..00000000000
--- a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/PortableLibrary1.fs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace $safeprojectname$
-
-type Class1() =
- member this.X = "F#"
diff --git a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/Script.fsx b/vsintegration/ProjectTemplates/PortableLibraryProject/Template/Script.fsx
deleted file mode 100644
index 82377f6da43..00000000000
--- a/vsintegration/ProjectTemplates/PortableLibraryProject/Template/Script.fsx
+++ /dev/null
@@ -1,6 +0,0 @@
-// Learn more about F# at http://fsharp.org. See the 'F# Tutorial' project
-// for more guidance on F# programming.
-
-#load "PortableLibrary1.fs"
-open $safeprojectname$
-
diff --git a/vsintegration/Utils/LanguageServiceProfiling/LanguageServiceProfiling.fsproj b/vsintegration/Utils/LanguageServiceProfiling/LanguageServiceProfiling.fsproj
index c103e8868c0..3c4dd3e74fc 100644
--- a/vsintegration/Utils/LanguageServiceProfiling/LanguageServiceProfiling.fsproj
+++ b/vsintegration/Utils/LanguageServiceProfiling/LanguageServiceProfiling.fsproj
@@ -71,6 +71,10 @@
FSharp.Compiler.PrivateTrue
-
+
+ $(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
+ true
+
+
\ No newline at end of file
diff --git a/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest b/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest
index a2cf49d9d2a..bbc80709606 100644
--- a/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest
+++ b/vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest
@@ -47,6 +47,14 @@
+
+
+
+
+
+
+
+
diff --git a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj
index 336b5012854..dadbcf19c81 100644
--- a/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj
+++ b/vsintegration/Vsix/VisualFSharpFull/VisualFSharpFull.csproj
@@ -57,6 +57,8 @@
csfalse
+
+ Program$(DevEnvDir)devenv.exe
@@ -207,6 +209,62 @@
DebugSymbolsProjectOutputGroup%3bTrue
+
+ {6ba13aa4-c25f-480f-856b-8e8000299a72}
+ AppConfig
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
+
+ {12ac2813-e895-4aaa-ae6c-94e21da09f64}
+ CodeFile
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
+
+ {0385564F-07B4-4264-AB8A-17C393E9140C}
+ ResourceFile
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
+
+ {a333b85a-dc23-49b6-9797-b89a7951e92d}
+ ScriptFile
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
+
+ {e3fdd4ac-46b6-4b9f-b672-317d1202cc50}
+ SignatureFile
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
+
+ {d11fc318-8f5d-4c8c-9287-ab40a016d13c}
+ TextFile
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
+
+ {1fb1dd07-06aa-45b4-b5ac-20ff5bee98b6}
+ XMLFile
+ ItemTemplates
+ TemplateProjectOutputGroup%3b
+ false
+ True
+
diff --git a/vsintegration/Vsix/VisualFSharpOpenSource/Source.extension.vsixmanifest b/vsintegration/Vsix/VisualFSharpOpenSource/Source.extension.vsixmanifest
index c60aa24979a..86a241cedbd 100644
--- a/vsintegration/Vsix/VisualFSharpOpenSource/Source.extension.vsixmanifest
+++ b/vsintegration/Vsix/VisualFSharpOpenSource/Source.extension.vsixmanifest
@@ -43,10 +43,6 @@
-
-
-
-
diff --git a/vsintegration/Vsix/VisualFSharpOpenSource/VisualFSharpOpenSource.csproj b/vsintegration/Vsix/VisualFSharpOpenSource/VisualFSharpOpenSource.csproj
index c0bd76dc751..49e78adaef9 100644
--- a/vsintegration/Vsix/VisualFSharpOpenSource/VisualFSharpOpenSource.csproj
+++ b/vsintegration/Vsix/VisualFSharpOpenSource/VisualFSharpOpenSource.csproj
@@ -45,8 +45,8 @@
PropertiesRoslynDevtrue
- False
- True
+ True
+ False{E6A45CDF-B408-420F-B475-74611BEFC52B}trueVisualFSharpOpenSource
@@ -56,6 +56,8 @@
15.4.1.0cs
+
+ Program$(DevEnvDir)devenv.exe
@@ -278,38 +280,6 @@
falseTrue
-
- {d9d95330-3626-4199-b7af-17b8e4af6d87}
- NetCore259Project
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {1a8dbf70-4178-4ae3-af5f-39ddd5692210}
- NetCore78Project
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {5b739cf3-1116-4eb4-b598-6c16bea81ce5}
- NetCoreProject
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {db374a0c-7560-479f-9b21-d37c81f7624f}
- PortableLibraryProject
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
- {2facee44-48bd-40b5-a2ee-b54a0c9bb7c4}TutorialProject
@@ -324,8 +294,8 @@
False$(FSharpSourcesRoot)\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll
-
- $(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
+
+ $(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.$(SystemCollectionsImmutableVersion)\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
diff --git a/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest b/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest
index cdf29194040..3d17751f813 100644
--- a/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest
+++ b/vsintegration/Vsix/VisualFSharpTemplates/Source.extension.vsixmanifest
@@ -5,31 +5,20 @@
Visual F# Templates
- Deploy Visual F# Tools Templates to Visual Studio
+ Deploy Visual F# Tools Desktop Project Templates to Visual StudioMicrosoft.FSharp.VSIX.Templateshttps://docs.microsoft.com/en-us/dotnet/articles/fsharp/
-
+
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj b/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj
index addf142025c..f9835d36fb1 100644
--- a/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj
+++ b/vsintegration/Vsix/VisualFSharpTemplates/VisualFSharpTemplates.csproj
@@ -35,7 +35,7 @@
truetrueCommonExtensions
- Microsoft\FSharp
+ Microsoft\FSharpTemplatesNoneDebugAnyCPU
@@ -92,62 +92,6 @@
-
- {6ba13aa4-c25f-480f-856b-8e8000299a72}
- AppConfig
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {12ac2813-e895-4aaa-ae6c-94e21da09f64}
- CodeFile
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {0385564F-07B4-4264-AB8A-17C393E9140C}
- ResourceFile
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {a333b85a-dc23-49b6-9797-b89a7951e92d}
- ScriptFile
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {e3fdd4ac-46b6-4b9f-b672-317d1202cc50}
- SignatureFile
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {d11fc318-8f5d-4c8c-9287-ab40a016d13c}
- TextFile
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {1fb1dd07-06aa-45b4-b5ac-20ff5bee98b6}
- XMLFile
- ItemTemplates
- TemplateProjectOutputGroup%3b
- false
- True
- {604f0daa-2d33-48dd-b162-edf0b672803d}ConsoleProject
@@ -164,38 +108,6 @@
falseTrue
-
- {d9d95330-3626-4199-b7af-17b8e4af6d87}
- NetCore259Project
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {1a8dbf70-4178-4ae3-af5f-39ddd5692210}
- NetCore78Project
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {5b739cf3-1116-4eb4-b598-6c16bea81ce5}
- NetCoreProject
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
-
-
- {db374a0c-7560-479f-9b21-d37c81f7624f}
- PortableLibraryProject
- ProjectTemplates
- TemplateProjectOutputGroup%3b
- false
- True
- {2facee44-48bd-40b5-a2ee-b54a0c9bb7c4}TutorialProject
diff --git a/vsintegration/fsharp-vsintegration-project-templates-build.proj b/vsintegration/fsharp-vsintegration-project-templates-build.proj
index 4c657e693d7..d810cea4de3 100644
--- a/vsintegration/fsharp-vsintegration-project-templates-build.proj
+++ b/vsintegration/fsharp-vsintegration-project-templates-build.proj
@@ -7,10 +7,6 @@
-
-
-
-
diff --git a/vsintegration/packages.config b/vsintegration/packages.config
index 4c4a2508b67..0fdfec0de5d 100644
--- a/vsintegration/packages.config
+++ b/vsintegration/packages.config
@@ -5,6 +5,7 @@
+
@@ -23,6 +24,7 @@
+
@@ -60,7 +62,7 @@
-
+
diff --git a/vsintegration/src/FSharp.Editor/Common/CodeAnalysisExtensions.fs b/vsintegration/src/FSharp.Editor/Common/CodeAnalysisExtensions.fs
index 4198f17151f..f75bb4020c9 100644
--- a/vsintegration/src/FSharp.Editor/Common/CodeAnalysisExtensions.fs
+++ b/vsintegration/src/FSharp.Editor/Common/CodeAnalysisExtensions.fs
@@ -3,6 +3,7 @@ module internal Microsoft.VisualStudio.FSharp.Editor.CodeAnalysisExtensions
open Microsoft.CodeAnalysis
open Microsoft.FSharp.Compiler.Range
+open System.IO
type Project with
@@ -41,7 +42,9 @@ type Solution with
/// Try to find the documentId corresponding to the provided filepath within this solution
member self.TryGetDocumentFromPath filePath =
- self.GetDocumentIdsWithFilePath filePath
+ // It's crucial to normalize file path here (specificaly, remove relative parts),
+ // otherwise Roslyn does not find documents.
+ self.GetDocumentIdsWithFilePath (Path.GetFullPath filePath)
|> Seq.tryHead |> Option.map (fun docId -> self.GetDocument docId)
diff --git a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs
index b3c7448a0c9..7825ccc1bda 100644
--- a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs
+++ b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs
@@ -34,7 +34,6 @@ type internal FSharpCompletionProvider
inherit CompletionProvider()
static let userOpName = "CompletionProvider"
- static let completionTriggers = [| '.' |]
static let declarationItemsCache = ConditionalWeakTable()
static let [] NameInCodePropName = "NameInCode"
static let [] FullNamePropName = "FullName"
@@ -87,18 +86,15 @@ type internal FSharpCompletionProvider
let triggerPosition = caretPosition - 1
let c = sourceText.[triggerPosition]
- if completionTriggers |> Array.contains c then
- true
-
// do not trigger completion if it's not single dot, i.e. range expression
- elif triggerPosition > 0 && sourceText.[triggerPosition - 1] = '.' then
+ if not Settings.IntelliSense.ShowAfterCharIsTyped && sourceText.[triggerPosition - 1] = '.' then
false
// Trigger completion if we are on a valid classification type
else
let documentId, filePath, defines = getInfo()
CompletionUtils.shouldProvideCompletion(documentId, filePath, defines, sourceText, triggerPosition) &&
- (Settings.IntelliSense.ShowAfterCharIsTyped && CompletionUtils.isStartingNewWord(sourceText, triggerPosition))
+ (c = '.' || (Settings.IntelliSense.ShowAfterCharIsTyped && CompletionUtils.isStartingNewWord(sourceText, triggerPosition)))
static member ProvideCompletionsAsyncAux(checker: FSharpChecker, sourceText: SourceText, caretPosition: int, options: FSharpProjectOptions, filePath: string,
textVersionHash: int, getAllSymbols: unit -> AssemblySymbol list) =
diff --git a/vsintegration/src/FSharp.Editor/Diagnostics/UnusedDeclarationsAnalyzer.fs b/vsintegration/src/FSharp.Editor/Diagnostics/UnusedDeclarationsAnalyzer.fs
index cb541cac322..071f0aadbe1 100644
--- a/vsintegration/src/FSharp.Editor/Diagnostics/UnusedDeclarationsAnalyzer.fs
+++ b/vsintegration/src/FSharp.Editor/Diagnostics/UnusedDeclarationsAnalyzer.fs
@@ -35,7 +35,7 @@ type internal UnusedDeclarationsAnalyzer() =
match symbol with
// Determining that a record, DU or module is used anywhere requires inspecting all their enclosed entities (fields, cases and func / vals)
// for usages, which is too expensive to do. Hence we never gray them out.
- | :? FSharpEntity as e when e.IsFSharpRecord || e.IsFSharpUnion || e.IsInterface || e.IsFSharpModule || e.IsClass -> false
+ | :? FSharpEntity as e when e.IsFSharpRecord || e.IsFSharpUnion || e.IsInterface || e.IsFSharpModule || e.IsClass || e.IsNamespace -> false
// FCS returns inconsistent results for override members; we're skipping these symbols.
| :? FSharpMemberOrFunctionOrValue as f when
f.IsOverrideOrExplicitInterfaceImplementation ||
diff --git a/vsintegration/src/FSharp.Editor/Diagnostics/UnusedOpensDiagnosticAnalyzer.fs b/vsintegration/src/FSharp.Editor/Diagnostics/UnusedOpensDiagnosticAnalyzer.fs
index 0dcb5c9da5d..88568b4a2a2 100644
--- a/vsintegration/src/FSharp.Editor/Diagnostics/UnusedOpensDiagnosticAnalyzer.fs
+++ b/vsintegration/src/FSharp.Editor/Diagnostics/UnusedOpensDiagnosticAnalyzer.fs
@@ -15,129 +15,7 @@ open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.Range
open Microsoft.FSharp.Compiler.SourceCodeServices
-open Symbols
-
-
-module private UnusedOpens =
-
-
- let rec visitSynModuleOrNamespaceDecls (parent: Ast.LongIdent) decls : (Set * range) list =
- [ for decl in decls do
- match decl with
- | SynModuleDecl.Open(LongIdentWithDots.LongIdentWithDots(id = longId), range) ->
- yield
- set [ yield (longId |> List.map(fun l -> l.idText) |> String.concat ".")
- // `open N.M` can open N.M module from parent module as well, if it's non empty
- if not (List.isEmpty parent) then
- yield (parent @ longId |> List.map(fun l -> l.idText) |> String.concat ".") ], range
- | SynModuleDecl.NestedModule(SynComponentInfo.ComponentInfo(longId = longId),_, decls,_,_) ->
- yield! visitSynModuleOrNamespaceDecls longId decls
- | _ -> () ]
-
- let getOpenStatements = function
- | ParsedInput.ImplFile (ParsedImplFileInput(modules = modules)) ->
- [ for md in modules do
- let SynModuleOrNamespace(longId = longId; decls = decls) = md
- yield! visitSynModuleOrNamespaceDecls longId decls ]
- | _ -> []
-
- let getAutoOpenAccessPath (ent:FSharpEntity) =
- // Some.Namespace+AutoOpenedModule+Entity
-
- // HACK: I can't see a way to get the EnclosingEntity of an Entity
- // Some.Namespace + Some.Namespace.AutoOpenedModule are both valid
- ent.TryFullName |> Option.bind(fun _ ->
- if (not ent.IsNamespace) && ent.QualifiedName.Contains "+" then
- Some ent.QualifiedName.[0..ent.QualifiedName.IndexOf "+" - 1]
- else
- None)
-
- let entityNamespace (entOpt: FSharpEntity option) =
- match entOpt with
- | Some ent ->
- if ent.IsFSharpModule then
- [ yield Some ent.QualifiedName
- yield Some ent.LogicalName
- yield Some ent.AccessPath
- yield Some ent.FullName
- yield Some ent.DisplayName
- yield ent.TryGetFullDisplayName()
- if ent.HasFSharpModuleSuffix then
- yield Some (ent.AccessPath + "." + ent.DisplayName)]
- else
- [ yield ent.Namespace
- yield Some ent.AccessPath
- yield getAutoOpenAccessPath ent
- for path in ent.AllCompilationPaths do
- yield Some path
- ]
- | None -> []
-
- let symbolIsFullyQualified (sourceText: SourceText) (sym: FSharpSymbolUse) (fullName: string) =
- match RoslynHelpers.TryFSharpRangeToTextSpan(sourceText, sym.RangeAlternate) with
- | Some span // check that the symbol hasn't provided an invalid span
- when sourceText.Length < span.Start
- || sourceText.Length < span.End -> false
- | Some span -> sourceText.ToString span = fullName
- | None -> false
-
- let getUnusedOpens (sourceText: SourceText) (parsedInput: ParsedInput) (symbolUses: FSharpSymbolUse[]) =
-
- let getPartNamespace (symbolUse: FSharpSymbolUse) (fullName: string) =
- // given a symbol range such as `Text.ISegment` and a full name of `MonoDevelop.Core.Text.ISegment`, return `MonoDevelop.Core`
- let length = symbolUse.RangeAlternate.EndColumn - symbolUse.RangeAlternate.StartColumn
- let lengthDiff = fullName.Length - length - 2
- if lengthDiff <= 0 || lengthDiff > fullName.Length - 1 then None
- else Some fullName.[0..lengthDiff]
-
- let getPossibleNamespaces (symbolUse: FSharpSymbolUse) : string list =
- let isQualified = symbolIsFullyQualified sourceText symbolUse
- maybe {
- let! fullNames, declaringEntity =
- match symbolUse with
- | SymbolUse.Entity (ent, cleanFullNames) when not (cleanFullNames |> List.exists isQualified) ->
- Some (cleanFullNames, Some ent)
- | SymbolUse.Field f when not (isQualified f.FullName) ->
- Some ([f.FullName], Some f.DeclaringEntity)
- | SymbolUse.MemberFunctionOrValue mfv when not (isQualified mfv.FullName) ->
- Some ([mfv.FullName], mfv.EnclosingEntity)
- | SymbolUse.Operator op when not (isQualified op.FullName) ->
- Some ([op.FullName], op.EnclosingEntity)
- | SymbolUse.ActivePattern ap when not (isQualified ap.FullName) ->
- Some ([ap.FullName], ap.EnclosingEntity)
- | SymbolUse.ActivePatternCase apc when not (isQualified apc.FullName) ->
- Some ([apc.FullName], apc.Group.EnclosingEntity)
- | SymbolUse.UnionCase uc when not (isQualified uc.FullName) ->
- Some ([uc.FullName], Some uc.ReturnType.TypeDefinition)
- | SymbolUse.Parameter p when not (isQualified p.FullName) && p.Type.HasTypeDefinition ->
- Some ([p.FullName], Some p.Type.TypeDefinition)
- | _ -> None
-
- return
- [ for name in fullNames do
- yield getPartNamespace symbolUse name
- yield! entityNamespace declaringEntity ]
- } |> Option.toList |> List.concat |> List.choose id
-
- let namespacesInUse =
- symbolUses
- |> Seq.filter (fun (s: FSharpSymbolUse) -> not s.IsFromDefinition)
- |> Seq.collect getPossibleNamespaces
- |> Set.ofSeq
-
- let filter list: (Set * range) list =
- let rec filterInner acc list (seenNamespaces: Set) =
- let notUsed ns = not (namespacesInUse.Contains ns) || seenNamespaces.Contains ns
- match list with
- | (ns, range) :: xs when ns |> Set.forall notUsed ->
- filterInner ((ns, range) :: acc) xs (seenNamespaces |> Set.union ns)
- | (ns, _) :: xs ->
- filterInner acc xs (seenNamespaces |> Set.union ns)
- | [] -> List.rev acc
- filterInner [] list Set.empty
-
- let openStatements = getOpenStatements parsedInput
- openStatements |> filter |> List.map snd
+open Microsoft.VisualStudio.FSharp.Editor.Symbols
[]
type internal UnusedOpensDiagnosticAnalyzer() =
@@ -160,13 +38,19 @@ type internal UnusedOpensDiagnosticAnalyzer() =
override __.SupportedDiagnostics = ImmutableArray.Create Descriptor
override this.AnalyzeSyntaxAsync(_, _) = Task.FromResult ImmutableArray.Empty
- static member GetUnusedOpenRanges(document: Document, options, checker: FSharpChecker) =
+ static member GetUnusedOpenRanges(document: Document, options, checker: FSharpChecker) : Async
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
diff --git a/vsintegration/src/FSharp.Editor/LanguageService/FSharpCheckerExtensions.fs b/vsintegration/src/FSharp.Editor/LanguageService/FSharpCheckerExtensions.fs
index 2d6b877fee9..14719b17d23 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/FSharpCheckerExtensions.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/FSharpCheckerExtensions.fs
@@ -8,7 +8,6 @@ open Microsoft.CodeAnalysis.Text
open Microsoft.FSharp.Compiler
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.SourceCodeServices
-open TypedAstUtils
type CheckResults =
| Ready of (FSharpParseFileResults * FSharpCheckFileResults) option
@@ -108,7 +107,7 @@ type FSharpChecker with
match symbolUse.Symbol with
// Make sure that unsafe manipulation isn't executed if unused opens are disabled
| _ when not checkForUnusedOpens -> None
- | TypedAstPatterns.MemberFunctionOrValue func when func.IsExtensionMember ->
+ | Symbol.MemberFunctionOrValue func when func.IsExtensionMember ->
if func.IsProperty then
let fullNames =
[| if func.HasGetterMethod then
@@ -125,9 +124,9 @@ type FSharpChecker with
| [||] -> None
| _ -> Some fullNames
else
- match func.EnclosingEntity.Value with
+ match func.EnclosingEntity with
// C# extension method
- | TypedAstPatterns.FSharpEntity TypedAstPatterns.Class ->
+ | Some (Symbol.FSharpEntity Symbol.Class) ->
let fullName = symbolUse.Symbol.FullName.Split '.'
if fullName.Length > 2 then
(* For C# extension methods FCS returns full name including the class name, like:
@@ -142,9 +141,9 @@ type FSharpChecker with
else None
| _ -> None
// Operators
- | TypedAstPatterns.MemberFunctionOrValue func ->
+ | Symbol.MemberFunctionOrValue func ->
match func with
- | TypedAstPatterns.Constructor _ ->
+ | Symbol.Constructor _ ->
// full name of a constructor looks like "UnusedSymbolClassifierTests.PrivateClass.( .ctor )"
// to make well formed full name parts we cut "( .ctor )" from the tail.
let fullName = func.FullName
@@ -160,16 +159,16 @@ type FSharpChecker with
| Some idents -> yield String.concat "." idents
| None -> ()
|]
- | TypedAstPatterns.FSharpEntity e ->
+ | Symbol.FSharpEntity e ->
match e with
- | e, TypedAstPatterns.Attribute, _ ->
+ | e, Symbol.Attribute, _ ->
e.TryGetFullName ()
|> Option.map (fun fullName ->
[| fullName; fullName.Substring(0, fullName.Length - "Attribute".Length) |])
| e, _, _ ->
e.TryGetFullName () |> Option.map (fun fullName -> [| fullName |])
- | TypedAstPatterns.RecordField _
- | TypedAstPatterns.UnionCase _ as symbol ->
+ | Symbol.RecordField _
+ | Symbol.UnionCase _ as symbol ->
Some [| let fullName = symbol.FullName
yield fullName
let idents = fullName.Split '.'
diff --git a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
index 8055202d252..4e7757eb588 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs
@@ -15,17 +15,16 @@ open System.Linq
open System.Runtime.CompilerServices
open System.Runtime.InteropServices
open System.Threading
-
-open Microsoft.FSharp.Compiler.CompileOps
-open Microsoft.FSharp.Compiler.SourceCodeServices
-open Microsoft.VisualStudio.FSharp.LanguageService.SiteProvider
-
open Microsoft.CodeAnalysis
open Microsoft.CodeAnalysis.Diagnostics
open Microsoft.CodeAnalysis.Completion
open Microsoft.CodeAnalysis.Options
+open Microsoft.FSharp.Compiler.CompileOps
+open Microsoft.FSharp.Compiler.SourceCodeServices
open Microsoft.VisualStudio
open Microsoft.VisualStudio.Editor
+open Microsoft.VisualStudio.FSharp.LanguageService
+open Microsoft.VisualStudio.FSharp.LanguageService.SiteProvider
open Microsoft.VisualStudio.TextManager.Interop
open Microsoft.VisualStudio.LanguageServices
open Microsoft.VisualStudio.LanguageServices.Implementation.LanguageService
@@ -34,7 +33,6 @@ open Microsoft.VisualStudio.LanguageServices.Implementation.TaskList
open Microsoft.VisualStudio.LanguageServices.ProjectSystem
open Microsoft.VisualStudio.Shell
open Microsoft.VisualStudio.Shell.Interop
-open Microsoft.VisualStudio.FSharp.LanguageService
open Microsoft.VisualStudio.ComponentModelHost
// Exposes FSharpChecker as MEF export
@@ -89,7 +87,7 @@ type internal FSharpCheckerProvider
// It also allows a 'cheaper' route to get the project options relevant to parsing (e.g. the #define values).
// The main entrypoints are TryGetOptionsForDocumentOrProject and TryGetOptionsForEditingDocumentOrProject.
[); Composition.Shared>]
-type internal FSharpProjectOptionsManager
+type internal FSharpProjectOptionsManager
[]
(
checkerProvider: FSharpCheckerProvider,
@@ -114,33 +112,36 @@ type internal FSharpProjectOptionsManager
/// Clear a project from the project table
member this.ClearInfoForProject(projectId:ProjectId) = projectOptionsTable.ClearInfoForProject(projectId)
+ /// Clear a project from the single file project table
member this.ClearInfoForSingleFileProject(projectId) =
singleFileProjectTable.TryRemove(projectId) |> ignore
+ /// Update a project in the single file project table
member this.AddOrUpdateSingleFileProject(projectId, data) = singleFileProjectTable.[projectId] <- data
/// Get the exact options for a single-file script
- member this.ComputeSingleFileOptions (tryGetOrCreateProjectId, fileName, loadTime, fileContents, workspace: Workspace) = async {
- let extraProjectInfo = Some(box workspace)
- let tryGetOptionsForReferencedProject f = f |> tryGetOrCreateProjectId |> Option.bind this.TryGetOptionsForProject |> Option.map(fun (_, _, projectOptions) -> projectOptions)
- if SourceFile.MustBeSingleFileProject(fileName) then
- // NOTE: we don't use a unique stamp for single files, instead comparing options structurally.
- // This is because we repeatedly recompute the options.
- let optionsStamp = None
- let! options, _diagnostics = checkerProvider.Checker.GetProjectOptionsFromScript(fileName, fileContents, loadTime, [| |], ?extraProjectInfo=extraProjectInfo, ?optionsStamp=optionsStamp)
- // NOTE: we don't use FCS cross-project references from scripts to projects. THe projects must have been
- // compiled and #r will refer to files on disk
- let referencedProjectFileNames = [| |]
- let site = ProjectSitesAndFiles.CreateProjectSiteForScript(fileName, referencedProjectFileNames, options)
- let deps, projectOptions = ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, serviceProvider, (tryGetOrCreateProjectId fileName), fileName, options.ExtraProjectInfo, Some projectOptionsTable, true)
- let parsingOptions, _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
- return (deps, parsingOptions, projectOptions)
- else
- let site = ProjectSitesAndFiles.ProjectSiteOfSingleFile(fileName)
- let deps, projectOptions = ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, serviceProvider, (tryGetOrCreateProjectId fileName), fileName, extraProjectInfo, Some projectOptionsTable, true)
- let parsingOptions, _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
- return (deps, parsingOptions, projectOptions)
- }
+ member this.ComputeSingleFileOptions (tryGetOrCreateProjectId, fileName, loadTime, fileContents) =
+ async {
+ let extraProjectInfo = Some(box workspace)
+ let tryGetOptionsForReferencedProject f = f |> tryGetOrCreateProjectId |> Option.bind this.TryGetOptionsForProject |> Option.map(fun (_, _, projectOptions) -> projectOptions)
+ if SourceFile.MustBeSingleFileProject(fileName) then
+ // NOTE: we don't use a unique stamp for single files, instead comparing options structurally.
+ // This is because we repeatedly recompute the options.
+ let optionsStamp = None
+ let! options, _diagnostics = checkerProvider.Checker.GetProjectOptionsFromScript(fileName, fileContents, loadTime, [| |], ?extraProjectInfo=extraProjectInfo, ?optionsStamp=optionsStamp)
+ // NOTE: we don't use FCS cross-project references from scripts to projects. THe projects must have been
+ // compiled and #r will refer to files on disk
+ let referencedProjectFileNames = [| |]
+ let site = ProjectSitesAndFiles.CreateProjectSiteForScript(fileName, referencedProjectFileNames, options)
+ let deps, projectOptions = ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, serviceProvider, (tryGetOrCreateProjectId fileName), fileName, options.ExtraProjectInfo, Some projectOptionsTable, true)
+ let parsingOptions, _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
+ return (deps, parsingOptions, projectOptions)
+ else
+ let site = ProjectSitesAndFiles.ProjectSiteOfSingleFile(fileName)
+ let deps, projectOptions = ProjectSitesAndFiles.GetProjectOptionsForProjectSite(Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, serviceProvider, (tryGetOrCreateProjectId fileName), fileName, extraProjectInfo, Some projectOptionsTable, true)
+ let parsingOptions, _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
+ return (deps, parsingOptions, projectOptions)
+ }
/// Update the info for a project in the project table
member this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, site, userOpName) =
@@ -164,32 +165,34 @@ type internal FSharpProjectOptionsManager
| _ -> FSharpParsingOptions.Default
CompilerEnvironment.GetCompilationDefinesForEditing(document.Name, parsingOptions)
+ /// Try and get the Options for a project
member this.TryGetOptionsForProject(projectId:ProjectId) = projectOptionsTable.TryGetOptionsForProject(projectId)
/// Get the exact options for a document or project
- member this.TryGetOptionsForDocumentOrProject(document: Document) = async {
- let projectId = document.Project.Id
-
- // The options for a single-file script project are re-requested each time the file is analyzed. This is because the
- // single-file project may contain #load and #r references which are changing as the user edits, and we may need to re-analyze
- // to determine the latest settings. FCS keeps a cache to help ensure these are up-to-date.
- match singleFileProjectTable.TryGetValue(projectId) with
- | true, (loadTime, _, _) ->
- try
- let fileName = document.FilePath
- let! cancellationToken = Async.CancellationToken
- let! sourceText = document.GetTextAsync(cancellationToken) |> Async.AwaitTask
- // NOTE: we don't use FCS cross-project references from scripts to projects. The projects must have been
- // compiled and #r will refer to files on disk.
- let tryGetOrCreateProjectId _ = None
- let! _referencedProjectFileNames, parsingOptions, projectOptions = this.ComputeSingleFileOptions (tryGetOrCreateProjectId, fileName, loadTime, sourceText.ToString(), document.Project.Solution.Workspace)
- this.AddOrUpdateSingleFileProject(projectId, (loadTime, parsingOptions, projectOptions))
- return Some (parsingOptions, None, projectOptions)
- with ex ->
- Assert.Exception(ex)
- return None
- | _ -> return this.TryGetOptionsForProject(projectId)
- }
+ member this.TryGetOptionsForDocumentOrProject(document: Document) =
+ async {
+ let projectId = document.Project.Id
+
+ // The options for a single-file script project are re-requested each time the file is analyzed. This is because the
+ // single-file project may contain #load and #r references which are changing as the user edits, and we may need to re-analyze
+ // to determine the latest settings. FCS keeps a cache to help ensure these are up-to-date.
+ match singleFileProjectTable.TryGetValue(projectId) with
+ | true, (loadTime, _, _) ->
+ try
+ let fileName = document.FilePath
+ let! cancellationToken = Async.CancellationToken
+ let! sourceText = document.GetTextAsync(cancellationToken) |> Async.AwaitTask
+ // NOTE: we don't use FCS cross-project references from scripts to projects. The projects must have been
+ // compiled and #r will refer to files on disk.
+ let tryGetOrCreateProjectId _ = None
+ let! _referencedProjectFileNames, parsingOptions, projectOptions = this.ComputeSingleFileOptions (tryGetOrCreateProjectId, fileName, loadTime, sourceText.ToString())
+ this.AddOrUpdateSingleFileProject(projectId, (loadTime, parsingOptions, projectOptions))
+ return Some (parsingOptions, None, projectOptions)
+ with ex ->
+ Assert.Exception(ex)
+ return None
+ | _ -> return this.TryGetOptionsForProject(projectId)
+ }
/// Get the options for a document or project relevant for syntax processing.
/// Quicker then TryGetOptionsForDocumentOrProject as it doesn't need to recompute the exact project options for a script.
@@ -540,7 +543,7 @@ type
let projectDisplayName = projectDisplayNameOf projectFileName
let projectId = workspace.ProjectTracker.GetOrCreateProjectIdForPath(projectFileName, projectDisplayName)
- let _referencedProjectFileNames, parsingOptions, projectOptions = projectInfoManager.ComputeSingleFileOptions (tryGetOrCreateProjectId workspace, fileName, loadTime, fileContents, workspace) |> Async.RunSynchronously
+ let _referencedProjectFileNames, parsingOptions, projectOptions = projectInfoManager.ComputeSingleFileOptions (tryGetOrCreateProjectId workspace, fileName, loadTime, fileContents) |> Async.RunSynchronously
projectInfoManager.AddOrUpdateSingleFileProject(projectId, (loadTime, parsingOptions, projectOptions))
if isNull (workspace.ProjectTracker.GetProject projectId) then
diff --git a/vsintegration/src/FSharp.Editor/LanguageService/SymbolHelpers.fs b/vsintegration/src/FSharp.Editor/LanguageService/SymbolHelpers.fs
index b2ad08f76ad..34e42ff637a 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/SymbolHelpers.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/SymbolHelpers.fs
@@ -67,16 +67,8 @@ module internal SymbolHelpers =
|> Async.Parallel
|> Async.map Array.concat
- let declarationLength =
- symbol.DeclarationLocation
- |> Option.map (fun m -> m.EndColumn - m.StartColumn)
-
return
(symbolUses
- |> Seq.filter (fun su ->
- match declarationLength with
- | Some declLength -> su.RangeAlternate.EndColumn - su.RangeAlternate.StartColumn = declLength
- | None -> true)
|> Seq.collect (fun symbolUse ->
solution.GetDocumentIdsWithFilePath(symbolUse.FileName) |> Seq.map (fun id -> id, symbolUse))
|> Seq.groupBy fst
diff --git a/vsintegration/src/FSharp.Editor/LanguageService/Symbols.fs b/vsintegration/src/FSharp.Editor/LanguageService/Symbols.fs
index 1ed87724e3f..13de16c081c 100644
--- a/vsintegration/src/FSharp.Editor/LanguageService/Symbols.fs
+++ b/vsintegration/src/FSharp.Editor/LanguageService/Symbols.fs
@@ -130,218 +130,4 @@ type FSharpEntity with
| _ -> ()
| _ -> ()
]
- allBaseTypes x
-
-
-
-
-/// Active patterns over `FSharpSymbolUse`.
-module SymbolUse =
-
- let (|ActivePatternCase|_|) (symbol : FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpActivePatternCase as ap-> ActivePatternCase(ap) |> Some
- | _ -> None
-
- let private attributeSuffixLength = "Attribute".Length
-
- let (|Entity|_|) (symbol : FSharpSymbolUse) : (FSharpEntity * (* cleanFullNames *) string list) option =
- match symbol.Symbol with
- | :? FSharpEntity as ent ->
- // strip generic parameters count suffix (List`1 => List)
- let cleanFullName =
- // `TryFullName` for type aliases is always `None`, so we have to make one by our own
- if ent.IsFSharpAbbreviation then
- [ent.AccessPath + "." + ent.DisplayName]
- else
- ent.TryFullName
- |> Option.toList
- |> List.map (fun fullName ->
- if ent.GenericParameters.Count > 0 && fullName.Length > 2 then
- fullName.[0..fullName.Length - 3]
- else fullName)
-
- let cleanFullNames =
- cleanFullName
- |> List.collect (fun cleanFullName ->
- if ent.IsAttributeType then
- [cleanFullName; cleanFullName.[0..cleanFullName.Length - attributeSuffixLength - 1]]
- else [cleanFullName]
- )
- Some (ent, cleanFullNames)
- | _ -> None
-
-
- let (|Field|_|) (symbol : FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpField as field-> Some field
- | _ -> None
-
- let (|GenericParameter|_|) (symbol: FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpGenericParameter as gp -> Some gp
- | _ -> None
-
- let (|MemberFunctionOrValue|_|) (symbol : FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpMemberOrFunctionOrValue as func -> Some func
- | _ -> None
-
- let (|ActivePattern|_|) = function
- | MemberFunctionOrValue m when m.IsActivePattern -> Some m | _ -> None
-
- let (|Parameter|_|) (symbol : FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpParameter as param -> Some param
- | _ -> None
-
- let (|StaticParameter|_|) (symbol : FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpStaticParameter as sp -> Some sp
- | _ -> None
-
- let (|UnionCase|_|) (symbol : FSharpSymbolUse) =
- match symbol.Symbol with
- | :? FSharpUnionCase as uc-> Some uc
- | _ -> None
-
- //let (|Constructor|_|) = function
- // | MemberFunctionOrValue func when func.IsConstructor || func.IsImplicitConstructor -> Some func
- // | _ -> None
-
- let (|TypeAbbreviation|_|) = function
- | Entity (entity, _) when entity.IsFSharpAbbreviation -> Some entity
- | _ -> None
-
- let (|Class|_|) = function
- | Entity (entity, _) when entity.IsClass -> Some entity
- | Entity (entity, _) when entity.IsFSharp &&
- entity.IsOpaque &&
- not entity.IsFSharpModule &&
- not entity.IsNamespace &&
- not entity.IsDelegate &&
- not entity.IsFSharpUnion &&
- not entity.IsFSharpRecord &&
- not entity.IsInterface &&
- not entity.IsValueType -> Some entity
- | _ -> None
-
- let (|Delegate|_|) = function
- | Entity (entity, _) when entity.IsDelegate -> Some entity
- | _ -> None
-
- let (|Event|_|) = function
- | MemberFunctionOrValue symbol when symbol.IsEvent -> Some symbol
- | _ -> None
-
- let (|Property|_|) = function
- | MemberFunctionOrValue symbol when symbol.IsProperty || symbol.IsPropertyGetterMethod || symbol.IsPropertySetterMethod -> Some symbol
- | _ -> None
-
- let inline private notCtorOrProp (symbol:FSharpMemberOrFunctionOrValue) =
- not symbol.IsConstructor && not symbol.IsPropertyGetterMethod && not symbol.IsPropertySetterMethod
-
- let (|Method|_|) (symbolUse:FSharpSymbolUse) =
- match symbolUse with
- | MemberFunctionOrValue symbol when
- symbol.IsModuleValueOrMember &&
- not symbolUse.IsFromPattern &&
- not symbol.IsOperatorOrActivePattern &&
- not symbol.IsPropertyGetterMethod &&
- not symbol.IsPropertySetterMethod -> Some symbol
- | _ -> None
-
- let (|Function|_|) (symbolUse:FSharpSymbolUse) =
- match symbolUse with
- | MemberFunctionOrValue symbol when
- notCtorOrProp symbol &&
- symbol.IsModuleValueOrMember &&
- not symbol.IsOperatorOrActivePattern &&
- not symbolUse.IsFromPattern ->
-
- match symbol.FullTypeSafe with
- | Some fullType when fullType.IsFunctionType -> Some symbol
- | _ -> None
- | _ -> None
-
- let (|Operator|_|) (symbolUse:FSharpSymbolUse) =
- match symbolUse with
- | MemberFunctionOrValue symbol when
- notCtorOrProp symbol &&
- not symbolUse.IsFromPattern &&
- not symbol.IsActivePattern &&
- symbol.IsOperatorOrActivePattern ->
-
- match symbol.FullTypeSafe with
- | Some fullType when fullType.IsFunctionType -> Some symbol
- | _ -> None
- | _ -> None
-
- let (|Pattern|_|) (symbolUse:FSharpSymbolUse) =
- match symbolUse with
- | MemberFunctionOrValue symbol when
- notCtorOrProp symbol &&
- not symbol.IsOperatorOrActivePattern &&
- symbolUse.IsFromPattern ->
-
- match symbol.FullTypeSafe with
- | Some fullType when fullType.IsFunctionType ->Some symbol
- | _ -> None
- | _ -> None
-
-
- let (|ClosureOrNestedFunction|_|) = function
- | MemberFunctionOrValue symbol when
- notCtorOrProp symbol &&
- not symbol.IsOperatorOrActivePattern &&
- not symbol.IsModuleValueOrMember ->
-
- match symbol.FullTypeSafe with
- | Some fullType when fullType.IsFunctionType -> Some symbol
- | _ -> None
- | _ -> None
-
-
- let (|Val|_|) = function
- | MemberFunctionOrValue symbol when notCtorOrProp symbol &&
- not symbol.IsOperatorOrActivePattern ->
- match symbol.FullTypeSafe with
- | Some _fullType -> Some symbol
- | _ -> None
- | _ -> None
-
- let (|Enum|_|) = function
- | Entity (entity, _) when entity.IsEnum -> Some entity
- | _ -> None
-
- let (|Interface|_|) = function
- | Entity (entity, _) when entity.IsInterface -> Some entity
- | _ -> None
-
- let (|Module|_|) = function
- | Entity (entity, _) when entity.IsFSharpModule -> Some entity
- | _ -> None
-
- let (|Namespace|_|) = function
- | Entity (entity, _) when entity.IsNamespace -> Some entity
- | _ -> None
-
- let (|Record|_|) = function
- | Entity (entity, _) when entity.IsFSharpRecord -> Some entity
- | _ -> None
-
- let (|Union|_|) = function
- | Entity (entity, _) when entity.IsFSharpUnion -> Some entity
- | _ -> None
-
- let (|ValueType|_|) = function
- | Entity (entity, _) when entity.IsValueType && not entity.IsEnum -> Some entity
- | _ -> None
-
- let (|ComputationExpression|_|) (symbol:FSharpSymbolUse) =
- if symbol.IsFromComputationExpression then Some symbol
- else None
-
- let (|Attribute|_|) = function
- | Entity (entity, _) when entity.IsAttributeType -> Some entity
- | _ -> None
\ No newline at end of file
+ allBaseTypes x
\ No newline at end of file
diff --git a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
index f8121a8f347..9ac64755ac8 100644
--- a/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
+++ b/vsintegration/src/FSharp.LanguageService.Base/FSharp.LanguageService.Base.csproj
@@ -40,13 +40,6 @@
false
-
- true
- $(FSharpSourcesRoot)\fsharp\msft.pubkey
- STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY;$(DefineConstants)
- true
- true
-
@@ -56,7 +49,9 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
-
+
+ $(FSharpSourcesRoot)\..\packages\Microsoft.MSXML.8.0.0-alpha\lib\net46\microsoft.msxml.dll
+
diff --git a/vsintegration/src/FSharp.LanguageService.Base/Source.cs b/vsintegration/src/FSharp.LanguageService.Base/Source.cs
index b3a71299642..79f558a3e73 100644
--- a/vsintegration/src/FSharp.LanguageService.Base/Source.cs
+++ b/vsintegration/src/FSharp.LanguageService.Base/Source.cs
@@ -163,7 +163,7 @@ internal FSharpSourceBase_DEPRECATED(LanguageService_DEPRECATED service, IVsText
this.lastOnIdleRequestDuration = 0;
- this.openedTime = System.DateTime.Now;
+ this.openedTime = System.DateTime.UtcNow;
}
~FSharpSourceBase_DEPRECATED()
diff --git a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
index 22c3f49cf78..c7915acdb3f 100644
--- a/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
+++ b/vsintegration/src/FSharp.LanguageService/FSharp.LanguageService.fsproj
@@ -67,6 +67,7 @@
Microsoft.VisualStudio.FSharp.LanguageService.Strings
+
@@ -99,7 +100,7 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Framework.dll
- $(FSharpSourcesRoot)\..\EnvDTE.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE.8.0.1\lib\net10\EnvDTE.dllTrue
@@ -115,7 +116,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
diff --git a/vsintegration/src/FSharp.LanguageService/LanguageServiceConstants.fs b/vsintegration/src/FSharp.LanguageService/LanguageServiceConstants.fs
new file mode 100644
index 00000000000..b64d0405948
--- /dev/null
+++ b/vsintegration/src/FSharp.LanguageService/LanguageServiceConstants.fs
@@ -0,0 +1,10 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.VisualStudio.FSharp.LanguageService
+
+[]
+module internal LanguageServiceConstants =
+
+ /// "F#"
+ []
+ let FSharpLanguageName = "F#"
diff --git a/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs b/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs
index 7f706e98443..cc6e220d661 100644
--- a/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs
+++ b/vsintegration/src/FSharp.LanguageService/ProjectSitesAndFiles.fs
@@ -75,7 +75,7 @@ type private ProjectSiteOfScriptFile(filename:string, referencedProjectFileNames
|> Array.choose (fun flag -> if flag.StartsWith("-r:") then Some flag.[3..] else None)
override this.CompilationBinOutputPath = None
override this.ProjectFileName = checkOptions.ProjectFileName
- override this.BuildErrorReporter with get() = None and set _v = ()
+ override this.BuildErrorReporter with get() = None and set _ = ()
override this.AdviseProjectSiteChanges(_,_) = ()
override this.AdviseProjectSiteCleaned(_,_) = ()
override this.AdviseProjectSiteClosed(_,_) = ()
@@ -128,11 +128,12 @@ type private ProjectSiteOfSingleFile(sourceFile) =
/// Manage Storage of FSharpProjectOptions the options for a project
type internal FSharpProjectOptionsTable () =
+
// A table of information about projects, excluding single-file projects.
let projectTable = ConcurrentDictionary>()
let commandLineOptions = new ConcurrentDictionary()
- /// Go and re-get all of the options for everything that references projectId
+ /// Re-fetch all of the options for everything that references projectId
let refreshInfoForProjectsThatReferenceThisProject (projectId:ProjectId) =
for KeyValue(otherProjectId, ((referencedProjectIds, _parsingOptions, _site, _options), refresh)) in projectTable.ToArray() do
for referencedProjectId in referencedProjectIds do
@@ -161,69 +162,74 @@ type internal FSharpProjectOptionsTable () =
| true, (sources, references, options) -> sources, references, options
| _ -> [||], [||], [||]
+ /// Store the command line options for a projectId
member this.SetOptionsWithProjectId(projectId:ProjectId, sourcePaths:string[], referencePaths:string[], options:string[]) =
commandLineOptions.[projectId] <- (sourcePaths, referencePaths, options)
+
let internal provideProjectSiteProvider(workspace:VisualStudioWorkspaceImpl, project:Project, serviceProvider:System.IServiceProvider, projectOptionsTable:FSharpProjectOptionsTable option) =
let hier = workspace.GetHierarchy(project.Id)
let getCommandLineOptionsWithProjectId (projectId) =
match projectOptionsTable with
| Some (options) -> options.GetCommandLineOptionsWithProjectId(projectId)
| None -> [||], [||], [||]
- {new IProvideProjectSite with
- member x.GetProjectSite() =
- let fst (a, _, _) = a
- let snd (_, b, _) = b
- let mutable errorReporter =
- let reporter = ProjectExternalErrorReporter(project.Id, "FS", serviceProvider)
- Some(reporter:> IVsLanguageServiceBuildErrorReporter2)
-
- { new IProjectSite with
- member __.Description = project.Name
- member __.CompilationSourceFiles = getCommandLineOptionsWithProjectId(project.Id) |> fst
- member __.CompilationOptions =
- let _,references,options = getCommandLineOptionsWithProjectId(project.Id)
- Array.concat [options; references |> Array.map(fun r -> "-r:" + r)]
- member __.CompilationReferences = getCommandLineOptionsWithProjectId(project.Id) |> snd
- member site.CompilationBinOutputPath = site.CompilationOptions |> Array.tryPick (fun s -> if s.StartsWith("-o:") then Some s.[3..] else None)
- member __.ProjectFileName = project.FilePath
- member __.AdviseProjectSiteChanges(_,_) = ()
- member __.AdviseProjectSiteCleaned(_,_) = ()
- member __.AdviseProjectSiteClosed(_,_) = ()
- member __.IsIncompleteTypeCheckEnvironment = false
- member __.TargetFrameworkMoniker = ""
- member __.ProjectGuid = project.Id.Id.ToString()
- member __.LoadTime = System.DateTime.Now
- member __.ProjectProvider = Some (x)
- member __.BuildErrorReporter with get () = errorReporter and
- set (v) = errorReporter <- v
- }
-
- interface IVsHierarchy with
- member __.SetSite(psp) = hier.SetSite(psp)
- member __.GetSite(psp) = hier.GetSite(ref psp)
- member __.QueryClose(pfCanClose) = hier.QueryClose(ref pfCanClose)
- member __.Close() = hier.Close()
- member __.GetGuidProperty(itemid, propid, pguid) = hier.GetGuidProperty(itemid, propid, ref pguid)
- member __.SetGuidProperty(itemid, propid, rguid) = hier.SetGuidProperty(itemid, propid, ref rguid)
- member __.GetProperty(itemid, propid, pvar) = hier.GetProperty(itemid, propid, ref pvar)
- member __.SetProperty(itemid, propid, var) = hier.SetProperty(itemid, propid, var)
- member __.GetNestedHierarchy(itemid, iidHierarchyNested, ppHierarchyNested, pitemidNested) = hier.GetNestedHierarchy(itemid, ref iidHierarchyNested, ref ppHierarchyNested, ref pitemidNested)
- member __.GetCanonicalName(itemid, pbstrName) = hier.GetCanonicalName(itemid, ref pbstrName)
- member __.ParseCanonicalName(pszName, pitemid) = hier.ParseCanonicalName(pszName, ref pitemid)
- member __.Unused0() = hier.Unused0()
- member __.AdviseHierarchyEvents(pEventSink, pdwCookie) = hier.AdviseHierarchyEvents(pEventSink, ref pdwCookie)
- member __.UnadviseHierarchyEvents(dwCookie) = hier.UnadviseHierarchyEvents(dwCookie)
- member __.Unused1() = hier.Unused1()
- member __.Unused2() = hier.Unused2()
- member __.Unused3() = hier.Unused3()
- member __.Unused4() = hier.Unused4()
+ {
+ new IProvideProjectSite with
+ member x.GetProjectSite() =
+ let fst (a, _, _) = a
+ let snd (_, b, _) = b
+ let mutable errorReporter =
+ let reporter = ProjectExternalErrorReporter(project.Id, "FS", serviceProvider)
+ Some(reporter:> IVsLanguageServiceBuildErrorReporter2)
+
+ {
+ new IProjectSite with
+ member __.Description = project.Name
+ member __.CompilationSourceFiles = getCommandLineOptionsWithProjectId(project.Id) |> fst
+ member __.CompilationOptions =
+ let _,references,options = getCommandLineOptionsWithProjectId(project.Id)
+ Array.concat [options; references |> Array.map(fun r -> "-r:" + r)]
+ member __.CompilationReferences = getCommandLineOptionsWithProjectId(project.Id) |> snd
+ member site.CompilationBinOutputPath = site.CompilationOptions |> Array.tryPick (fun s -> if s.StartsWith("-o:") then Some s.[3..] else None)
+ member __.ProjectFileName = project.FilePath
+ member __.AdviseProjectSiteChanges(_,_) = ()
+ member __.AdviseProjectSiteCleaned(_,_) = ()
+ member __.AdviseProjectSiteClosed(_,_) = ()
+ member __.IsIncompleteTypeCheckEnvironment = false
+ member __.TargetFrameworkMoniker = ""
+ member __.ProjectGuid = project.Id.Id.ToString()
+ member __.LoadTime = System.DateTime.Now
+ member __.ProjectProvider = Some (x)
+ member __.BuildErrorReporter with get () = errorReporter and set (v) = errorReporter <- v
+ }
+ interface IVsHierarchy with
+ member __.SetSite(psp) = hier.SetSite(psp)
+ member __.GetSite(psp) = hier.GetSite(ref psp)
+ member __.QueryClose(pfCanClose) = hier.QueryClose(ref pfCanClose)
+ member __.Close() = hier.Close()
+ member __.GetGuidProperty(itemid, propid, pguid) = hier.GetGuidProperty(itemid, propid, ref pguid)
+ member __.SetGuidProperty(itemid, propid, rguid) = hier.SetGuidProperty(itemid, propid, ref rguid)
+ member __.GetProperty(itemid, propid, pvar) = hier.GetProperty(itemid, propid, ref pvar)
+ member __.SetProperty(itemid, propid, var) = hier.SetProperty(itemid, propid, var)
+ member __.GetNestedHierarchy(itemid, iidHierarchyNested, ppHierarchyNested, pitemidNested) =
+ hier.GetNestedHierarchy(itemid, ref iidHierarchyNested,
+ ref ppHierarchyNested, ref pitemidNested)
+ member __.GetCanonicalName(itemid, pbstrName) = hier.GetCanonicalName(itemid, ref pbstrName)
+ member __.ParseCanonicalName(pszName, pitemid) = hier.ParseCanonicalName(pszName, ref pitemid)
+ member __.Unused0() = hier.Unused0()
+ member __.AdviseHierarchyEvents(pEventSink, pdwCookie) = hier.AdviseHierarchyEvents(pEventSink, ref pdwCookie)
+ member __.UnadviseHierarchyEvents(dwCookie) = hier.UnadviseHierarchyEvents(dwCookie)
+ member __.Unused1() = hier.Unused1()
+ member __.Unused2() = hier.Unused2()
+ member __.Unused3() = hier.Unused3()
+ member __.Unused4() = hier.Unused4()
}
/// Information about projects, open files and other active artifacts in visual studio.
/// Keeps track of the relationship between IVsTextLines buffers, IFSharpSource_DEPRECATED objects, IProjectSite objects and FSharpProjectOptions
[]
type internal ProjectSitesAndFiles() =
+
static let sourceUserDataGuid = new Guid("{55F834FD-B950-4C61-BBAA-0511ABAF4AE2}") // Guid for source user data on text buffer
static let mutable stamp = 0L
static let tryGetProjectSite(hierarchy:IVsHierarchy) =
@@ -268,7 +274,7 @@ type internal ProjectSitesAndFiles() =
if not (isNull project) then
for reference in project.ProjectReferences do
let project = workspace.CurrentSolution.GetProject(reference.ProjectId)
- if not (isNull project) then
+ if not (isNull project) && project.Language = LanguageServiceConstants.FSharpLanguageName then
let siteProvider = provideProjectSiteProvider (workspace, project, serviceProvider, projectOptionsTable)
let referenceProject = workspace.ProjectTracker.GetProject(reference.ProjectId)
let outputPath = referenceProject.BinOutputPath
@@ -285,7 +291,8 @@ type internal ProjectSitesAndFiles() =
let solutionService = try Some (serviceProvider.GetService(typeof) :?> IVsSolution) with _ -> None
seq { match solutionService with
| Some solutionService ->
- for reference in getReferencesForSolutionService solutionService do yield reference
+ for reference in getReferencesForSolutionService solutionService do
+ yield reference
| None -> ()
}
diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs
index bf1d827a2ef..e6f28af66f9 100644
--- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs
+++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectNode.cs
@@ -4163,7 +4163,7 @@ public void SetProjectFileDirty(bool value)
this.isDirty = value;
if (this.isDirty)
{
- this.lastModifiedTime = DateTime.Now;
+ this.lastModifiedTime = DateTime.UtcNow;
this.buildIsPrepared = false;
}
}
diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectReferenceNode.cs b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectReferenceNode.cs
index eea153ed438..5223caa3f2e 100644
--- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectReferenceNode.cs
+++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectReferenceNode.cs
@@ -145,22 +145,6 @@ public string ReferencedProjectName
get { return this.referencedProjectName; }
}
- // This method throws FileNotFoundException if VC is not installed
- private static void CheckVCProjectMatchesPath(object prjObj, string goalPath, out bool isVCProject, out bool matches)
- {
- matches = false;
- var vcProject = prjObj as Microsoft.VisualStudio.VCProjectEngine.VCProject;
- isVCProject = vcProject != null;
- if (isVCProject)
- {
- var projectFilePath = vcProject.ProjectFile;
- if (NativeMethods.IsSamePath(projectFilePath, goalPath))
- {
- matches = true;
- }
- }
- }
-
private void InitReferencedProject(IVsSolution solution)
{
IVsHierarchy hier;
@@ -183,27 +167,6 @@ private void InitReferencedProject(IVsSolution solution)
return;
}
- // do things differently for C++
- try
- {
- bool isVCProject;
- bool itMatches;
- CheckVCProjectMatchesPath(prj.Object, this.referencedProjectFullPath, out isVCProject, out itMatches);
- if (itMatches)
- {
- this.referencedProject = prj;
- return;
- }
- if (isVCProject)
- {
- return;
- }
- }
- catch (System.IO.FileNotFoundException)
- {
- // ignore it - VC might not be installed
- }
-
// Get the full path of the current project.
EnvDTE.Property pathProperty = null;
try
diff --git a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj
index ca3315a33e3..6a57d667913 100644
--- a/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj
+++ b/vsintegration/src/FSharp.ProjectSystem.Base/Project/ProjectSystem.Base.csproj
@@ -45,13 +45,6 @@
-
- true
- $(FSharpSourcesRoot)\fsharp\msft.pubkey
- STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY;$(DefineConstants)
- true
- true
-
@@ -65,7 +58,6 @@
-
@@ -84,7 +76,7 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Conversion.Core.dll
- $(FSharpSourcesRoot)\..\EnvDTE.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE.8.0.1\lib\net10\EnvDTE.dllTrue
@@ -116,7 +108,7 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.ComponentModelHost.15.0.26201-alpha\lib\net46\Microsoft.VisualStudio.ComponentModelHost.dll
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
@@ -148,7 +140,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.Shell.Interop.12.0.11.0.61030\lib\Microsoft.VisualStudio.Shell.Interop.12.0.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.Shell.Interop.12.0.12.0.30110\lib\Microsoft.VisualStudio.Shell.Interop.12.0.dllTrue
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/Project.fs b/vsintegration/src/FSharp.ProjectSystem.FSharp/Project.fs
index aeac457a16c..8e11b8651f6 100644
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/Project.fs
+++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/Project.fs
@@ -1290,8 +1290,7 @@ namespace rec Microsoft.VisualStudio.FSharp.ProjectSystem
let result = base.InvokeMsBuild(target, extraProperties)
result
- // Fulfill HostObject contract with Fsc task, and enable 'capture' of compiler flags for the project.
- member x.Compile(compile:System.Converter, flags:string[], sources:string[]) =
+ member x.CoreCompile(flags:string[], sources:string[]) =
// Note: This method may be called from non-UI thread! The Fsc task in FSharp.Build.dll invokes this method via reflection, and
// the Fsc task is typically created by MSBuild on a background thread. So be careful.
#if DEBUG
@@ -1306,11 +1305,26 @@ namespace rec Microsoft.VisualStudio.FSharp.ProjectSystem
if projectSite.State = ProjectSiteOptionLifetimeState.Opening then
// This is the first time, so set up interface for language service to talk to us
projectSite.Open(x.CreateRunningProjectSite())
+
+ // =====================================================================================================
+ // Todo: x.Compile(compile:System.Converter, flags:string[], sources:string[]) for VS2017.7
+ // Earlier buildtasks usesd System.Converter for cross platform we are moving to Func
+ // This is so that during the interim, earlier VS's will still load the OSS project
+ // =====================================================================================================
+ member x.Compile(compile:System.Converter, flags:string[], sources:string[]) =
+ x.CoreCompile(flags, sources)
if actuallyBuild then
compile.Invoke(0)
else
0
+ member x.Compile(compile:Func, flags:string[], sources:string[]) =
+ x.CoreCompile(flags, sources)
+ if actuallyBuild then
+ compile.Invoke()
+ else
+ 0
+
member __.CompilationSourceFiles = match sourcesAndFlags with None -> [| |] | Some (sources,_) -> sources
member __.CompilationOptions = match sourcesAndFlags with None -> [| |] | Some (_,flags) -> flags
member __.CompilationReferences = match normalizedRefs with None -> [| |] | Some refs -> refs
@@ -1431,7 +1445,7 @@ namespace rec Microsoft.VisualStudio.FSharp.ProjectSystem
// Returns an IProjectSite that references "this" to get its information
member private x.CreateRunningProjectSite() =
- let creationTime = System.DateTime.Now
+ let creationTime = System.DateTime.UtcNow
{ new Microsoft.VisualStudio.FSharp.LanguageService.IProjectSite with
member __.CompilationSourceFiles = x.CompilationSourceFiles
@@ -1473,7 +1487,7 @@ namespace rec Microsoft.VisualStudio.FSharp.ProjectSystem
let mutable staticBuildErrorReporter = buildErrorReporter
let projFileName = MSBuildProject.GetFullPath(x.BuildProject)
let targetFrameworkMoniker = x.GetTargetFrameworkMoniker()
- let creationTime = DateTime.Now
+ let creationTime = DateTime.UtcNow
// This object is thread-safe
{ new Microsoft.VisualStudio.FSharp.LanguageService.IProjectSite with
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectResources.rc b/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectResources.rc
deleted file mode 100644
index c205f665be7..00000000000
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectResources.rc
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-
-// Note that, regardless of what numbers are given here, the wix code (src\wix\script.fs) that references these uses 'IconIndex' starting at 0
-#define FS 100
-#define FSI 101
-#define FSX 102
-#define FSPROJ 103
-// Note that these are not always the same as the .bmp that appears in Solution Explorer, but we think these are best for 'windows folder' for now
-FS ICON "Resources\FSharpCodeFile_32.ico"
-FSI ICON "Resources\FSharpSignature.ico"
-FSX ICON "Resources\FSharpScript.ico"
-FSPROJ ICON "Resources\FSharpAboutBox.ico"
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj b/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj
index b7b90d75070..fdecf065e6f 100644
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj
+++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/ProjectSystem.fsproj
@@ -7,6 +7,8 @@
FSharp
+
+
$(VsSDKTools)Debug
@@ -21,7 +23,6 @@
v4.6$(OtherFlags) --warnon:1182 --subsystemversion:6.00false
- ProjectResources.rctruefalsefalse
@@ -39,15 +40,6 @@
-
- $(IntermediateOutputPath)\ProjectResources.rc.res
-
-
-
-
-
-
-
@@ -115,7 +107,7 @@
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.DebuggerVisualizers.12.0.4\lib\net20\Microsoft.VisualStudio.DebuggerVisualizers.dll
+ $(FSharpSourcesRoot)\..\packages\VSSDK.DebuggerVisualizers.12.0.4\lib\net20\Microsoft.VisualStudio.DebuggerVisualizers.dllTrue
@@ -123,7 +115,7 @@
True
- $(FSharpSourcesRoot)\..\packages\EnvDTE80.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE80.8.0.1\lib\net10\EnvDTE80.dllTrue
@@ -135,7 +127,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
@@ -218,7 +210,7 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.Shell.$(RoslynVSBinariesVersion).$(RoslynVSPackagesVersion)\lib\Microsoft.VisualStudio.Shell.$(RoslynVSBinariesVersion).dll
-
+ $(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.$(SystemCollectionsImmutableVersion)\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll
@@ -261,4 +253,6 @@
FSharp.Core
+
+
\ No newline at end of file
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/Resources/FSharpTestLibrary.ico b/vsintegration/src/FSharp.ProjectSystem.FSharp/Resources/FSharpTestLibrary.ico
new file mode 100644
index 00000000000..671271e7595
Binary files /dev/null and b/vsintegration/src/FSharp.ProjectSystem.FSharp/Resources/FSharpTestLibrary.ico differ
diff --git a/vsintegration/src/FSharp.ProjectSystem.FSharp/VSPackage.resx b/vsintegration/src/FSharp.ProjectSystem.FSharp/VSPackage.resx
index 5bb05a0bfe1..70b9cdf465b 100644
--- a/vsintegration/src/FSharp.ProjectSystem.FSharp/VSPackage.resx
+++ b/vsintegration/src/FSharp.ProjectSystem.FSharp/VSPackage.resx
@@ -278,6 +278,9 @@
Resources\FSharpResources.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ Resources\FSharpTestLibrary.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
Resources\ProjectNode.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj
index 362993b2998..d087da45a13 100644
--- a/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj
+++ b/vsintegration/src/FSharp.ProjectSystem.PropertyPages/FSharp.PropertiesPages.vbproj
@@ -49,13 +49,6 @@
false
-
- true
- $(FSharpSourcesRoot)\fsharp\msft.pubkey
- STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY=True,$(DefineConstants)
- true
- true
-
@@ -111,11 +104,11 @@
True
- $(FSharpSourcesRoot)\..\packages\EnvDTE80.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE80.8.0.1\lib\net10\EnvDTE80.dllTrue
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
diff --git a/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj b/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj
index abe9503fa24..58e5ef5a823 100644
--- a/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj
+++ b/vsintegration/src/FSharp.UIResources/FSharp.UIResources.csproj
@@ -31,13 +31,6 @@
false
-
- true
- $(FSharpSourcesRoot)\fsharp\msft.pubkey
- STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY;$(DefineConstants)
- true
- true
-
diff --git a/vsintegration/src/FSharp.VS.FSI/FSHarp.VS.FSI.fsproj b/vsintegration/src/FSharp.VS.FSI/FSHarp.VS.FSI.fsproj
index 71b3f802763..8ef9147b006 100644
--- a/vsintegration/src/FSharp.VS.FSI/FSHarp.VS.FSI.fsproj
+++ b/vsintegration/src/FSharp.VS.FSI/FSHarp.VS.FSI.fsproj
@@ -102,7 +102,7 @@
- $(FSharpSourcesRoot)\..\EnvDTE.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE.8.0.1\lib\net10\EnvDTE.dllTrue
@@ -118,7 +118,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
@@ -173,7 +173,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.TextManager.Interop.10.0.30319\lib\Microsoft.VisualStudio.TextManager.Interop.10.0.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.TextManager.Interop.10.0.10.0.30319\lib\Microsoft.VisualStudio.TextManager.Interop.10.0.dllTrue
diff --git a/vsintegration/src/fsharp.tools.targets b/vsintegration/src/fsharp.tools.targets
index 7c636f69944..6ef78a70161 100644
--- a/vsintegration/src/fsharp.tools.targets
+++ b/vsintegration/src/fsharp.tools.targets
@@ -6,6 +6,8 @@
+
+
diff --git a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
index 057165e8b47..2bd608e43e1 100644
--- a/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
+++ b/vsintegration/tests/Salsa/VisualFSharp.Salsa.fsproj
@@ -61,7 +61,7 @@
True
- $(FSharpSourcesRoot)\..\packages\EnvDTE80.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE80.8.0.1\lib\net10\EnvDTE80.dllTrue
@@ -73,7 +73,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
@@ -127,7 +127,7 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.Telemetry.15.0.777-rtm6FAA2C78\lib\net45\Microsoft.VisualStudio.Telemetry.dllTrue
-
+ $(FSharpSourcesRoot)\..\packages\VSSDK.VSHelp.7.0.4\lib\net20\Microsoft.VisualStudio.VSHelp.dllTrue
@@ -162,6 +162,10 @@
True$(NUnitLibDir)\nunit.framework.dll
+
+ $(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
+ true
+ {DED3BBD7-53F4-428A-8C9F-27968E768605}FSharp.Core
diff --git a/vsintegration/tests/Salsa/salsa.fs b/vsintegration/tests/Salsa/salsa.fs
index 95e51ca8437..e2f0c17ab9f 100644
--- a/vsintegration/tests/Salsa/salsa.fs
+++ b/vsintegration/tests/Salsa/salsa.fs
@@ -93,9 +93,10 @@ module internal Salsa =
| null ->
let project = GlobalEngine().LoadProject(projectFileName)
// Set global properties.
- SetGlobalProperty(project,"BuildingInsideVisualStudio", "true")
- SetGlobalProperty(project,"Configuration", configuration)
- SetGlobalProperty(project,"Platform", platform)
+ SetGlobalProperty(project, "AssemblySearchPaths", "{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}")
+ SetGlobalProperty(project, "BuildingInsideVisualStudio", "true")
+ SetGlobalProperty(project, "Configuration", configuration)
+ SetGlobalProperty(project, "Platform", platform)
let prjColl = project.ProjectCollection
let hostSvc = prjColl.HostServices
let theHostObject = HostCompile()
@@ -109,7 +110,7 @@ module internal Salsa =
| false, _ ->
project, false, Unchecked.defaultof<_> // this code path is hit when unit-testing the project system, which uses its own HostObject
with e->
- printfn "Failed in MSBuild GetProject getting '%s'.\n" projectFileName
+ printfn "Failed in MSBuild GetProject getting '%s'.\n" projectFileName
raise e
project, justCreated, theHostObject
@@ -240,7 +241,7 @@ module internal Salsa =
let mutable prevConfig = ""
let mutable prevPlatform = ""
let GetFlags() =
- let newtimestamp = File.GetLastWriteTime(projectfile)
+ let newtimestamp = File.GetLastWriteTimeUtc(projectfile)
let curConfig = configurationFunc()
let curPlatform = platformFunc()
if timestamp <> newtimestamp
diff --git a/vsintegration/tests/unittests/CompletionProviderTests.fs b/vsintegration/tests/unittests/CompletionProviderTests.fs
index e34ed22f0ea..1fdd57d90f0 100644
--- a/vsintegration/tests/unittests/CompletionProviderTests.fs
+++ b/vsintegration/tests/unittests/CompletionProviderTests.fs
@@ -49,6 +49,9 @@ let internal projectOptions = {
Stamp = None
}
+let formatCompletions(completions : string seq) =
+ "\n\t" + String.Join("\n\t", completions)
+
let VerifyCompletionList(fileContents: string, marker: string, expected: string list, unexpected: string list) =
let caretPosition = fileContents.IndexOf(marker) + marker.Length
let results =
@@ -57,11 +60,44 @@ let VerifyCompletionList(fileContents: string, marker: string, expected: string
|> Option.defaultValue (ResizeArray())
|> Seq.map(fun result -> result.DisplayText)
- for item in expected do
- Assert.IsTrue(results.Contains(item), sprintf "Completions should contain '%s'. Got '%s'." item (String.Join(", ", results)))
+ let expectedFound =
+ expected
+ |> Seq.filter results.Contains
+
+ let expectedNotFound =
+ expected
+ |> Seq.filter (expectedFound.Contains >> not)
+
+ let unexpectedNotFound =
+ unexpected
+ |> Seq.filter (results.Contains >> not)
+
+ let unexpectedFound =
+ unexpected
+ |> Seq.filter (unexpectedNotFound.Contains >> not)
+
+ // If either of these are true, then the test fails.
+ let hasExpectedNotFound = not (Seq.isEmpty expectedNotFound)
+ let hasUnexpectedFound = not (Seq.isEmpty unexpectedFound)
+
+ if hasExpectedNotFound || hasUnexpectedFound then
+ let expectedNotFoundMsg =
+ if hasExpectedNotFound then
+ sprintf "\nExpected completions not found:%s\n" (formatCompletions expectedNotFound)
+ else
+ String.Empty
- for item in unexpected do
- Assert.IsFalse(results.Contains(item), sprintf "Completions should not contain '%s'. Got '{%s}'" item (String.Join(", ", results)))
+ let unexpectedFoundMsg =
+ if hasUnexpectedFound then
+ sprintf "\nUnexpected completions found:%s\n" (formatCompletions unexpectedFound)
+ else
+ String.Empty
+
+ let completionsMsg = sprintf "\nin Completions:%s" (formatCompletions results)
+
+ let msg = sprintf "%s%s%s" expectedNotFoundMsg unexpectedFoundMsg completionsMsg
+
+ Assert.Fail(msg)
let VerifyCompletionListExactly(fileContents: string, marker: string, expected: string list) =
let caretPosition = fileContents.IndexOf(marker) + marker.Length
@@ -259,6 +295,52 @@ x.
"ToArray"; "ToString"; "TrimExcess"; "TrueForAll"]
VerifyCompletionListExactly(fileContents, "x.", expected)
+[]
+let ``Constructing a new class with object initializer syntax``() =
+ let fileContents = """
+type A() =
+ member val SettableProperty = 1 with get, set
+ member val AnotherSettableProperty = 1 with get, set
+ member val NonSettableProperty = 1
+
+let _ = new A(Setta
+"""
+
+ let expected = ["SettableProperty"; "AnotherSettableProperty"]
+ let notExpected = ["NonSettableProperty"]
+ VerifyCompletionList(fileContents, "(Setta", expected, notExpected)
+
+[]
+let ``Constructing a new class with object initializer syntax and verifying 'at' character doesn't exist.``() =
+ let fileContents = """
+type A() =
+ member val SettableProperty = 1 with get, set
+ member val AnotherSettableProperty = 1 with get, set
+ member val NonSettableProperty = 1
+
+let _ = new A(Setta
+"""
+
+ let expected = []
+ let notExpected = ["SettableProperty@"; "AnotherSettableProperty@"; "NonSettableProperty@"]
+ VerifyCompletionList(fileContents, "(Setta", expected, notExpected)
+
+[]
+let ``Constructing a new fully qualified class with object initializer syntax``() =
+ let fileContents = """
+module M =
+ type A() =
+ member val SettableProperty = 1 with get, set
+ member val AnotherSettableProperty = 1 with get, set
+ member val NonSettableProperty = 1
+
+let _ = new M.A(Setta
+"""
+
+ let expected = ["SettableProperty"; "AnotherSettableProperty"]
+ let notExpected = ["NonSettableProperty"]
+ VerifyCompletionList(fileContents, "(Setta", expected, notExpected)
+
[]
let ``Extension methods go after everything else, extension properties are treated as normal ones``() =
let fileContents = """
diff --git a/vsintegration/tests/unittests/Tests.Build.fs b/vsintegration/tests/unittests/Tests.Build.fs
index e5bbddc166c..22faaef01a8 100644
--- a/vsintegration/tests/unittests/Tests.Build.fs
+++ b/vsintegration/tests/unittests/Tests.Build.fs
@@ -336,21 +336,6 @@ type Build() =
"--highentropyva-" + Environment.NewLine)
cmd
- []
- member public this.TestPlatform2() =
- let tool = new Microsoft.FSharp.Build.Fsc()
- tool.Platform <- "itanium"
- AssertEqual "itanium" tool.Platform
- let cmd = tool.InternalGenerateResponseFileCommands()
- printfn "cmd=\"%s\"" cmd
- AssertEqual ("--optimize+" + Environment.NewLine +
- "--platform:Itanium" + Environment.NewLine +
- "--warnaserror:76" + Environment.NewLine +
- "--fullpaths" + Environment.NewLine +
- "--flaterrors" + Environment.NewLine +
- "--highentropyva-" + Environment.NewLine)
- cmd
-
[]
member public this.TestPlatform3() =
let tool = new Microsoft.FSharp.Build.Fsc()
diff --git a/vsintegration/tests/unittests/Tests.LanguageService.Completion.fs b/vsintegration/tests/unittests/Tests.LanguageService.Completion.fs
index 88d22ecb293..6550016be40 100644
--- a/vsintegration/tests/unittests/Tests.LanguageService.Completion.fs
+++ b/vsintegration/tests/unittests/Tests.LanguageService.Completion.fs
@@ -596,7 +596,6 @@ a.
AssertCtrlSpaceCompleteContains (typeDef3 @ ["new M.A((**))"]) "A((**)" ["SettableProperty"; "AnotherSettableProperty"] ["NonSettableProperty"]
AssertCtrlSpaceCompleteContains (typeDef3 @ ["new M.A(S = 1)"]) "A(S" ["SettableProperty"] ["NonSettableProperty"]
AssertCtrlSpaceCompleteContains (typeDef3 @ ["new M.A(S = 1)"]) "A(S = 1" [] ["NonSettableProperty"; "SettableProperty"] // neg test
- AssertCtrlSpaceCompleteContains (typeDef3 @ ["new M.A(S = 1,)"]) "A(S = 1," ["AnotherSettableProperty"] ["NonSettableProperty"]
let typeDef4 =
[
@@ -6064,7 +6063,7 @@ let rec f l =
let f (x:MyNamespace1.MyModule(*Maftervariable4*)) = 10
let y = int System.IO(*Maftervariable5*)""",
marker = "(*Maftervariable4*)",
- list = ["DuType";"Tag"])
+ list = ["DuType"])
[]
member this.``VariableIdentifier.SystemNamespace``() =
diff --git a/vsintegration/tests/unittests/Tests.LanguageService.ErrorList.fs b/vsintegration/tests/unittests/Tests.LanguageService.ErrorList.fs
index 9e08413586f..d72c2c4032f 100644
--- a/vsintegration/tests/unittests/Tests.LanguageService.ErrorList.fs
+++ b/vsintegration/tests/unittests/Tests.LanguageService.ErrorList.fs
@@ -184,7 +184,7 @@ let g (t : T) = t.Count()
CheckErrorList content <|
fun errors ->
Assert.AreEqual(3, List.length errors)
- assertContains errors "No overloads match for method 'X'. The available overloads are shown below (or in the Error List window)."
+ assertContains errors "No overloads match for method 'X'. The available overloads are shown below."
for expected in expectedMessages do
errors
|> List.exists (fun e -> e.Message.StartsWith expected)
diff --git a/vsintegration/tests/unittests/Tests.LanguageService.IncrementalBuild.fs b/vsintegration/tests/unittests/Tests.LanguageService.IncrementalBuild.fs
index 24bedca011f..fc233280388 100644
--- a/vsintegration/tests/unittests/Tests.LanguageService.IncrementalBuild.fs
+++ b/vsintegration/tests/unittests/Tests.LanguageService.IncrementalBuild.fs
@@ -61,7 +61,7 @@ type IncrementalBuild() =
let updateStamp = ref true
let StampFile _cache _ctok filename =
- let result = File.GetLastWriteTime(filename)
+ let result = File.GetLastWriteTimeUtc(filename)
if !updateStamp then
// Here, simulate that VS is writing to our file.
TouchFile()
@@ -79,7 +79,7 @@ type IncrementalBuild() =
let bound = buildDesc.GetInitialPartialBuild inputs
let DoCertainStep bound =
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
match IncrementalBuild.Step cache ctok save (Target(mapped,None)) bound |> Cancellable.runWithoutCancellation with
| Some bound -> bound
| None -> failwith "Expected to be able to step"
@@ -96,7 +96,7 @@ type IncrementalBuild() =
updateStamp:=false
bound <- DoCertainStep bound
bound <- DoCertainStep bound
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
match IncrementalBuild.Step cache ctok save (Target (mapped, None)) bound |> Cancellable.runWithoutCancellation with
| Some bound -> failwith "Build should have stopped"
| None -> ()
@@ -110,7 +110,7 @@ type IncrementalBuild() =
let Scan ctok acc filename =
eventually { return acc+"-"+filename+"-"+(!mapSuffix) }
- let stampAs = ref DateTime.Now
+ let stampAs = ref DateTime.UtcNow
let StampFile _cache _ctok filename =
!stampAs
@@ -127,7 +127,7 @@ type IncrementalBuild() =
printf "-[Step1]----------------------------------------------------------------------------------------\n"
// Evaluate the first time.
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save scanned bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult (scanned, bound)
Assert.AreEqual("AccVal-File1.fs-Suffix1-File2.fs-Suffix1",r.[1])
@@ -135,7 +135,7 @@ type IncrementalBuild() =
printf "-[Step2]----------------------------------------------------------------------------------------\n"
// Evaluate the second time. No change should be seen.
mapSuffix:="Suffix2"
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save scanned bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult (scanned,bound)
Assert.AreEqual("AccVal-File1.fs-Suffix1-File2.fs-Suffix1",r.[1])
@@ -143,8 +143,8 @@ type IncrementalBuild() =
printf "-[Step3]----------------------------------------------------------------------------------------\n"
// Evaluate a third time with timestamps updated. Should cause a rebuild
System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now'
- stampAs:=DateTime.Now
- let cache = TimeStampCache(System.DateTime.Now)
+ stampAs:=DateTime.UtcNow
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save scanned bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult (scanned,bound)
Assert.AreEqual("AccVal-File1.fs-Suffix2-File2.fs-Suffix2",r.[1])
@@ -153,7 +153,7 @@ type IncrementalBuild() =
/// Test case of zero elements in a vector
[]
member public rb.aaZeroElementVector() = // Starts with 'aa' to put it at the front.
- let stamp = ref DateTime.Now
+ let stamp = ref DateTime.UtcNow
let Stamp _cache _ctok (s:string) = !stamp
let Map ctok (s:string) = s
let Demult ctok (a:string[]) = a.Length |> cancellable.Return
@@ -171,7 +171,7 @@ type IncrementalBuild() =
let inputs1 = [ BuildInput.VectorInput(inputVector, [""]) ]
let build1 = buildDesc.GetInitialPartialBuild inputs1
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let build1Evaled = Eval cache ctok save result build1 |> Cancellable.runWithoutCancellation
let r1 = GetScalarResult (result, build1Evaled)
match r1 with
@@ -179,11 +179,11 @@ type IncrementalBuild() =
| None -> failwith "Expected the value 1 to be returned."
// Now with zero. This was the original bug.
- stamp := DateTime.Now
+ stamp := DateTime.UtcNow
let inputs0 = [ BuildInput.VectorInput(inputVector, []) ]
let build0 = buildDesc.GetInitialPartialBuild inputs0
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let build0Evaled = Eval cache ctok save result build0 |> Cancellable.runWithoutCancellation
let r0 = GetScalarResult (result, build0Evaled)
match r0 with
@@ -196,12 +196,12 @@ type IncrementalBuild() =
[]
member public rb.MultiplexTransitionUp() =
let elements = ref 1
- let timestamp = ref System.DateTime.Now
+ let timestamp = ref System.DateTime.UtcNow
let Input() : string array = [| for i in 1..!elements -> sprintf "Element %d" i |]
let Stamp _cache ctok s = !timestamp
let Map ctok (s:string) = sprintf "Mapped %s " s
let Result ctok (a:string[]) = String.Join(",", a) |> cancellable.Return
- let now = System.DateTime.Now
+ let now = System.DateTime.UtcNow
let FixedTimestamp _cache _ctok _ = now
let buildDesc = new BuildDescriptionScope()
@@ -220,7 +220,7 @@ type IncrementalBuild() =
// Evaluate it with value 1
elements := 1
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save result bound |> Cancellable.runWithoutCancellation
let r1 = GetScalarResult(result, bound)
match r1 with
@@ -230,9 +230,9 @@ type IncrementalBuild() =
// Now, re-evaluate it with value 2
elements := 2
System.Threading.Thread.Sleep(100)
- timestamp := System.DateTime.Now
+ timestamp := System.DateTime.UtcNow
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save result bound |> Cancellable.runWithoutCancellation
let r2 = GetScalarResult (result, bound)
match r2 with
@@ -244,7 +244,7 @@ type IncrementalBuild() =
[]
member public rb.MultiplexTransitionDown() =
let elements = ref 1
- let timestamp = ref System.DateTime.Now
+ let timestamp = ref System.DateTime.UtcNow
let Mult(s:string) : string array = [| for i in 1..!elements -> sprintf "Element %d" i |]
let Stamp(s) = !timestamp
let Map(s:string) =
@@ -257,7 +257,7 @@ type IncrementalBuild() =
let result = String.Join(",", a)
printfn "Result called with %d items returns %s" a.Length result
result
- let now = System.DateTime.Now
+ let now = System.DateTime.UtcNow
let FixedTimestamp _ =
printfn "Fixing timestamp"
now
@@ -290,7 +290,7 @@ type IncrementalBuild() =
// Now, re-evaluate it with value 1
elements := 1
System.Threading.Thread.Sleep(100)
- timestamp := System.DateTime.Now
+ timestamp := System.DateTime.UtcNow
let buildDemuxed = Eval demultiplexedInput bound
let rdm = GetScalarResult (demultiplexedInput,buildDemuxed)
@@ -325,7 +325,7 @@ type IncrementalBuild() =
let MapIt ctok filename =
filename+"."+(!mapSuffix)
- let stampAs = ref DateTime.Now
+ let stampAs = ref DateTime.UtcNow
let StampFile _cache ctok filename =
!stampAs
@@ -339,7 +339,7 @@ type IncrementalBuild() =
printf "-[Step1]----------------------------------------------------------------------------------------\n"
// Evaluate the first time.
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save mapped bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult (mapped,bound)
Assert.AreEqual("File2.fs.Suffix1",r.[1])
@@ -347,17 +347,17 @@ type IncrementalBuild() =
printf "-[Step2]----------------------------------------------------------------------------------------\n"
// Evaluate the second time. No change should be seen.
mapSuffix:="Suffix2"
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save mapped bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult (mapped,bound)
Assert.AreEqual("File2.fs.Suffix1",r.[1])
printf "-[Step3]----------------------------------------------------------------------------------------\n"
// Evaluate a third time with timestamps updated. Should cause a rebuild
- let cache = TimeStampCache(System.DateTime.Now)
- while !stampAs = DateTime.Now do
+ let cache = TimeStampCache(System.DateTime.UtcNow)
+ while !stampAs = DateTime.UtcNow do
System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now'
- stampAs:=DateTime.Now
+ stampAs:=DateTime.UtcNow
let bound = Eval cache ctok save mapped bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult (mapped,bound)
Assert.AreEqual("File2.fs.Suffix2",r.[1])
@@ -370,7 +370,7 @@ type IncrementalBuild() =
let Join ctok (filenames:_[]) =
!joinedResult |> cancellable.Return
- let stampAs = ref DateTime.Now
+ let stampAs = ref DateTime.UtcNow
let StampFile _cache ctok filename =
!stampAs
@@ -384,7 +384,7 @@ type IncrementalBuild() =
printf "-[Step1]----------------------------------------------------------------------------------------\n"
// Evaluate the first time.
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save joined bound |> Cancellable.runWithoutCancellation
let (r,_) = Option.get (GetScalarResult(joined,bound))
Assert.AreEqual("Join1",r)
@@ -392,17 +392,17 @@ type IncrementalBuild() =
printf "-[Step2]----------------------------------------------------------------------------------------\n"
// Evaluate the second time. No change should be seen.
joinedResult:="Join2"
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save joined bound |> Cancellable.runWithoutCancellation
let (r,_) = Option.get (GetScalarResult (joined,bound))
Assert.AreEqual("Join1",r)
printf "-[Step3]----------------------------------------------------------------------------------------\n"
// Evaluate a third time with timestamps updated. Should cause a rebuild
- while !stampAs = DateTime.Now do
+ while !stampAs = DateTime.UtcNow do
System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now'
- stampAs:=DateTime.Now
- let cache = TimeStampCache(System.DateTime.Now)
+ stampAs:=DateTime.UtcNow
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let bound = Eval cache ctok save joined bound |> Cancellable.runWithoutCancellation
let (r,_) = Option.get (GetScalarResult (joined,bound))
Assert.AreEqual("Join2",r)
@@ -422,7 +422,7 @@ type IncrementalBuild() =
let inputs = [ BuildInput.VectorInput(inVector, ["File1.fs";"File2.fs";"File3.fs"]) ]
let bound = buildDesc.GetInitialPartialBuild inputs
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let e = Eval cache ctok save scanned bound |> Cancellable.runWithoutCancellation
let r = GetScalarResult (vectorSize,e)
match r with
@@ -439,7 +439,7 @@ type IncrementalBuild() =
let inputs = [ BuildInput.ScalarInput(inScalar, "A Scalar Value") ]
let bound = buildDesc.GetInitialPartialBuild inputs
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let e = Eval cache ctok save inScalar bound |> Cancellable.runWithoutCancellation
let r = GetScalarResult(inScalar,e)
match r with
@@ -463,7 +463,7 @@ type IncrementalBuild() =
BuildInput.ScalarInput(inScalar, (5,"")) ]
let bound = buildDesc.GetInitialPartialBuild(inputs)
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let e = Eval cache ctok save result bound |> Cancellable.runWithoutCancellation
let r = GetVectorResult(result,e)
if [| (6,"File1.fs"); (7,"File2.fs"); (8, "File3.fs") |] <> r then
@@ -481,7 +481,7 @@ type IncrementalBuild() =
let inputs = [ BuildInput.VectorInput(inVector, ["File1.fs";"File2.fs";"File3.fs"]) ]
let bound = buildDesc.GetInitialPartialBuild(inputs)
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let e = Eval cache ctok save result bound |> Cancellable.runWithoutCancellation
let r = GetScalarResult (result, e)
match r with
@@ -506,7 +506,7 @@ type IncrementalBuild() =
let cts = new CancellationTokenSource()
cts.Cancel()
let res =
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
match Eval cache ctok save result bound |> Cancellable.run cts.Token with
| ValueOrCancelled.Cancelled _ -> true
| ValueOrCancelled.Value _ -> false
@@ -518,7 +518,7 @@ type IncrementalBuild() =
[]
member public rb.AssemblyReferenceModel() =
let ParseTask ctok filename = sprintf "Parse(%s)" filename
- let now = System.DateTime.Now
+ let now = System.DateTime.UtcNow
let StampFileNameTask _cache ctok filename = now
let TimestampReferencedAssemblyTask _cache ctok reference = now
let ApplyMetaCommands ctok (parseResults:string[]) = "tcConfig-of("+String.Join(",",parseResults)+")"
@@ -558,7 +558,7 @@ type IncrementalBuild() =
[ BuildInput.VectorInput(fileNamesNode, ["File1.fs";"File2.fs";"File3.fs"]);
BuildInput.VectorInput(referencedAssembliesNode, [("lib1.dll", now);("lib2.dll", now)]) ]
let bound = buildDesc.GetInitialPartialBuild(inputs)
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let e = Eval cache ctok save finalizedTypeCheckNode bound |> Cancellable.runWithoutCancellation
let r = GetScalarResult(finalizedTypeCheckNode,e)
@@ -576,7 +576,7 @@ type IncrementalBuild() =
let inputs = [ BuildInput.VectorInput(inputs, [1;2;3;4]) ]
let bound = buildDesc.GetInitialPartialBuild inputs
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let evaled = Eval cache ctok save outputs bound |> Cancellable.runWithoutCancellation
let outputs = GetVectorResult(outputs,evaled)
Assert.AreEqual("Transformation of 4", outputs.[3])
@@ -602,7 +602,7 @@ type IncrementalBuild() =
let inputs = [ BuildInput.VectorInput(inputs, [1;2;3;4]) ]
let bound = buildDesc.GetInitialPartialBuild inputs
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let evaled = Eval cache ctok save outputs bound |> Cancellable.runWithoutCancellation
let outputs = GetVectorResult(outputs,evaled)
Assert.AreEqual("Transformation of 4", outputs.[3])
@@ -621,7 +621,7 @@ type IncrementalBuild() =
let inputs = [ BuildInput.VectorInput(inputs, []) ]
let bound = buildDesc.GetInitialPartialBuild inputs
- let cache = TimeStampCache(System.DateTime.Now)
+ let cache = TimeStampCache(System.DateTime.UtcNow)
let evaled = Eval cache ctok save outputs bound |> Cancellable.runWithoutCancellation
let outputs = GetVectorResult(outputs,evaled)
()
diff --git a/vsintegration/tests/unittests/Tests.ProjectSystem.Miscellaneous.fs b/vsintegration/tests/unittests/Tests.ProjectSystem.Miscellaneous.fs
index a90f9d28651..361f6569b16 100644
--- a/vsintegration/tests/unittests/Tests.ProjectSystem.Miscellaneous.fs
+++ b/vsintegration/tests/unittests/Tests.ProjectSystem.Miscellaneous.fs
@@ -630,41 +630,6 @@ type Miscellaneous() =
project.Close() |> ignore
)
-
-module Regression5312 =
- // Regression testing ICONS in project system dll
- open System
- open System.Drawing
- open System.Runtime.InteropServices
- []
- extern int32 ExtractIconEx(string szFileName, int nIconIndex,IntPtr[] phiconLarge, IntPtr[] phiconSmall,uint32 nIcons)
-
- []
- extern int DestroyIcon(IntPtr hIcon)
-
- let extractIcon (path:string) (large:bool) =
- let n = 10
- let hIconLarge = Array.create n IntPtr.Zero
- let hIconSmall = Array.create n IntPtr.Zero
- try
- let readIconCount = ExtractIconEx(path,0,hIconLarge,hIconSmall,uint32 n)
- if readIconCount > 0 then
- if large then
- Array.init readIconCount (fun i -> Icon.FromHandle(hIconLarge.[0]).Clone() :?> Icon)
- else
- Array.init readIconCount (fun i -> Icon.FromHandle(hIconSmall.[0]).Clone() :?> Icon)
- else
- [| |]
- finally
- hIconLarge |> Array.iter (fun ptr -> if ptr <> IntPtr.Zero then DestroyIcon ptr |> ignore)
- hIconSmall |> Array.iter (fun ptr -> if ptr <> IntPtr.Zero then DestroyIcon ptr |> ignore)
-
- /// Given path to FSharp.Project.FSharpProject.dll, check the icons are present.
- /// Throws of failure.
- let checkIcons nExpected (path:string) =
- let icons = extractIcon path true
- if icons.Length<>nExpected then failwithf "Expected %d icons in %s" nExpected path // "
-
[]
type Utilities() =
(*
@@ -745,13 +710,6 @@ type Utilities() =
[]
member public this.``PublicKeyToken.0a00000000000001``() = CheckPublicKeyToString([|0xauy;0uy;0uy;0uy;0uy;0uy;0uy;1uy|], "0a00000000000001")
- []
- member public this.``CheckIconsInProjectSystemDLL_Regression5312``() =
- let path = typeof.Assembly.Location
- Regression5312.checkIcons 4 path
- ()
-
-
[]
member public this.``Parse MSBuild property of type Int64`` () =
Assert.AreEqual(123L, ProjectNode.ParsePropertyValueToInt64("123"))
diff --git a/vsintegration/tests/unittests/Tests.ProjectSystem.UpToDate.fs b/vsintegration/tests/unittests/Tests.ProjectSystem.UpToDate.fs
index a6dae956d1f..0d079f2f01e 100644
--- a/vsintegration/tests/unittests/Tests.ProjectSystem.UpToDate.fs
+++ b/vsintegration/tests/unittests/Tests.ProjectSystem.UpToDate.fs
@@ -50,7 +50,7 @@ type UpToDate() =
let nonePath = Path.Combine(project.ProjectFolder, "none.txt")
let embedPath = Path.Combine(project.ProjectFolder, "embedresource.txt")
- let startTime = DateTime.Now
+ let startTime = DateTime.UtcNow
File.AppendAllText(sourcePath, "printfn \"hello\"")
File.AppendAllText(contentPath, "some content")
@@ -64,14 +64,14 @@ type UpToDate() =
Assert.IsTrue(config.IsUpToDate(logger, true))
// None items should not affect up-to-date (unless captured by well-known items, e.g. App.config)
- File.SetLastWriteTime(nonePath, DateTime.Now.AddMinutes(5.))
+ File.SetLastWriteTime(nonePath, DateTime.UtcNow.AddMinutes(5.))
Assert.IsTrue(config.IsUpToDate(logger, true))
for path in [sourcePath; contentPath; resourcePath; embedPath; configPath] do
printfn "Testing path %s" path
// touch file
- File.SetLastWriteTime(path, DateTime.Now.AddMinutes(5.))
+ File.SetLastWriteTime(path, DateTime.UtcNow.AddMinutes(5.))
Assert.IsFalse(config.IsUpToDate(logger, true))
File.SetLastWriteTime(path, startTime)
@@ -104,7 +104,7 @@ type UpToDate() =
let verPath = Path.Combine(project.ProjectFolder, "ver.txt")
let keyPath = Path.Combine(project.ProjectFolder, "key.txt")
- let startTime = DateTime.Now
+ let startTime = DateTime.UtcNow
File.AppendAllText(sourcePath, "printfn \"hello\"")
File.AppendAllText(verPath, "1.2.3.4")
@@ -119,7 +119,7 @@ type UpToDate() =
printfn "Testing path %s" path
// touch file
- File.SetLastWriteTime(path, DateTime.Now.AddMinutes(5.))
+ File.SetLastWriteTime(path, DateTime.UtcNow.AddMinutes(5.))
Assert.IsFalse(config.IsUpToDate(logger, true))
File.SetLastWriteTime(path, startTime)
@@ -143,7 +143,7 @@ type UpToDate() =
let output = VsMocks.vsOutputWindowPane(ref [])
let logger = OutputWindowLogger.CreateUpToDateCheckLogger(output)
let absFilePath = Path.Combine(project.ProjectFolder, "file1.fs")
- let startTime = DateTime.Now
+ let startTime = DateTime.UtcNow
File.AppendAllText(absFilePath, "printfn \"hello\"")
Assert.IsFalse(config.IsUpToDate(logger, true))
@@ -151,7 +151,7 @@ type UpToDate() =
Assert.IsTrue(config.IsUpToDate(logger, true))
// touch proj file
- File.SetLastWriteTime(projFileName, DateTime.Now.AddMinutes(5.))
+ File.SetLastWriteTime(projFileName, DateTime.UtcNow.AddMinutes(5.))
Assert.IsFalse(config.IsUpToDate(logger, true))
File.SetLastWriteTime(projFileName, startTime)
@@ -194,14 +194,14 @@ type UpToDate() =
File.AppendAllText(sourcePath2, "let x = Test.X")
let config2 = project2.ConfigProvider.GetProjectConfiguration(configNameDebug)
- let startTime = DateTime.Now
+ let startTime = DateTime.UtcNow
Assert.IsFalse(config2.IsUpToDate(logger, true))
project2.Build(configNameDebug, output, "Build") |> AssertBuildSuccessful
Assert.IsTrue(config2.IsUpToDate(logger, true))
// reference is updated
- File.SetLastWriteTime(output1, DateTime.Now.AddMinutes(5.))
+ File.SetLastWriteTime(output1, DateTime.UtcNow.AddMinutes(5.))
Assert.IsFalse(config2.IsUpToDate(logger, true))
File.SetLastWriteTime(output1, startTime)
Assert.IsTrue(config2.IsUpToDate(logger, true))
@@ -244,13 +244,13 @@ type UpToDate() =
project.Build(configNameDebug, output, "Build") |> AssertBuildSuccessful
Assert.IsTrue(config.IsUpToDate(logger, true))
- let startTime = DateTime.Now
+ let startTime = DateTime.UtcNow
for path in [exeObjPath; exeBinpath; pdbObjPath; pdbBinPath; xmlDocPath; exeConfigPath] do
printfn "Testing output %s" path
// touch file
- File.SetLastWriteTime(path, DateTime.Now.AddMinutes(-5.))
+ File.SetLastWriteTime(path, DateTime.UtcNow.AddMinutes(-5.))
Assert.IsFalse(config.IsUpToDate(logger, true))
File.SetLastWriteTime(path, startTime)
@@ -401,7 +401,7 @@ type ``UpToDate PreserveNewest`` () =
let u = ProjectConfig.IsUpToDatePreserveNewest(logger, (Func<_,_,_>(tryTimestamp)), input, output)
u, !logs
- let now = System.DateTime.Now
+ let now = System.DateTime.UtcNow
let before = now.AddHours(-1.0)
let ``no input -> not up-to-date and log`` =
diff --git a/vsintegration/tests/unittests/UnusedOpensTests.fs b/vsintegration/tests/unittests/UnusedOpensTests.fs
new file mode 100644
index 00000000000..f932ff26164
--- /dev/null
+++ b/vsintegration/tests/unittests/UnusedOpensTests.fs
@@ -0,0 +1,754 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+[]
+module Tests.ServiceAnalysis.UnusedOpens
+
+open System
+open NUnit.Framework
+open Microsoft.FSharp.Compiler.SourceCodeServices
+open Microsoft.FSharp.Compiler.Range
+open FsUnit
+
+let private filePath = "C:\\test.fs"
+
+let private projectOptions : FSharpProjectOptions =
+ { ProjectFileName = "C:\\test.fsproj"
+ SourceFiles = [| filePath |]
+ ReferencedProjects = [| |]
+ OtherOptions = [| |]
+ IsIncompleteTypeCheckEnvironment = true
+ UseScriptResolutionRules = false
+ LoadTime = DateTime.MaxValue
+ OriginalLoadReferences = []
+ UnresolvedReferences = None
+ ExtraProjectInfo = None
+ Stamp = None }
+
+let private checker = FSharpChecker.Create()
+
+let (=>) (source: string) (expectedRanges: ((*line*)int * ((*start column*)int * (*end column*)int)) list) =
+ let sourceLines = source.Split ([|"\r\n"; "\n"; "\r"|], StringSplitOptions.None)
+
+ let _, checkFileAnswer = checker.ParseAndCheckFileInProject(filePath, 0, source, projectOptions) |> Async.RunSynchronously
+
+ let checkFileResults =
+ match checkFileAnswer with
+ | FSharpCheckFileAnswer.Aborted -> failwithf "ParseAndCheckFileInProject aborted"
+ | FSharpCheckFileAnswer.Succeeded(checkFileResults) -> checkFileResults
+
+ let unusedOpenRanges = UnusedOpens.getUnusedOpens (checkFileResults, fun lineNum -> sourceLines.[Line.toZ lineNum]) |> Async.RunSynchronously
+
+ unusedOpenRanges
+ |> List.map (fun x -> x.StartLine, (x.StartColumn, x.EndColumn))
+ |> shouldEqual expectedRanges
+
+[]
+let ``unused open declaration in top level module``() =
+ """
+module TopModule
+open System
+open System.IO
+let _ = DateTime.Now
+"""
+ => [ 4, (5, 14) ]
+
+[]
+let ``unused open declaration in namespace``() =
+ """
+namespace TopNamespace
+open System
+open System.IO
+module Nested =
+ let _ = DateTime.Now
+"""
+ => [ 4, (5, 14) ]
+
+[]
+let ``unused open declaration in nested module``() =
+ """
+namespace TopNamespace
+module Nested =
+ open System
+ open System.IO
+ let _ = DateTime.Now
+"""
+ => [ 5, (9, 18) ]
+
+[]
+let ``unused open declaration due to partially qualified symbol``() =
+ """
+module TopModule
+open System
+open System.IO
+let _ = IO.File.Create ""
+"""
+ => [ 4, (5, 14) ]
+
+[]
+let ``unused parent open declaration due to partially qualified symbol``() =
+ """
+module TopModule
+open System
+open System.IO
+let _ = File.Create ""
+"""
+ => [ 3, (5, 11) ]
+
+[]
+let ``open statement duplication in parent module is unused``() =
+ """
+module TopModule
+open System.IO
+module Nested =
+ open System.IO
+ let _ = File.Create ""
+"""
+ => [ 5, (9, 18) ]
+
+[]
+let ``open statement duplication in parent module is marked as unused even though it seems to be used in its scope``() =
+ """
+module TopModule
+open System.IO
+module Nested =
+ open System.IO
+ let _ = File.Create ""
+let _ = File.Create ""
+"""
+ => [ 5, (9, 18) ]
+
+[]
+let ``multiple open declaration in the same line``() =
+ """
+open System.IO; let _ = File.Create "";; open System.IO
+"""
+ => [ 2, (46, 55) ]
+
+[]
+let ``open a nested module inside another one is not unused``() =
+ """
+module Top
+module M1 =
+ let x = ()
+module M2 =
+ open M1
+ let y = x
+"""
+ => []
+
+[]
+let ``open a nested module inside another one is not unused, complex hierarchy``() =
+ """
+module Top =
+ module M1 =
+ module M11 =
+ let x = ()
+ module M2 =
+ module M22 =
+ open M1.M11
+ let y = x
+"""
+ => []
+
+[]
+let ``open a nested module inside another one is not unused, even more complex hierarchy``() =
+ """
+module Top =
+ module M1 =
+ module M11 =
+ module M111 =
+ module M1111 =
+ let x = ()
+ module M2 =
+ module M22 =
+ open M1.M11.M111.M1111
+ let y = x
+"""
+ => []
+
+[]
+let ``opening auto open module after it's parent module was opened should be marked as unused``() =
+ """
+module NormalModule =
+ []
+ module AutoOpenModule1 =
+ module NestedNormalModule =
+ []
+ module AutoOpenModule2 =
+ []
+ module AutoOpenModule3 =
+ type Class() = class end
+
+open NormalModule.AutoOpenModule1.NestedNormalModule
+open NormalModule.AutoOpenModule1.NestedNormalModule.AutoOpenModule2
+let _ = Class()
+"""
+ => [ 13, (5, 68) ]
+
+[]
+let ``opening parent module after one of its auto open module was opened should be marked as unused``() =
+ """
+module NormalModule =
+ []
+ module AutoOpenModule1 =
+ module NestedNormalModule =
+ []
+ module AutoOpenModule2 =
+ []
+ module AutoOpenModule3 =
+ type Class() = class end
+
+open NormalModule.AutoOpenModule1.NestedNormalModule.AutoOpenModule2
+open NormalModule.AutoOpenModule1.NestedNormalModule
+let _ = Class()
+"""
+ => [ 13, (5, 52) ]
+
+[]
+let ``open declaration is not marked as unused if there is a shortened attribute symbol from it``() =
+ """
+open System
+[]
+type Class() = class end
+"""
+ => []
+
+[]
+let ``open declaration is not marked as unused if an extension property is used``() =
+ """
+module Module =
+ type System.String with
+ member __.ExtensionProperty = ()
+open Module
+let _ = "a long string".ExtensionProperty
+"""
+ => []
+
+[]
+let ``open declaration is marked as unused if an extension property is not used``() =
+ """
+module Module =
+ type System.String with
+ member __.ExtensionProperty = ()
+open Module
+let _ = "a long string".Trim()
+"""
+ => [ 5, (5, 11) ]
+
+[]
+let ``open declaration is not marked as unused if an extension method is used``() =
+ """
+type Class() = class end
+module Module =
+ type Class with
+ member __.ExtensionMethod() = ()
+open Module
+let x = Class()
+let _ = x.ExtensionMethod()
+"""
+ => []
+
+[]
+let ``open declaration is marked as unused if an extension method is not used``() =
+ """
+type Class() = class end
+module Module =
+ type Class with
+ member __.ExtensionMethod() = ()
+open Module
+let x = Class()
+"""
+ => [ 6, (5, 11) ]
+
+[]
+let ``open declaration is not marked as unused if one of its types is used in a constructor signature``() =
+ """
+module M =
+ type Class() = class end
+open M
+type Site (x: Class -> unit) = class end
+"""
+ => []
+
+[]
+let ``open declaration is marked as unused if nothing from it is used``() =
+ """
+module M =
+ type Class() = class end
+open M
+type Site (x: int -> unit) = class end
+"""
+ => [ 4, (5, 6) ]
+
+[]
+let ``static extension method applied to a type results that both namespaces /where the type is declared and where the extension is declared/ is not marked as unused``() =
+ """
+module Extensions =
+ type System.DateTime with
+ static member ExtensionMethod() = ()
+open System
+open Extensions
+let _ = DateTime.ExtensionMethod
+"""
+ => []
+
+[]
+let ``static extension property applied to a type results that both namespaces /where the type is declared and where the extension is declared/ is not marked as unused``() =
+ """
+module Extensions =
+ type System.DateTime with
+ static member ExtensionProperty = ()
+open System
+open Extensions
+let _ = DateTime.ExtensionProperty
+"""
+ => []
+
+[]
+let ``accessing property on a variable should not force the namespace in which the type is declared to be marked as used``() =
+ """
+let dt = System.DateTime.Now
+module M =
+ open System
+ let _ = dt.Hour
+"""
+ => [4, (9, 15) ]
+
+[]
+let ``either of two open declarations are not marked as unused if symbols from both of them are used``() =
+ """
+module M1 =
+ module M2 =
+ let func1 _ = ()
+ module M3 =
+ let func2 _ = ()
+open M1.M2.M3
+open M1.M2
+let _ = func1()
+let _ = func2()
+"""
+ => []
+
+[]
+let ``open module with ModuleSuffix attribute value applied is not marked as unused if a symbol declared in it is used``() =
+ """
+[]
+module M =
+ let func _ = ()
+open M
+let _ = func()
+"""
+ => []
+
+[]
+let ``open module all of which symbols are used by qualifier is marked as unused``() =
+ """
+module M =
+ let func _ = ()
+open M
+let _ = M.func 1
+"""
+ => [4, (5, 6) ]
+
+[]
+let ``open module is not marked as unused if a symbol defined in it is used in OCaml-style type annotation``() =
+ """
+module M =
+ type Class() = class end
+open M
+let func (arg: Class list) = ()
+"""
+ => []
+
+[]
+let ``auto open module``() =
+ """
+module Top =
+ []
+ module M =
+ let func _ = ()
+open Top
+let _ = func()
+"""
+ => []
+
+[]
+let ``auto open module with namespace``() =
+ """
+namespace Module1Namespace
+[]
+module Module1 =
+ module Module2 =
+ let x = 1
+namespace ConsumerNamespace
+open Module1Namespace
+module Module3 =
+ let y = Module2.x
+"""
+ => []
+
+[]
+let ``auto open module in the middle of hierarchy``() =
+ """
+namespace Ns
+module M1 =
+ []
+ module MA1 =
+ let func _ = ()
+open M1
+module M2 =
+ let _ = func()
+"""
+ => []
+
+[]
+let ``open declaration is not marked as unused if a delegate defined in it is used``() =
+ """
+open System
+let _ = Func(fun _ -> 1)
+"""
+ => []
+
+[]
+let ``open declaration is not marked as unused if a unit of measure defined in it is used``() =
+ """
+module M =
+ type [] m
+module N =
+ open M
+ let _ = 1
+"""
+ => []
+
+[]
+let ``open declaration is not marked as unused if an attribute defined in it is applied on an interface member argument``() =
+ """
+open System.Runtime.InteropServices
+type T = abstract M: [] ?x: int -> unit
+"""
+ => []
+
+[]
+let ``relative module open declaration``() =
+ """
+module Top =
+ module Nested =
+ let x = 1
+open Top
+open Nested
+let _ = x
+"""
+ => []
+
+[]
+let ``open declaration is used if a symbol defined in it is used in a module top-level do expression``() =
+ """
+module Top
+open System.IO
+File.ReadAllLines ""
+|> ignore
+"""
+ => []
+
+[]
+let ``redundant opening a module with ModuleSuffix attribute value is marks as unused``() =
+ """
+[]
+module InternalModuleWithSuffix =
+ let func1 _ = ()
+module M =
+ open InternalModuleWithSuffix
+ let _ = InternalModuleWithSuffix.func1()
+"""
+ => [ 6, (9, 33) ]
+
+[]
+let ``redundant opening a module is marks as unused``() =
+ """
+module InternalModuleWithSuffix =
+ let func1 _ = ()
+module M =
+ open InternalModuleWithSuffix
+ let _ = InternalModuleWithSuffix.func1()
+"""
+ => [ 5, (9, 33) ]
+
+[]
+let ``usage of an unqualified union case doesn't make an opening module where it's defined to be marked as unused``() =
+ """
+module M =
+ type DU = Case1
+open M
+let _ = Case1
+"""
+ => []
+
+[]
+let ``usage of qualified union case doesn't make an opening module where it's defined to be marked as unused``() =
+ """
+module M =
+ type DU = Case1
+open M
+let _ = DU.Case1
+"""
+ => []
+
+[]
+let ``type with different DisplayName``() =
+ """
+open Microsoft.FSharp.Quotations
+let _ = Expr.Coerce (<@@ 1 @@>, typeof)
+"""
+ => []
+
+[]
+let ``auto open module with ModuleSuffix attribute value``() =
+ """
+module Top =
+ []
+ module Module =
+ let func _ = ()
+open Top
+module Module1 =
+ let _ = func()
+"""
+ => []
+
+[]
+let ``a type which has more than one DisplayName causes the namespace it's defined in to be not marked as unused``() =
+ """
+open System
+let _ = IntPtr.Zero
+"""
+ => []
+
+[]
+let ``usage of an operator makes the module it's defined in to be not marked as unused``() =
+ """
+module M =
+ let (++|) x y = ()
+open M
+let _ = 1 ++| 2
+"""
+ => []
+
+[]
+let ``usage of an operator makes the module /with Module suffix/ it's defined in to be not marked as unused``() =
+ """
+[]
+module M =
+ let (++|) x y = ()
+open M
+let _ = 1 ++| 2
+"""
+ => []
+
+[]
+let ``type used in pattern matching with "as" keyword causes the module in which the type is defined to be not marked as unused``() =
+ """
+module M =
+ type Class() = class end
+open M
+let _ = match obj() with
+ | :? Class as c -> ()
+ | _ -> ()
+"""
+ => []
+
+[]
+let ``a function from printf family prevents Printf module from marking as unused``() =
+ """
+open Microsoft.FSharp.Core.Printf
+open System.Text
+let _ = bprintf (StringBuilder()) "%A" 1
+"""
+ => []
+
+[]
+let ``assembly level attribute prevents namespace in which it's defined to be marked as unused``() =
+ """
+open System
+[]
+()
+"""
+ => []
+
+[]
+let ``open declaration is not marked as unused if a related type extension is used``() =
+ """
+module Module =
+ open System
+ type String with
+ member __.Method() = ()
+"""
+ => []
+
+[]
+let ``open declaration is not marked as unused if a symbol defined in it is used in type do block``() =
+ """
+open System.IO.Compression
+
+type OutliningHint() as self =
+ do self.E.Add (fun (e: GZipStream) -> ())
+ member __.E: IEvent<_> = Unchecked.defaultof<_>
+"""
+ => []
+
+[]
+let ``should not mark open declaration with global prefix``() =
+ """
+module Module =
+ open global.System
+ let _ = String("")
+"""
+ => []
+
+[]
+let ``record fields should be taken into account``() =
+ """
+module M1 =
+ type Record = { Field: int }
+module M2 =
+ open M1
+ let x = { Field = 0 }
+"""
+ => []
+
+[]
+let ``handle type alias``() =
+ """
+module TypeAlias =
+ type MyInt = int
+module Usage =
+ open TypeAlias
+ let f (x:MyInt) = x
+"""
+ => []
+
+[]
+let ``handle override members``() =
+ """
+type IInterface =
+ abstract Property: int
+
+type IClass() =
+ interface IInterface with
+ member __.Property = 0
+
+let f (x: IClass) = (x :> IInterface).Property
+"""
+ => []
+
+[]
+let ``active pattern cases should be taken into account``() =
+ """
+module M =
+ let (|Pattern|_|) _ = Some()
+open M
+let f (Pattern _) = ()
+"""
+ => []
+
+[]
+let ``active patterns applied as a function should be taken into account``() =
+ """
+module M =
+ let (|Pattern|_|) _ = Some()
+open M
+let _ = (|Pattern|_|) ()
+"""
+ => []
+
+[]
+let ``not used active pattern does not make the module in which it's defined to not mark as unused``() =
+ """
+module M =
+ let (|Pattern|_|) _ = Some()
+open M
+let _ = 1
+"""
+ => [ 4, (5, 6) ]
+
+[]
+let ``type in type parameter constraint should be taken into account``() =
+ """
+open System
+let f (x: 'a when 'a :> IDisposable) = ()
+"""
+ => []
+
+[]
+let ``namespace declaration should never be marked as unused``() =
+ """
+namespace Library2
+type T() = class end
+"""
+ => []
+
+[]
+let ``auto open module opened before enclosing one is handled correctly``() =
+ """
+module M =
+ let x = 1
+ []
+ module N =
+ let y = 2
+open M.N
+open M
+let _ = x
+let _ = y
+"""
+ => []
+
+[]
+let ``single relative open declaration opens two independent modules in different parent modules``() =
+ """
+module M =
+ module Xxx =
+ let x = 1
+module N =
+ module Xxx =
+ let y = 1
+open M
+open N
+open N.Xxx
+open Xxx
+
+let _ = y
+let _ = x
+"""
+ => []
+
+[]
+let ``C# extension methods are taken into account``() =
+ """
+open System.Linq
+
+module Test =
+ let xs = []
+ let _ = xs.ToList()
+"""
+ => []
+
+[]
+let ``namespace which contains types with C# extension methods is marked as unused if no extension is used``() =
+ """
+open System.Linq
+
+module Test =
+ let xs = []
+"""
+ => [ 2, (5, 16) ]
+
+[]
+let ``a type from an auto open module is taken into account``() =
+ """
+module M1 =
+ []
+ module AutoOpened =
+ type T() = class end
+
+module M2 =
+ open M1
+ let _ = T()
+"""
+ => []
diff --git a/vsintegration/tests/unittests/VisualFSharp.Unittests.dll.config b/vsintegration/tests/unittests/VisualFSharp.Unittests.dll.config
index 7f55b7d12fc..7aae3905c10 100644
--- a/vsintegration/tests/unittests/VisualFSharp.Unittests.dll.config
+++ b/vsintegration/tests/unittests/VisualFSharp.Unittests.dll.config
@@ -49,7 +49,7 @@
-
+
diff --git a/vsintegration/tests/unittests/VisualFSharp.Unittests.fsproj b/vsintegration/tests/unittests/VisualFSharp.Unittests.fsproj
index 5603dd80587..e590ef7026b 100644
--- a/vsintegration/tests/unittests/VisualFSharp.Unittests.fsproj
+++ b/vsintegration/tests/unittests/VisualFSharp.Unittests.fsproj
@@ -17,7 +17,6 @@
58;75x86v4.6
- EXTENSIONTYPING;$(DefineConstants)NO_PROJECTCRACKER;$(DefineConstants)
@@ -92,6 +91,12 @@
ProjectOptionsTests.fs
+
+ StructureTests.fs
+
+
+ ServiceAnalysis\UnusedOpensTests.fs
+
Roslyn\ColorizationServiceTests.fs
@@ -172,7 +177,7 @@
$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Msbuild.15.0.1.0.1\lib\net45\Microsoft.Build.Tasks.Core.dll
- $(FSharpSourcesRoot)\..\EnvDTE.8.0.1\lib\net10\EnvDTE.dll
+ $(FSharpSourcesRoot)\..\packages\EnvDTE.8.0.1\lib\net10\EnvDTE.dllTrue
@@ -188,7 +193,7 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interops.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.OLE.Interop.7.10.6070\lib\Microsoft.VisualStudio.OLE.Interop.dllTrue
@@ -284,9 +289,8 @@
True
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.Telemetry.15.0.777-rtm6FAA2C78\lib\Microsoft.VisualStudio.Telemetry.dll
+ $(FSharpSourcesRoot)\..\packages\Microsoft.VisualStudio.Telemetry.15.0.777-rtm6FAA2C78\lib\net45\Microsoft.VisualStudio.Telemetry.dll
- True$(NUnitLibDir)\nunit.framework.dll
@@ -339,6 +343,10 @@
$(FSharpSourcesRoot)\..\packages\System.Collections.Immutable.$(SystemCollectionsImmutableVersion)\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dllTrue
+
+ $(FSharpSourcesRoot)\..\packages\System.Threading.Tasks.Dataflow.4.5.24\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Dataflow.dll
+ True
+ {DED3BBD7-53F4-428A-8C9F-27968E768605}FSharp.Core
@@ -358,7 +366,11 @@
FSharp.Compiler.PrivateTrue
-
+
+ $(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
+ true
+
+ VisualFSharp.Salsa{fbd4b354-dc6e-4032-8ec7-c81d8dfb1af7}True
diff --git a/vsintegration/update-vsintegration.cmd b/vsintegration/update-vsintegration.cmd
index 9dcb36f92d5..35dd8014330 100644
--- a/vsintegration/update-vsintegration.cmd
+++ b/vsintegration/update-vsintegration.cmd
@@ -327,7 +327,7 @@ if "%DEPLOY%" == "yes" if "!ISADMIN!" == "yes" (
)
REG ADD "HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\F# !FSHARPVERSION! Core Assemblies (Open Source)" /ve /t REG_SZ /f /d "!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.!FSHARPVERSION!.0\
REG ADD "HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.50709\AssemblyFoldersEx\F# !FSHARPVERSION! Core Assemblies (Open Source)" /ve /t REG_SZ /f /d "!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.!FSHARPVERSION!.0\
-
+
rem Disable strong-name validation for F# binaries built from open source that are signed with the microsoft key
echo.
CALL :colorEcho 02 "[!ACTION!] Removing strong-name validation of F# binaries" & echo.
@@ -347,7 +347,7 @@ if "%DEPLOY%" == "yes" if "!ISADMIN!" == "yes" (
!SN32! -Vr FSharp.VS.FSI,b03f5f7f11d50a3a 1>NUL 2>NUL
!SN32! -Vr VisualFSharp.Unittests,b03f5f7f11d50a3a 1>NUL 2>NUL
!SN32! -Vr VisualFSharp.Salsa,b03f5f7f11d50a3a 1>NUL 2>NUL
-
+
REM Do this *in addition* to the above for x64 systems
if /i "!PROCESSOR_ARCHITECTURE!"=="AMD64" (
!SN64! -Vr FSharp.Core,b03f5f7f11d50a3a 1>NUL 2>NUL
@@ -367,7 +367,7 @@ if "%DEPLOY%" == "yes" if "!ISADMIN!" == "yes" (
!SN64! -Vr VisualFSharp.Unittests,b03f5f7f11d50a3a 1>NUL 2>NUL
!SN64! -Vr VisualFSharp.Salsa,b03f5f7f11d50a3a 1>NUL 2>NUL
)
-
+
rem NGen fsc, fsi, fsiAnyCpu, and FSharp.Build.dll
echo.
@@ -399,7 +399,7 @@ if "%DEPLOY%" == "yes" if "!ISADMIN!" == "no" (
rem Re-enable certain settings when restoring, NGEN the original files again, requires admin rights
if "%ACTION%" == "restore" if "!ISADMIN!" == "yes" (
-
+
rem Re-enable strong-name validation for F# binaries that were previously installed
echo.
CALL :colorEcho 02 "[!ACTION!] Re-enabling strong-name validation of original F# binaries" & echo.
@@ -419,7 +419,7 @@ if "%ACTION%" == "restore" if "!ISADMIN!" == "yes" (
!SN32! -Vu FSharp.VS.FSI,b03f5f7f11d50a3a 2>NUL 1>NUL
!SN32! -Vu VisualFSharp.Unittests,b03f5f7f11d50a3a 2>NUL 1>NUL
!SN32! -Vu VisualFSharp.Salsa,b03f5f7f11d50a3a 2>NUL 1>NUL
-
+
REM Do this *in addition* to the above for x64 systems
if /i "!PROCESSOR_ARCHITECTURE!"=="AMD64" (
!SN64! -Vu FSharp.Core,b03f5f7f11d50a3a 2>NUL 1>NUL
@@ -439,7 +439,7 @@ if "%ACTION%" == "restore" if "!ISADMIN!" == "yes" (
!SN64! -Vu VisualFSharp.Unittests,b03f5f7f11d50a3a 2>NUL 1>NUL
!SN64! -Vu VisualFSharp.Salsa,b03f5f7f11d50a3a 2>NUL 1>NUL
)
-
+
rem NGen fsc, fsi, fsiAnyCpu, and FSharp.Build.dll
echo.