diff --git a/.gitignore b/.gitignore
index e599502bb48..418b3677b36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,9 @@
-# Downloaded packages and build tools.
-/lkg
-/packages
-/Tools
+# output location
+artifacts/
+
+packages/
/tests/scripts/current
-/release
-/debug
-/Proto
# Patches that may have been generated by scripts.
# (These aren't generally useful to commit directly; if anything, they should be applied.)
@@ -82,10 +79,9 @@ lib/bootstrap/4.1/*.xml
lib/bootstrap/4.1/fsharpc
lib/bootstrap/4.1/fsharpi
lib/bootstrap/4.1/policy*
+obj/
+bin/
aclocal.m4
-Debug
-Release
-Proto
sign_temp
.libs
configure
@@ -109,7 +105,6 @@ ossreadme*.txt
*.cto
*.vstman
project.lock.json
-Tools/
Backup/
tests/fsharp/core/array/dont.run.peverify
tests/fsharp/core/innerpoly/dont.run.peverify
@@ -118,7 +113,6 @@ times
/tests/fsharpqa/testenv/bin/System.ValueTuple.dll
source_link.json
.vs/
-/VSRelease/net40/bin
System.ValueTuple.dll
tests/fsharpqa/testenv/bin/System.ValueTuple.dll
*/.fake
diff --git a/.vsts-pr.yaml b/.vsts-pr.yaml
index 0d7262e418a..44c277a3943 100644
--- a/.vsts-pr.yaml
+++ b/.vsts-pr.yaml
@@ -1,32 +1,34 @@
-phases:
-- phase: Linux
- queue:
- name: Hosted Linux Preview
- timeoutInMinutes: 90
- parallel: 2
+jobs:
+- job: Linux
+ pool:
+ vmImage: ubuntu-16.04
+ timeoutInMinutes: 90
+ strategy:
+ maxParallel: 2
matrix:
- release_default:
- _command: ./mono/cibuild.sh
- _args: release
+ dotnet_sdk:
+ _command: make
+ _args: Configuration=release
# disabled until it can be properly fixed
- #release_fcs:
- # _command: ./fcs/build.sh
- # _args: Build
+ release_fcs:
+ _command: ./fcs/build.sh
+ _args: Build
steps:
- - script: $(_command) $(_args)
- - task: PublishBuildArtifacts@1
- inputs:
- PathtoPublish: '$(Build.SourcesDirectory)/tests/TestResults'
- ArtifactName: 'Linux $(_command) $(_args)'
- publishLocation: Container
- continueOnError: true
- condition: failed()
+ - script: $(_command) $(_args)
+ - task: PublishBuildArtifacts@1
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults'
+ ArtifactName: 'Linux $(_command) $(_args)'
+ publishLocation: Container
+ continueOnError: true
+ condition: failed()
-- phase: Windows
- queue:
- name: Hosted VS2017
- timeoutInMinutes: 90
- parallel: 7
+- job: Windows
+ pool:
+ vmImage: vs2017-win2016
+ timeoutInMinutes: 120
+ strategy:
+ maxParallel: 7
matrix:
ci_part1:
_command: build.cmd
@@ -50,11 +52,11 @@ phases:
_command: fcs\build.cmd
_args: TestAndNuget
steps:
- - script: $(_command) $(_args)
- - task: PublishBuildArtifacts@1
- inputs:
- PathtoPublish: '$(Build.SourcesDirectory)\tests\TestResults'
- ArtifactName: 'Windows $(_command) $(_args)'
- publishLocation: Container
- continueOnError: true
- condition: failed()
+ - script: $(_command) $(_args)
+ - task: PublishBuildArtifacts@1
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults'
+ ArtifactName: 'Windows $(_command) $(_args)'
+ publishLocation: Container
+ continueOnError: true
+ condition: failed()
diff --git a/.vsts-signed.yaml b/.vsts-signed.yaml
index df4e8a6bd5f..823ac20297a 100644
--- a/.vsts-signed.yaml
+++ b/.vsts-signed.yaml
@@ -1,100 +1,140 @@
-queue:
- name: VSEng-MicroBuildVS2017
- timeoutInMinutes: 300
- demands:
- - visualstudio
- - DotNetFramework
- - msbuild
-
variables:
- MSBuildConfiguration: 'Release'
+- name: PB_PublishBlobFeedUrl
+ value: https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
+- group: DotNet-Blob-Feed
+- name: PB_PublishBlobFeedKey
+ value: $(dotnetfeed-storage-access-key-1)
+
+jobs:
+- job: Full_Signed
+ pool:
+ name: VSEng-MicroBuildVS2017
+ timeoutInMinutes: 300
+ variables:
+ BuildConfiguration: 'Release'
+ steps:
+ # Install Signing Plugin
+ - task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1
+ displayName: Install Signing Plugin
+ inputs:
+ signType: real
+ condition: and(succeeded(), in(variables['PB_SignType'], 'test', 'real'))
-steps:
-# Install Signing Plugin
-- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1
- displayName: Install Signing Plugin
- inputs:
- signType: real
- condition: and(succeeded(), in(variables['PB_SignType'], 'test', 'real'))
+ # Install Swix Plugin
+ - task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1
+ displayName: Install Swix Plugin
-# Install Swix Plugin
-- task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1
- displayName: Install Swix Plugin
+ # Run build.cmd
+ - task: CmdLine@1
+ displayName: Run build.cmd
+ inputs:
+ filename: build.cmd
+ arguments: microbuild
-# Run build.cmd
-- task: CmdLine@1
- displayName: Run build.cmd
- inputs:
- filename: build.cmd
- arguments: microbuild
+ # Publish nightly package to MyGet
+ - task: PowerShell@1
+ displayName: Publish nightly package to MyGet
+ inputs:
+ scriptName: 'setup\publish-assets.ps1'
+ arguments: '-binariesPath artifacts\bin -configuration $(BuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'myget'))
-# Publish nightly package to MyGet
-- task: PowerShell@1
- displayName: Publish nightly package to MyGet
- inputs:
- scriptName: 'setup\publish-assets.ps1'
- arguments: '-binariesPath $(MSBuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)'
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'myget'))
+ # Package publish
+ - task: CmdLine@1
+ displayName: Restore package publishing
+ inputs:
+ filename: '.nuget\NuGet.exe'
+ arguments: 'restore packages.config -PackagesDirectory packages -Source https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
+ - task: MSBuild@1
+ displayName: Publish packages to Azure Blob Storage
+ inputs:
+ solution: PublishToBlob.proj
+ msbuildArguments: '/t:Build /p:Configuration=$(BuildConfiguration) /p:ExpectedFeedUrl=$(PB_PublishBlobFeedUrl) /p:AccountKey=$(PB_PublishBlobFeedKey) /p:ManifestRepouri=$(Build.Repository.Uri) /p:ManifestBranch=$(Build.SourceBranch) /p:ManifestCommit=$(Build.SourceVersion) /p:ManifestBuildId=$(Build.BuildNumber) /bl:$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/pub/publish.binlog'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
+ - task: PublishBuildArtifacts@1
+ displayName: Publish publishing bin log
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/pub'
+ ArtifactName: 'Publish_bin_log'
+ publishLocation: Container
+ continueOnError: true
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/AssetManifest'
+ TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
+ continueOnError: true
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
+ - task: PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: true
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
-# Publish packages to Azure Blob Storage
-- task: MSBuild@1
- displayName: Publish packages to Azure Blob Storage
- inputs:
- solution: PublishToBlob.proj
- msbuildArguments: '/t:Build /p:ExpectedFeedUrl=$(PB_PublishBlobFeedUrl) /p:AccountKey=$(PB_PublishBlobFeedKey) /p:ManifestBranch=$(SourceBranch) /p:ManifestCommit=$(SourceVersion) /p:ManifestBuildId=$(OfficialBuildId)'
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
+ # Create static drop
+ - task: PublishBuildArtifacts@1
+ displayName: Create static drop
+ inputs:
+ PathtoPublish: 'artifacts'
+ ArtifactName: '$(Build.BuildNumber)'
+ publishLocation: FilePath
+ TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)'
+ Parallel: true
+ ParallelCount: 64
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'drop'))
-# Create static drop
-- task: PublishBuildArtifacts@1
- displayName: Create static drop
- inputs:
- PathtoPublish: '$(MSBuildConfiguration)'
- ArtifactName: '$(Build.BuildNumber)'
- publishLocation: FilePath
- TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)'
- Parallel: true
- ParallelCount: 64
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'drop'))
+ # Publish symbols
+ - task: PublishSymbols@1
+ displayName: Publish symbols
+ inputs:
+ SymbolsPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
+ SearchPattern: '**\*.dll;**\*.exe;**\*.pdb'
+ SymbolsFolder: '$(Build.SourcesDirectory)\artifacts\SymStore'
+ TreatNotIndexedAsWarning: true
+ SymbolsProduct: '$(Build.DefinitionName)'
+ SymbolsVersion: '$(Build.BuildNumber)'
+ continueOnError: true
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'symbols'))
-# Publish symbols
-- task: PublishSymbols@1
- displayName: Publish symbols
- inputs:
- SymbolsPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
- SearchPattern: '**\*.dll;**\*.exe;**\*.pdb'
- SymbolsFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)'
- TreatNotIndexedAsWarning: true
- SymbolsProduct: '$(Build.DefinitionName)'
- SymbolsVersion: '$(Build.BuildNumber)'
- continueOnError: true
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'symbols'))
+ # Upload VSTS Drop
+ - task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
+ displayName: Upload VSTS Drop
+ inputs:
+ DropFolder: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\Insertion'
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'vsts'))
-# Upload VSTS Drop
-- task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
- displayName: Upload VSTS Drop
- inputs:
- DropFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)\insertion'
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'vsts'))
+ # Execute cleanup tasks
+ - task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
+ displayName: Execute cleanup tasks
+ condition: succeededOrFailed()
-# Execute cleanup tasks
-- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
- displayName: Execute cleanup tasks
- condition: succeededOrFailed()
+ # Publish Artifact: MicroBuildOutputs
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish Artifact: MicroBuildOutputs'
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)\MicroBuild\Output'
+ ArtifactName: MicroBuildOutputs
+ publishLocation: Container
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'microbuild'))
-# Publish Artifact: MicroBuildOutputs
-- task: PublishBuildArtifacts@1
- displayName: 'Publish Artifact: MicroBuildOutputs'
- inputs:
- PathtoPublish: '$(Build.StagingDirectory)\MicroBuild\Output'
- ArtifactName: MicroBuildOutputs
- publishLocation: Container
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'microbuild'))
+ # Publish Symbols to Symweb
+ - task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
+ displayName: Publish symbols to SymWeb
+ inputs:
+ symbolServiceURI: 'https://microsoft.artifacts.visualstudio.com/DefaultCollection'
+ sourcePath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\SymStore'
+ usePat: false
+ condition: and(succeeded(), contains(variables['PB_PublishType'], 'symweb'))
-# Publish Symbols to Symweb
-- task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
- displayName: Publish symbols to SymWeb
- inputs:
- symbolServiceURI: 'https://microsoft.artifacts.visualstudio.com/DefaultCollection'
- sourcePath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
- usePat: false
- condition: and(succeeded(), contains(variables['PB_PublishType'], 'symweb'))
+- template: /eng/common/templates/job/publish-build-assets.yml
+ parameters:
+ dependsOn:
+ - Full_Signed
+ pool:
+ vmImage: vs2017-win2016
+ enablePublishBuildArtifacts: true
diff --git a/CoordinateXlif.targets b/CoordinateXlif.targets
new file mode 100644
index 00000000000..ea1ed17aaa2
--- /dev/null
+++ b/CoordinateXlif.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/DEVGUIDE.md b/DEVGUIDE.md
index 22098bee1a9..f7a8531cd2d 100644
--- a/DEVGUIDE.md
+++ b/DEVGUIDE.md
@@ -130,7 +130,8 @@ Testing the .NET Core version of the F# compiler on macOS and Linux is TBD.
To build and test Visual F# IDE Tools, install these requirements:
-- [Visual Studio 2017](https://www.visualstudio.com/downloads/)
+- Download [Visual Studio 2017](https://www.visualstudio.com/downloads/)
+- Launch the Visual Studio Installer
- Under the "Windows" workloads, select ".NET desktop development"
- Select "F# desktop language support" under the optional components
- Under the "Other Toolsets" workloads, select "Visual Studio extension development"
@@ -166,12 +167,12 @@ components installed in that VS installation. You can revert this step by disab
For **Debug**, uninstall then reinstall:
VSIXInstaller.exe /u:"VisualFSharp"
- VSIXInstaller.exe debug\net40\bin\VisualFSharpFull.vsix
+ VSIXInstaller.exe artifacts\bin\VisualFSharpFull\Debug\net46\VisualFSharpFull.vsix
For **Release**, uninstall then reinstall:
VSIXInstaller.exe /u:"VisualFSharp"
- VSIXInstaller.exe release\net40\bin\VisualFSharpFull.vsix
+ VSIXInstaller.exe artifacts\bin\VisualFSharpFull\Release\net46\VisualFSharpFull.vsix
Restart Visual Studio, it should now be running your freshly-built Visual F# IDE Tools with updated F# Interactive.
@@ -229,14 +230,22 @@ See the "Debugging The Compiler" section of this [article](https://medium.com/@w
- We use the proto compiler to compile the source for `FSharp.Core.dll` in this distribution.
- We use the proto compiler to compile the source for `FSharp.Compiler.dll`, `fsc.exe`, `fsi.exe`, and other binaries found in this distribution.
-#### Updating FSComp.fs
+#### Updating FSComp.fs, FSComp.resx and XLF
If you change error messages you may need to update FSComp.fs in `src\buildfromsource\FSharp.Compiler.Private`.
To do this, build the non-buildfromsource version of FSharp.Compiler.Private (src\fsharp\FSharp.Compiler.Private) then check its obj\ directory for `FSComp.fs` and manually copy that into the buildfromsource directory.
.\build net40
- copy /y src\fsharp\FSharp.Compiler.Private\obj\release\net40\FSComp.* src\buildfromsource\FSharp.Compiler.Private\
+ copy /y artifacts\obj\FSharp.Compiler.Private\Release\net46\FSComp.* src\buildfromsource\FSharp.Compiler.Private\
+
+If your changes involve modifying the list of language keywords in any way, (e.g. when implementing a new keyword), the XLF localization files need to be synced with the corresponding resx files. This can be done automatically by running
+
+ pushd src\fsharp\FSharp.Compiler.Private
+ msbuild FSharp.Compiler.Private.fsproj /t:UpdateXlf
+ popd
+
+This only works on Windows/.NETStandard framework, so changing this from any other platform requires editing and syncing all of the XLF files manually.
You can also change build.cmd to default COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES to 1 under ":ARGUMENTS_OK" label.
@@ -250,12 +259,6 @@ If you are behind a proxy server, NuGet client tool must be configured to use it
Where you should set proper proxy address, user name and password.
-#### When modifying, adding, or removing keywords or compiler messages
-
-If your changes involve modifying the list of language keywords in any way, (e.g. when implementing a new keyword), the XLF localization files need to be synced with the corresponding resx files. This can be done automatically by running `msbuild FSharp.Compiler.Private.fsproj /t:UpdateXlf` (located in [src\fsharp\FSharp.Compiler.Private](https://github.com/Microsoft/visualfsharp/tree/master/src/fsharp/FSharp.Compiler.Private)). This only works on Windows/.NETStandard framework, so changing this from any other platform requires editing and syncing all of the XLF files manually.
-
-After this, you must copy any differing `resx` files from the output directory into the corresponding subdirectory in [src\buildfromsource](https://github.com/Microsoft/visualfsharp/tree/master/src/fsharp/FSharp.Compiler.Private). This step will soon be eliminated (see issue [#3905](https://github.com/Microsoft/visualfsharp/issues/3905)).
-
#### Resources
The primary technical guide to the core compiler code is [The F# Compiler Technical Guide](http://fsharp.github.io/2015/09/29/fsharp-compiler-guide.html). Please read and contribute to that guide.
diff --git a/DotnetCLIToolsVersion.txt b/DotnetCLIToolsVersion.txt
index 6e840019a3b..8c63a20474c 100644
--- a/DotnetCLIToolsVersion.txt
+++ b/DotnetCLIToolsVersion.txt
@@ -1 +1 @@
- 2.1.400-preview-009197
+2.1.500
diff --git a/DotnetCLIVersion.txt b/DotnetCLIVersion.txt
deleted file mode 100644
index 6d7fdc186f6..00000000000
--- a/DotnetCLIVersion.txt
+++ /dev/null
@@ -1 +0,0 @@
-1.0.0-preview3-003886
\ No newline at end of file
diff --git a/FSharp.Directory.Build.targets b/FSharp.Directory.Build.targets
index 0c0448113ce..84125426d58 100644
--- a/FSharp.Directory.Build.targets
+++ b/FSharp.Directory.Build.targets
@@ -2,5 +2,6 @@
+
diff --git a/src/FSharp.Profiles.props b/FSharp.Profiles.props
similarity index 83%
rename from src/FSharp.Profiles.props
rename to FSharp.Profiles.props
index 915781c9534..2e2edb73702 100644
--- a/src/FSharp.Profiles.props
+++ b/FSharp.Profiles.props
@@ -2,14 +2,15 @@
-
+ $(DefineConstants);CROSS_PLATFORM_COMPILER$(DefineConstants);ENABLE_MONO_SUPPORT$(DefineConstants);BE_SECURITY_TRANSPARENT$(DefineConstants);FX_LCIDFROMCODEPAGE
-
+
+ $(DefineConstants);NETSTANDARD$(DefineConstants);NETSTANDARD1_6$(DefineConstants);FX_NO_APP_DOMAINS$(DefineConstants);FX_NO_ARRAY_LONG_LENGTH
@@ -18,13 +19,11 @@
$(DefineConstants);FX_NO_CONVERTER$(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE$(DefineConstants);FX_NO_CORHOST_SIGNER
- $(DefineConstants);FX_NO_CRYPTO$(DefineConstants);FX_NO_EVENTWAITHANDLE_IDISPOSABLE$(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS$(DefineConstants);FX_NO_HEAPTERMINATION$(DefineConstants);FX_NO_LINKEDRESOURCES$(DefineConstants);FX_NO_LOADER_OPTIMIZATION
- $(DefineConstants);FX_NO_SIMPLIFIED_LOADER$(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START$(DefineConstants);FX_NO_PDB_READER$(DefineConstants);FX_NO_PDB_WRITER
@@ -41,16 +40,13 @@
$(DefineConstants);FX_NO_WEB_CLIENT$(DefineConstants);FX_NO_WIN_REGISTRY$(DefineConstants);FX_NO_WINFORMS
+ $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER$(DefineConstants);FX_REDUCED_EXCEPTIONS$(DefineConstants);FX_REDUCED_CONSOLE$(DefineConstants);FX_RESHAPED_REFEMIT
- $(DefineConstants);FX_RESHAPED_CONSOLE$(DefineConstants);FX_RESHAPED_GLOBALIZATION$(DefineConstants);FX_RESHAPED_REFLECTION
- $(DefineConstants);FX_JITTRACKING_ISSUE
- $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER
- $(DefineConstants);FX_RESHAPED_REFLECTION_CORECLR
- $(DefineConstants);FSI_TODO_NETCORE
+ $(DefineConstants);FX_RESHAPED_MSBUILD$(OtherFlags) --simpleresolution
diff --git a/FSharpBuild.Directory.Build.props b/FSharpBuild.Directory.Build.props
index 560885e394b..c5e4108181c 100644
--- a/FSharpBuild.Directory.Build.props
+++ b/FSharpBuild.Directory.Build.props
@@ -1,6 +1,8 @@
+
+
@@ -8,9 +10,16 @@
Debug$(MSBuildThisFileDirectory)$(RepoRoot)src
- $(RepoRoot)Tools
- false
- $(RepoRoot)Proto\net40\bin
+ $(RepoRoot)artifacts
+ $(ArtifactsDir)\toolset
+ $(ArtifactsDir)\bin
+ $(ArtifactsDir)\obj
+ $(ArtifactsDir)\packages
+ $(ArtifactsBinDir)\$(MSBuildProjectName)
+ $(ArtifactsObjDir)\$(MSBuildProjectName)
+ $(ArtifactsDir)\SymStore
+ $(ArtifactsBinDir)\fsc\Proto\net46
+ $(ArtifactsBinDir)/fsc/Proto/netcoreapp2.14.4.0
@@ -18,10 +27,20 @@
$(NUGET_PACKAGES)
- $(MSBuildThisFileDirectory)packages
+ $(UserProfile)\.nuget\packages\
+ $(HOME)/.nuget/packages/$(NuGetPackageRoot)\$(NuGetPackageRoot)/
+
+ true
+
+
+
+
+ true
+ /usr/lib/mono/4.5-api
+ /usr/lib/mono/4.6-api
@@ -32,15 +51,15 @@
truetrue
-
-
-
- true
+
+ $(FSharpSourcesRoot)\fsharp\test.snk
+ false
+ STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY;$(DefineConstants)
- false
+ falsetrue
@@ -53,10 +72,11 @@
-
- $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.props
- $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.targets
- $(ProtoOutputPath)\Microsoft.FSharp.Overrides.NetSdk.targets
+
+ $(ProtoOutputPath)\Microsoft.FSharp.Targets
+ $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.props
+ $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.targets
+ $(ProtoOutputPath)\Microsoft.FSharp.Overrides.NetSdk.targets
diff --git a/FSharpBuild.Directory.Build.targets b/FSharpBuild.Directory.Build.targets
index a447c35111a..fa39d7498fd 100644
--- a/FSharpBuild.Directory.Build.targets
+++ b/FSharpBuild.Directory.Build.targets
@@ -1,39 +1,40 @@
+
+
en;$(XlfLanguages)
- coreclr
- net40
- $(MSBuildProjectDirectory)\$(OutputPath)
- $(OutputPath)
- $(RepoRoot)$(Configuration)\$(TargetDotnetProfile)\bin
- $(RepoRoot)$(Configuration)\$(TargetDotnetProfile)\obj
-
+
+ $(AssetTargetFallback);net462
+
-
-
-
-
+
+ $(CompileDependsOn);CopyAndSubstituteTextFiles
+
-
-
-
-
+
+
+ <_ReplacementText>$([System.IO.File]::ReadAllText('%(CopyAndSubstituteText.FullPath)'))
+ <_ReplacementText Condition="'%(CopyAndSubstituteText.Pattern1)' != ''">$(_ReplacementText.Replace('%(CopyAndSubstituteText.Pattern1)', '%(CopyAndSubstituteText.Replacement1)'))
+ <_ReplacementText Condition="'%(CopyAndSubstituteText.Pattern2)' != ''">$(_ReplacementText.Replace('%(CopyAndSubstituteText.Pattern2)', '%(CopyAndSubstituteText.Replacement2)'))
+
+
+
+
+
+
-
+
diff --git a/FSharpTests.Directory.Build.props b/FSharpTests.Directory.Build.props
index 7deaa0eb9b0..46e9b6fb369 100644
--- a/FSharpTests.Directory.Build.props
+++ b/FSharpTests.Directory.Build.props
@@ -1,36 +1,43 @@
-
-
- <_FSharpCompilerPath>$(MSBuildThisFileDirectory)$(Configuration)/net40/bin
+
+ true
- $(_FSharpCompilerPath)
+ $(MSBuildThisFileDirectory)artifacts\bin\fsc\$(Configuration)\net46fsc.exe
+
+ $(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\net46
+ fsi.exe
+
-
-
- <_FSharpCompilerPath>$(MSBuildThisFileDirectory)$(Configuration)/coreclr/bin
+
+ true
- $(MSBuildThisFileDirectory)Tools/dotnet20
+ $(MSBuildThisFileDirectory)artifacts\toolset\dotnetdotnet.exedotnet
- $(_FSharpCompilerPath)/fsc.exe
+ $(MSBuildThisFileDirectory)artifacts\bin\fsc\$(Configuration)\netcoreapp2.1\fsc.exe
+
+ $(MSBuildThisFileDirectory)artifacts\toolset\dotnet
+ dotnet.exe
+ dotnet
+ $(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\netcoreapp2.1\fsi.exe
- $(_FSharpCompilerPath)/Microsoft.FSharp.NetSdk.props
- $(_FSharpCompilerPath)/Microsoft.FSharp.NetSdk.targets
- $(_FSharpCompilerPath)/Microsoft.FSharp.Overrides.NetSdk.targets
-
+ <_FSharpBuildTargetFramework Condition="'$(FSharpTestCompilerVersion)' == 'net40'">net46
+ <_FSharpBuildTargetFramework Condition="'$(FSharpTestCompilerVersion)' == 'coreclr'">netstandard2.0
+ <_FSharpBuildBinPath>$(MSBuildThisFileDirectory)artifacts\bin\FSharp.Build\$(Configuration)\$(_FSharpBuildTargetFramework)
+ $(_FSharpBuildBinPath)\FSharp.Build.dll
-
-
- $(MSBuildThisFileDirectory)$(Configuration)\coreclr\bin\FSharp.Build.dll
- $(MSBuildThisFileDirectory)$(Configuration)\net40\bin\FSharp.Build.dll
+ $(_FSharpBuildBinPath)/Microsoft.FSharp.Targets
+ $(_FSharpBuildBinPath)/Microsoft.FSharp.NetSdk.props
+ $(_FSharpBuildBinPath)/Microsoft.FSharp.NetSdk.targets
+ $(_FSharpBuildBinPath)/Microsoft.FSharp.Overrides.NetSdk.targets
-
\ No newline at end of file
+
diff --git a/FSharpTests.Directory.Build.targets b/FSharpTests.Directory.Build.targets
index e5b000ce518..fe916bf2df2 100644
--- a/FSharpTests.Directory.Build.targets
+++ b/FSharpTests.Directory.Build.targets
@@ -1,21 +1,41 @@
-
-
+
-
- $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)DotnetCLIToolsVersion.txt').Trim())
-
-
-
-
-
-
-
-
+
+
+
+
+
+ <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
+
+
diff --git a/Makefile b/Makefile
index 14f7aef4870..dfb567b394b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,101 +1,46 @@
-include $(topsrcdir)mono/config.make
+Configuration ?= release
+DotNetVersion = `cat DotnetCLIToolsVersion.txt`
+DotNetToolPath = $(CURDIR)/artifacts/toolset/dotnet
+DotNetExe = "$(DotNetToolPath)/dotnet"
-.PHONY: restore build build-proto
+all: proto restore build test
-restore:
- MONO_ENV_OPTIONS=$(monoopts) mono .nuget/NuGet.exe restore packages.config -PackagesDirectory packages -ConfigFile ./NuGet.Config
- chmod u+x packages/FSharp.Compiler.Tools.4.1.27/tools/fsi.exe
- chmod u+x packages/FsLexYacc.7.0.6/build/fslex.exe
- chmod u+x packages/FsLexYacc.7.0.6/build/fsyacc.exe
-
-# Make the proto using the bootstrap, then make the final compiler using the proto
-# We call MAKE sequentially because we don't want build-final to explicitly depend on build-proto,
-# as that causes a complete recompilation of both proto and final everytime you touch the
-# compiler sources.
-all:
- @echo -----------
- @echo prefix=$(prefix)
- @echo topdir=$(topdir)
- @echo monodir=$(monodir)
- @echo monolibdir=$(monolibdir)
- @echo monobindir=$(monobindir)
- @echo -----------
- $(MAKE) restore
- $(MAKE) build-proto
- $(MAKE) build
-
-build-proto:
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=Proto /p:TargetDotnetProfile=$(TargetDotnetProfile) src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=Proto /p:TargetDotnetProfile=$(TargetDotnetProfile) src/fsharp/Fsc-proto/Fsc-proto.fsproj
-
-# The main targets
-build:
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Core/FSharp.Core.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Build/FSharp.Build.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/Fsc/Fsc.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/fsi/Fsi.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj
- MONO_ENV_OPTIONS=$(monoopts) $(MSBUILD) /p:Configuration=$(Configuration) /p:TargetDotnetProfile=net40 tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj
- mkdir -p $(Configuration)/fsharp30/net40/bin
- mkdir -p $(Configuration)/fsharp31/net40/bin
- mkdir -p $(Configuration)/fsharp40/net40/bin
- cp -p packages/FSharp.Core.3.0.2/lib/net40/* $(Configuration)/fsharp30/net40/bin
- cp -p packages/FSharp.Core.3.1.2.5/lib/net40/* $(Configuration)/fsharp31/net40/bin
- cp -p packages/FSharp.Core.4.0.0.1/lib/net40/* $(Configuration)/fsharp40/net40/bin
- mkdir -p $(Configuration)/portable7/bin
- cp -p packages/FSharp.Core.4.1.17/lib/portable-net45+netcore45/* $(Configuration)/portable7/bin
- mkdir -p $(Configuration)/portable47/bin
- cp -p packages/FSharp.Core.4.1.17/lib/portable-net45+sl5+netcore45/* $(Configuration)/portable47/bin
- mkdir -p $(Configuration)/portable78/bin
- cp -p packages/FSharp.Core.4.1.17/lib/portable-net45+netcore45+wp8/* $(Configuration)/portable78/bin
- mkdir -p $(Configuration)/portable259/bin
- cp -p packages/FSharp.Core.4.1.17/lib/portable-net45+netcore45+wpa81+wp8/* $(Configuration)/portable259/bin
- mkdir -p $(Configuration)/monoandroid10+monotouch10+xamarinios10/bin
- cp -p packages/FSharp.Core.4.1.17/lib/portable-net45+monoandroid10+monotouch10+xamarinios10/* $(Configuration)/monoandroid10+monotouch10+xamarinios10/bin
- mkdir -p $(Configuration)/xamarinmacmobile/bin
- cp -p packages/FSharp.Core.4.1.17/lib/xamarinmac20/* $(Configuration)/xamarinmacmobile/bin
+tools:
+ $(CURDIR)/scripts/dotnet-install.sh --version $(DotNetVersion) --install-dir "$(DotNetToolPath)"
+proto: tools
+ $(DotNetExe) build-server shutdown
+ $(DotNetExe) restore src/buildtools/buildtools.proj
+ $(DotNetExe) restore src/fsharp/FSharp.Build/FSharp.Build.fsproj
+ $(DotNetExe) restore src/fsharp/fsc/fsc.fsproj
+ $(DotNetExe) build src/buildtools/buildtools.proj -c Proto
+ $(DotNetExe) build src/fsharp/FSharp.Build/FSharp.Build.fsproj -f netstandard2.0 -c Proto
+ $(DotNetExe) build src/fsharp/fsc/fsc.fsproj -f netcoreapp2.1 -c Proto
-
-install:
- -rm -fr $(DESTDIR)$(monodir)/fsharp
- -rm -fr $(DESTDIR)$(monodir)/Microsoft\ F#
- -rm -fr $(DESTDIR)$(monodir)/Microsoft\ SDKs/F#
- -rm -fr $(DESTDIR)$(monodir)/msbuild/Microsoft/VisualStudio/v/FSharp
- -rm -fr $(DESTDIR)$(monodir)/msbuild/Microsoft/VisualStudio/v11.0/FSharp
- -rm -fr $(DESTDIR)$(monodir)/msbuild/Microsoft/VisualStudio/v12.0/FSharp
- -rm -fr $(DESTDIR)$(monodir)/msbuild/Microsoft/VisualStudio/v14.0/FSharp
- -rm -fr $(DESTDIR)$(monodir)/msbuild/Microsoft/VisualStudio/v15.0/FSharp
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=net40 install
- $(MAKE) -C mono/FSharp.Build install
- $(MAKE) -C mono/FSharp.Compiler.Private install
- $(MAKE) -C mono/Fsc install
- $(MAKE) -C mono/FSharp.Compiler.Interactive.Settings install
- $(MAKE) -C mono/FSharp.Compiler.Server.Shared install
- $(MAKE) -C mono/fsi install
- $(MAKE) -C mono/fsiAnyCpu install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=net40 FSharpCoreBackVersion=3.0 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=net40 FSharpCoreBackVersion=3.1 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=net40 FSharpCoreBackVersion=4.0 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=portable47 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=portable7 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=portable78 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=portable259 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=monoandroid10+monotouch10+xamarinios10 install
- $(MAKE) -C mono/FSharp.Core TargetDotnetProfile=xamarinmacmobile install
- echo "------------------------------ INSTALLED FILES --------------"
- ls -xlR $(DESTDIR)$(monodir)/fsharp $(DESTDIR)$(monodir)/msbuild $(DESTDIR)$(monodir)/xbuild $(DESTDIR)$(monodir)/Reference\ Assemblies $(DESTDIR)$(monodir)/gac/FSharp* $(DESTDIR)$(monodir)/Microsoft* || true
-
-dist:
- -rm -r fsharp-$(DISTVERSION) fsharp-$(DISTVERSION).tar.bz2
- mkdir -p fsharp-$(DISTVERSION)
- (cd $(topdir) && git archive HEAD |(cd $(builddir)fsharp-$(DISTVERSION) && tar xf -))
- list='$(EXTRA_DIST)'; for s in $$list; do \
- (cp $(topdir)$$s fsharp-$(DISTVERSION)/$$s) \
- done;
- tar cvjf fsharp-$(DISTVERSION).tar.bz2 $(patsubst %,--exclude=%, $(NO_DIST)) fsharp-$(DISTVERSION)
- du -b fsharp-$(DISTVERSION).tar.bz2
-
+restore:
+ $(DotNetExe) restore src/fsharp/FSharp.Core/FSharp.Core.fsproj
+ $(DotNetExe) restore src/fsharp/FSharp.Build/FSharp.Build.fsproj
+ $(DotNetExe) restore src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
+ $(DotNetExe) restore src/fsharp/fsc/fsc.fsproj
+ $(DotNetExe) restore src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
+ $(DotNetExe) restore src/fsharp/fsi/fsi.fsproj
+ $(DotNetExe) restore tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj
+ $(DotNetExe) restore tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj
+
+build: proto restore
+ $(DotNetExe) build-server shutdown
+ $(DotNetExe) build -c $(Configuration) -f netstandard1.6 src/fsharp/FSharp.Core/FSharp.Core.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netstandard2.0 src/fsharp/FSharp.Build/FSharp.Build.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netstandard1.6 src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netcoreapp2.1 src/fsharp/fsc/fsc.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netstandard1.6 src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netcoreapp2.1 src/fsharp/fsi/fsi.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netcoreapp2.0 tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj
+ $(DotNetExe) build -c $(Configuration) -f netcoreapp2.0 tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj
+
+test: build
+ $(DotNetExe) test -f netcoreapp2.1 -c $(Configuration) --no-restore --no-build tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj -l "trx;LogFileName=$(CURDIR)/tests/TestResults/FSharp.Core.UnitTests.coreclr.trx"
+ $(DotNetExe) test -f netcoreapp2.1 -c $(Configuration) --no-restore --no-build tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj -l "trx;LogFileName=$(CURDIR)/tests/TestResults/FSharp.Build.UnitTests.coreclr.trx"
+
+clean:
+ rm -rf $(CURDIR)/artifacts
diff --git a/NuGet.Config b/NuGet.Config
index c89208eb6da..fdf6d3eda46 100644
--- a/NuGet.Config
+++ b/NuGet.Config
@@ -1,22 +1,15 @@
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
diff --git a/PublishToBlob.proj b/PublishToBlob.proj
index 00bcee63359..21e8ec6eb6f 100644
--- a/PublishToBlob.proj
+++ b/PublishToBlob.proj
@@ -10,26 +10,33 @@
Microsoft.DotNet.Build.Tasks.Feed
- 2.1.0-prerelease-02419-02
+ 2.2.0-beta.19066.1
-
-
+
+
+
+ $(MSBuildThisFileDirectory)artifacts\log\$(Configuration)\
+ AnyCPU
+ $(Platform)
+ $(ArtifactsLogDir)AssetManifest\$(OS)-$(PlatformName).xml
+
+
+ AssetManifestPath="$(AssetManifestFilePath)" />
diff --git a/RoslynPackageVersion.txt b/RoslynPackageVersion.txt
index d0a9234a2fb..593eafec198 100644
--- a/RoslynPackageVersion.txt
+++ b/RoslynPackageVersion.txt
@@ -1 +1 @@
-2.9.0-beta8-63208-01
\ No newline at end of file
+2.9.0-beta8-63208-01
diff --git a/TESTGUIDE.md b/TESTGUIDE.md
index 86ba173a08e..80f51322d7e 100644
--- a/TESTGUIDE.md
+++ b/TESTGUIDE.md
@@ -10,7 +10,7 @@ To run tests, use variations such as the following, depending on which test suit
build.cmd vs test
build.cmd all test
-You can also submit pull requests to http://github.com/Microsoft/visualfsharp and run the tests via continuoous integration. Most people do wholesale testing that way.
+You can also submit pull requests to http://github.com/Microsoft/visualfsharp and run the tests via continuous integration. Most people do wholesale testing that way.
## Prerequisites
diff --git a/VisualFSharp.sln b/VisualFSharp.sln
index e6bcc50bbd2..ea9bbe592d7 100644
--- a/VisualFSharp.sln
+++ b/VisualFSharp.sln
@@ -1,14 +1,13 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2036
+VisualStudioVersion = 15.0.28010.2036
MinimumVisualStudioVersion = 10.0.40219.1
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.VS.FSI", "vsintegration\src\FSharp.VS.FSI\FSharp.VS.FSI.fsproj", "{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}"
+EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Private", "src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}"
EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.VS.FSI", "vsintegration\src\FSharp.VS.FSI\FSharp.VS.FSI.fsproj", "{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}"
- ProjectSection(ProjectDependencies) = postProject
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}
- EndProjectSection
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualFSharpFull", "vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj", "{59ADCE46-9740-4079-834D-9A03A3494EBC}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Server.Shared", "src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj", "{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}"
EndProject
@@ -65,14 +64,8 @@ EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Interactive.Settings", "src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsiAnyCPU", "src\fsharp\fsiAnyCpu\FsiAnyCPU.fsproj", "{8B3E283D-B5FE-4055-9D80-7E3A32F3967B}"
- ProjectSection(ProjectDependencies) = postProject
- {649FA588-F02E-457C-9FCF-87E46407481E} = {649FA588-F02E-457C-9FCF-87E46407481E}
- EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsi", "src\fsharp\fsi\Fsi.fsproj", "{D0E98C0D-490B-4C61-9329-0862F6E87645}"
- ProjectSection(ProjectDependencies) = postProject
- {649FA588-F02E-457C-9FCF-87E46407481E} = {649FA588-F02E-457C-9FCF-87E46407481E}
- EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Tests.FSharpSuite", "tests\fsharp\FSharp.Tests.FSharpSuite.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}"
EndProject
@@ -115,10 +108,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextFile", "vsintegration\I
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLFile", "vsintegration\ItemTemplates\XMLFile\XMLFile.csproj", "{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Vsix", "Vsix", "{141F6C23-E1B1-4D89-9F10-F0B8AD58E71F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualFSharpFull", "vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj", "{59ADCE46-9740-4079-834D-9A03A3494EBC}"
-EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "HostedCompilerServer", "tests\fsharpqa\testenv\src\HostedCompilerServer\HostedCompilerServer.fsproj", "{4239EFEA-E746-446A-BF7A-51FCBAB13946}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ILComparer", "tests\fsharpqa\testenv\src\ILComparer\ILComparer.fsproj", "{2E60864A-E3FF-4BCC-810F-DC7C34E6B236}"
@@ -155,14 +144,6 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.Build.0 = Debug|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.ActiveCfg = Release|Any CPU
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.Build.0 = Release|Any CPU
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|Any CPU.Build.0 = Debug|Any CPU
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -171,6 +152,22 @@ Global
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|Any CPU.Build.0 = Release|Any CPU
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|x86.ActiveCfg = Release|Any CPU
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519}.Release|x86.Build.0 = Release|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|x86.Build.0 = Debug|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.ActiveCfg = Release|Any CPU
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|x86.Build.0 = Release|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.Build.0 = Debug|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.ActiveCfg = Release|Any CPU
+ {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.Build.0 = Release|Any CPU
{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -483,14 +480,6 @@ Global
{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|Any CPU.Build.0 = Release|Any CPU
{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|x86.ActiveCfg = Release|Any CPU
{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6}.Release|x86.Build.0 = Release|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Debug|x86.Build.0 = Debug|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|Any CPU.Build.0 = Release|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.ActiveCfg = Release|Any CPU
- {59ADCE46-9740-4079-834D-9A03A3494EBC}.Release|x86.Build.0 = Release|Any CPU
{4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4239EFEA-E746-446A-BF7A-51FCBAB13946}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -584,8 +573,9 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {3881429D-A97A-49EB-B7AE-A82BA5FE9C77}
{991DCF75-C2EB-42B6-9A0D-AA1D2409D519} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
+ {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} = {3881429D-A97A-49EB-B7AE-A82BA5FE9C77}
+ {59ADCE46-9740-4079-834D-9A03A3494EBC} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06} = {B8DDA694-7939-42E3-95E5-265C2217C142}
{DED3BBD7-53F4-428A-8C9F-27968E768605} = {3058BC79-8E79-4645-B05D-48CC182FA8A6}
{EE85AAB7-CDA0-4C4E-BDA0-A64CCC413E3F} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
@@ -629,8 +619,6 @@ Global
{E3FDD4AC-46B6-4B9F-B672-317D1202CC50} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
{D11FC318-8F5D-4C8C-9287-AB40A016D13C} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
{1FB1DD07-06AA-45B4-B5AC-20FF5BEE98B6} = {F6DAEE9A-8BE1-4C4A-BC83-09215517C7DA}
- {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
- {59ADCE46-9740-4079-834D-9A03A3494EBC} = {141F6C23-E1B1-4D89-9F10-F0B8AD58E71F}
{4239EFEA-E746-446A-BF7A-51FCBAB13946} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}
{2E60864A-E3FF-4BCC-810F-DC7C34E6B236} = {CFE3259A-2D30-4EB0-80D5-E8B5F3D01449}
{D086C8C6-D00D-4C3B-9AB2-A4286C9F5922} = {4C7B48D7-19AF-4AE7-9D1D-3BB289D5480D}
diff --git a/artifacts/.gitignore b/artifacts/.gitignore
deleted file mode 100644
index 72e8ffc0db8..00000000000
--- a/artifacts/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/benchmarks/Benchmarks.sln b/benchmarks/Benchmarks.sln
new file mode 100644
index 00000000000..5d339f7a99f
--- /dev/null
+++ b/benchmarks/Benchmarks.sln
@@ -0,0 +1,37 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.136
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "CompilerServiceBenchmarks", "CompilerServiceBenchmarks\CompilerServiceBenchmarks.fsproj", "{9A3C565C-B514-4AE0-8B01-CA80E8453EB0}"
+EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "..\src\fsharp\FSharp.Core\FSharp.Core.fsproj", "{BB9EAE76-194A-49D8-9618-586CBE7031D9}"
+EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Private", "..\src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj", "{F57B02B1-CF26-4D93-9211-8CEB4F1572F0}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9A3C565C-B514-4AE0-8B01-CA80E8453EB0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB9EAE76-194A-49D8-9618-586CBE7031D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB9EAE76-194A-49D8-9618-586CBE7031D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB9EAE76-194A-49D8-9618-586CBE7031D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB9EAE76-194A-49D8-9618-586CBE7031D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F57B02B1-CF26-4D93-9211-8CEB4F1572F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F57B02B1-CF26-4D93-9211-8CEB4F1572F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F57B02B1-CF26-4D93-9211-8CEB4F1572F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F57B02B1-CF26-4D93-9211-8CEB4F1572F0}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {049A4D02-709F-418C-AD59-7FB0DBE956B1}
+ EndGlobalSection
+EndGlobal
diff --git a/benchmarks/CompilerServiceBenchmarks/CompilerServiceBenchmarks.fsproj b/benchmarks/CompilerServiceBenchmarks/CompilerServiceBenchmarks.fsproj
new file mode 100644
index 00000000000..fcdd08995e3
--- /dev/null
+++ b/benchmarks/CompilerServiceBenchmarks/CompilerServiceBenchmarks.fsproj
@@ -0,0 +1,21 @@
+
+
+
+ Exe
+ net472
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/CompilerServiceBenchmarks/Program.fs b/benchmarks/CompilerServiceBenchmarks/Program.fs
new file mode 100644
index 00000000000..d5e45275775
--- /dev/null
+++ b/benchmarks/CompilerServiceBenchmarks/Program.fs
@@ -0,0 +1,60 @@
+open System
+open System.IO
+open BenchmarkDotNet.Attributes
+open BenchmarkDotNet.Running
+open Microsoft.FSharp.Compiler.ErrorLogger
+open Microsoft.FSharp.Compiler.SourceCodeServices
+open System.Text
+
+[]
+type CompilerServiceParsing() =
+
+ let mutable checkerOpt = None
+
+ let mutable sourceOpt = None
+
+ let parsingOptions =
+ {
+ SourceFiles = [|"TypeChecker.fs"|]
+ ConditionalCompilationDefines = []
+ ErrorSeverityOptions = FSharpErrorSeverityOptions.Default
+ IsInteractive = false
+ LightSyntax = None
+ CompilingFsLib = false
+ IsExe = false
+ }
+
+ []
+ member __.Setup() =
+ match checkerOpt with
+ | None -> checkerOpt <- Some(FSharpChecker.Create())
+ | _ -> ()
+
+ match sourceOpt with
+ | None ->
+ let source = File.ReadAllText("""..\..\..\..\..\src\fsharp\TypeChecker.fs""")
+ sourceOpt <- Some(source)
+ | _ -> ()
+
+ []
+ member __.ParsingSetup() =
+ match checkerOpt with
+ | None -> failwith "no checker"
+ | Some(checker) ->
+ checker.InvalidateAll()
+ checker.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients()
+ checker.ParseFile("dummy.fs", "dummy", parsingOptions) |> Async.RunSynchronously |> ignore
+
+ []
+ member __.Parsing() =
+ match checkerOpt, sourceOpt with
+ | None, _ -> failwith "no checker"
+ | _, None -> failwith "no source"
+ | Some(checker), Some(source) ->
+ let results = checker.ParseFile("TypeChecker.fs", source, parsingOptions) |> Async.RunSynchronously
+ if results.ParseHadErrors then failwithf "parse had errors: %A" results.Errors
+
+[]
+let main argv =
+ let _ = BenchmarkRunner.Run()
+ 0
diff --git a/build-everything.proj b/build-everything.proj
deleted file mode 100644
index caba4fd173e..00000000000
--- a/build-everything.proj
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- true
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/build-nuget-packages.proj b/build-nuget-packages.proj
index 2aab5455e93..8b279bd8a19 100644
--- a/build-nuget-packages.proj
+++ b/build-nuget-packages.proj
@@ -2,20 +2,13 @@
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/build.cmd b/build.cmd
index cc4283d19aa..7a7ce4fe0ff 100644
--- a/build.cmd
+++ b/build.cmd
@@ -1,6 +1,5 @@
rem Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
@if "%_echo%"=="" echo off
-
setlocal enableDelayedExpansion
:ARGUMENTS_VALIDATION
@@ -63,9 +62,10 @@ set BUILD_CORECLR=0
set BUILD_FROMSOURCE=0
set BUILD_VS=0
set BUILD_FCS=0
-set BUILD_CONFIG=release
+set BUILD_CONFIG=Release
set BUILD_DIAG=
set BUILD_PUBLICSIGN=0
+set BUILD_FSHARP_PROJ=1
set TEST_NET40_COMPILERUNIT_SUITE=0
set TEST_NET40_COREUNIT_SUITE=0
@@ -76,7 +76,6 @@ set TEST_CORECLR_FSHARP_SUITE=0
set TEST_VS_IDEUNIT_SUITE=0
set TEST_FCS=0
set TEST_END_2_END=0
-set INCLUDE_TEST_SPEC_NUNIT=
set INCLUDE_TEST_TAGS=
set COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES=0
@@ -163,7 +162,6 @@ if /i "%ARG%" == "net40" (
if /i "%ARG%" == "coreclr" (
set _autoselect=0
- set BUILD_PROTO_WITH_CORECLR_LKG=1
set BUILD_CORECLR=1
set BUILD_FROMSOURCE=1
)
@@ -229,8 +227,8 @@ if /i "%ARG%" == "microbuild" (
set CI=1
REM redirecting TEMP directories
- set TEMP=%~dp0%BUILD_CONFIG%\TEMP
- set TMP=%~dp0%BUILD_CONFIG%\TEMP
+ set TEMP=%~dp0artifacts\tmp
+ set TMP=%~dp0artifacts\tmp
)
if /i "%ARG%" == "nuget" (
@@ -238,7 +236,7 @@ if /i "%ARG%" == "nuget" (
set BUILD_PROTO=1
set BUILD_NET40_FSHARP_CORE=1
- set BUILD_PROTO_WITH_CORECLR_LKG=1
+ set BUILD_NET40=1
set BUILD_CORECLR=1
set BUILD_NUGET=1
)
@@ -320,11 +318,11 @@ if /i "%ARG%" == "diag" (
)
if /i "%ARG%" == "debug" (
- set BUILD_CONFIG=debug
+ set BUILD_CONFIG=Debug
)
if /i "%ARG%" == "release" (
- set BUILD_CONFIG=release
+ set BUILD_CONFIG=Release
)
if /i "%ARG%" == "test-sign" (
@@ -345,7 +343,6 @@ if /i "%ARG%" == "no-test" (
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! )
if "!INCLUDE_TEST_TAGS!" == "" ( set INCLUDE_TEST_TAGS=%ARG2% ) else (set INCLUDE_TEST_TAGS=%ARG2%;!INCLUDE_TEST_TAGS! )
)
@@ -465,27 +462,16 @@ if /i "%TEST_NET40_FSHARP_SUITE" == "1" (
)
)
-if /i "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
- set NEEDS_DOTNET_CLI_TOOLS=1
-)
-
-if /i "%BUILD_CORECLR%" == "1" (
- set NEEDS_DOTNET_CLI_TOOLS=1
-)
-
-if /i "%BUILD_FROMSOURCE%" == "1" (
- set NEEDS_DOTNET_CLI_TOOLS=1
-)
-
-if /i "%BUILD_FCS%" == "1" (
- set NEEDS_DOTNET_CLI_TOOLS=1
-)
-
rem Decide if Proto need building
-if NOT EXIST Proto\net40\bin\fsc.exe (
+if NOT EXIST "%~dp0artifacts\bin\fsc\Proto\net46\fsc.exe" (
set BUILD_PROTO=1
)
+rem decide if FSharp.Proj needs building
+if "%BUILD_NET40%"=="0" if "%BUILD_NET40_FSHARP_CORE%"=="0" if "%BUILD_CORECLR%"=="0" if "%BUILD_VS%"=="0" if "%BUILD_FCS%"=="0" if "%TEST_NET40_COMPILERUNIT_SUITE%"=="0" if "%TEST_NET40_COREUNIT_SUITE%"=="0" if "%TEST_NET40_FSHARP_SUITE%"=="0" if "%TEST_NET40_FSHARPQA_SUITE%"=="0" if "%TEST_CORECLR_COREUNIT_SUITE%"=="0" if "%TEST_CORECLR_FSHARP_SUITE%"=="0" if "%TEST_VS_IDEUNIT_SUITE%"=="0" if "%TEST_FCS%"=="0" if "%TEST_END_2_END%"=="0" if "%COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES%"=="0" (
+ set BUILD_FSHARP_PROJ=0
+)
+
rem
rem This stops the dotnet cli from hunting around and
rem finding the highest possible dotnet sdk version to use.
@@ -501,7 +487,6 @@ echo BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG%
echo BUILD_NET40=%BUILD_NET40%
echo BUILD_NET40_FSHARP_CORE=%BUILD_NET40_FSHARP_CORE%
echo BUILD_CORECLR=%BUILD_CORECLR%
-echo BUILD_FROMSOURCE=%BUILD_FROMSOURCE%
echo BUILD_VS=%BUILD_VS%
echo BUILD_FCS=%BUILD_FCS%
echo BUILD_SETUP=%BUILD_SETUP%
@@ -509,6 +494,8 @@ echo BUILD_NUGET=%BUILD_NUGET%
echo BUILD_CONFIG=%BUILD_CONFIG%
echo BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%
echo BUILD_MICROBUILD=%BUILD_MICROBUILD%
+echo BUILD_FROMSOURCE=%BUILD_FROMSOURCE%
+echo BUILD_FSHARP_PROJ=%BUILD_FSHARP_PROJ%
echo.
echo PB_SKIPTESTS=%PB_SKIPTESTS%
echo PB_RESTORESOURCE=%PB_RESTORESOURCE%
@@ -525,7 +512,6 @@ echo TEST_NET40_FSHARPQA_SUITE=%TEST_NET40_FSHARPQA_SUITE%
echo TEST_CORECLR_COREUNIT_SUITE=%TEST_CORECLR_COREUNIT_SUITE%
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 TEMP=%TEMP%
@@ -562,24 +548,12 @@ set TargetFrameworkSDKToolsDirectory=%WindowsSDK_ExecutablePath_x64%
if not "%TargetFrameworkSDKToolsDirectory%" == "" ( goto have_TargetFrameworkSDKToolsDirectory )
set TargetFrameworkSDKToolsDirectory=%WindowsSDK_ExecutablePath_x86%
-:have_TargetFrameworkSDKToolsDirectory
-
-set BuildToolsPackage=Microsoft.VSSDK.BuildTools.15.6.170
-if "%VSSDKInstall%"=="" (
- set VSSDKInstall=%~dp0packages\%BuildToolsPackage%\tools\vssdk
-)
-if "%VSSDKToolsPath%"=="" (
- set VSSDKToolsPath=%~dp0packages\%BuildToolsPackage%\tools\vssdk\bin
-)
-if "%VSSDKIncludes%"=="" (
- set VSSDKIncludes=%~dp0packages\%BuildToolsPackage%\tools\vssdk\inc
-)
+:have_TargetFrameworkSDKToolsDirectory
if "%RestorePackages%"=="" (
set RestorePackages=true
)
-@echo VSSDKInstall: %VSSDKInstall%
@echo VSSDKToolsPath: %VSSDKToolsPath%
@echo VSSDKIncludes: %VSSDKIncludes%
@echo TargetFrameworkSDKToolsDirectory: %TargetFrameworkSDKToolsDirectory%
@@ -611,8 +585,8 @@ if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" se
:vsversionset
if "%VisualStudioVersion%" == "" echo Error: Could not find an installation of Visual Studio && goto :failure
-if exist "%VS160COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" (
- set _msbuildexe="%VS160COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe"
+if exist "%VS160COMNTOOLS%\..\..\MSBuild\Current\Bin\MSBuild.exe" (
+ set _msbuildexe="%VS160COMNTOOLS%\..\..\MSBuild\Current\Bin\MSBuild.exe"
goto :havemsbuild
)
if exist "%VS150COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" (
@@ -633,122 +607,37 @@ goto :eof
:havemsbuild
set _nrswitch=/nr:false
-set msbuildflags=%_nrswitch% /nologo
-REM set msbuildflags=%_nrswitch% /nologo
+set msbuildflags=%_nrswitch% /nologo /clp:Summary /v:minimal
set _ngenexe="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe"
if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure
echo ---------------- Done with prepare, starting package restore ----------------
-set _nugetexe="%~dp0.nuget\NuGet.exe"
-set _nugetconfig="%~dp0NuGet.Config"
-
-if "%RestorePackages%" == "true" (
- if "%BUILD_FCS%" == "1" (
- cd fcs
- .paket\paket.exe restore
- cd..
- @if ERRORLEVEL 1 echo Error: Paket restore failed && goto :failure
- )
-
- %_ngenexe% install %_nugetexe% /nologo
- set _nugetoptions=-PackagesDirectory packages -ConfigFile %_nugetconfig%
- if not "%PB_RESTORESOURCE%" == "" (
- set _nugetoptions=!_nugetoptions! -FallbackSource %PB_RESTORESOURCE%
- )
-
- echo _nugetoptions=!_nugetoptions!
-
- %_nugetexe% restore packages.config !_nugetoptions!
- @if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
-
- if "%BUILD_SETUP%" == "1" (
- %_nugetexe% restore setup\packages.config !_nugetoptions!
- @if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
- )
-
- if not "%SIGN_TYPE%" == "" (
- set signtoolnugetoptions=-PackagesDirectory "%USERPROFILE%\.nuget\packages" -ConfigFile %_nugetconfig%
- if not "%PB_RESTORESOURCE%" == "" set signtoolnugetoptions=!signtoolnugetoptions! -FallbackSource %PB_RESTORESOURCE%
- %_nugetexe% restore build\config\packages.config !signtoolnugetoptions!
- @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
- )
-)
-
-if "%NEEDS_DOTNET_CLI_TOOLS%" == "1" (
- :: Restore the Tools directory
- call "%~dp0init-tools.cmd"
-)
-set _dotnetcliexe=%~dp0Tools\dotnetcli\dotnet.exe
-set _dotnet20exe=%~dp0Tools\dotnet20\dotnet.exe
-set NUGET_PACKAGES=%~dp0packages
-set path=%~dp0Tools\dotnet20\;%path%
-
-echo ----------- Done with package restore, starting dependency uptake check -------------
+:: Restore the Tools directory
+call "%~dp0init-tools.cmd"
+set _dotnetexe=%~dp0artifacts\toolset\dotnet\dotnet.exe
+set path=%~dp0artifacts\toolset\dotnet;%path%
if not "%PB_PackageVersionPropsUrl%" == "" (
- set dependencyUptakeDir=%~dp0Tools\dependencyUptake
- if not exist "!dependencyUptakeDir!" mkdir "!dependencyUptakeDir!"
-
- :: download package version overrides
- echo powershell -noprofile -executionPolicy RemoteSigned -command "Invoke-WebRequest -Uri '%PB_PackageVersionPropsUrl%' -OutFile '!dependencyUptakeDir!\PackageVersions.props'"
- powershell -noprofile -executionPolicy RemoteSigned -command "Invoke-WebRequest -Uri '%PB_PackageVersionPropsUrl%' -OutFile '!dependencyUptakeDir!\PackageVersions.props'"
- if ERRORLEVEL 1 echo Error downloading package version properties && goto :failure
-
- :: prepare dependency uptake files
- echo %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
- %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
- if ERRORLEVEL 1 echo Error building dependency uptake files && goto :failure
-
- :: restore dependencies
- %_nugetexe% restore !dependencyUptakeDir!\packages.config -PackagesDirectory packages -ConfigFile !dependencyUptakeDir!\NuGet.config
- if ERRORLEVEL 1 echo Error restoring dependency uptake packages && goto :failure
+ echo ----------- do dependency uptake check -----------
- :: set DotNetPackageVersionPropsPath
- set DotNetPackageVersionPropsPath=!dependencyUptakeDir!\PackageVersions.props
-)
-
-echo ----------- Done with package restore, starting dependency uptake check -------------
-
-if not "%PB_PackageVersionPropsUrl%" == "" (
- set dependencyUptakeDir=%~dp0Tools\dependencyUptake
+ set dependencyUptakeDir=%~dp0artifacts\dependencyUptake
if not exist "!dependencyUptakeDir!" mkdir "!dependencyUptakeDir!"
:: download package version overrides
echo powershell -noprofile -executionPolicy RemoteSigned -command "Invoke-WebRequest -Uri '%PB_PackageVersionPropsUrl%' -OutFile '!dependencyUptakeDir!\PackageVersions.props'"
powershell -noprofile -executionPolicy RemoteSigned -command "Invoke-WebRequest -Uri '%PB_PackageVersionPropsUrl%' -OutFile '!dependencyUptakeDir!\PackageVersions.props'"
if ERRORLEVEL 1 echo Error downloading package version properties && goto :failure
-
- :: prepare dependency uptake files
- echo %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
- %_msbuildexe% %msbuildflags% %~dp0build\projects\PrepareDependencyUptake.proj /t:Build
- if ERRORLEVEL 1 echo Error building dependency uptake files && goto :failure
-
- :: restore dependencies
- %_nugetexe% restore !dependencyUptakeDir!\packages.config -PackagesDirectory packages -ConfigFile !dependencyUptakeDir!\NuGet.config
- if ERRORLEVEL 1 echo Error restoring dependency uptake packages && goto :failure
)
-set _dotnetcliexe=%~dp0Tools\dotnetcli\dotnet.exe
-set _dotnet20exe=%~dp0Tools\dotnet20\dotnet.exe
-set NUGET_PACKAGES=%~dp0Packages
-set path=%~dp0Tools\dotnet20\;%path%
-
-set _fsiexe="packages\FSharp.Compiler.Tools.4.1.27\tools\fsi.exe"
-if not exist %_fsiexe% echo Error: Could not find %_fsiexe% && goto :failure
-%_ngenexe% install %_fsiexe% /nologo
-
-if not exist %_nugetexe% echo Error: Could not find %_nugetexe% && goto :failure
-%_ngenexe% install %_nugetexe% /nologo
+if "%RestorePackages%" == "true" (
+ if "%BUILD_FCS%" == "1" (
+ cd fcs
+ .paket\paket.exe restore
+ cd..
+ @if ERRORLEVEL 1 echo Error: Paket restore failed && goto :failure
+ )
+)
echo ---------------- Done with package restore, verify buildfrom source ---------------
if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
@@ -759,51 +648,31 @@ if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
)
echo ---------------- Done with package restore, starting proto ------------------------
-set logdir=%~dp0%BUILD_CONFIG%\logs
+set logdir=%~dp0artifacts\log\%BUILD_CONFIG%
if not exist "!logdir!" mkdir "!logdir!"
rem Build Proto
if "%BUILD_PROTO%" == "1" (
- rmdir /s /q Proto
-
- if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "1" (
-
- echo %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-coreclr.build.binlog
- %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-coreclr.build.binlog
- @if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
- )
+ rmdir /s /q artifacts/bin/fsc/Proto
- if "%BUILD_PROTO_WITH_CORECLR_LKG%" == "0" (
-
- echo %_ngenexe% install packages\FSharp.Compiler.Tools.4.1.27\tools\fsc.exe /nologo
- %_ngenexe% install packages\FSharp.Compiler.Tools.4.1.27\tools\fsc.exe /nologo
-
- echo %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-net40.build.binlog
- %_msbuildexe% %msbuildflags% src\fsharp-proto-build.proj /p:BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG% /p:Configuration=Proto /p:DisableLocalization=true /bl:%~dp0%BUILD_CONFIG%\logs\protobuild-net40.build.binlog
- @if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
- )
-
- echo %_ngenexe% install Proto\net40\bin\fsc.exe /nologo
- %_ngenexe% install Proto\net40\bin\fsc.exe /nologo
- @if ERRORLEVEL 1 echo Error: NGen of proto failed && goto :failure
-)
+ echo %_msbuildexe% proto.proj /t:Restore /bl:%~dp0artifacts\log\Proto\proto.proj.restore.binlog
+ %_msbuildexe% proto.proj /t:Restore /bl:%~dp0artifacts\log\Proto\proto.proj.restore.binlog
+ @if ERRORLEVEL 1 echo Error restoring proto failed && goto :failure
-if "%NEEDS_DOTNET_CLI_TOOLS%" == "1" (
- echo ---------------- Done with proto, starting SDK restore ------------------------
- :: Restore projects using dotnet CLI tool
- echo %_dotnet20exe% restore -v:d build-everything.proj %msbuildflags% %BUILD_DIAG%
- %_dotnet20exe% restore -v:d build-everything.proj %msbuildflags% %BUILD_DIAG%
+ echo %_msbuildexe% proto.proj /t:Build /bl:%~dp0artifacts\log\Proto\proto.proj.build.binlog
+ %_msbuildexe% proto.proj /t:Build /bl:%~dp0artifacts\log\Proto\proto.proj.build.binlog
+ @if ERRORLEVEL 1 echo Error building proto failed && goto :failure
)
echo ---------------- Done with SDK restore, starting build ------------------------
-if "%BUILD_PHASE%" == "1" (
+if "%BUILD_PHASE%" == "1" if "%BUILD_FSHARP_PROJ%" == "1" (
- echo %_msbuildexe% %msbuildflags% build-everything.proj /t:Restore %BUILD_DIAG% /bl:%~dp0%BUILD_CONFIG%\net40\binmsbuild.build-everything.restore.%BUILD_CONFIG%.binlog
- %_msbuildexe% %msbuildflags% build-everything.proj /t:Restore %BUILD_DIAG% /bl:%~dp0%BUILD_CONFIG%\net40\binmsbuild.build-everything.restore.%BUILD_CONFIG%.binlog
+ echo %_dotnetexe% restore fsharp.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\fsharp.proj.restore.binlog
+ %_dotnetexe% restore fsharp.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\fsharp.proj.restore.binlog
- echo %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-everything.build.%BUILD_CONFIG%.binlog
- %_msbuildexe% %msbuildflags% build-everything.proj /p:Configuration=%BUILD_CONFIG% %BUILD_DIAG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-everything.build.%BUILD_CONFIG%.binlog
+ echo %_msbuildexe% fsharp.proj /t:Build /p:Configuration=%BUILD_CONFIG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:!logdir!\fsharp.proj.build.binlog
+ %_msbuildexe% fsharp.proj /t:Build /p:Configuration=%BUILD_CONFIG% /p:BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN% /bl:!logdir!\fsharp.proj.build.binlog
@if ERRORLEVEL 1 echo Error build failed && goto :failure
)
@@ -812,73 +681,58 @@ echo ---------------- Done with build, starting assembly version checks --------
set asmvercheckpath=%~dp0tests\fsharpqa\testenv\src\AssemblyVersionCheck
if "%BUILD_NET40%" == "1" (
- echo "%~dp0%BUILD_CONFIG%\net40\bin\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0%BUILD_CONFIG%"
- "%~dp0%BUILD_CONFIG%\net40\bin\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0%BUILD_CONFIG%"
+ echo #r @"%USERPROFILE%\.nuget\packages\Newtonsoft.Json\9.0.1\lib\net45\Newtonsoft.Json.dll">%asmvercheckpath%\assemblies.fsx
+ echo "%~dp0artifacts\bin\fsi\%BUILD_CONFIG%\net46\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0artifacts"
+ "%~dp0artifacts\bin\fsi\%BUILD_CONFIG%\net46\fsi.exe" "%asmvercheckpath%\AssemblyVersionCheck.fsx" -- "%~dp0build\config\AssemblySignToolData.json" "%~dp0artifacts"
if ERRORLEVEL 1 echo Error verifying assembly versions and commit hashes. && goto :failure
)
echo ---------------- Done with assembly version checks, starting assembly signing ---------------
if not "%SIGN_TYPE%" == "" (
- echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\AssemblySignToolData.json
- call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\AssemblySignToolData.json
+ echo %_msbuildexe% build\projects\Signing.proj /t:Restore
+ %_msbuildexe% build\projects\Signing.proj /t:Restore
+
+ echo %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasePath=%~dp0artifacts /p:ConfigFile=%~dp0build\config\AssemblySignToolData.json
+ %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasePath=%~dp0artifacts /p:ConfigFile=%~dp0build\config\AssemblySignToolData.json
+
if ERRORLEVEL 1 echo Error running sign tool && goto :failure
)
echo ---------------- Done with assembly signing, start package creation ---------------
-echo %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-nuget-packages.build.%BUILD_CONFIG%.binlog
- %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-nuget-packages.build.%BUILD_CONFIG%.binlog
+echo %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BUILD_CONFIG% /t:Pack /bl:!logdir!\msbuild.build-nuget-packages.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% build-nuget-packages.proj /p:Configuration=%BUILD_CONFIG% /t:Pack /bl:!logdir!\msbuild.build-nuget-packages.build.%BUILD_CONFIG%.binlog
if ERRORLEVEL 1 echo Error building NuGet packages && goto :failure
if not "%SIGN_TYPE%" == "" (
- echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\PackageSignToolData.json
- call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\PackageSignToolData.json
+ echo %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasepath=%~dp0artifacts\packages\%BUILD_CONFIG% /p:ConfigFile=%~dp0build\config\PackageSignToolData.json
+ %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasepath=%~dp0artifacts\packages\%BUILD_CONFIG% /p:ConfigFile=%~dp0build\config\PackageSignToolData.json
if ERRORLEVEL 1 echo Error running sign tool && goto :failure
)
if "%BUILD_SETUP%" == "1" (
- echo %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog
- %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog
+ echo %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% setup\build-insertion.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.build-insertion.build.%BUILD_CONFIG%.binlog
if ERRORLEVEL 1 echo Error building insertion packages && goto :failure
)
if not "%SIGN_TYPE%" == "" (
- echo build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\InsertionSignToolData.json
- call build\scripts\run-signtool.cmd -MSBuild %_msbuildexe% -SignType %SIGN_TYPE% -Configuration %BUILD_CONFIG% -ConfigFile build\config\InsertionSignToolData.json
+ echo %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasepath=%~dp0artifacts\VSSetup\%BUILD_CONFIG%\Insertion /p:ConfigFile=%~dp0build\config\InsertionSignToolData.json
+ %_msbuildexe% build\projects\Signing.proj /t:DoSigning /p:SignType=%SIGN_TYPE% /p:Configuration=%BUILD_CONFIG% /p:BinaryBasePath=%~dp0artifacts\VSSetup\%BUILD_CONFIG%\Insertion /p:ConfigFile=%~dp0build\config\InsertionSignToolData.json
if ERRORLEVEL 1 echo Error running sign tool && goto :failure
)
echo ---------------- Done with signing, building insertion files ---------------
if "%BUILD_SETUP%" == "1" (
- echo %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog
- %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:%~dp0%BUILD_CONFIG%\logs\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog
+ echo %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog
+ %_msbuildexe% %msbuildflags% setup\Swix\Microsoft.FSharp.vsmanproj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\msbuild.setup-swix.build.%BUILD_CONFIG%.binlog
if ERRORLEVEL 1 echo Error building .vsmanproj && goto :failure
)
echo ---------------- Done building insertion files, starting pack/update/prepare ---------------
-if "%BUILD_NET40_FSHARP_CORE%" == "1" (
- echo ---------------- start update.cmd ---------------
- call src\update.cmd %BUILD_CONFIG% -ngen
-)
-
-if "%COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES%" == "1" (
- echo ---------------- copy fscomp resource for build from sources ---------------
- copy /y src\fsharp\FSharp.Compiler.Private\obj\%BUILD_CONFIG%\net40\FSComp.* src\buildfromsource\FSharp.Compiler.Private
-)
-
-@echo set NUNITPATH=packages\NUnit.Console.3.0.0\tools\
-set NUNITPATH=packages\NUnit.Console.3.0.0\tools\
-if not exist %NUNITPATH% echo Error: Could not find %NUNITPATH% && goto :failure
-
-@echo xcopy "%NUNITPATH%*.*" "%~dp0tests\fsharpqa\testenv\bin\nunit\*.*" /S /Q /Y
- xcopy "%NUNITPATH%*.*" "%~dp0tests\fsharpqa\testenv\bin\nunit\*.*" /S /Q /Y
-
-@echo xcopy "%~dp0tests\fsharpqa\testenv\src\nunit*.*" "%~dp0tests\fsharpqa\testenv\bin\nunit\*.*" /S /Q /Y
- xcopy "%~dp0tests\fsharpqa\testenv\src\nunit*.*" "%~dp0tests\fsharpqa\testenv\bin\nunit\*.*" /S /Q /Y
-
set X86_PROGRAMFILES=%ProgramFiles%
if "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)%
@@ -912,16 +766,10 @@ if "%no_test%" == "1" goto :success
echo ---------------- Done with update, starting tests -----------------------
-if NOT "%INCLUDE_TEST_SPEC_NUNIT%" == "" (
- set WHERE_ARG_NUNIT=--where "%INCLUDE_TEST_SPEC_NUNIT%"
-)
if NOT "%INCLUDE_TEST_TAGS%" == "" (
set TTAGS_ARG_RUNALL=-ttags:%INCLUDE_TEST_TAGS%
)
-echo WHERE_ARG_NUNIT=!WHERE_ARG_NUNIT!
-set NUNITPATH=%~dp0tests\fsharpqa\testenv\bin\nunit\
-set NUNIT3_CONSOLE=%~dp0packages\NUnit.Console.3.0.0\tools\nunit3-console.exe
set link_exe=%~dp0tests\fsharpqa\testenv\bin\link\link.exe
if not exist "%link_exe%" (
echo Error: failed to find "%link_exe%" use nuget to restore the VisualCppTools package
@@ -930,40 +778,31 @@ if not exist "%link_exe%" (
if /I not "%single_threaded%" == "true" (set PARALLEL_ARG=-procs:%NUMBER_OF_PROCESSORS%) else set PARALLEL_ARG=-procs:0
-set FSCBINPATH=%~dp0%BUILD_CONFIG%\net40\bin
-set RESULTSDIR=%~dp0tests\TestResults
-if not exist "%RESULTSDIR%" (mkdir "%RESULTSDIR%")
+set FSCBINPATH=%~dp0artifacts\bin\fsc\%BUILD_CONFIG%\net46
ECHO FSCBINPATH=%FSCBINPATH%
-ECHO RESULTSDIR=%RESULTSDIR%
ECHO link_exe=%link_exe%
-ECHO NUNIT3_CONSOLE=%NUNIT3_CONSOLE%
-ECHO NUNITPATH=%NUNITPATH%
REM ---------------- test-net40-fsharp -----------------------
+set TESTLOGDIR=%~dp0artifacts\TestResults\%BUILD_CONFIG%
if "%TEST_NET40_FSHARP_SUITE%" == "1" (
- set OUTPUTARG=
- set ERRORARG=
- set OUTPUTFILE=
- set ERRORFILE=
- set XMLFILE=!RESULTSDIR!\test-net40-fsharp-results.xml
- if "%CI%" == "1" (
- set OUTPUTFILE=!RESULTSDIR!\test-net40-fsharp-output.log
- set OUTPUTARG=--output:"!OUTPUTFILE!"
- set ERRORFILE=!RESULTSDIR!\test-net40-fsharp-errors.log
- set ERRORARG=--err:"!ERRORFILE!"
- )
-
- echo "!NUNIT3_CONSOLE!" --verbose "!FSCBINPATH!\FSharp.Tests.FSharpSuite.dll" --framework:V4.0 --work:"!FSCBINPATH!" !OUTPUTARG! !ERRORARG! --result:"!XMLFILE!;format=nunit3" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose "!FSCBINPATH!\FSharp.Tests.FSharpSuite.dll" --framework:V4.0 --work:"!FSCBINPATH!" !OUTPUTARG! !ERRORARG! --result:"!XMLFILE!;format=nunit3" !WHERE_ARG_NUNIT!
+ set LOGFILE=%TESTLOGDIR%\FSharp.Tests.FSharpSuite_net46.trx
+ echo "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
- type "!ERRORFILE!"
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-fsharp failed, see log above -- FAILED
- echo -----------------------------------------------------------------
+ echo --------------------------------------------------------------
+ echo Error: Running tests net40-fsharp failed, see file `!LOGFILE!`
+ echo --------------------------------------------------------------
+ goto :failure
+ )
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
goto :failure
)
)
@@ -972,25 +811,39 @@ REM ---------------- test-fcs -----------------------
if "%TEST_FCS%" == "1" (
- del /q fcs\FSharp.Compiler.Service.Tests\TestResults\*.trx
- echo "!_dotnet20exe!" test fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -c Release --logger:trx
- "!_dotnet20exe!" test fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -c Release --logger:trx
+ set LOGFILE=%TESTLOGDIR%\FSharp.Compiler.Service.Tests_net46.trx
+ echo "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
- type fcs\FSharp.Compiler.Service.Tests\TestResults\*.trx
- echo -----------------------------------------------------------------
- echo Error: Running FCS tests failed. See XML logging output above. Search for 'outcome="Failed"' or 'Failed '
- echo .
- echo Error: Note that tests were run with both .NET Core and .NET Framework.
- echo Error: Try running tests locally and using
- echo .
- echo dotnet test fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -c Release --logger:trx
- echo .
- echo Error: and look for results in
- echo .
- echo fcs\FSharp.Compiler.Service.Tests\TestResults\*.trx
- echo .
- echo -----------------------------------------------------------------
+ echo --------------------------------------------------------------
+ echo Error: Running net40 fcs tests, see file `!LOGFILE!`
+ echo --------------------------------------------------------------
+ goto :failure
+ )
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
+ goto :failure
+ )
+
+ set LOGFILE=%TESTLOGDIR%\FSharp.Compiler.Service.Tests_netcoreapp2.0.trx
+ echo "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0fcs\FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
+
+ if errorlevel 1 (
+ echo --------------------------------------------------------------
+ echo Error: Running coreclr fcs tests, see file `!LOGFILE!`
+ echo --------------------------------------------------------------
+ goto :failure
+ )
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
goto :failure
)
)
@@ -1021,13 +874,14 @@ set HOSTED_COMPILER=1
if "%TEST_NET40_FSHARPQA_SUITE%" == "1" (
- set CSC_PIPE=%~dp0packages\Microsoft.Net.Compilers.2.7.0\tools\csc.exe
+ set CSC_PIPE=%USERPROFILE%\.nuget\packages\Microsoft.Net.Compilers\2.7.0\tools\csc.exe
set FSC=!FSCBINPATH!\fsc.exe
set FSCOREDLLPATH=!FSCBinPath!\FSharp.Core.dll
set PATH=!FSCBINPATH!;!PATH!
- set perlexe=%~dp0packages\StrawberryPerl64.5.22.2.1\Tools\perl\bin\perl.exe
+ set perlexe=%USERPROFILE%\.nuget\packages\StrawberryPerl64\5.22.2.1\Tools\perl\bin\perl.exe
if not exist !perlexe! (echo Error: perl was not downloaded from check the packages directory: !perlexe! && goto :failure )
+ set RESULTSDIR=%~dp0artifacts\TestResults\%BUILD_CONFIG%
set OUTPUTFILE=test-net40-fsharpqa-results.log
set ERRORFILE=test-net40-fsharpqa-errors.log
set FAILENV=test-net40-fsharpqa-errors
@@ -1038,9 +892,10 @@ if "%TEST_NET40_FSHARPQA_SUITE%" == "1" (
popd
if ERRORLEVEL 1 (
- type "%RESULTSDIR%\!OUTPUTFILE!"
echo -----------------------------------------------------------------
- type "%RESULTSDIR%\!ERRORFILE!"
+ type "!RESULTSDIR!\!OUTPUTFILE!"
+ echo -----------------------------------------------------------------
+ type "!RESULTSDIR!\!ERRORFILE!"
echo -----------------------------------------------------------------
echo Error: Running tests net40-fsharpqa failed, see logs above -- FAILED
echo -----------------------------------------------------------------
@@ -1052,115 +907,103 @@ REM ---------------- net40-compilerunit -----------------------
if "%TEST_NET40_COMPILERUNIT_SUITE%" == "1" (
- set OUTPUTARG=
- set ERRORARG=
- set OUTPUTFILE=
- set ERRORFILE=
- set XMLFILE=!RESULTSDIR!\test-net40-compilerunit-results.xml
- if "%CI%" == "1" (
- set OUTPUTFILE=!RESULTSDIR!\test-net40-compilerunit-output.log
- set ERRORFILE=!RESULTSDIR!\test-net40-compilerunit-errors.log
- set ERRORARG=--err:"!ERRORFILE!"
- set OUTPUTARG=--output:"!OUTPUTFILE!"
- )
- set ERRORFILE=!RESULTSDIR!\test-net40-compilerunit-errors.log
- echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\..\..\net40\bin\FSharp.Compiler.UnitTests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\..\..\net40\bin\FSharp.Compiler.UnitTests.dll" !WHERE_ARG_NUNIT!
+ set LOGFILE=%TESTLOGDIR%\FSharp.Compiler.UnitTests_net46.trx
+ echo "%_dotnetexe%" test "%~dp0tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
echo -----------------------------------------------------------------
- type "!OUTPUTFILE!"
- echo -----------------------------------------------------------------
- type "!ERRORFILE!"
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-compilerunit failed, see logs above -- FAILED
+ echo Error: Running tests net40-compilerunit failed, see file `!LOGFILE!`
echo -----------------------------------------------------------------
goto :failure
)
- set OUTPUTARG=
- set ERRORARG=
- set OUTPUTFILE=
- set ERRORFILE=
- set XMLFILE=!RESULTSDIR!\test-net40-buildunit-results.xml
- if "%CI%" == "1" (
- set OUTPUTFILE=!RESULTSDIR!\test-net40-buildunit-output.log
- set ERRORFILE=!RESULTSDIR!\test-net40-buildunit-errors.log
- set ERRORARG=--err:"!ERRORFILE!"
- set OUTPUTARG=--output:"!OUTPUTFILE!"
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
+ goto :failure
)
- set ERRORFILE=!RESULTSDIR!\test-net40-buildunit-errors.log
- echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
+
+ set LOGFILE=%TESTLOGDIR%\FSharp.Build.UnitTests_net46.trx
+ echo "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
echo -----------------------------------------------------------------
- type "!OUTPUTFILE!"
- echo -----------------------------------------------------------------
- type "!ERRORFILE!"
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-compilernit failed, see logs above -- FAILED
+ echo Error: Running tests net40-compilernit failed, see file `!LOGFILE!`
echo -----------------------------------------------------------------
goto :failure
)
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
+ goto :failure
+ )
)
REM ---------------- net40-coreunit -----------------------
if "%TEST_NET40_COREUNIT_SUITE%" == "1" (
- set OUTPUTARG=
- set ERRORARG=
- set OUTPUTFILE=
- set ERRORFILE=
- set XMLFILE=!RESULTSDIR!\test-net40-coreunit-results.xml
- if "%CI%" == "1" (
- set ERRORFILE=!RESULTSDIR!\test-net40-coreunit-errors.log
- set OUTPUTFILE=!RESULTSDIR!\test-net40-coreunit-output.log
- set ERRORARG=--err:"!ERRORFILE!"
- set OUTPUTARG=--output:"!OUTPUTFILE!"
- )
-
- echo "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" "!FSCBINPATH!\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
+ set LOGFILE=%TESTLOGDIR%\FSharp.Core.UnitTests_net46.trx
+ echo "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
echo -----------------------------------------------------------------
- type "!OUTPUTFILE!"
- echo -----------------------------------------------------------------
- type "!ERRORFILE!"
- echo -----------------------------------------------------------------
- echo Error: Running tests net40-coreunit failed, see logs above -- FAILED
+ echo Error: Running tests net40-coreunit failed, see file `!LOGFILE!`
echo -----------------------------------------------------------------
goto :failure
)
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
+ goto :failure
+ )
)
REM ---------------- coreclr-coreunit -----------------------
if "%TEST_CORECLR_COREUNIT_SUITE%" == "1" (
- set XMLFILE=!RESULTSDIR!\test-coreclr-coreunit-results.xml
- set OUTPUTFILE=!RESULTSDIR!\test-coreclr-coreunit-output.log
- set ERRORFILE=!RESULTSDIR!\test-coreclr-coreunit-errors.log
-
- echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Build.UnitTests\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
- "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Build.UnitTests\FSharp.Build.UnitTests.dll" !WHERE_ARG_NUNIT!
+ set LOGFILE=%TESTLOGDIR%\FSharp.Build.UnitTests_netcoreapp2.0.trx
+ echo "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
echo -----------------------------------------------------------------
- echo Error: Running tests coreclr-coreunit failed, see logs above-- FAILED
+ echo Error: Running tests coreclr-compilernit failed, see file `!LOGFILE!`
echo -----------------------------------------------------------------
goto :failure
)
- echo "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.UnitTests\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
- "%_dotnetcliexe%" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\FSharp.Core.UnitTests\FSharp.Core.UnitTests.dll" !WHERE_ARG_NUNIT!
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
+ goto :failure
+ )
+
+ set LOGFILE=%TESTLOGDIR%\FSharp.Core.UnitTests_netcoreapp2.0.trx
+ echo "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
- echo -----------------------------------------------------------------
- echo Error: Running tests coreclr-coreunit failed, see logs above-- FAILED
- echo -----------------------------------------------------------------
+ echo ------------------------------------------------------------------
+ echo Error: Running tests coreclr-coreunit failed, see file `!LOGFILE!`
+ echo ------------------------------------------------------------------
+ goto :failure
+ )
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
goto :failure
)
)
@@ -1168,22 +1011,21 @@ if "%TEST_CORECLR_COREUNIT_SUITE%" == "1" (
REM ---------------- coreclr-fsharp -----------------------
if "%TEST_CORECLR_FSHARP_SUITE%" == "1" (
-
- set single_threaded=true
- set permutations=FSC_CORECLR
-
- set OUTPUTARG=
- set ERRORARG=
- set OUTPUTFILE=
- set ERRORFILE=
- set XMLFILE=!RESULTSDIR!\test-coreclr-fsharp-results.xml
- 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!
+ set LOGFILE=%TESTLOGDIR%\FSharp.Tests.FSharpSuite_netcoreapp2.0.trx
+ echo "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0tests\fsharp\FSharp.Tests.FSharpSuite.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f netcoreapp2.0 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
- echo -----------------------------------------------------------------
- echo Error: Running tests coreclr-fsharp failed, see logs above-- FAILED
- echo -----------------------------------------------------------------
+ echo ----------------------------------------------------------------
+ echo Error: Running tests coreclr-fsharp failed, see file `!LOGFILE!`
+ echo ----------------------------------------------------------------
+ goto :failure
+ )
+
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
goto :failure
)
)
@@ -1191,45 +1033,38 @@ if "%TEST_CORECLR_FSHARP_SUITE%" == "1" (
REM ---------------- vs-ideunit -----------------------
if "%TEST_VS_IDEUNIT_SUITE%" == "1" (
+ set LOGFILE=%TESTLOGDIR%\GetTypesVSUnitTests_net46.trx
+ echo "%_dotnetexe%" test "%~dp0vsintegration\tests\GetTypesVSUnitTests\GetTypesVSUnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0vsintegration\tests\GetTypesVSUnitTests\GetTypesVSUnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
- set OUTPUTARG=
- set ERRORARG=
- set OUTPUTFILE=
- set ERRORFILE=
- set XMLFILE=!RESULTSDIR!\test-vs-ideunit-results.xml
- if "%CI%" == "1" (
- set OUTPUTFILE=!RESULTSDIR!\test-vs-ideunit-output.log
- set ERRORFILE=!RESULTSDIR!\test-vs-ideunit-errors.log
- set ERRORARG=--err:"!ERRORFILE!"
- set OUTPUTARG=--output:"!OUTPUTFILE!"
+ if errorlevel 1 (
+ echo ---------------------------------------------------------------------------
+ echo Error: Running tests net40-gettypesvsunittests failed, see file `!LOGFILE!`
+ echo ---------------------------------------------------------------------------
+ goto :failure
)
- rem Verify that VisualFSharp.UnitTests.dll can be loaded by nunit. Report load errors.
- pushd !FSCBINPATH!
- echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\GetTypesVSUnitTests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\GetTypesVSUnitTests.dll" !WHERE_ARG_NUNIT!
- popd
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
+ goto :failure
+ )
+ set LOGFILE=%TESTLOGDIR%\VisualFSharp.UnitTests_net46.trx
+ echo "%_dotnetexe%" test "%~dp0vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
+ "%_dotnetexe%" test "%~dp0vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" --no-restore --no-build -c %BUILD_CONFIG% -f net46 -l "trx;LogFileName=!LOGFILE!"
if errorlevel 1 (
+ echo ------------------------------------------------------------
+ echo Error: Running tests vs-ideunit failed, see file `!LOGFILE!`
+ echo ------------------------------------------------------------
goto :failure
)
- pushd !FSCBINPATH!
- echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.UnitTests.dll" !WHERE_ARG_NUNIT!
- "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.UnitTests.dll" !WHERE_ARG_NUNIT!
- popd
-
- if errorlevel 1 (
- echo --------begin vs-ide-unit output ---------------------
- type "!OUTPUTFILE!"
- echo --------end vs-ide-unit output -----------------------
- echo -------begin vs-ide-unit errors ----------------------
- type "!ERRORFILE!"
- echo -------end vs-ide-unit errors ------------------------
- echo Error: Running tests vs-ideunit failed, see logs above, search for "Errors and Failures" -- FAILED
- echo Command Line for running tests
- echo "!NUNIT3_CONSOLE!" --verbose --x86 --framework:V4.0 --result:"!XMLFILE!;format=nunit3" !OUTPUTARG! !ERRORARG! --work:"!FSCBINPATH!" --workers=1 --agents=1 --full "!FSCBINPATH!\VisualFSharp.UnitTests.dll" !WHERE_ARG_NUNIT!
- echo ----------------------------------------------------------------------------------------------------
+ if not exist "!LOGFILE!" (
+ echo --------------------------------------------------------
+ echo Test results file !LOGFILE! not found, ensure tests ran.
+ echo --------------------------------------------------------
goto :failure
)
)
@@ -1238,6 +1073,7 @@ goto :success
REM ------ exit -------------------------------------
:failure
endlocal
+@echo
exit /b 1
:success
diff --git a/build/config/AssemblySignToolData.json b/build/config/AssemblySignToolData.json
index 6857a57f0dd..55163cb5b14 100644
--- a/build/config/AssemblySignToolData.json
+++ b/build/config/AssemblySignToolData.json
@@ -4,55 +4,45 @@
"certificate": "Microsoft",
"strongName": "StrongName",
"values": [
- "net40\\bin\\FSharp.Core.dll",
- "net40\\bin\\*\\FSharp.Core.resources.dll",
- "net40\\bin\\FSharp.Build.dll",
- "net40\\bin\\*\\FSharp.Build.resources.dll",
- "net40\\bin\\FSharp.Compiler.Private.dll",
- "net40\\bin\\*\\FSharp.Compiler.Private.resources.dll",
- "net40\\bin\\FSharp.Compiler.Server.Shared.dll",
- "net40\\bin\\FSharp.Compiler.Interactive.Settings.dll",
- "net40\\bin\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
- "net40\\bin\\fsc.exe",
- "net40\\bin\\fsi.exe",
- "net40\\bin\\fsiAnyCpu.exe",
- "net40\\bin\\FSharp.VS.FSI.dll",
- "net40\\bin\\*\\FSharp.VS.FSI.resources.dll",
- "net40\\bin\\FSharp.LanguageService.Base.dll",
- "net40\\bin\\*\\FSharp.LanguageService.Base.resources.dll",
- "net40\\bin\\FSharp.LanguageService.dll",
- "net40\\bin\\*\\FSharp.LanguageService.resources.dll",
- "net40\\bin\\FSharp.UIResources.dll",
- "net40\\bin\\*\\FSharp.UIResources.resources.dll",
- "net40\\bin\\FSharp.Editor.dll",
- "net40\\bin\\*\\FSharp.Editor.resources.dll",
- "net40\\bin\\FSharp.ProjectSystem.Base.dll",
- "net40\\bin\\*\\FSharp.ProjectSystem.Base.resources.dll",
- "net40\\bin\\FSharp.ProjectSystem.PropertyPages.dll",
- "net40\\bin\\*\\FSharp.ProjectSystem.PropertyPages.resources.dll",
- "net40\\bin\\FSharp.ProjectSystem.FSharp.dll",
- "net40\\bin\\*\\FSharp.ProjectSystem.FSharp.resources.dll",
- "net40\\bin\\FSharp.PatternMatcher.dll",
- "coreclr\\bin\\FSharp.Core.dll",
- "coreclr\\bin\\*\\FSharp.Core.resources.dll",
- "coreclr\\bin\\FSharp.Build.dll",
- "coreclr\\bin\\*\\FSharp.Build.resources.dll",
- "coreclr\\bin\\FSharp.Compiler.Private.dll",
- "coreclr\\bin\\*\\FSharp.Compiler.Private.resources.dll",
- "coreclr\\bin\\FSharp.Compiler.Interactive.Settings.dll",
- "coreclr\\bin\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
- "coreclr\\bin\\fsc.exe",
- "coreclr\\bin\\fsi.exe"
+ "bin\\FSharp.Core\\*\\*\\FSharp.Core.dll",
+ "bin\\FSharp.Core\\*\\*\\*\\FSharp.Core.resources.dll",
+ "bin\\FSharp.Build\\*\\*\\FSharp.Build.dll",
+ "bin\\FSharp.Build\\*\\*\\*\\FSharp.Build.resources.dll",
+ "bin\\FSharp.Compiler.Private\\*\\*\\FSharp.Compiler.Private.dll",
+ "bin\\FSharp.Compiler.Private\\*\\*\\*\\FSharp.Compiler.Private.resources.dll",
+ "bin\\FSharp.Compiler.Server.Shared\\*\\*\\FSharp.Compiler.Server.Shared.dll",
+ "bin\\FSharp.Compiler.Interactive.Settings\\*\\*\\FSharp.Compiler.Interactive.Settings.dll",
+ "bin\\FSharp.Compiler.Interactive.Settings\\*\\*\\*\\FSharp.Compiler.Interactive.Settings.resources.dll",
+ "bin\\fsc\\*\\*\\fsc.exe",
+ "bin\\fsi\\*\\*\\fsi.exe",
+ "bin\\fsiAnyCpu\\*\\*\\fsiAnyCpu.exe",
+ "bin\\FSharp.VS.FSI\\*\\*\\FSharp.VS.FSI.dll",
+ "bin\\FSharp.VS.FSI\\*\\*\\*\\FSharp.VS.FSI.resources.dll",
+ "bin\\FSharp.LanguageService.Base\\*\\*\\FSharp.LanguageService.Base.dll",
+ "bin\\FSharp.LanguageService.Base\\*\\*\\*\\FSharp.LanguageService.Base.resources.dll",
+ "bin\\FSharp.LanguageService\\*\\*\\FSharp.LanguageService.dll",
+ "bin\\FSharp.LanguageService\\*\\*\\*\\FSharp.LanguageService.resources.dll",
+ "bin\\FSharp.UIResources\\*\\*\\FSharp.UIResources.dll",
+ "bin\\FSharp.UIResources\\*\\*\\*\\FSharp.UIResources.resources.dll",
+ "bin\\FSharp.Editor\\*\\*\\FSharp.Editor.dll",
+ "bin\\FSharp.Editor\\*\\*\\*\\FSharp.Editor.resources.dll",
+ "bin\\FSharp.PatternMatcher\\*\\*\\FSharp.PatternMatcher.dll",
+ "bin\\FSharp.PropertiesPages\\*\\*\\FSharp.ProjectSystem.PropertyPages.dll",
+ "bin\\FSharp.PropertiesPages\\*\\*\\*\\FSharp.ProjectSystem.PropertyPages.resources.dll",
+ "bin\\ProjectSystem\\*\\*\\FSharp.ProjectSystem.FSharp.dll",
+ "bin\\ProjectSystem\\*\\*\\*\\FSharp.ProjectSystem.FSharp.resources.dll",
+ "bin\\ProjectSystem.Base\\*\\*\\FSharp.ProjectSystem.Base.dll",
+ "bin\\ProjectSystem.Base\\*\\*\\*\\FSharp.ProjectSystem.Base.resources.dll"
]
},
{
"certificate": "VsixSHA2",
"strongName": null,
"values": [
- "net40\\bin\\VisualFSharpFull.vsix",
- "net40\\bin\\VisualFSharpTemplate.vsix",
- "insertion\\Microsoft.FSharp.Dependencies.vsix",
- "insertion\\Microsoft.FSharp.VSIX.Full.Resources.*.vsix"
+ "bin\\VisualFSharpFull\\*\\*VisualFSharpFull.vsix",
+ "bin\\VisualFSharpTemplates\\*\\*\\VisualFSharpTemplate.vsix",
+ "VSSetup\\*\\Insertion\\Microsoft.FSharp.Dependencies.vsix",
+ "VSSetup\\*\\Insertion\\Microsoft.FSharp.VSIX.Full.Resources.*.vsix"
]
}
],
diff --git a/build/config/InsertionSignToolData.json b/build/config/InsertionSignToolData.json
index ec8432ca9ad..d81579b12c9 100644
--- a/build/config/InsertionSignToolData.json
+++ b/build/config/InsertionSignToolData.json
@@ -4,11 +4,11 @@
"certificate": "VsixSHA2",
"strongName": null,
"values": [
- "insertion\\Microsoft.FSharp.Compiler.vsix",
- "insertion\\Microsoft.FSharp.Compiler.Resources.*.vsix",
- "insertion\\Microsoft.FSharp.Dependencies.vsix",
- "insertion\\Microsoft.FSharp.IDE.vsix",
- "insertion\\Microsoft.FSharp.SDK.vsix"
+ "Microsoft.FSharp.Compiler.vsix",
+ "Microsoft.FSharp.Compiler.Resources.*.vsix",
+ "Microsoft.FSharp.Dependencies.vsix",
+ "Microsoft.FSharp.IDE.vsix",
+ "Microsoft.FSharp.SDK.vsix"
]
}
],
diff --git a/build/config/PackageSignToolData.json b/build/config/PackageSignToolData.json
index 20007f59e36..5bc74386355 100644
--- a/build/config/PackageSignToolData.json
+++ b/build/config/PackageSignToolData.json
@@ -4,8 +4,7 @@
"certificate": "NuGet",
"strongName": null,
"values": [
- "artifacts\\*.nupkg",
- "artifacts\\*\\*.nupkg"
+ "*.nupkg"
]
}
],
diff --git a/build/config/packages.config b/build/config/packages.config
deleted file mode 100644
index e131ae53c92..00000000000
--- a/build/config/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/build/projects/Directory.Build.props b/build/projects/Directory.Build.props
new file mode 100644
index 00000000000..bb8eac309b1
--- /dev/null
+++ b/build/projects/Directory.Build.props
@@ -0,0 +1,3 @@
+
+
+
diff --git a/build/projects/Directory.Build.targets b/build/projects/Directory.Build.targets
new file mode 100644
index 00000000000..ccd47cc0a9a
--- /dev/null
+++ b/build/projects/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/build/projects/PrepareDependencyUptake.proj b/build/projects/PrepareDependencyUptake.proj
deleted file mode 100644
index 78ded8de2ad..00000000000
--- a/build/projects/PrepareDependencyUptake.proj
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- $(MSBuildThisFileDirectory)..\..\Tools\dependencyUptake
- $(DependencyUptakeDirectory)\PackageVersions.props
- $(DependencyUptakeDirectory)\packages.config
- $(DependencyUptakeDirectory)\NuGet.config
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/build/projects/Signing.proj b/build/projects/Signing.proj
new file mode 100644
index 00000000000..9e981e135ec
--- /dev/null
+++ b/build/projects/Signing.proj
@@ -0,0 +1,27 @@
+
+
+
+
+ net46
+ $(NuGetPackageRoot)RoslynTools.SignTool\$(RoslynToolsSignToolPackageVersion)\tools\SignTool.exe
+ -msbuildPath "$(MSBuildBinPath)\msbuild.exe" -nugetPackagesPath "$(NuGetPackageRoot.TrimEnd('\'))" -config "$(ConfigFile)"
+ -testSign $(SignToolArgs)
+ -test $(SignToolArgs)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/scripts/run-signtool.cmd b/build/scripts/run-signtool.cmd
deleted file mode 100644
index 15ae3420693..00000000000
--- a/build/scripts/run-signtool.cmd
+++ /dev/null
@@ -1,69 +0,0 @@
-@echo off
-:: Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-setlocal enableDelayedExpansion
-set scriptdir=%~dp0
-set MSBuild=
-set SignType=
-set ConfigFile=
-
-::
-:: Validate arguments
-::
-
-:parsearg
-if "%1" == "" goto doneargs
-set arg=%1
-set argv=%2
-
-if /i "%arg%" == "/?" goto help
-if /i "%arg%" == "-h" goto help
-if /i "%arg%" == "--help" goto help
-if /i "%arg%" == "-MSBuild" (
- set MSBuild=%argv%
- shift
-)
-if /i "%arg%" == "-SignType" (
- set SignType=%argv%
- shift
-)
-if /i "%arg%" == "-Configuration" (
- set Configuration=%argv%
- shift
-)
-if /i "%arg%" == "-ConfigFile" (
- set ConfigFile=%argv%
- shift
-)
-
-shift
-goto parsearg
-
-:doneargs
-
-if not defined MSBuild echo Location of MSBuild.exe not specified. && goto error
-if not defined ConfigFile echo Configuration file not specified. && goto error
-if not exist "%MSBuild%" echo The specified MSBuild.exe does not exist. && goto error
-
-set NUGET_PACKAGES=%USERPROFILE%\.nuget\packages
-set _signtoolexe=%NUGET_PACKAGES%\RoslynTools.SignTool\1.0.0-beta2-dev3\tools\SignTool.exe
-set SignToolArgs=-msbuildPath %MSBuild% -config "%ConfigFile%" -nugetPackagesPath "%NUGET_PACKAGES%"
-if /i "%SignType%" == "real" goto runsigntool
-if /i "%SignType%" == "test" set SignToolArgs=%SignToolArgs% -testSign && goto runsigntool
-set SignToolArgs=%SignToolArgs% -test
-
-:runsigntool
-
-if not exist "%_signtoolexe%" echo The signing tool could not be found at location '%_signtoolexe%' && goto error
-set SignToolArgs=%SignToolArgs% "%scriptdir%..\..\%Configuration%"
-echo "%_signtoolexe%" %SignToolArgs%
- "%_signtoolexe%" %SignToolArgs%
-if errorlevel 1 goto error
-goto :EOF
-
-:help
-echo Usage: %0 -MSBuild path\to\msbuild.exe -ConfigFile path\to\SignToolData.json [-SignType ^]
-goto :EOF
-
-:error
-echo Error running the sign tool.
-exit /b 1
diff --git a/build/targets/AssemblyVersions.props b/build/targets/AssemblyVersions.props
index 5e82721efa6..b17f940a938 100644
--- a/build/targets/AssemblyVersions.props
+++ b/build/targets/AssemblyVersions.props
@@ -22,7 +22,7 @@
$(_Build_Year).$(_Build_Month).$(_Build_Day).$(_Build_Number)4.5
- $(FSCoreMajorVersion).3
+ $(FSCoreMajorVersion).5$(FSCoreMajorVersion).0.010.2
@@ -30,22 +30,14 @@
$(FSPackageVersion).015
- 8
+ 9$(VSMajorVersion).0$(VSMajorVersion).$(VSMinorVersion).0.0
- $(FSCoreVersion)
-
-
- $(FSProductVersion)
-
-
- $(VSAssemblyVersion)
-
+ false
+
+ $(IntermediateOutputPath)$(MSBuildProjectName).AssemblyLevelAttributes$(DefaultLanguageSourceExtension)
+
+
+ $(NoWarn);2003
+
+
+
-
-
+
+ $(FSCoreVersion)
+
+
+ $(FSProductVersion)
+
+
+ $(VSAssemblyVersion)
+
$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyVersion$(DefaultLanguageSourceExtension)
-
<_UseWriteCodeFragmentHack Condition="'$(OS)' == 'Unix' and '$(Language)' == 'F#'">true
@@ -60,6 +76,14 @@
+
+
+
+
+
+
+
+ <_UseWriteCodeFragmentHack Condition="'$(OS)' == 'Unix' and '$(Language)' == 'F#'">true
+
+
+
+ OutputFile="$(GeneratedFSharpInternalsVisibleToFile)"
+ Condition="'$(_UseWriteCodeFragmentHack)' != 'true'">
+
+
+
+
+ <_LinesToWrite Include="// <auto-generated>" />
+ <_LinesToWrite Include="namespace FSharp" />
+ <_LinesToWrite Include="open System" />
+ <_LinesToWrite Include="open System.Reflection" />
+ <_LinesToWrite Include="[<assembly: %(_InternalsVisibleToAttribute.Identity)("%(_InternalsVisibleToAttribute._Parameter1)")>]" />
+ <_LinesToWrite Include="do()" />
+
+
+
+
+
+
diff --git a/build/targets/NGenOrCrossGen.targets b/build/targets/NGenOrCrossGen.targets
new file mode 100644
index 00000000000..33dcaa3a63a
--- /dev/null
+++ b/build/targets/NGenOrCrossGen.targets
@@ -0,0 +1,36 @@
+
+
+
+
+ $(windir)\Microsoft.NET\Framework64\v4.0.30319\ngen.exe
+ $(windir)\Microsoft.NET\Framework\v4.0.30319\ngen.exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ false
+
+
+
+
diff --git a/build/targets/PackageVersions.props b/build/targets/PackageVersions.props
index 2f68181bd5f..42a2305f6fd 100644
--- a/build/targets/PackageVersions.props
+++ b/build/targets/PackageVersions.props
@@ -2,15 +2,53 @@
+
+
+ $(RestoreSources);
+ https://www.myget.org/F/fsharp-daily/api/v3/index.json;
+ https://dotnet.myget.org/F/roslyn-master-nightly/api/v3/index.json;
+ https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
+ https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json;
+ https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json;
+ https://api.nuget.org/v3/index.json;
+ https://dotnet.myget.org/F/roslyn/api/v3/index.json;
+ https://dotnet.myget.org/F/symreader-converter/api/v3/index.json;
+
+
+
+ $(PB_RestoreSource);$(RestoreSources)
+ $(MSBuildThisFileDirectory)..\..\artifacts\dependencyUptake\PackageVersions.props
+
$([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\..\RoslynPackageVersion.txt').Trim())1.5.0
+ 4.3.0
+ 4.3.0
+ 4.3.04.3.0
- 1.5.0
+ 4.3.0
+ 4.3.0
+ 4.5.0
+ 4.3.0
+ 4.3.0
+ 4.3.01.6.0
- 4.3.0
+ 4.3.0
+ 1.5.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.3.0
+ 4.4.0$(RoslynPackageVersion)
@@ -25,7 +63,6 @@
$(MicrosoftBuildOverallPackagesVersion)$(MicrosoftBuildOverallPackagesVersion)$(MicrosoftBuildOverallPackagesVersion)
- 1.0.18.0.1
@@ -74,13 +111,29 @@
11.0.47.0.4
+
+ 0.2.0
+ 1.0.0
+ 1.0.147
+ 10.1.0
+ 1.0.0
+
+ 3.0.0-alpha31.0.30
- 1.1.0-roslyn-62714-01
+ 1.1.0-beta1-63314-018.0.0-alpha
+ 2.7.0
+ 2.0.3
+ 15.8.01.0.0
+ 4.3.09.0.1
- 3.5.0
+ 3.10.1
+ 3.10.0
+ 3.10.1
+ 1.0.0-beta2-dev3
+ 5.22.2.10.2.0-beta-000081
diff --git a/eng/common/CIBuild.cmd b/eng/common/CIBuild.cmd
new file mode 100644
index 00000000000..56c2f25ac22
--- /dev/null
+++ b/eng/common/CIBuild.cmd
@@ -0,0 +1,2 @@
+@echo off
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
\ No newline at end of file
diff --git a/eng/common/PublishBuildAssets.cmd b/eng/common/PublishBuildAssets.cmd
new file mode 100644
index 00000000000..3c6e4ff829d
--- /dev/null
+++ b/eng/common/PublishBuildAssets.cmd
@@ -0,0 +1,3 @@
+@echo off
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0sdk-task.ps1""" -msbuildEngine dotnet -restore -projects PublishBuildAssets.proj -ci %*"
+exit /b %ErrorLevel%
diff --git a/eng/common/PublishToPackageFeed.proj b/eng/common/PublishToPackageFeed.proj
new file mode 100644
index 00000000000..7dc478d981f
--- /dev/null
+++ b/eng/common/PublishToPackageFeed.proj
@@ -0,0 +1,37 @@
+
+
+
+ netcoreapp2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eng/common/README.md b/eng/common/README.md
new file mode 100644
index 00000000000..ff49c371527
--- /dev/null
+++ b/eng/common/README.md
@@ -0,0 +1,28 @@
+# Don't touch this folder
+
+ uuuuuuuuuuuuuuuuuuuu
+ u" uuuuuuuuuuuuuuuuuu "u
+ u" u$$$$$$$$$$$$$$$$$$$$u "u
+ u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u
+ u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
+ u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
+ u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
+ $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
+ $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
+ $ $$$" ... "$... ...$" ... "$$$ ... "$$$ $
+ $ $$$u `"$$$$$$$ $$$ $$$$$ $$ $$$ $$$ $
+ $ $$$$$$uu "$$$$ $$$ $$$$$ $$ """ u$$$ $
+ $ $$$""$$$ $$$$ $$$u "$$$" u$$ $$$$$$$$ $
+ $ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $
+ $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
+ "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
+ "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
+ "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
+ "u "$$$$$$$$$$$$$$$$$$$$$$$$" u"
+ "u "$$$$$$$$$$$$$$$$$$$$" u"
+ "u """""""""""""""""" u"
+ """"""""""""""""""""
+
+!!! Changes made in this directory are subject to being overwritten by automation !!!
+
+The files in this directory are shared by all Arcade repos and managed by automation. If you need to make changes to these files, open an issue or submit a pull request to https://github.com/dotnet/arcade first.
diff --git a/eng/common/build.ps1 b/eng/common/build.ps1
new file mode 100644
index 00000000000..8279dc71339
--- /dev/null
+++ b/eng/common/build.ps1
@@ -0,0 +1,133 @@
+[CmdletBinding(PositionalBinding=$false)]
+Param(
+ [string][Alias('c')]$configuration = "Debug",
+ [string] $projects,
+ [string][Alias('v')]$verbosity = "minimal",
+ [string] $msbuildEngine = $null,
+ [bool] $warnAsError = $true,
+ [bool] $nodeReuse = $true,
+ [switch][Alias('r')]$restore,
+ [switch] $deployDeps,
+ [switch][Alias('b')]$build,
+ [switch] $rebuild,
+ [switch] $deploy,
+ [switch] $test,
+ [switch] $integrationTest,
+ [switch] $performanceTest,
+ [switch] $sign,
+ [switch] $pack,
+ [switch] $publish,
+ [switch][Alias('bl')]$binaryLog,
+ [switch] $ci,
+ [switch] $prepareMachine,
+ [switch] $help,
+ [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
+)
+
+. $PSScriptRoot\tools.ps1
+
+function Print-Usage() {
+ Write-Host "Common settings:"
+ Write-Host " -configuration Build configuration: 'Debug' or 'Release' (short: -c)"
+ Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
+ Write-Host " -binaryLog Output binary log (short: -bl)"
+ Write-Host " -help Print help and exit"
+ Write-Host ""
+
+ Write-Host "Actions:"
+ Write-Host " -restore Restore dependencies (short: -r)"
+ Write-Host " -build Build solution (short: -b)"
+ Write-Host " -rebuild Rebuild solution"
+ Write-Host " -deploy Deploy built VSIXes"
+ Write-Host " -deployDeps Deploy dependencies (e.g. VSIXes for integration tests)"
+ Write-Host " -test Run all unit tests in the solution"
+ Write-Host " -pack Package build outputs into NuGet packages and Willow components"
+ Write-Host " -integrationTest Run all integration tests in the solution"
+ Write-Host " -performanceTest Run all performance tests in the solution"
+ Write-Host " -sign Sign build outputs"
+ Write-Host " -publish Publish artifacts (e.g. symbols)"
+ Write-Host ""
+
+ Write-Host "Advanced settings:"
+ Write-Host " -projects Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)"
+ Write-Host " -ci Set when running on CI server"
+ Write-Host " -prepareMachine Prepare machine for CI run"
+ Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
+ Write-Host ""
+ Write-Host "Command line arguments not listed above are passed thru to msbuild."
+ Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
+}
+
+function InitializeCustomToolset {
+ if (-not $restore) {
+ return
+ }
+
+ $script = Join-Path $EngRoot "restore-toolset.ps1"
+
+ if (Test-Path $script) {
+ . $script
+ }
+}
+
+function Build {
+ $toolsetBuildProj = InitializeToolset
+ InitializeCustomToolset
+
+ $bl = if ($binaryLog) { "/bl:" + (Join-Path $LogDir "Build.binlog") } else { "" }
+
+ if ($projects) {
+ # Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons.
+ # Explicitly set the type as string[] because otherwise PowerShell would make this char[] if $properties is empty.
+ [string[]] $msbuildArgs = $properties
+ $msbuildArgs += "/p:Projects=$projects"
+ $properties = $msbuildArgs
+ }
+
+ MSBuild $toolsetBuildProj `
+ $bl `
+ /p:Configuration=$configuration `
+ /p:RepoRoot=$RepoRoot `
+ /p:Restore=$restore `
+ /p:DeployDeps=$deployDeps `
+ /p:Build=$build `
+ /p:Rebuild=$rebuild `
+ /p:Deploy=$deploy `
+ /p:Test=$test `
+ /p:Pack=$pack `
+ /p:IntegrationTest=$integrationTest `
+ /p:PerformanceTest=$performanceTest `
+ /p:Sign=$sign `
+ /p:Publish=$publish `
+ /p:ContinuousIntegrationBuild=$ci `
+ @properties
+}
+
+try {
+ if ($help -or (($properties -ne $null) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) {
+ Print-Usage
+ exit 0
+ }
+
+ if ($ci) {
+ $binaryLog = $true
+ $nodeReuse = $false
+ }
+
+ # Import custom tools configuration, if present in the repo.
+ # Note: Import in global scope so that the script set top-level variables without qualification.
+ $configureToolsetScript = Join-Path $EngRoot "configure-toolset.ps1"
+ if (Test-Path $configureToolsetScript) {
+ . $configureToolsetScript
+ }
+
+ Build
+}
+catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ Write-Host $_.ScriptStackTrace
+ ExitWithExitCode 1
+}
+
+ExitWithExitCode 0
diff --git a/eng/common/build.sh b/eng/common/build.sh
new file mode 100755
index 00000000000..4fe8b41ed70
--- /dev/null
+++ b/eng/common/build.sh
@@ -0,0 +1,213 @@
+#!/usr/bin/env bash
+
+# Stop script if unbound variable found (use ${var:-} if intentional)
+set -u
+
+# Stop script if command returns non-zero exit code.
+# Prevents hidden errors caused by missing error code propagation.
+set -e
+
+usage()
+{
+ echo "Common settings:"
+ echo " --configuration Build configuration: 'Debug' or 'Release' (short: --c)"
+ echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
+ echo " --binaryLog Create MSBuild binary log (short: -bl)"
+ echo ""
+ echo "Actions:"
+ echo " --restore Restore dependencies (short: -r)"
+ echo " --build Build all projects (short: -b)"
+ echo " --rebuild Rebuild all projects"
+ echo " --test Run all unit tests (short: -t)"
+ echo " --sign Sign build outputs"
+ echo " --publish Publish artifacts (e.g. symbols)"
+ echo " --pack Package build outputs into NuGet packages and Willow components"
+ echo " --help Print help and exit (short: -h)"
+ echo ""
+ echo "Advanced settings:"
+ echo " --projects Project or solution file(s) to build"
+ echo " --ci Set when running on CI server"
+ echo " --prepareMachine Prepare machine for CI run, clean up processes after build"
+ echo " --nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')"
+ echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')"
+ echo ""
+ echo "Command line arguments starting with '/p:' are passed through to MSBuild."
+}
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $source until the file is no longer a symlink
+while [[ -h "$source" ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+
+restore=false
+build=false
+rebuild=false
+test=false
+pack=false
+publish=false
+integration_test=false
+performance_test=false
+sign=false
+public=false
+ci=false
+
+warn_as_error=true
+node_reuse=true
+binary_log=false
+
+projects=''
+configuration='Debug'
+prepare_machine=false
+verbosity='minimal'
+properties=''
+
+while [[ $# > 0 ]]; do
+ opt="$(echo "$1" | awk '{print tolower($0)}')"
+ case "$opt" in
+ --help|-h)
+ usage
+ exit 0
+ ;;
+ --configuration|-c)
+ configuration=$2
+ shift
+ ;;
+ --verbosity|-v)
+ verbosity=$2
+ shift
+ ;;
+ --binarylog|-bl)
+ binary_log=true
+ ;;
+ --restore|-r)
+ restore=true
+ ;;
+ --build|-b)
+ build=true
+ ;;
+ --rebuild)
+ rebuild=true
+ ;;
+ --pack)
+ pack=true
+ ;;
+ --test|-t)
+ test=true
+ ;;
+ --integrationtest)
+ integration_test=true
+ ;;
+ --performancetest)
+ performance_test=true
+ ;;
+ --sign)
+ sign=true
+ ;;
+ --publish)
+ publish=true
+ ;;
+ --preparemachine)
+ prepare_machine=true
+ ;;
+ --projects)
+ projects=$2
+ shift
+ ;;
+ --ci)
+ ci=true
+ ;;
+ --warnaserror)
+ warn_as_error=$2
+ shift
+ ;;
+ --nodereuse)
+ node_reuse=$2
+ shift
+ ;;
+ /p:*)
+ properties="$properties $1"
+ ;;
+ /m:*)
+ properties="$properties $1"
+ ;;
+ /bl:*)
+ properties="$properties $1"
+ ;;
+ *)
+ echo "Invalid argument: $1"
+ usage
+ exit 1
+ ;;
+ esac
+
+ shift
+done
+
+if [[ "$ci" == true ]]; then
+ binary_log=true
+ node_reuse=false
+fi
+
+. "$scriptroot/tools.sh"
+
+function InitializeCustomToolset {
+ local script="$eng_root/restore-toolset.sh"
+
+ if [[ -a "$script" ]]; then
+ . "$script"
+ fi
+}
+
+function Build {
+ InitializeToolset
+ InitializeCustomToolset
+
+ if [[ ! -z "$projects" ]]; then
+ properties="$properties /p:Projects=$projects"
+ fi
+
+ local bl=""
+ if [[ "$binary_log" == true ]]; then
+ bl="/bl:\"$log_dir/Build.binlog\""
+ fi
+
+ MSBuild $_InitializeToolset \
+ $bl \
+ /p:Configuration=$configuration \
+ /p:RepoRoot="$repo_root" \
+ /p:Restore=$restore \
+ /p:Build=$build \
+ /p:Rebuild=$rebuild \
+ /p:Test=$test \
+ /p:Pack=$pack \
+ /p:IntegrationTest=$integration_test \
+ /p:PerformanceTest=$performance_test \
+ /p:Sign=$sign \
+ /p:Publish=$publish \
+ /p:ContinuousIntegrationBuild=$ci \
+ $properties
+
+ ExitWithExitCode 0
+}
+
+# Import custom tools configuration, if present in the repo.
+configure_toolset_script="$eng_root/configure-toolset.sh"
+if [[ -a "$configure_toolset_script" ]]; then
+ . "$configure_toolset_script"
+fi
+
+# TODO: https://github.com/dotnet/arcade/issues/1468
+# Temporary workaround to avoid breaking change.
+# Remove once repos are updated.
+if [[ -n "${useInstalledDotNetCli:-}" ]]; then
+ use_installed_dotnet_cli="$useInstalledDotNetCli"
+fi
+
+Build
diff --git a/eng/common/cibuild.sh b/eng/common/cibuild.sh
new file mode 100755
index 00000000000..1a02c0dec8f
--- /dev/null
+++ b/eng/common/cibuild.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $SOURCE until the file is no longer a symlink
+while [[ -h $source ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+
+ # if $source was a relative symlink, we need to resolve it relative to the path where
+ # the symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+
+. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
\ No newline at end of file
diff --git a/eng/common/cross/android/arm/toolchain.cmake b/eng/common/cross/android/arm/toolchain.cmake
new file mode 100644
index 00000000000..a7e1c73501b
--- /dev/null
+++ b/eng/common/cross/android/arm/toolchain.cmake
@@ -0,0 +1,41 @@
+set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
+set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
+set(CLR_CMAKE_PLATFORM_ANDROID "Android")
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_VERSION 1)
+set(CMAKE_SYSTEM_PROCESSOR arm)
+
+## Specify the toolchain
+set(TOOLCHAIN "arm-linux-androideabi")
+set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
+set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
+
+find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
+find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
+find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
+find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
+find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
+find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
+find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
+
+add_compile_options(--sysroot=${CROSS_ROOTFS})
+add_compile_options(-fPIE)
+add_compile_options(-mfloat-abi=soft)
+include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/)
+include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/arm-linux-androideabi/)
+
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+
+set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/eng/common/cross/android/arm64/toolchain.cmake b/eng/common/cross/android/arm64/toolchain.cmake
new file mode 100644
index 00000000000..29415899c1c
--- /dev/null
+++ b/eng/common/cross/android/arm64/toolchain.cmake
@@ -0,0 +1,42 @@
+set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
+set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
+set(CLR_CMAKE_PLATFORM_ANDROID "Android")
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_VERSION 1)
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+
+## Specify the toolchain
+set(TOOLCHAIN "aarch64-linux-android")
+set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
+set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
+
+find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
+find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
+find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
+find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
+find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
+find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
+find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
+
+add_compile_options(--sysroot=${CROSS_ROOTFS})
+add_compile_options(-fPIE)
+
+## Needed for Android or bionic specific conditionals
+add_compile_options(-D__ANDROID__)
+add_compile_options(-D__BIONIC__)
+
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
+set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
+
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
+
+set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/eng/common/cross/arm/sources.list.bionic b/eng/common/cross/arm/sources.list.bionic
new file mode 100644
index 00000000000..21095574095
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.bionic
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
diff --git a/eng/common/cross/arm/sources.list.jessie b/eng/common/cross/arm/sources.list.jessie
new file mode 100644
index 00000000000..4d142ac9b10
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.jessie
@@ -0,0 +1,3 @@
+# Debian (sid) # UNSTABLE
+deb http://ftp.debian.org/debian/ sid main contrib non-free
+deb-src http://ftp.debian.org/debian/ sid main contrib non-free
diff --git a/eng/common/cross/arm/sources.list.trusty b/eng/common/cross/arm/sources.list.trusty
new file mode 100644
index 00000000000..07d8f88d82e
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.trusty
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm/sources.list.vivid b/eng/common/cross/arm/sources.list.vivid
new file mode 100644
index 00000000000..0b1215e475a
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.vivid
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm/sources.list.wily b/eng/common/cross/arm/sources.list.wily
new file mode 100644
index 00000000000..e23d1e02a05
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.wily
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm/sources.list.xenial b/eng/common/cross/arm/sources.list.xenial
new file mode 100644
index 00000000000..eacd86b7df3
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.xenial
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm/sources.list.zesty b/eng/common/cross/arm/sources.list.zesty
new file mode 100644
index 00000000000..ea2c14a7874
--- /dev/null
+++ b/eng/common/cross/arm/sources.list.zesty
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
diff --git a/eng/common/cross/arm/trusty-lttng-2.4.patch b/eng/common/cross/arm/trusty-lttng-2.4.patch
new file mode 100644
index 00000000000..8e4dd7ae719
--- /dev/null
+++ b/eng/common/cross/arm/trusty-lttng-2.4.patch
@@ -0,0 +1,71 @@
+From e72c9d7ead60e3317bd6d1fade995c07021c947b Mon Sep 17 00:00:00 2001
+From: Mathieu Desnoyers
+Date: Thu, 7 May 2015 13:25:04 -0400
+Subject: [PATCH] Fix: building probe providers with C++ compiler
+
+Robert Daniels wrote:
+> > I'm attempting to use lttng userspace tracing with a C++ application
+> > on an ARM platform. I'm using GCC 4.8.4 on Linux 3.14 with the 2.6
+> > release of lttng. I've compiled lttng-modules, lttng-ust, and
+> > lttng-tools and have been able to get a simple test working with C
+> > code. When I attempt to run the hello.cxx test on my target it will
+> > segfault.
+>
+>
+> I spent a little time digging into this issue and finally discovered the
+> cause of my segfault with ARM C++ tracepoints.
+>
+> There is a struct called 'lttng_event' in ust-events.h which contains an
+> empty union 'u'. This was the cause of my issue. Under C, this empty union
+> compiles to a zero byte member while under C++ it compiles to a one byte
+> member, and in my case was four-byte aligned which caused my C++ code to
+> have the 'cds_list_head node' offset incorrectly by four bytes. This lead
+> to an incorrect linked list structure which caused my issue.
+>
+> Since this union is empty, I simply removed it from the struct and everything
+> worked correctly.
+>
+> I don't know the history or purpose behind this empty union so I'd like to
+> know if this is a safe fix. If it is I can submit a patch with the union
+> removed.
+
+That's a very nice catch!
+
+We do not support building tracepoint probe provider with
+g++ yet, as stated in lttng-ust(3):
+
+"- Note for C++ support: although an application instrumented with
+ tracepoints can be compiled with g++, tracepoint probes should be
+ compiled with gcc (only tested with gcc so far)."
+
+However, if it works fine with this fix, then I'm tempted to take it,
+especially because removing the empty union does not appear to affect
+the layout of struct lttng_event as seen from liblttng-ust, which must
+be compiled with a C compiler, and from probe providers compiled with
+a C compiler. So all we are changing is the layout of a probe provider
+compiled with a C++ compiler, which is anyway buggy at the moment,
+because it is not compatible with the layout expected by liblttng-ust
+compiled with a C compiler.
+
+Reported-by: Robert Daniels
+Signed-off-by: Mathieu Desnoyers
+---
+ include/lttng/ust-events.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/usr/include/lttng/ust-events.h b/usr/include/lttng/ust-events.h
+index 328a875..3d7a274 100644
+--- a/usr/include/lttng/ust-events.h
++++ b/usr/include/lttng/ust-events.h
+@@ -407,8 +407,6 @@ struct lttng_event {
+ void *_deprecated1;
+ struct lttng_ctx *ctx;
+ enum lttng_ust_instrumentation instrumentation;
+- union {
+- } u;
+ struct cds_list_head node; /* Event list in session */
+ struct cds_list_head _deprecated2;
+ void *_deprecated3;
+--
+2.7.4
+
diff --git a/eng/common/cross/arm/trusty.patch b/eng/common/cross/arm/trusty.patch
new file mode 100644
index 00000000000..2f2972f8eb5
--- /dev/null
+++ b/eng/common/cross/arm/trusty.patch
@@ -0,0 +1,97 @@
+diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h
+--- a/usr/include/urcu/uatomic/generic.h 2014-03-28 06:04:42.000000000 +0900
++++ b/usr/include/urcu/uatomic/generic.h 2017-02-13 10:35:21.189927116 +0900
+@@ -65,17 +65,17 @@
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- return __sync_val_compare_and_swap_1(addr, old, _new);
++ return __sync_val_compare_and_swap_1((uint8_t *) addr, old, _new);
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- return __sync_val_compare_and_swap_2(addr, old, _new);
++ return __sync_val_compare_and_swap_2((uint16_t *) addr, old, _new);
+ #endif
+ case 4:
+- return __sync_val_compare_and_swap_4(addr, old, _new);
++ return __sync_val_compare_and_swap_4((uint32_t *) addr, old, _new);
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- return __sync_val_compare_and_swap_8(addr, old, _new);
++ return __sync_val_compare_and_swap_8((uint64_t *) addr, old, _new);
+ #endif
+ }
+ _uatomic_link_error();
+@@ -100,20 +100,20 @@
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- __sync_and_and_fetch_1(addr, val);
++ __sync_and_and_fetch_1((uint8_t *) addr, val);
+ return;
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- __sync_and_and_fetch_2(addr, val);
++ __sync_and_and_fetch_2((uint16_t *) addr, val);
+ return;
+ #endif
+ case 4:
+- __sync_and_and_fetch_4(addr, val);
++ __sync_and_and_fetch_4((uint32_t *) addr, val);
+ return;
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- __sync_and_and_fetch_8(addr, val);
++ __sync_and_and_fetch_8((uint64_t *) addr, val);
+ return;
+ #endif
+ }
+@@ -139,20 +139,20 @@
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- __sync_or_and_fetch_1(addr, val);
++ __sync_or_and_fetch_1((uint8_t *) addr, val);
+ return;
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- __sync_or_and_fetch_2(addr, val);
++ __sync_or_and_fetch_2((uint16_t *) addr, val);
+ return;
+ #endif
+ case 4:
+- __sync_or_and_fetch_4(addr, val);
++ __sync_or_and_fetch_4((uint32_t *) addr, val);
+ return;
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- __sync_or_and_fetch_8(addr, val);
++ __sync_or_and_fetch_8((uint64_t *) addr, val);
+ return;
+ #endif
+ }
+@@ -180,17 +180,17 @@
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- return __sync_add_and_fetch_1(addr, val);
++ return __sync_add_and_fetch_1((uint8_t *) addr, val);
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- return __sync_add_and_fetch_2(addr, val);
++ return __sync_add_and_fetch_2((uint16_t *) addr, val);
+ #endif
+ case 4:
+- return __sync_add_and_fetch_4(addr, val);
++ return __sync_add_and_fetch_4((uint32_t *) addr, val);
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- return __sync_add_and_fetch_8(addr, val);
++ return __sync_add_and_fetch_8((uint64_t *) addr, val);
+ #endif
+ }
+ _uatomic_link_error();
diff --git a/eng/common/cross/arm64/sources.list.bionic b/eng/common/cross/arm64/sources.list.bionic
new file mode 100644
index 00000000000..21095574095
--- /dev/null
+++ b/eng/common/cross/arm64/sources.list.bionic
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
diff --git a/eng/common/cross/arm64/sources.list.trusty b/eng/common/cross/arm64/sources.list.trusty
new file mode 100644
index 00000000000..07d8f88d82e
--- /dev/null
+++ b/eng/common/cross/arm64/sources.list.trusty
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm64/sources.list.vivid b/eng/common/cross/arm64/sources.list.vivid
new file mode 100644
index 00000000000..0b1215e475a
--- /dev/null
+++ b/eng/common/cross/arm64/sources.list.vivid
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm64/sources.list.wily b/eng/common/cross/arm64/sources.list.wily
new file mode 100644
index 00000000000..e23d1e02a05
--- /dev/null
+++ b/eng/common/cross/arm64/sources.list.wily
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm64/sources.list.xenial b/eng/common/cross/arm64/sources.list.xenial
new file mode 100644
index 00000000000..eacd86b7df3
--- /dev/null
+++ b/eng/common/cross/arm64/sources.list.xenial
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
\ No newline at end of file
diff --git a/eng/common/cross/arm64/sources.list.zesty b/eng/common/cross/arm64/sources.list.zesty
new file mode 100644
index 00000000000..ea2c14a7874
--- /dev/null
+++ b/eng/common/cross/arm64/sources.list.zesty
@@ -0,0 +1,11 @@
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
+
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
+
+deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
+deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
diff --git a/eng/common/cross/armel/sources.list.jessie b/eng/common/cross/armel/sources.list.jessie
new file mode 100644
index 00000000000..3d9c3059d89
--- /dev/null
+++ b/eng/common/cross/armel/sources.list.jessie
@@ -0,0 +1,3 @@
+# Debian (jessie) # Stable
+deb http://ftp.debian.org/debian/ jessie main contrib non-free
+deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
diff --git a/eng/common/cross/armel/tizen-build-rootfs.sh b/eng/common/cross/armel/tizen-build-rootfs.sh
new file mode 100755
index 00000000000..87c48e78fbb
--- /dev/null
+++ b/eng/common/cross/armel/tizen-build-rootfs.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+set -e
+
+__ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+__TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen"
+
+if [[ -z "$ROOTFS_DIR" ]]; then
+ echo "ROOTFS_DIR is not defined."
+ exit 1;
+fi
+
+# Clean-up (TODO-Cleanup: We may already delete $ROOTFS_DIR at ./cross/build-rootfs.sh.)
+# hk0110
+if [ -d "$ROOTFS_DIR" ]; then
+ umount $ROOTFS_DIR/*
+ rm -rf $ROOTFS_DIR
+fi
+
+TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
+mkdir -p $TIZEN_TMP_DIR
+
+# Download files
+echo ">>Start downloading files"
+VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
+echo "<>Start constructing Tizen rootfs"
+TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
+cd $ROOTFS_DIR
+for f in $TIZEN_RPM_FILES; do
+ rpm2cpio $f | cpio -idm --quiet
+done
+echo "<>Start configuring Tizen rootfs"
+rm ./usr/lib/libunwind.so
+ln -s libunwind.so.8 ./usr/lib/libunwind.so
+ln -sfn asm-arm ./usr/include/asm
+patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
+echo "</dev/null; then
+ VERBOSE=0
+fi
+
+Log()
+{
+ if [ $VERBOSE -ge $1 ]; then
+ echo ${@:2}
+ fi
+}
+
+Inform()
+{
+ Log 1 -e "\x1B[0;34m$@\x1B[m"
+}
+
+Debug()
+{
+ Log 2 -e "\x1B[0;32m$@\x1B[m"
+}
+
+Error()
+{
+ >&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
+}
+
+Fetch()
+{
+ URL=$1
+ FILE=$2
+ PROGRESS=$3
+ if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
+ CURL_OPT="--progress-bar"
+ else
+ CURL_OPT="--silent"
+ fi
+ curl $CURL_OPT $URL > $FILE
+}
+
+hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
+hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
+hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
+
+TMPDIR=$1
+if [ ! -d $TMPDIR ]; then
+ TMPDIR=./tizen_tmp
+ Debug "Create temporary directory : $TMPDIR"
+ mkdir -p $TMPDIR
+fi
+
+TIZEN_URL=http://download.tizen.org/releases/milestone/tizen
+BUILD_XML=build.xml
+REPOMD_XML=repomd.xml
+PRIMARY_XML=primary.xml
+TARGET_URL="http://__not_initialized"
+
+Xpath_get()
+{
+ XPATH_RESULT=''
+ XPATH=$1
+ XML_FILE=$2
+ RESULT=$(xmllint --xpath $XPATH $XML_FILE)
+ if [[ -z ${RESULT// } ]]; then
+ Error "Can not find target from $XML_FILE"
+ Debug "Xpath = $XPATH"
+ exit 1
+ fi
+ XPATH_RESULT=$RESULT
+}
+
+fetch_tizen_pkgs_init()
+{
+ TARGET=$1
+ PROFILE=$2
+ Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
+
+ TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
+ if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
+ mkdir -p $TMP_PKG_DIR
+
+ PKG_URL=$TIZEN_URL/$PROFILE/latest
+
+ BUILD_XML_URL=$PKG_URL/$BUILD_XML
+ TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
+ TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
+ TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
+ TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
+
+ Fetch $BUILD_XML_URL $TMP_BUILD
+
+ Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
+
+ TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
+ Xpath_get $TARGET_XPATH $TMP_BUILD
+ TARGET_PATH=$XPATH_RESULT
+ TARGET_URL=$PKG_URL/$TARGET_PATH
+
+ REPOMD_URL=$TARGET_URL/repodata/repomd.xml
+ PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
+
+ Fetch $REPOMD_URL $TMP_REPOMD
+
+ Debug "fetch $REPOMD_URL to $TMP_REPOMD"
+
+ Xpath_get $PRIMARY_XPATH $TMP_REPOMD
+ PRIMARY_XML_PATH=$XPATH_RESULT
+ PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
+
+ Fetch $PRIMARY_URL $TMP_PRIMARYGZ
+
+ Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
+
+ gunzip $TMP_PRIMARYGZ
+
+ Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
+}
+
+fetch_tizen_pkgs()
+{
+ ARCH=$1
+ PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
+
+ PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
+
+ for pkg in ${@:2}
+ do
+ Inform "Fetching... $pkg"
+ XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
+ XPATH=${XPATH/_ARCH_/$ARCH}
+ Xpath_get $XPATH $TMP_PRIMARY
+ PKG_PATH=$XPATH_RESULT
+
+ XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
+ XPATH=${XPATH/_ARCH_/$ARCH}
+ Xpath_get $XPATH $TMP_PRIMARY
+ CHECKSUM=$XPATH_RESULT
+
+ PKG_URL=$TARGET_URL/$PKG_PATH
+ PKG_FILE=$(basename $PKG_PATH)
+ PKG_PATH=$TMPDIR/$PKG_FILE
+
+ Debug "Download $PKG_URL to $PKG_PATH"
+ Fetch $PKG_URL $PKG_PATH true
+
+ echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
+ if [ $? -ne 0 ]; then
+ Error "Fail to fetch $PKG_URL to $PKG_PATH"
+ Debug "Checksum = $CHECKSUM"
+ exit 1
+ fi
+ done
+}
+
+Inform "Initialize arm base"
+fetch_tizen_pkgs_init standard base
+Inform "fetch common packages"
+fetch_tizen_pkgs armv7l gcc glibc glibc-devel libicu libicu-devel
+fetch_tizen_pkgs noarch linux-glibc-devel
+Inform "fetch coreclr packages"
+fetch_tizen_pkgs armv7l lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel tizen-release lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
+Inform "fetch corefx packages"
+fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl libopenssl-devel krb5 krb5-devel libcurl libcurl-devel
+
+Inform "Initialize standard unified"
+fetch_tizen_pkgs_init standard unified
+Inform "fetch corefx packages"
+fetch_tizen_pkgs armv7l gssdp gssdp-devel
+
diff --git a/eng/common/cross/armel/tizen/tizen-dotnet.ks b/eng/common/cross/armel/tizen/tizen-dotnet.ks
new file mode 100644
index 00000000000..506d455bd4f
--- /dev/null
+++ b/eng/common/cross/armel/tizen/tizen-dotnet.ks
@@ -0,0 +1,50 @@
+lang en_US.UTF-8
+keyboard us
+timezone --utc Asia/Seoul
+
+part / --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label rootfs --fsoptions=defaults,noatime
+
+rootpw tizen
+desktop --autologinuser=root
+user --name root --groups audio,video --password 'tizen'
+
+repo --name=standard --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/latest/repos/standard/packages/ --ssl_verify=no
+repo --name=base --baseurl=http://download.tizen.org/releases/milestone/tizen/base/latest/repos/standard/packages/ --ssl_verify=no
+
+%packages
+tar
+gzip
+
+sed
+grep
+gawk
+perl
+
+binutils
+findutils
+util-linux
+lttng-ust
+userspace-rcu
+procps-ng
+tzdata
+ca-certificates
+
+
+### Core FX
+libicu
+libunwind
+iputils
+zlib
+krb5
+libcurl
+libopenssl
+
+%end
+
+%post
+
+### Update /tmp privilege
+chmod 777 /tmp
+####################################
+
+%end
diff --git a/eng/common/cross/armel/tizen/tizen.patch b/eng/common/cross/armel/tizen/tizen.patch
new file mode 100644
index 00000000000..d223427c978
--- /dev/null
+++ b/eng/common/cross/armel/tizen/tizen.patch
@@ -0,0 +1,18 @@
+diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
+--- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900
++++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900
+@@ -2,4 +2,4 @@
+ Use the shared library, but some functions are only in
+ the static library, so try that secondarily. */
+ OUTPUT_FORMAT(elf32-littlearm)
+-GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) )
++GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) )
+diff -u -r a/usr/lib/libpthread.so b/usr/lib/libpthread.so
+--- a/usr/lib/libpthread.so 2016-12-30 23:00:19.408951841 +0900
++++ b/usr/lib/libpthread.so 2016-12-30 23:00:39.068951801 +0900
+@@ -2,4 +2,4 @@
+ Use the shared library, but some functions are only in
+ the static library, so try that secondarily. */
+ OUTPUT_FORMAT(elf32-littlearm)
+-GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )
++GROUP ( libpthread.so.0 libpthread_nonshared.a )
diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh
new file mode 100755
index 00000000000..adceda877ad
--- /dev/null
+++ b/eng/common/cross/build-android-rootfs.sh
@@ -0,0 +1,137 @@
+#!/usr/bin/env bash
+set -e
+__NDK_Version=r14
+
+usage()
+{
+ echo "Creates a toolchain and sysroot used for cross-compiling for Android."
+ echo.
+ echo "Usage: $0 [BuildArch] [ApiLevel]"
+ echo.
+ echo "BuildArch is the target architecture of Android. Currently only arm64 is supported."
+ echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html"
+ echo.
+ echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior"
+ echo "by setting the TOOLCHAIN_DIR environment variable"
+ echo.
+ echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation,"
+ echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK."
+ echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.21-arm64. This file is to replace '/etc/os-release', which is not available for Android."
+ exit 1
+}
+
+__ApiLevel=21 # The minimum platform for arm64 is API level 21
+__BuildArch=arm64
+__AndroidArch=aarch64
+__AndroidToolchain=aarch64-linux-android
+
+for i in "$@"
+ do
+ lowerI="$(echo $i | awk '{print tolower($0)}')"
+ case $lowerI in
+ -?|-h|--help)
+ usage
+ exit 1
+ ;;
+ arm64)
+ __BuildArch=arm64
+ __AndroidArch=aarch64
+ __AndroidToolchain=aarch64-linux-android
+ ;;
+ arm)
+ __BuildArch=arm
+ __AndroidArch=arm
+ __AndroidToolchain=arm-linux-androideabi
+ ;;
+ *[0-9])
+ __ApiLevel=$i
+ ;;
+ *)
+ __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
+ ;;
+ esac
+done
+
+# Obtain the location of the bash script to figure out where the root of the repo is.
+__CrossDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+__Android_Cross_Dir="$__CrossDir/android-rootfs"
+__NDK_Dir="$__Android_Cross_Dir/android-ndk-$__NDK_Version"
+__libunwind_Dir="$__Android_Cross_Dir/libunwind"
+__lldb_Dir="$__Android_Cross_Dir/lldb"
+__ToolchainDir="$__Android_Cross_Dir/toolchain/$__BuildArch"
+
+if [[ -n "$TOOLCHAIN_DIR" ]]; then
+ __ToolchainDir=$TOOLCHAIN_DIR
+fi
+
+if [[ -n "$NDK_DIR" ]]; then
+ __NDK_Dir=$NDK_DIR
+fi
+
+echo "Target API level: $__ApiLevel"
+echo "Target architecture: $__BuildArch"
+echo "NDK location: $__NDK_Dir"
+echo "Target Toolchain location: $__ToolchainDir"
+
+# Download the NDK if required
+if [ ! -d $__NDK_Dir ]; then
+ echo Downloading the NDK into $__NDK_Dir
+ mkdir -p $__NDK_Dir
+ wget -nv -nc --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux-x86_64.zip -O $__Android_Cross_Dir/android-ndk-$__NDK_Version-linux-x86_64.zip
+ unzip -q $__Android_Cross_Dir/android-ndk-$__NDK_Version-linux-x86_64.zip -d $__Android_Cross_Dir
+fi
+
+if [ ! -d $__lldb_Dir ]; then
+ mkdir -p $__lldb_Dir
+ echo Downloading LLDB into $__lldb_Dir
+ wget -nv -nc --show-progress https://dl.google.com/android/repository/lldb-2.3.3614996-linux-x86_64.zip -O $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip
+ unzip -q $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip -d $__lldb_Dir
+fi
+
+# Create the RootFS for both arm64 as well as aarch
+rm -rf $__Android_Cross_Dir/toolchain
+
+echo Generating the $__BuildArch toolchain
+$__NDK_Dir/build/tools/make_standalone_toolchain.py --arch $__BuildArch --api $__ApiLevel --install-dir $__ToolchainDir
+
+# Install the required packages into the toolchain
+# TODO: Add logic to get latest pkg version instead of specific version number
+rm -rf $__Android_Cross_Dir/deb/
+rm -rf $__Android_Cross_Dir/tmp
+
+mkdir -p $__Android_Cross_Dir/deb/
+mkdir -p $__Android_Cross_Dir/tmp/$arch/
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu-dev_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb
+
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob-dev_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support-dev_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma-dev_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind-dev_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb
+wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb
+
+echo Unpacking Termux packages
+dpkg -x $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+dpkg -x $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
+
+cp -R $__Android_Cross_Dir/tmp/$__AndroidArch/data/data/com.termux/files/usr/* $__ToolchainDir/sysroot/usr/
+
+# Generate platform file for build.sh script to assign to __DistroRid
+echo "Generating platform file..."
+
+echo "RID=android.21-arm64" > $__ToolchainDir/sysroot/android_platform
+echo Now run:
+echo CONFIG_DIR=\`realpath cross/android/$__BuildArch\` ROOTFS_DIR=\`realpath $__ToolchainDir/sysroot\` ./build.sh cross $__BuildArch skipgenerateversion skipnuget cmakeargs -DENABLE_LLDBPLUGIN=0
+
diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh
new file mode 100755
index 00000000000..805948ca83c
--- /dev/null
+++ b/eng/common/cross/build-rootfs.sh
@@ -0,0 +1,210 @@
+#!/usr/bin/env bash
+
+usage()
+{
+ echo "Usage: $0 [BuildArch] [LinuxCodeName] [lldbx.y] [--skipunmount]"
+ echo "BuildArch can be: arm(default), armel, arm64, x86"
+ echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, xenial, zesty, bionic, alpine. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
+ echo "lldbx.y - optional, LLDB version, can be: lldb3.6(default), lldb3.8, lldb3.9, lldb4.0, no-lldb. Ignored for alpine"
+ echo "--skipunmount - optional, will skip the unmount of rootfs folder."
+ exit 1
+}
+
+__LinuxCodeName=trusty
+__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+__InitialDir=$PWD
+__BuildArch=arm
+__UbuntuArch=armhf
+__UbuntuRepo="http://ports.ubuntu.com/"
+__LLDB_Package="lldb-3.6-dev"
+__SkipUnmount=0
+
+# base development support
+__UbuntuPackages="build-essential"
+
+__AlpinePackages="alpine-base"
+__AlpinePackages+=" build-base"
+__AlpinePackages+=" linux-headers"
+__AlpinePackages+=" lldb-dev"
+__AlpinePackages+=" llvm-dev"
+
+# symlinks fixer
+__UbuntuPackages+=" symlinks"
+
+# CoreCLR and CoreFX dependencies
+__UbuntuPackages+=" libicu-dev"
+__UbuntuPackages+=" liblttng-ust-dev"
+__UbuntuPackages+=" libunwind8-dev"
+
+__AlpinePackages+=" gettext-dev"
+__AlpinePackages+=" icu-dev"
+__AlpinePackages+=" libunwind-dev"
+__AlpinePackages+=" lttng-ust-dev"
+
+# CoreFX dependencies
+__UbuntuPackages+=" libcurl4-openssl-dev"
+__UbuntuPackages+=" libkrb5-dev"
+__UbuntuPackages+=" libssl-dev"
+__UbuntuPackages+=" zlib1g-dev"
+
+__AlpinePackages+=" curl-dev"
+__AlpinePackages+=" krb5-dev"
+__AlpinePackages+=" openssl-dev"
+__AlpinePackages+=" zlib-dev"
+
+__UnprocessedBuildArgs=
+for i in "$@" ; do
+ lowerI="$(echo $i | awk '{print tolower($0)}')"
+ case $lowerI in
+ -?|-h|--help)
+ usage
+ exit 1
+ ;;
+ arm)
+ __BuildArch=arm
+ __UbuntuArch=armhf
+ __AlpineArch=armhf
+ __QEMUArch=arm
+ ;;
+ arm64)
+ __BuildArch=arm64
+ __UbuntuArch=arm64
+ __AlpineArch=aarch64
+ __QEMUArch=aarch64
+ ;;
+ armel)
+ __BuildArch=armel
+ __UbuntuArch=armel
+ __UbuntuRepo="http://ftp.debian.org/debian/"
+ __LinuxCodeName=jessie
+ ;;
+ x86)
+ __BuildArch=x86
+ __UbuntuArch=i386
+ __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
+ ;;
+ lldb3.6)
+ __LLDB_Package="lldb-3.6-dev"
+ ;;
+ lldb3.8)
+ __LLDB_Package="lldb-3.8-dev"
+ ;;
+ lldb3.9)
+ __LLDB_Package="liblldb-3.9-dev"
+ ;;
+ lldb4.0)
+ __LLDB_Package="liblldb-4.0-dev"
+ ;;
+ no-lldb)
+ unset __LLDB_Package
+ ;;
+ vivid)
+ if [ "$__LinuxCodeName" != "jessie" ]; then
+ __LinuxCodeName=vivid
+ fi
+ ;;
+ wily)
+ if [ "$__LinuxCodeName" != "jessie" ]; then
+ __LinuxCodeName=wily
+ fi
+ ;;
+ xenial)
+ if [ "$__LinuxCodeName" != "jessie" ]; then
+ __LinuxCodeName=xenial
+ fi
+ ;;
+ zesty)
+ if [ "$__LinuxCodeName" != "jessie" ]; then
+ __LinuxCodeName=zesty
+ fi
+ ;;
+ bionic)
+ if [ "$__LinuxCodeName" != "jessie" ]; then
+ __LinuxCodeName=bionic
+ fi
+ ;;
+ jessie)
+ __LinuxCodeName=jessie
+ __UbuntuRepo="http://ftp.debian.org/debian/"
+ ;;
+ tizen)
+ if [ "$__BuildArch" != "armel" ]; then
+ echo "Tizen is available only for armel."
+ usage;
+ exit 1;
+ fi
+ __LinuxCodeName=
+ __UbuntuRepo=
+ __Tizen=tizen
+ ;;
+ alpine)
+ __LinuxCodeName=alpine
+ __UbuntuRepo=
+ ;;
+ --skipunmount)
+ __SkipUnmount=1
+ ;;
+ *)
+ __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
+ ;;
+ esac
+done
+
+if [ "$__BuildArch" == "armel" ]; then
+ __LLDB_Package="lldb-3.5-dev"
+fi
+__UbuntuPackages+=" ${__LLDB_Package:-}"
+
+__RootfsDir="$__CrossDir/rootfs/$__BuildArch"
+
+if [[ -n "$ROOTFS_DIR" ]]; then
+ __RootfsDir=$ROOTFS_DIR
+fi
+
+if [ -d "$__RootfsDir" ]; then
+ if [ $__SkipUnmount == 0 ]; then
+ umount $__RootfsDir/*
+ fi
+ rm -rf $__RootfsDir
+fi
+
+if [[ "$__LinuxCodeName" == "alpine" ]]; then
+ __ApkToolsVersion=2.9.1
+ __AlpineVersion=3.7
+ __ApkToolsDir=$(mktemp -d)
+ wget https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -P $__ApkToolsDir
+ tar -xf $__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -C $__ApkToolsDir
+ mkdir -p $__RootfsDir/usr/bin
+ cp -v /usr/bin/qemu-$__QEMUArch-static $__RootfsDir/usr/bin
+ $__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \
+ -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main \
+ -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community \
+ -X http://dl-cdn.alpinelinux.org/alpine/edge/testing \
+ -U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \
+ add $__AlpinePackages
+ rm -r $__ApkToolsDir
+elif [[ -n $__LinuxCodeName ]]; then
+ qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
+ cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
+ chroot $__RootfsDir apt-get update
+ chroot $__RootfsDir apt-get -f -y install
+ chroot $__RootfsDir apt-get -y install $__UbuntuPackages
+ chroot $__RootfsDir symlinks -cr /usr
+
+ if [ $__SkipUnmount == 0 ]; then
+ umount $__RootfsDir/*
+ fi
+
+ if [[ "$__BuildArch" == "arm" && "$__LinuxCodeName" == "trusty" ]]; then
+ pushd $__RootfsDir
+ patch -p1 < $__CrossDir/$__BuildArch/trusty.patch
+ patch -p1 < $__CrossDir/$__BuildArch/trusty-lttng-2.4.patch
+ popd
+ fi
+elif [ "$__Tizen" == "tizen" ]; then
+ ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
+else
+ echo "Unsupported target platform."
+ usage;
+ exit 1
+fi
diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
new file mode 100644
index 00000000000..071d4112419
--- /dev/null
+++ b/eng/common/cross/toolchain.cmake
@@ -0,0 +1,138 @@
+set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
+
+set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH})
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_VERSION 1)
+
+if(TARGET_ARCH_NAME STREQUAL "armel")
+ set(CMAKE_SYSTEM_PROCESSOR armv7l)
+ set(TOOLCHAIN "arm-linux-gnueabi")
+ if("$ENV{__DistroRid}" MATCHES "tizen.*")
+ set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/6.2.1")
+ endif()
+elseif(TARGET_ARCH_NAME STREQUAL "arm")
+ set(CMAKE_SYSTEM_PROCESSOR armv7l)
+ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf)
+ set(TOOLCHAIN "armv6-alpine-linux-musleabihf")
+ else()
+ set(TOOLCHAIN "arm-linux-gnueabihf")
+ endif()
+elseif(TARGET_ARCH_NAME STREQUAL "arm64")
+ set(CMAKE_SYSTEM_PROCESSOR aarch64)
+ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl)
+ set(TOOLCHAIN "aarch64-alpine-linux-musl")
+ else()
+ set(TOOLCHAIN "aarch64-linux-gnu")
+ endif()
+elseif(TARGET_ARCH_NAME STREQUAL "x86")
+ set(CMAKE_SYSTEM_PROCESSOR i686)
+ set(TOOLCHAIN "i686-linux-gnu")
+else()
+ message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64 and x86 are supported!")
+endif()
+
+# Specify include paths
+if(TARGET_ARCH_NAME STREQUAL "armel")
+ if(DEFINED TIZEN_TOOLCHAIN)
+ include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
+ include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
+ endif()
+endif()
+
+# add_compile_param - adds only new options without duplicates.
+# arg0 - list with result options, arg1 - list with new options.
+# arg2 - optional argument, quick summary string for optional using CACHE FORCE mode.
+macro(add_compile_param)
+ if(NOT ${ARGC} MATCHES "^(2|3)$")
+ message(FATAL_ERROR "Wrong using add_compile_param! Two or three parameters must be given! See add_compile_param description.")
+ endif()
+ foreach(OPTION ${ARGV1})
+ if(NOT ${ARGV0} MATCHES "${OPTION}($| )")
+ set(${ARGV0} "${${ARGV0}} ${OPTION}")
+ if(${ARGC} EQUAL "3") # CACHE FORCE mode
+ set(${ARGV0} "${${ARGV0}}" CACHE STRING "${ARGV2}" FORCE)
+ endif()
+ endif()
+ endforeach()
+endmacro()
+
+# Specify link flags
+add_compile_param(CROSS_LINK_FLAGS "--sysroot=${CROSS_ROOTFS}")
+add_compile_param(CROSS_LINK_FLAGS "--gcc-toolchain=${CROSS_ROOTFS}/usr")
+add_compile_param(CROSS_LINK_FLAGS "--target=${TOOLCHAIN}")
+add_compile_param(CROSS_LINK_FLAGS "-fuse-ld=gold")
+
+if(TARGET_ARCH_NAME STREQUAL "armel")
+ if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only
+ add_compile_param(CROSS_LINK_FLAGS "-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+ add_compile_param(CROSS_LINK_FLAGS "-L${CROSS_ROOTFS}/lib")
+ add_compile_param(CROSS_LINK_FLAGS "-L${CROSS_ROOTFS}/usr/lib")
+ add_compile_param(CROSS_LINK_FLAGS "-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
+ endif()
+elseif(TARGET_ARCH_NAME STREQUAL "x86")
+ add_compile_param(CROSS_LINK_FLAGS "-m32")
+endif()
+
+add_compile_param(CMAKE_EXE_LINKER_FLAGS "${CROSS_LINK_FLAGS}" "TOOLCHAIN_EXE_LINKER_FLAGS")
+add_compile_param(CMAKE_SHARED_LINKER_FLAGS "${CROSS_LINK_FLAGS}" "TOOLCHAIN_EXE_LINKER_FLAGS")
+add_compile_param(CMAKE_MODULE_LINKER_FLAGS "${CROSS_LINK_FLAGS}" "TOOLCHAIN_EXE_LINKER_FLAGS")
+
+# Specify compile options
+add_compile_options("--sysroot=${CROSS_ROOTFS}")
+add_compile_options("--target=${TOOLCHAIN}")
+add_compile_options("--gcc-toolchain=${CROSS_ROOTFS}/usr")
+
+if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64)$")
+ set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
+ set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
+ set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
+endif()
+
+if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
+ add_compile_options(-mthumb)
+ add_compile_options(-mfpu=vfpv3)
+ if(TARGET_ARCH_NAME STREQUAL "armel")
+ add_compile_options(-mfloat-abi=softfp)
+ if(DEFINED TIZEN_TOOLCHAIN)
+ add_compile_options(-Wno-deprecated-declarations) # compile-time option
+ add_compile_options(-D__extern_always_inline=inline) # compile-time option
+ endif()
+ endif()
+elseif(TARGET_ARCH_NAME STREQUAL "x86")
+ add_compile_options(-m32)
+ add_compile_options(-Wno-error=unused-command-line-argument)
+endif()
+
+# Set LLDB include and library paths
+if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$")
+ if(TARGET_ARCH_NAME STREQUAL "x86")
+ set(LLVM_CROSS_DIR "$ENV{LLVM_CROSS_HOME}")
+ else() # arm/armel case
+ set(LLVM_CROSS_DIR "$ENV{LLVM_ARM_HOME}")
+ endif()
+ if(LLVM_CROSS_DIR)
+ set(WITH_LLDB_LIBS "${LLVM_CROSS_DIR}/lib/" CACHE STRING "")
+ set(WITH_LLDB_INCLUDES "${LLVM_CROSS_DIR}/include" CACHE STRING "")
+ set(LLDB_H "${WITH_LLDB_INCLUDES}" CACHE STRING "")
+ set(LLDB "${LLVM_CROSS_DIR}/lib/liblldb.so" CACHE STRING "")
+ else()
+ if(TARGET_ARCH_NAME STREQUAL "x86")
+ set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/i386-linux-gnu" CACHE STRING "")
+ set(CHECK_LLVM_DIR "${CROSS_ROOTFS}/usr/lib/llvm-3.8/include")
+ if(EXISTS "${CHECK_LLVM_DIR}" AND IS_DIRECTORY "${CHECK_LLVM_DIR}")
+ set(WITH_LLDB_INCLUDES "${CHECK_LLVM_DIR}")
+ else()
+ set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include")
+ endif()
+ else() # arm/armel case
+ set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/${TOOLCHAIN}" CACHE STRING "")
+ set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include" CACHE STRING "")
+ endif()
+ endif()
+endif()
+
+set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/eng/common/cross/x86/sources.list.bionic b/eng/common/cross/x86/sources.list.bionic
new file mode 100644
index 00000000000..a71ccadcffa
--- /dev/null
+++ b/eng/common/cross/x86/sources.list.bionic
@@ -0,0 +1,11 @@
+deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
+deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
diff --git a/eng/common/cross/x86/sources.list.trusty b/eng/common/cross/x86/sources.list.trusty
new file mode 100644
index 00000000000..9b3085436e9
--- /dev/null
+++ b/eng/common/cross/x86/sources.list.trusty
@@ -0,0 +1,11 @@
+deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
+deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
diff --git a/eng/common/cross/x86/sources.list.vivid b/eng/common/cross/x86/sources.list.vivid
new file mode 100644
index 00000000000..26d37b20fc3
--- /dev/null
+++ b/eng/common/cross/x86/sources.list.vivid
@@ -0,0 +1,11 @@
+deb http://archive.ubuntu.com/ubuntu/ vivid main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ vivid main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ vivid-updates main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ vivid-updates main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ vivid-backports main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ vivid-backports main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ vivid-security main restricted universe multiverse
+deb-src http://archive.ubuntu.com/ubuntu/ vivid-security main restricted universe multiverse
diff --git a/eng/common/cross/x86/sources.list.wily b/eng/common/cross/x86/sources.list.wily
new file mode 100644
index 00000000000..c4b0b442ab6
--- /dev/null
+++ b/eng/common/cross/x86/sources.list.wily
@@ -0,0 +1,11 @@
+deb http://archive.ubuntu.com/ubuntu/ wily main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ wily main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ wily-updates main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ wily-updates main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ wily-backports main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ wily-backports main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ wily-security main restricted universe multiverse
+deb-src http://archive.ubuntu.com/ubuntu/ wily-security main restricted universe multiverse
diff --git a/eng/common/cross/x86/sources.list.xenial b/eng/common/cross/x86/sources.list.xenial
new file mode 100644
index 00000000000..ad9c5a0144e
--- /dev/null
+++ b/eng/common/cross/x86/sources.list.xenial
@@ -0,0 +1,11 @@
+deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
+
+deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
+deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1
new file mode 100644
index 00000000000..96cad844ba3
--- /dev/null
+++ b/eng/common/darc-init.ps1
@@ -0,0 +1,32 @@
+param (
+ $darcVersion = $null
+)
+
+$verbosity = "m"
+. $PSScriptRoot\tools.ps1
+
+function InstallDarcCli ($darcVersion) {
+ $darcCliPackageName = "microsoft.dotnet.darc"
+
+ $dotnetRoot = InitializeDotNetCli -install:$true
+ $dotnet = "$dotnetRoot\dotnet.exe"
+ $toolList = Invoke-Expression "& `"$dotnet`" tool list -g"
+
+ if ($toolList -like "*$darcCliPackageName*") {
+ Invoke-Expression "& `"$dotnet`" tool uninstall $darcCliPackageName -g"
+ }
+
+ # Until we can anonymously query the BAR API for the latest arcade-services
+ # build applied to the PROD channel, this is hardcoded.
+ if (-not $darcVersion) {
+ $darcVersion = '1.1.0-beta.19057.9'
+ }
+
+ $arcadeServicesSource = 'https://dotnetfeed.blob.core.windows.net/dotnet-arcade/index.json'
+
+ Write-Host "Installing Darc CLI version $darcVersion..."
+ Write-Host "You may need to restart your command window if this is the first dotnet tool you have installed."
+ Invoke-Expression "& `"$dotnet`" tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g"
+}
+
+InstallDarcCli $darcVersion
diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh
new file mode 100755
index 00000000000..bad07c3ae61
--- /dev/null
+++ b/eng/common/darc-init.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $source until the file is no longer a symlink
+while [[ -h "$source" ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+verbosity=m
+
+. "$scriptroot/tools.sh"
+
+function InstallDarcCli {
+ local darc_cli_package_name="microsoft.dotnet.darc"
+
+ InitializeDotNetCli
+ local dotnet_root=$_InitializeDotNetCli
+
+ local uninstall_command=`$dotnet_root/dotnet tool uninstall $darc_cli_package_name -g`
+ local tool_list=$($dotnet_root/dotnet tool list -g)
+ if [[ $tool_list = *$darc_cli_package_name* ]]; then
+ echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g)
+ fi
+
+ ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk"
+ local toolset_version=$_ReadGlobalVersion
+
+ echo "Installing Darc CLI version $toolset_version..."
+ echo "You may need to restart your command shell if this is the first dotnet tool you have installed."
+ echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $toolset_version -v $verbosity -g)
+}
+
+InstallDarcCli
diff --git a/eng/common/helixpublish.proj b/eng/common/helixpublish.proj
new file mode 100644
index 00000000000..d7f185856e7
--- /dev/null
+++ b/eng/common/helixpublish.proj
@@ -0,0 +1,26 @@
+
+
+
+ msbuild
+
+
+
+
+ %(Identity)
+
+
+
+
+
+ $(WorkItemDirectory)
+ $(WorkItemCommand)
+ $(WorkItemTimeout)
+
+
+
+
+
+
+
+
+
diff --git a/eng/common/init-tools-native.cmd b/eng/common/init-tools-native.cmd
new file mode 100644
index 00000000000..438cd548c45
--- /dev/null
+++ b/eng/common/init-tools-native.cmd
@@ -0,0 +1,3 @@
+@echo off
+powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*"
+exit /b %ErrorLevel%
\ No newline at end of file
diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1
new file mode 100644
index 00000000000..e25c60fed42
--- /dev/null
+++ b/eng/common/init-tools-native.ps1
@@ -0,0 +1,128 @@
+<#
+.SYNOPSIS
+Entry point script for installing native tools
+
+.DESCRIPTION
+Reads $RepoRoot\global.json file to determine native assets to install
+and executes installers for those tools
+
+.PARAMETER BaseUri
+Base file directory or Url from which to acquire tool archives
+
+.PARAMETER InstallDirectory
+Directory to install native toolset. This is a command-line override for the default
+Install directory precedence order:
+- InstallDirectory command-line override
+- NETCOREENG_INSTALL_DIRECTORY environment variable
+- (default) %USERPROFILE%/.netcoreeng/native
+
+.PARAMETER Clean
+Switch specifying to not install anything, but cleanup native asset folders
+
+.PARAMETER Force
+Clean and then install tools
+
+.PARAMETER DownloadRetries
+Total number of retry attempts
+
+.PARAMETER RetryWaitTimeInSeconds
+Wait time between retry attempts in seconds
+
+.PARAMETER GlobalJsonFile
+File path to global.json file
+
+.NOTES
+#>
+[CmdletBinding(PositionalBinding=$false)]
+Param (
+ [string] $BaseUri = "https://netcorenativeassets.blob.core.windows.net/resource-packages/external",
+ [string] $InstallDirectory,
+ [switch] $Clean = $False,
+ [switch] $Force = $False,
+ [int] $DownloadRetries = 5,
+ [int] $RetryWaitTimeInSeconds = 30,
+ [string] $GlobalJsonFile = "$PSScriptRoot\..\..\global.json"
+)
+
+Set-StrictMode -version 2.0
+$ErrorActionPreference="Stop"
+
+Import-Module -Name (Join-Path $PSScriptRoot "native\CommonLibrary.psm1")
+
+try {
+ # Define verbose switch if undefined
+ $Verbose = $VerbosePreference -Eq "Continue"
+
+ $EngCommonBaseDir = Join-Path $PSScriptRoot "native\"
+ $NativeBaseDir = $InstallDirectory
+ if (!$NativeBaseDir) {
+ $NativeBaseDir = CommonLibrary\Get-NativeInstallDirectory
+ }
+ $Env:CommonLibrary_NativeInstallDir = $NativeBaseDir
+ $InstallBin = Join-Path $NativeBaseDir "bin"
+ $InstallerPath = Join-Path $EngCommonBaseDir "install-tool.ps1"
+
+ # Process tools list
+ Write-Host "Processing $GlobalJsonFile"
+ If (-Not (Test-Path $GlobalJsonFile)) {
+ Write-Host "Unable to find '$GlobalJsonFile'"
+ exit 0
+ }
+ $NativeTools = Get-Content($GlobalJsonFile) -Raw |
+ ConvertFrom-Json |
+ Select-Object -Expand "native-tools" -ErrorAction SilentlyContinue
+ if ($NativeTools) {
+ $NativeTools.PSObject.Properties | ForEach-Object {
+ $ToolName = $_.Name
+ $ToolVersion = $_.Value
+ $LocalInstallerCommand = $InstallerPath
+ $LocalInstallerCommand += " -ToolName $ToolName"
+ $LocalInstallerCommand += " -InstallPath $InstallBin"
+ $LocalInstallerCommand += " -BaseUri $BaseUri"
+ $LocalInstallerCommand += " -CommonLibraryDirectory $EngCommonBaseDir"
+ $LocalInstallerCommand += " -Version $ToolVersion"
+
+ if ($Verbose) {
+ $LocalInstallerCommand += " -Verbose"
+ }
+ if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') {
+ if($Force) {
+ $LocalInstallerCommand += " -Force"
+ }
+ }
+ if ($Clean) {
+ $LocalInstallerCommand += " -Clean"
+ }
+
+ Write-Verbose "Installing $ToolName version $ToolVersion"
+ Write-Verbose "Executing '$LocalInstallerCommand'"
+ Invoke-Expression "$LocalInstallerCommand"
+ if ($LASTEXITCODE -Ne "0") {
+ Write-Error "Execution failed"
+ exit 1
+ }
+ }
+ }
+ else {
+ Write-Host "No native tools defined in global.json"
+ exit 0
+ }
+
+ if ($Clean) {
+ exit 0
+ }
+ if (Test-Path $InstallBin) {
+ Write-Host "Native tools are available from" (Convert-Path -Path $InstallBin)
+ Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)"
+ }
+ else {
+ Write-Error "Native tools install directory does not exist, installation failed"
+ exit 1
+ }
+ exit 0
+}
+catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ exit 1
+}
diff --git a/eng/common/init-tools-native.sh b/eng/common/init-tools-native.sh
new file mode 100755
index 00000000000..54b70f678ba
--- /dev/null
+++ b/eng/common/init-tools-native.sh
@@ -0,0 +1,145 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+
+base_uri='https://netcorenativeassets.blob.core.windows.net/resource-packages/external'
+install_directory=''
+clean=false
+force=false
+download_retries=5
+retry_wait_time_seconds=30
+global_json_file="${scriptroot}/../../global.json"
+declare -A native_assets
+
+. $scriptroot/native/common-library.sh
+
+while (($# > 0)); do
+ lowerI="$(echo $1 | awk '{print tolower($0)}')"
+ case $lowerI in
+ --baseuri)
+ base_uri=$2
+ shift 2
+ ;;
+ --installdirectory)
+ install_directory=$2
+ shift 2
+ ;;
+ --clean)
+ clean=true
+ shift 1
+ ;;
+ --force)
+ force=true
+ shift 1
+ ;;
+ --downloadretries)
+ download_retries=$2
+ shift 2
+ ;;
+ --retrywaittimeseconds)
+ retry_wait_time_seconds=$2
+ shift 2
+ ;;
+ --help)
+ echo "Common settings:"
+ echo " --installdirectory Directory to install native toolset."
+ echo " This is a command-line override for the default"
+ echo " Install directory precedence order:"
+ echo " - InstallDirectory command-line override"
+ echo " - NETCOREENG_INSTALL_DIRECTORY environment variable"
+ echo " - (default) %USERPROFILE%/.netcoreeng/native"
+ echo ""
+ echo " --clean Switch specifying not to install anything, but cleanup native asset folders"
+ echo " --force Clean and then install tools"
+ echo " --help Print help and exit"
+ echo ""
+ echo "Advanced settings:"
+ echo " --baseuri Base URI for where to download native tools from"
+ echo " --downloadretries Number of times a download should be attempted"
+ echo " --retrywaittimeseconds Wait time between download attempts"
+ echo ""
+ exit 0
+ ;;
+ esac
+done
+
+function ReadGlobalJsonNativeTools {
+ # Get the native-tools section from the global.json.
+ local native_tools_section=$(cat $global_json_file | awk '/"native-tools"/,/}/')
+ # Only extract the contents of the object.
+ local native_tools_list=$(echo $native_tools_section | awk -F"[{}]" '{print $2}')
+ native_tools_list=${native_tools_list//[\" ]/}
+ native_tools_list=${native_tools_list//,/$'\n'}
+
+ local old_IFS=$IFS
+ while read -r line; do
+ # Lines are of the form: 'tool:version'
+ IFS=:
+ while read -r key value; do
+ native_assets[$key]=$value
+ done <<< "$line"
+ done <<< "$native_tools_list"
+ IFS=$old_IFS
+
+ return 0;
+}
+
+native_base_dir=$install_directory
+if [[ -z $install_directory ]]; then
+ native_base_dir=$(GetNativeInstallDirectory)
+fi
+
+install_bin="${native_base_dir}/bin"
+
+ReadGlobalJsonNativeTools
+
+if [[ ${#native_assets[@]} -eq 0 ]]; then
+ echo "No native tools defined in global.json"
+ exit 0;
+else
+ native_installer_dir="$scriptroot/native"
+ for tool in "${!native_assets[@]}"
+ do
+ tool_version=${native_assets[$tool]}
+ installer_name="install-$tool.sh"
+ installer_command="$native_installer_dir/$installer_name"
+ installer_command+=" --baseuri $base_uri"
+ installer_command+=" --installpath $install_bin"
+ installer_command+=" --version $tool_version"
+
+ if [[ $force = true ]]; then
+ installer_command+=" --force"
+ fi
+
+ if [[ $clean = true ]]; then
+ installer_command+=" --clean"
+ fi
+
+ echo "Installing $tool version $tool_version"
+ echo "Executing '$installer_command'"
+ $installer_command
+
+ if [[ $? != 0 ]]; then
+ echo "Execution Failed" >&2
+ exit 1
+ fi
+ done
+fi
+
+if [[ ! -z $clean ]]; then
+ exit 0
+fi
+
+if [[ -d $install_bin ]]; then
+ echo "Native tools are available from $install_bin"
+ if [[ !-z BUILD_BUILDNUMBER ]]; then
+ echo "##vso[task.prependpath]$install_bin"
+ fi
+else
+ echo "Native tools install directory does not exist, installation failed" >&2
+ exit 1
+fi
+
+exit 0
+
diff --git a/eng/common/msbuild.ps1 b/eng/common/msbuild.ps1
new file mode 100644
index 00000000000..b37fd3d5e97
--- /dev/null
+++ b/eng/common/msbuild.ps1
@@ -0,0 +1,27 @@
+[CmdletBinding(PositionalBinding=$false)]
+Param(
+ [string] $verbosity = "minimal",
+ [bool] $warnAsError = $true,
+ [bool] $nodeReuse = $true,
+ [switch] $ci,
+ [switch] $prepareMachine,
+ [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs
+)
+
+. $PSScriptRoot\tools.ps1
+
+try {
+ if ($ci) {
+ $nodeReuse = $false
+ }
+
+ MSBuild @extraArgs
+}
+catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ Write-Host $_.ScriptStackTrace
+ ExitWithExitCode 1
+}
+
+ExitWithExitCode 0
\ No newline at end of file
diff --git a/eng/common/msbuild.sh b/eng/common/msbuild.sh
new file mode 100755
index 00000000000..8160cd5a59d
--- /dev/null
+++ b/eng/common/msbuild.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $source until the file is no longer a symlink
+while [[ -h "$source" ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+
+verbosity='minimal'
+warn_as_error=true
+node_reuse=true
+prepare_machine=false
+extra_args=''
+
+while (($# > 0)); do
+ lowerI="$(echo $1 | awk '{print tolower($0)}')"
+ case $lowerI in
+ --verbosity)
+ verbosity=$2
+ shift 2
+ ;;
+ --warnaserror)
+ warn_as_error=$2
+ shift 2
+ ;;
+ --nodereuse)
+ node_reuse=$2
+ shift 2
+ ;;
+ --ci)
+ ci=true
+ shift 1
+ ;;
+ --preparemachine)
+ prepare_machine=true
+ shift 1
+ ;;
+ *)
+ extra_args="$extra_args $1"
+ shift 1
+ ;;
+ esac
+done
+
+. "$scriptroot/tools.sh"
+
+if [[ "$ci" == true ]]; then
+ node_reuse=false
+fi
+
+MSBuild $extra_args
+ExitWithExitCode 0
diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1
new file mode 100644
index 00000000000..f286ae0cde2
--- /dev/null
+++ b/eng/common/native/CommonLibrary.psm1
@@ -0,0 +1,358 @@
+<#
+.SYNOPSIS
+Helper module to install an archive to a directory
+
+.DESCRIPTION
+Helper module to download and extract an archive to a specified directory
+
+.PARAMETER Uri
+Uri of artifact to download
+
+.PARAMETER InstallDirectory
+Directory to extract artifact contents to
+
+.PARAMETER Force
+Force download / extraction if file or contents already exist. Default = False
+
+.PARAMETER DownloadRetries
+Total number of retry attempts. Default = 5
+
+.PARAMETER RetryWaitTimeInSeconds
+Wait time between retry attempts in seconds. Default = 30
+
+.NOTES
+Returns False if download or extraction fail, True otherwise
+#>
+function DownloadAndExtract {
+ [CmdletBinding(PositionalBinding=$false)]
+ Param (
+ [Parameter(Mandatory=$True)]
+ [string] $Uri,
+ [Parameter(Mandatory=$True)]
+ [string] $InstallDirectory,
+ [switch] $Force = $False,
+ [int] $DownloadRetries = 5,
+ [int] $RetryWaitTimeInSeconds = 30
+ )
+ # Define verbose switch if undefined
+ $Verbose = $VerbosePreference -Eq "Continue"
+
+ $TempToolPath = CommonLibrary\Get-TempPathFilename -Path $Uri
+
+ # Download native tool
+ $DownloadStatus = CommonLibrary\Get-File -Uri $Uri `
+ -Path $TempToolPath `
+ -DownloadRetries $DownloadRetries `
+ -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds `
+ -Force:$Force `
+ -Verbose:$Verbose
+
+ if ($DownloadStatus -Eq $False) {
+ Write-Error "Download failed"
+ return $False
+ }
+
+ # Extract native tool
+ $UnzipStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath `
+ -OutputDirectory $InstallDirectory `
+ -Force:$Force `
+ -Verbose:$Verbose
+
+ if ($UnzipStatus -Eq $False) {
+ Write-Error "Unzip failed"
+ return $False
+ }
+ return $True
+}
+
+<#
+.SYNOPSIS
+Download a file, retry on failure
+
+.DESCRIPTION
+Download specified file and retry if attempt fails
+
+.PARAMETER Uri
+Uri of file to download. If Uri is a local path, the file will be copied instead of downloaded
+
+.PARAMETER Path
+Path to download or copy uri file to
+
+.PARAMETER Force
+Overwrite existing file if present. Default = False
+
+.PARAMETER DownloadRetries
+Total number of retry attempts. Default = 5
+
+.PARAMETER RetryWaitTimeInSeconds
+Wait time between retry attempts in seconds Default = 30
+
+#>
+function Get-File {
+ [CmdletBinding(PositionalBinding=$false)]
+ Param (
+ [Parameter(Mandatory=$True)]
+ [string] $Uri,
+ [Parameter(Mandatory=$True)]
+ [string] $Path,
+ [int] $DownloadRetries = 5,
+ [int] $RetryWaitTimeInSeconds = 30,
+ [switch] $Force = $False
+ )
+ $Attempt = 0
+
+ if ($Force) {
+ if (Test-Path $Path) {
+ Remove-Item $Path -Force
+ }
+ }
+ if (Test-Path $Path) {
+ Write-Host "File '$Path' already exists, skipping download"
+ return $True
+ }
+
+ $DownloadDirectory = Split-Path -ErrorAction Ignore -Path "$Path" -Parent
+ if (-Not (Test-Path $DownloadDirectory)) {
+ New-Item -path $DownloadDirectory -force -itemType "Directory" | Out-Null
+ }
+
+ if (Test-Path -IsValid -Path $Uri) {
+ Write-Verbose "'$Uri' is a file path, copying file to '$Path'"
+ Copy-Item -Path $Uri -Destination $Path
+ return $?
+ }
+ else {
+ Write-Verbose "Downloading $Uri"
+ while($Attempt -Lt $DownloadRetries)
+ {
+ try {
+ Invoke-WebRequest -UseBasicParsing -Uri $Uri -OutFile $Path
+ Write-Verbose "Downloaded to '$Path'"
+ return $True
+ }
+ catch {
+ $Attempt++
+ if ($Attempt -Lt $DownloadRetries) {
+ $AttemptsLeft = $DownloadRetries - $Attempt
+ Write-Warning "Download failed, $AttemptsLeft attempts remaining, will retry in $RetryWaitTimeInSeconds seconds"
+ Start-Sleep -Seconds $RetryWaitTimeInSeconds
+ }
+ else {
+ Write-Error $_
+ Write-Error $_.Exception
+ }
+ }
+ }
+ }
+
+ return $False
+}
+
+<#
+.SYNOPSIS
+Generate a shim for a native tool
+
+.DESCRIPTION
+Creates a wrapper script (shim) that passes arguments forward to native tool assembly
+
+.PARAMETER ShimName
+The name of the shim
+
+.PARAMETER ShimDirectory
+The directory where shims are stored
+
+.PARAMETER ToolFilePath
+Path to file that shim forwards to
+
+.PARAMETER Force
+Replace shim if already present. Default = False
+
+.NOTES
+Returns $True if generating shim succeeds, $False otherwise
+#>
+function New-ScriptShim {
+ [CmdletBinding(PositionalBinding=$false)]
+ Param (
+ [Parameter(Mandatory=$True)]
+ [string] $ShimName,
+ [Parameter(Mandatory=$True)]
+ [string] $ShimDirectory,
+ [Parameter(Mandatory=$True)]
+ [string] $ToolFilePath,
+ [Parameter(Mandatory=$True)]
+ [string] $BaseUri,
+ [switch] $Force
+ )
+ try {
+ Write-Verbose "Generating '$ShimName' shim"
+
+ if (-Not (Test-Path $ToolFilePath)){
+ Write-Error "Specified tool file path '$ToolFilePath' does not exist"
+ return $False
+ }
+
+ # WinShimmer is a small .NET Framework program that creates .exe shims to bootstrapped programs
+ # Many of the checks for installed programs expect a .exe extension for Windows tools, rather
+ # than a .bat or .cmd file.
+ # Source: https://github.com/dotnet/arcade/tree/master/src/WinShimmer
+ if (-Not (Test-Path "$ShimDirectory\WinShimmer\winshimmer.exe")) {
+ $InstallStatus = DownloadAndExtract -Uri "$BaseUri/windows/winshimmer/WinShimmer.zip" `
+ -InstallDirectory $ShimDirectory\WinShimmer `
+ -Force:$Force `
+ -DownloadRetries 2 `
+ -RetryWaitTimeInSeconds 5 `
+ -Verbose:$Verbose
+ }
+
+ if ((Test-Path (Join-Path $ShimDirectory "$ShimName.exe"))) {
+ Write-Host "$ShimName.exe already exists; replacing..."
+ Remove-Item (Join-Path $ShimDirectory "$ShimName.exe")
+ }
+
+ Invoke-Expression "$ShimDirectory\WinShimmer\winshimmer.exe $ShimName $ToolFilePath $ShimDirectory"
+ return $True
+ }
+ catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ return $False
+ }
+}
+
+<#
+.SYNOPSIS
+Returns the machine architecture of the host machine
+
+.NOTES
+Returns 'x64' on 64 bit machines
+ Returns 'x86' on 32 bit machines
+#>
+function Get-MachineArchitecture {
+ $ProcessorArchitecture = $Env:PROCESSOR_ARCHITECTURE
+ $ProcessorArchitectureW6432 = $Env:PROCESSOR_ARCHITEW6432
+ if($ProcessorArchitecture -Eq "X86")
+ {
+ if(($ProcessorArchitectureW6432 -Eq "") -Or
+ ($ProcessorArchitectureW6432 -Eq "X86")) {
+ return "x86"
+ }
+ $ProcessorArchitecture = $ProcessorArchitectureW6432
+ }
+ if (($ProcessorArchitecture -Eq "AMD64") -Or
+ ($ProcessorArchitecture -Eq "IA64") -Or
+ ($ProcessorArchitecture -Eq "ARM64")) {
+ return "x64"
+ }
+ return "x86"
+}
+
+<#
+.SYNOPSIS
+Get the name of a temporary folder under the native install directory
+#>
+function Get-TempDirectory {
+ return Join-Path (Get-NativeInstallDirectory) "temp/"
+}
+
+function Get-TempPathFilename {
+ [CmdletBinding(PositionalBinding=$false)]
+ Param (
+ [Parameter(Mandatory=$True)]
+ [string] $Path
+ )
+ $TempDir = CommonLibrary\Get-TempDirectory
+ $TempFilename = Split-Path $Path -leaf
+ $TempPath = Join-Path $TempDir $TempFilename
+ return $TempPath
+}
+
+<#
+.SYNOPSIS
+Returns the base directory to use for native tool installation
+
+.NOTES
+Returns the value of the NETCOREENG_INSTALL_DIRECTORY if that environment variable
+is set, or otherwise returns an install directory under the %USERPROFILE%
+#>
+function Get-NativeInstallDirectory {
+ $InstallDir = $Env:NETCOREENG_INSTALL_DIRECTORY
+ if (!$InstallDir) {
+ $InstallDir = Join-Path $Env:USERPROFILE ".netcoreeng/native/"
+ }
+ return $InstallDir
+}
+
+<#
+.SYNOPSIS
+Unzip an archive
+
+.DESCRIPTION
+Powershell module to unzip an archive to a specified directory
+
+.PARAMETER ZipPath (Required)
+Path to archive to unzip
+
+.PARAMETER OutputDirectory (Required)
+Output directory for archive contents
+
+.PARAMETER Force
+Overwrite output directory contents if they already exist
+
+.NOTES
+- Returns True and does not perform an extraction if output directory already exists but Overwrite is not True.
+- Returns True if unzip operation is successful
+- Returns False if Overwrite is True and it is unable to remove contents of OutputDirectory
+- Returns False if unable to extract zip archive
+#>
+function Expand-Zip {
+ [CmdletBinding(PositionalBinding=$false)]
+ Param (
+ [Parameter(Mandatory=$True)]
+ [string] $ZipPath,
+ [Parameter(Mandatory=$True)]
+ [string] $OutputDirectory,
+ [switch] $Force
+ )
+
+ Write-Verbose "Extracting '$ZipPath' to '$OutputDirectory'"
+ try {
+ if ((Test-Path $OutputDirectory) -And (-Not $Force)) {
+ Write-Host "Directory '$OutputDirectory' already exists, skipping extract"
+ return $True
+ }
+ if (Test-Path $OutputDirectory) {
+ Write-Verbose "'Force' is 'True', but '$OutputDirectory' exists, removing directory"
+ Remove-Item $OutputDirectory -Force -Recurse
+ if ($? -Eq $False) {
+ Write-Error "Unable to remove '$OutputDirectory'"
+ return $False
+ }
+ }
+ if (-Not (Test-Path $OutputDirectory)) {
+ New-Item -path $OutputDirectory -Force -itemType "Directory" | Out-Null
+ }
+
+ Add-Type -assembly "system.io.compression.filesystem"
+ [io.compression.zipfile]::ExtractToDirectory("$ZipPath", "$OutputDirectory")
+ if ($? -Eq $False) {
+ Write-Error "Unable to extract '$ZipPath'"
+ return $False
+ }
+ }
+ catch {
+ Write-Host $_
+ Write-Host $_.Exception
+
+ return $False
+ }
+ return $True
+}
+
+export-modulemember -function DownloadAndExtract
+export-modulemember -function Expand-Zip
+export-modulemember -function Get-File
+export-modulemember -function Get-MachineArchitecture
+export-modulemember -function Get-NativeInstallDirectory
+export-modulemember -function Get-TempDirectory
+export-modulemember -function Get-TempPathFilename
+export-modulemember -function New-ScriptShim
diff --git a/eng/common/native/common-library.sh b/eng/common/native/common-library.sh
new file mode 100755
index 00000000000..271bddfac5a
--- /dev/null
+++ b/eng/common/native/common-library.sh
@@ -0,0 +1,168 @@
+#!/usr/bin/env bash
+
+function GetNativeInstallDirectory {
+ local install_dir
+
+ if [[ -z $NETCOREENG_INSTALL_DIRECTORY ]]; then
+ install_dir=$HOME/.netcoreeng/native/
+ else
+ install_dir=$NETCOREENG_INSTALL_DIRECTORY
+ fi
+
+ echo $install_dir
+ return 0
+}
+
+function GetTempDirectory {
+
+ echo $(GetNativeInstallDirectory)temp/
+ return 0
+}
+
+function ExpandZip {
+ local zip_path=$1
+ local output_directory=$2
+ local force=${3:-false}
+
+ echo "Extracting $zip_path to $output_directory"
+ if [[ -d $output_directory ]] && [[ $force = false ]]; then
+ echo "Directory '$output_directory' already exists, skipping extract"
+ return 0
+ fi
+
+ if [[ -d $output_directory ]]; then
+ echo "'Force flag enabled, but '$output_directory' exists. Removing directory"
+ rm -rf $output_directory
+ if [[ $? != 0 ]]; then
+ echo Unable to remove '$output_directory'>&2
+ return 1
+ fi
+ fi
+
+ echo "Creating directory: '$output_directory'"
+ mkdir -p $output_directory
+
+ echo "Extracting archive"
+ tar -xf $zip_path -C $output_directory
+ if [[ $? != 0 ]]; then
+ echo "Unable to extract '$zip_path'" >&2
+ return 1
+ fi
+
+ return 0
+}
+
+function GetCurrentOS {
+ local unameOut="$(uname -s)"
+ case $unameOut in
+ Linux*) echo "Linux";;
+ Darwin*) echo "MacOS";;
+ esac
+ return 0
+}
+
+function GetFile {
+ local uri=$1
+ local path=$2
+ local force=${3:-false}
+ local download_retries=${4:-5}
+ local retry_wait_time_seconds=${5:-30}
+
+ if [[ -f $path ]]; then
+ if [[ $force = false ]]; then
+ echo "File '$path' already exists. Skipping download"
+ return 0
+ else
+ rm -rf $path
+ fi
+ fi
+
+ if [[ -f $uri ]]; then
+ echo "'$uri' is a file path, copying file to '$path'"
+ cp $uri $path
+ return $?
+ fi
+
+ echo "Downloading $uri"
+ # Use curl if available, otherwise use wget
+ if command -v curl > /dev/null; then
+ curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail
+ else
+ wget -q -O "$path" "$uri" --tries="$download_retries"
+ fi
+
+ return $?
+}
+
+function GetTempPathFileName {
+ local path=$1
+
+ local temp_dir=$(GetTempDirectory)
+ local temp_file_name=$(basename $path)
+ echo $temp_dir$temp_file_name
+ return 0
+}
+
+function DownloadAndExtract {
+ local uri=$1
+ local installDir=$2
+ local force=${3:-false}
+ local download_retries=${4:-5}
+ local retry_wait_time_seconds=${5:-30}
+
+ local temp_tool_path=$(GetTempPathFileName $uri)
+
+ echo "downloading to: $temp_tool_path"
+
+ # Download file
+ GetFile "$uri" "$temp_tool_path" $force $download_retries $retry_wait_time_seconds
+ if [[ $? != 0 ]]; then
+ echo "Failed to download '$uri' to '$temp_tool_path'." >&2
+ return 1
+ fi
+
+ # Extract File
+ echo "extracting from $temp_tool_path to $installDir"
+ ExpandZip "$temp_tool_path" "$installDir" $force $download_retries $retry_wait_time_seconds
+ if [[ $? != 0 ]]; then
+ echo "Failed to extract '$temp_tool_path' to '$installDir'." >&2
+ return 1
+ fi
+
+ return 0
+}
+
+function NewScriptShim {
+ local shimpath=$1
+ local tool_file_path=$2
+ local force=${3:-false}
+
+ echo "Generating '$shimpath' shim"
+ if [[ -f $shimpath ]]; then
+ if [[ $force = false ]]; then
+ echo "File '$shimpath' already exists." >&2
+ return 1
+ else
+ rm -rf $shimpath
+ fi
+ fi
+
+ if [[ ! -f $tool_file_path ]]; then
+ echo "Specified tool file path:'$tool_file_path' does not exist" >&2
+ return 1
+ fi
+
+ local shim_contents=$'#!/usr/bin/env bash\n'
+ shim_contents+="SHIMARGS="$'$1\n'
+ shim_contents+="$tool_file_path"$' $SHIMARGS\n'
+
+ # Write shim file
+ echo "$shim_contents" > $shimpath
+
+ chmod +x $shimpath
+
+ echo "Finished generating shim '$shimpath'"
+
+ return $?
+}
+
diff --git a/eng/common/native/install-cmake.sh b/eng/common/native/install-cmake.sh
new file mode 100755
index 00000000000..293af6017df
--- /dev/null
+++ b/eng/common/native/install-cmake.sh
@@ -0,0 +1,117 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+
+. $scriptroot/common-library.sh
+
+base_uri=
+install_path=
+version=
+clean=false
+force=false
+download_retries=5
+retry_wait_time_seconds=30
+
+while (($# > 0)); do
+ lowerI="$(echo $1 | awk '{print tolower($0)}')"
+ case $lowerI in
+ --baseuri)
+ base_uri=$2
+ shift 2
+ ;;
+ --installpath)
+ install_path=$2
+ shift 2
+ ;;
+ --version)
+ version=$2
+ shift 2
+ ;;
+ --clean)
+ clean=true
+ shift 1
+ ;;
+ --force)
+ force=true
+ shift 1
+ ;;
+ --downloadretries)
+ download_retries=$2
+ shift 2
+ ;;
+ --retrywaittimeseconds)
+ retry_wait_time_seconds=$2
+ shift 2
+ ;;
+ --help)
+ echo "Common settings:"
+ echo " --baseuri Base file directory or Url wrom which to acquire tool archives"
+ echo " --installpath Base directory to install native tool to"
+ echo " --clean Don't install the tool, just clean up the current install of the tool"
+ echo " --force Force install of tools even if they previously exist"
+ echo " --help Print help and exit"
+ echo ""
+ echo "Advanced settings:"
+ echo " --downloadretries Total number of retry attempts"
+ echo " --retrywaittimeseconds Wait time between retry attempts in seconds"
+ echo ""
+ exit 0
+ ;;
+ esac
+done
+
+tool_name="cmake"
+tool_os=$(GetCurrentOS)
+tool_folder=$(echo $tool_os | awk '{print tolower($0)}')
+tool_arch="x86_64"
+tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch"
+tool_install_directory="$install_path/$tool_name/$version"
+tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name"
+shim_path="$install_path/$tool_name.sh"
+uri="${base_uri}/$tool_folder/cmake/$tool_name_moniker.tar.gz"
+
+# Clean up tool and installers
+if [[ $clean = true ]]; then
+ echo "Cleaning $tool_install_directory"
+ if [[ -d $tool_install_directory ]]; then
+ rm -rf $tool_install_directory
+ fi
+
+ echo "Cleaning $shim_path"
+ if [[ -f $shim_path ]]; then
+ rm -rf $shim_path
+ fi
+
+ tool_temp_path=$(GetTempPathFileName $uri)
+ echo "Cleaning $tool_temp_path"
+ if [[ -f $tool_temp_path ]]; then
+ rm -rf $tool_temp_path
+ fi
+
+ exit 0
+fi
+
+# Install tool
+if [[ -f $tool_file_path ]] && [[ $force = false ]]; then
+ echo "$tool_name ($version) already exists, skipping install"
+ exit 0
+fi
+
+DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds
+
+if [[ $? != 0 ]]; then
+ echo "Installation failed" >&2
+ exit 1
+fi
+
+# Generate Shim
+# Always rewrite shims so that we are referencing the expected version
+NewScriptShim $shim_path $tool_file_path true
+
+if [[ $? != 0 ]]; then
+ echo "Shim generation failed" >&2
+ exit 1
+fi
+
+exit 0
\ No newline at end of file
diff --git a/eng/common/native/install-tool.ps1 b/eng/common/native/install-tool.ps1
new file mode 100644
index 00000000000..635ab3fd414
--- /dev/null
+++ b/eng/common/native/install-tool.ps1
@@ -0,0 +1,130 @@
+<#
+.SYNOPSIS
+Install native tool
+
+.DESCRIPTION
+Install cmake native tool from Azure blob storage
+
+.PARAMETER InstallPath
+Base directory to install native tool to
+
+.PARAMETER BaseUri
+Base file directory or Url from which to acquire tool archives
+
+.PARAMETER CommonLibraryDirectory
+Path to folder containing common library modules
+
+.PARAMETER Force
+Force install of tools even if they previously exist
+
+.PARAMETER Clean
+Don't install the tool, just clean up the current install of the tool
+
+.PARAMETER DownloadRetries
+Total number of retry attempts
+
+.PARAMETER RetryWaitTimeInSeconds
+Wait time between retry attempts in seconds
+
+.NOTES
+Returns 0 if install succeeds, 1 otherwise
+#>
+[CmdletBinding(PositionalBinding=$false)]
+Param (
+ [Parameter(Mandatory=$True)]
+ [string] $ToolName,
+ [Parameter(Mandatory=$True)]
+ [string] $InstallPath,
+ [Parameter(Mandatory=$True)]
+ [string] $BaseUri,
+ [Parameter(Mandatory=$True)]
+ [string] $Version,
+ [string] $CommonLibraryDirectory = $PSScriptRoot,
+ [switch] $Force = $False,
+ [switch] $Clean = $False,
+ [int] $DownloadRetries = 5,
+ [int] $RetryWaitTimeInSeconds = 30
+)
+
+# Import common library modules
+Import-Module -Name (Join-Path $CommonLibraryDirectory "CommonLibrary.psm1")
+
+try {
+ # Define verbose switch if undefined
+ $Verbose = $VerbosePreference -Eq "Continue"
+
+ $Arch = CommonLibrary\Get-MachineArchitecture
+ $ToolOs = "win64"
+ if($Arch -Eq "x32") {
+ $ToolOs = "win32"
+ }
+ $ToolNameMoniker = "$ToolName-$Version-$ToolOs-$Arch"
+ $ToolInstallDirectory = Join-Path $InstallPath "$ToolName\$Version\"
+ $Uri = "$BaseUri/windows/$ToolName/$ToolNameMoniker.zip"
+ $ShimPath = Join-Path $InstallPath "$ToolName.exe"
+
+ if ($Clean) {
+ Write-Host "Cleaning $ToolInstallDirectory"
+ if (Test-Path $ToolInstallDirectory) {
+ Remove-Item $ToolInstallDirectory -Force -Recurse
+ }
+ Write-Host "Cleaning $ShimPath"
+ if (Test-Path $ShimPath) {
+ Remove-Item $ShimPath -Force
+ }
+ $ToolTempPath = CommonLibrary\Get-TempPathFilename -Path $Uri
+ Write-Host "Cleaning $ToolTempPath"
+ if (Test-Path $ToolTempPath) {
+ Remove-Item $ToolTempPath -Force
+ }
+ exit 0
+ }
+
+ # Install tool
+ if ((Test-Path $ToolInstallDirectory) -And (-Not $Force)) {
+ Write-Verbose "$ToolName ($Version) already exists, skipping install"
+ }
+ else {
+ $InstallStatus = CommonLibrary\DownloadAndExtract -Uri $Uri `
+ -InstallDirectory $ToolInstallDirectory `
+ -Force:$Force `
+ -DownloadRetries $DownloadRetries `
+ -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds `
+ -Verbose:$Verbose
+
+ if ($InstallStatus -Eq $False) {
+ Write-Error "Installation failed"
+ exit 1
+ }
+ }
+
+ $ToolFilePath = Get-ChildItem $ToolInstallDirectory -Recurse -Filter "$ToolName.exe" | % { $_.FullName }
+ if (@($ToolFilePath).Length -Gt 1) {
+ Write-Error "There are multiple copies of $ToolName in $($ToolInstallDirectory): `n$(@($ToolFilePath | out-string))"
+ exit 1
+ } elseif (@($ToolFilePath).Length -Lt 1) {
+ Write-Error "$ToolName was not found in $ToolFilePath."
+ exit 1
+ }
+
+ # Generate shim
+ # Always rewrite shims so that we are referencing the expected version
+ $GenerateShimStatus = CommonLibrary\New-ScriptShim -ShimName $ToolName `
+ -ShimDirectory $InstallPath `
+ -ToolFilePath "$ToolFilePath" `
+ -BaseUri $BaseUri `
+ -Force:$Force `
+ -Verbose:$Verbose
+
+ if ($GenerateShimStatus -Eq $False) {
+ Write-Error "Generate shim failed"
+ return 1
+ }
+
+ exit 0
+}
+catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ exit 1
+}
diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1
new file mode 100644
index 00000000000..9ba7530122f
--- /dev/null
+++ b/eng/common/sdk-task.ps1
@@ -0,0 +1,74 @@
+[CmdletBinding(PositionalBinding=$false)]
+Param(
+ [string] $projects = "",
+ [string][Alias('v')]$verbosity = "minimal",
+ [string] $msbuildEngine = $null,
+ [bool] $warnAsError = $true,
+ [switch][Alias('bl')]$binaryLog,
+ [switch][Alias('r')]$restore,
+ [switch] $ci,
+ [switch] $prepareMachine,
+ [switch] $help,
+ [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
+)
+
+. $PSScriptRoot\tools.ps1
+
+function Print-Usage() {
+ Write-Host "Common settings:"
+ Write-Host " -v[erbosity] Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
+ Write-Host " -[bl|binaryLog] Output binary log (short: -bl)"
+ Write-Host " -help Print help and exit"
+ Write-Host ""
+
+ Write-Host "Advanced settings:"
+ Write-Host " -restore Restore dependencies (short: -r)"
+ Write-Host " -projects Semi-colon delimited list of sln/proj's from the Arcade sdk to build. Globbing is supported (*.sln)"
+ Write-Host " -ci Set when running on CI server"
+ Write-Host " -prepareMachine Prepare machine for CI run"
+ Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
+ Write-Host ""
+ Write-Host "Command line arguments not listed above are passed thru to msbuild."
+ Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
+}
+
+function Build {
+ $toolsetBuildProj = InitializeToolset
+
+ $toolsetBuildProj = Join-Path (Split-Path $toolsetBuildProj -Parent) "SdkTasks\SdkTask.proj"
+ $bl = if ($binaryLog) { "/bl:" + (Join-Path $LogDir "SdkTask.binlog") } else { "" }
+ MSBuild $toolsetBuildProj `
+ $bl `
+ /p:Projects=$projects `
+ /p:Restore=$restore `
+ /p:RepoRoot=$RepoRoot `
+ /p:ContinuousIntegrationBuild=$ci `
+ @properties
+}
+
+try {
+ if ($help -or (($null -ne $properties) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) {
+ Print-Usage
+ exit 0
+ }
+
+ if ($projects -eq "") {
+ Write-Error "Missing required parameter '-projects '"
+ Print-Usage
+ ExitWithExitCode 1
+ }
+
+ if ($ci) {
+ $binaryLog = $true
+ }
+
+ Build
+}
+catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ Write-Host $_.ScriptStackTrace
+ ExitWithExitCode 1
+}
+
+ExitWithExitCode 0
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
new file mode 100644
index 00000000000..5e293db35d7
--- /dev/null
+++ b/eng/common/templates/job/job.yml
@@ -0,0 +1,205 @@
+parameters:
+# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ cancelTimeoutInMinutes: ''
+
+ condition: ''
+
+ continueOnError: false
+
+ container: ''
+
+ dependsOn: ''
+
+ displayName: ''
+
+ steps: []
+
+ pool: ''
+
+ strategy: ''
+
+ timeoutInMinutes: ''
+
+ variables: []
+
+ workspace: ''
+
+# Job base template specific parameters
+ # Optional: Enable installing Microbuild plugin
+ # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
+ # _TeamName - the name of your team
+ # _SignType - 'test' or 'real'
+ enableMicrobuild: false
+
+ # Optional: Include PublishBuildArtifacts task
+ enablePublishBuildArtifacts: false
+
+ # Optional: Enable publishing to the build asset registry
+ enablePublishBuildAssets: false
+
+ # Optional: Include PublishTestResults task
+ enablePublishTestResults: false
+
+ # Optional: enable sending telemetry
+ # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
+ # _HelixBuildConfig - differentiate between Debug, Release, other
+ # _HelixType - Example: build/product/
+ # _HelixSource - Example: official/dotnet/arcade/$(Build.SourceBranch)
+ enableTelemetry: false
+
+ # Optional: If specified, then automatically derive "_HelixSource" variable for telemetry
+ helixRepo: ''
+
+ # Optional: Define the type for helix telemetry (must end in '/')
+ helixType: build/product/
+
+ # Required: name of the job
+ name: ''
+
+ # Optional: should run as a public build even in the internal project
+ # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
+ runAsPublic: false
+
+# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
+# and some (Microbuild) should only be applied to non-PR cases for internal builds.
+
+jobs:
+- job: ${{ parameters.name }}
+
+ ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
+ cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
+
+ ${{ if ne(parameters.condition, '') }}:
+ condition: ${{ parameters.condition }}
+
+ ${{ if ne(parameters.container, '') }}:
+ container: ${{ parameters.container }}
+
+ ${{ if ne(parameters.continueOnError, '') }}:
+ continueOnError: ${{ parameters.continueOnError }}
+
+ ${{ if ne(parameters.dependsOn, '') }}:
+ dependsOn: ${{ parameters.dependsOn }}
+
+ ${{ if ne(parameters.displayName, '') }}:
+ displayName: ${{ parameters.displayName }}
+
+ ${{ if ne(parameters.pool, '') }}:
+ pool: ${{ parameters.pool }}
+
+ ${{ if ne(parameters.strategy, '') }}:
+ strategy: ${{ parameters.strategy }}
+
+ ${{ if ne(parameters.timeoutInMinutes, '') }}:
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+
+ variables:
+ - ${{ each variable in parameters.variables }}:
+ # handle name-value variable syntax
+ # example:
+ # - name: [key]
+ # value: [value]
+ - ${{ if ne(variable.name, '') }}:
+ - name: ${{ variable.name }}
+ value: ${{ variable.value }}
+
+ # handle variable groups
+ - ${{ if ne(variable.group, '') }}:
+ - group: ${{ variable.group }}
+
+ # handle key-value variable syntax.
+ # example:
+ # - [key]: [value]
+ - ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}:
+ - ${{ each pair in variable }}:
+ - name: ${{ pair.key }}
+ value: ${{ pair.value }}
+
+ # Add additional variables
+ - ${{ if and(ne(parameters.helixRepo, ''), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}:
+ - name: _HelixSource
+ value: official/${{ parameters.helixRepo }}/$(Build.SourceBranch)
+ - ${{ if and(ne(parameters.helixRepo, ''), or(ne(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest'))) }}:
+ - name: _HelixSource
+ value: pr/${{ parameters.helixRepo }}/$(Build.SourceBranch)
+ - name: _HelixType
+ value: ${{ parameters.helixType }}
+ - name: _HelixBuildConfig
+ value: $(_BuildConfig)
+
+ ${{ if ne(parameters.workspace, '') }}:
+ workspace: ${{ parameters.workspace }}
+
+ steps:
+ - ${{ if eq(parameters.enableTelemetry, 'true') }}:
+ - template: /eng/common/templates/steps/telemetry-start.yml
+ parameters:
+ buildConfig: $(_HelixBuildConfig)
+ helixSource: $(_HelixSource)
+ helixType: $(_HelixType)
+ runAsPublic: ${{ parameters.runAsPublic }}
+
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: MicroBuildSigningPlugin@2
+ displayName: Install MicroBuild plugin
+ inputs:
+ signType: $(_SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ env:
+ TeamName: $(_TeamName)
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+
+ - ${{ each step in parameters.steps }}:
+ - ${{ step }}
+
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: MicroBuildCleanup@1
+ displayName: Execute Microbuild cleanup tasks
+ condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ env:
+ TeamName: $(_TeamName)
+
+ - ${{ if eq(parameters.enableTelemetry, 'true') }}:
+ - template: /eng/common/templates/steps/telemetry-end.yml
+
+ - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
+ - task: PublishBuildArtifacts@1
+ displayName: Publish Logs to VSTS
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
+ PublishLocation: Container
+ ArtifactName: $(Agent.Os)_$(Agent.JobName)
+ continueOnError: true
+ condition: always()
+
+ - ${{ if eq(parameters.enablePublishTestResults, 'true') }}:
+ - task: PublishTestResults@2
+ displayName: Publish Test Results
+ inputs:
+ testResultsFormat: 'xUnit'
+ testResultsFiles: '*.xml'
+ searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ continueOnError: true
+ condition: always()
+
+ - ${{ if and(eq(parameters.enablePublishBuildAssets, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
+ TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+ - task: PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
\ No newline at end of file
diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml
new file mode 100644
index 00000000000..c094658fefc
--- /dev/null
+++ b/eng/common/templates/job/publish-build-assets.yml
@@ -0,0 +1,63 @@
+parameters:
+ configuration: 'Debug'
+
+ # Optional: condition for the job to run
+ condition: ''
+
+ # Optional: 'true' if future jobs should run even if this job fails
+ continueOnError: false
+
+ # Optional: dependencies of the job
+ dependsOn: ''
+
+ # Optional: Include PublishBuildArtifacts task
+ enablePublishBuildArtifacts: false
+
+ # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
+ pool: {}
+
+ # Optional: should run as a public build even in the internal project
+ # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
+ runAsPublic: false
+
+jobs:
+- job: Asset_Registry_Publish
+
+ dependsOn: ${{ parameters.dependsOn }}
+
+ displayName: Publish to Build Asset Registry
+
+ pool: ${{ parameters.pool }}
+
+ variables:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - name: _BuildConfig
+ value: ${{ parameters.configuration }}
+ - group: Publish-Build-Assets
+
+ steps:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download artifact
+ inputs:
+ artifactName: AssetManifests
+ downloadPath: '$(Build.StagingDirectory)/Download'
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+ - script: eng\common\publishbuildassets.cmd
+ /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
+ /p:BuildAssetRegistryToken=$(MaestroAccessToken)
+ /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
+ /p:Configuration=$(_BuildConfig)
+ displayName: Publish Build Assets
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+ - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
+ - task: PublishBuildArtifacts@1
+ displayName: Publish Logs to VSTS
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
+ PublishLocation: Container
+ ArtifactName: $(Agent.Os)_PublishBuildAssets
+ continueOnError: true
+ condition: always()
diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml
new file mode 100644
index 00000000000..c7226b12ed2
--- /dev/null
+++ b/eng/common/templates/jobs/jobs.yml
@@ -0,0 +1,77 @@
+parameters:
+ # Optional: 'true' if failures in job.yml job should not fail the job
+ continueOnError: false
+
+ # Optional: Enable installing Microbuild plugin
+ # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
+ # _TeamName - the name of your team
+ # _SignType - 'test' or 'real'
+ enableMicrobuild: false
+
+ # Optional: Include PublishBuildArtifacts task
+ enablePublishBuildArtifacts: false
+
+ # Optional: Enable publishing to the build asset registry
+ enablePublishBuildAssets: false
+
+ # Optional: Include PublishTestResults task
+ enablePublishTestResults: false
+
+ # Optional: enable sending telemetry
+ # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
+ # _HelixBuildConfig - differentiate between Debug, Release, other
+ # _HelixType - Example: build/product/
+ # _HelixSource - Example: official/dotnet/arcade/$(Build.SourceBranch)
+ enableTelemetry: false
+
+ # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ jobs: []
+
+ # Optional: If specified, then automatically derive "_HelixSource" variable for telemetry
+ helixRepo: ''
+
+ # Optional: Define the type for helix telemetry (must end in '/')
+ helixType: build/product/
+
+ # Optional: Override automatically derived dependsOn value for "publish build assets" job
+ publishBuildAssetsDependsOn: ''
+
+ # Optional: should run as a public build even in the internal project
+ # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
+ runAsPublic: false
+
+# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
+# and some (Microbuild) should only be applied to non-PR cases for internal builds.
+
+jobs:
+- ${{ each job in parameters.jobs }}:
+ - template: ../job/job.yml
+ parameters:
+ # pass along parameters
+ ${{ each parameter in parameters }}:
+ ${{ if ne(parameter.key, 'jobs') }}:
+ ${{ parameter.key }}: ${{ parameter.value }}
+
+ # pass along job properties
+ ${{ each property in job }}:
+ ${{ if ne(property.key, 'job') }}:
+ ${{ property.key }}: ${{ property.value }}
+
+ name: ${{ job.job }}
+
+- ${{ if and(eq(parameters.enablePublishBuildAssets, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - template: ../job/publish-build-assets.yml
+ parameters:
+ continueOnError: ${{ parameters.continueOnError }}
+ dependsOn:
+ - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
+ - ${{ each job in parameters.publishBuildAssetsDependsOn }}:
+ - ${{ job.job }}
+ - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
+ - ${{ each job in parameters.jobs }}:
+ - ${{ job.job }}
+ pool:
+ vmImage: vs2017-win2016
+ runAsPublic: ${{ parameters.runAsPublic }}
+ enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
+
diff --git a/eng/common/templates/phases/base.yml b/eng/common/templates/phases/base.yml
new file mode 100644
index 00000000000..0123cf43b16
--- /dev/null
+++ b/eng/common/templates/phases/base.yml
@@ -0,0 +1,130 @@
+parameters:
+ # Optional: Clean sources before building
+ clean: true
+
+ # Optional: Git fetch depth
+ fetchDepth: ''
+
+ # Optional: name of the phase (not specifying phase name may cause name collisions)
+ name: ''
+ # Optional: display name of the phase
+ displayName: ''
+
+ # Optional: condition for the job to run
+ condition: ''
+
+ # Optional: dependencies of the phase
+ dependsOn: ''
+
+ # Required: A defined YAML queue
+ queue: {}
+
+ # Required: build steps
+ steps: []
+
+ # Optional: variables
+ variables: {}
+
+ # Optional: should run as a public build even in the internal project
+ # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
+ runAsPublic: false
+
+ ## Telemetry variables
+
+ # Optional: enable sending telemetry
+ # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
+ # _HelixBuildConfig - differentiate between Debug, Release, other
+ # _HelixSource - Example: build/product
+ # _HelixType - Example: official/dotnet/arcade/$(Build.SourceBranch)
+ enableTelemetry: false
+
+ # Optional: Enable installing Microbuild plugin
+ # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
+ # _TeamName - the name of your team
+ # _SignType - 'test' or 'real'
+ enableMicrobuild: false
+
+# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
+# and some (Microbuild) should only be applied to non-PR cases for internal builds.
+
+phases:
+- phase: ${{ parameters.name }}
+
+ ${{ if ne(parameters.displayName, '') }}:
+ displayName: ${{ parameters.displayName }}
+
+ ${{ if ne(parameters.condition, '') }}:
+ condition: ${{ parameters.condition }}
+
+ ${{ if ne(parameters.dependsOn, '') }}:
+ dependsOn: ${{ parameters.dependsOn }}
+
+ queue: ${{ parameters.queue }}
+
+ ${{ if ne(parameters.variables, '') }}:
+ variables:
+ ${{ insert }}: ${{ parameters.variables }}
+
+ steps:
+ - checkout: self
+ clean: ${{ parameters.clean }}
+ ${{ if ne(parameters.fetchDepth, '') }}:
+ fetchDepth: ${{ parameters.fetchDepth }}
+
+ - ${{ if eq(parameters.enableTelemetry, 'true') }}:
+ - template: /eng/common/templates/steps/telemetry-start.yml
+ parameters:
+ buildConfig: $(_HelixBuildConfig)
+ helixSource: $(_HelixSource)
+ helixType: $(_HelixType)
+ runAsPublic: ${{ parameters.runAsPublic }}
+
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ # Internal only resource, and Microbuild signing shouldn't be applied to PRs.
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: MicroBuildSigningPlugin@2
+ displayName: Install MicroBuild plugin
+ inputs:
+ signType: $(_SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+
+ env:
+ TeamName: $(_TeamName)
+ continueOnError: false
+ condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+
+ # Run provided build steps
+ - ${{ parameters.steps }}
+
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ # Internal only resources
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: MicroBuildCleanup@1
+ displayName: Execute Microbuild cleanup tasks
+ condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+ env:
+ TeamName: $(_TeamName)
+
+ - ${{ if eq(parameters.enableTelemetry, 'true') }}:
+ - template: /eng/common/templates/steps/telemetry-end.yml
+ parameters:
+ helixSource: $(_HelixSource)
+ helixType: $(_HelixType)
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
+ TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
+ continueOnError: false
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+ - task: PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: false
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
diff --git a/eng/common/templates/phases/publish-build-assets.yml b/eng/common/templates/phases/publish-build-assets.yml
new file mode 100644
index 00000000000..0df6203b506
--- /dev/null
+++ b/eng/common/templates/phases/publish-build-assets.yml
@@ -0,0 +1,46 @@
+parameters:
+ dependsOn: ''
+ queue: {}
+ configuration: 'Debug'
+ condition: succeeded()
+ continueOnError: false
+ runAsPublic: false
+phases:
+ - phase: Asset_Registry_Publish
+ displayName: Publish to Build Asset Registry
+ dependsOn: ${{ parameters.dependsOn }}
+ queue: ${{ parameters.queue }}
+ variables:
+ _BuildConfig: ${{ parameters.configuration }}
+ steps:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download artifact
+ inputs:
+ artifactName: AssetManifests
+ downloadPath: '$(Build.StagingDirectory)/Download'
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+ - task: AzureKeyVault@1
+ inputs:
+ azureSubscription: 'DotNet-Engineering-Services_KeyVault'
+ KeyVaultName: EngKeyVault
+ SecretsFilter: 'MaestroAccessToken'
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+ - script: eng\common\publishbuildassets.cmd
+ -configuration $(_BuildConfig)
+ /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
+ /p:BuildAssetRegistryToken=$(MaestroAccessToken)
+ /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
+ displayName: Publish Build Assets
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+ - task: PublishBuildArtifacts@1
+ displayName: Publish Logs to VSTS
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
+ PublishLocation: Container
+ ArtifactName: $(Agent.Os)_Asset_Registry_Publish
+ continueOnError: true
+ condition: always()
diff --git a/eng/common/templates/steps/build-reason.yml b/eng/common/templates/steps/build-reason.yml
new file mode 100644
index 00000000000..eba58109b52
--- /dev/null
+++ b/eng/common/templates/steps/build-reason.yml
@@ -0,0 +1,12 @@
+# build-reason.yml
+# Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons
+# to include steps (',' separated).
+parameters:
+ conditions: ''
+ steps: []
+
+steps:
+ - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}:
+ - ${{ parameters.steps }}
+ - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}:
+ - ${{ parameters.steps }}
diff --git a/eng/common/templates/steps/helix-publish.yml b/eng/common/templates/steps/helix-publish.yml
new file mode 100644
index 00000000000..470ab65da0c
--- /dev/null
+++ b/eng/common/templates/steps/helix-publish.yml
@@ -0,0 +1,51 @@
+parameters:
+ HelixSource: 'pr/dotnet-github-anon-kaonashi-bot'
+ HelixType: ̓'tests/default'
+ HelixBuild: $(Build.BuildNumber)
+ HelixTargetQueues: ''
+ HelixAccessToken: ''
+ HelixPreCommands: ''
+ HelixPostCommands: ''
+ WorkItemDirectory: ''
+ WorkItemCommand: ''
+ CorrelationPayloadDirectory: ''
+ XUnitProjects: ''
+ XUnitTargetFramework: ''
+ XUnitRunnerVersion: ''
+ IncludeDotNetCli: false
+ DotNetCliPackageType: ''
+ DotNetCliVersion: ''
+ EnableXUnitReporter: false
+ WaitForWorkItemCompletion: true
+ condition: succeeded()
+ continueOnError: false
+
+steps:
+ - task: DotNetCoreCLI@2
+ inputs:
+ command: custom
+ projects: eng/common/helixpublish.proj
+ custom: msbuild
+ arguments: '/bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog'
+ displayName: Send job to Helix
+ env:
+ HelixSource: ${{ parameters.HelixSource }}
+ HelixType: ${{ parameters.HelixType }}
+ HelixBuild: ${{ parameters.HelixBuild }}
+ HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
+ HelixAccessToken: ${{ parameters.HelixAccessToken }}
+ HelixPreCommands: ${{ parameters.HelixPreCommands }}
+ HelixPostCommands: ${{ parameters.HelixPostCommands }}
+ WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
+ WorkItemCommand: ${{ parameters.WorkItemCommand }}
+ CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
+ XUnitProjects: ${{ parameters.XUnitProjects }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitTargetFramework }}
+ XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
+ IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
+ DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
+ DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
+ EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
+ WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
diff --git a/eng/common/templates/steps/run-on-unix.yml b/eng/common/templates/steps/run-on-unix.yml
new file mode 100644
index 00000000000..e1733814f65
--- /dev/null
+++ b/eng/common/templates/steps/run-on-unix.yml
@@ -0,0 +1,7 @@
+parameters:
+ agentOs: ''
+ steps: []
+
+steps:
+- ${{ if ne(parameters.agentOs, 'Windows_NT') }}:
+ - ${{ parameters.steps }}
diff --git a/eng/common/templates/steps/run-on-windows.yml b/eng/common/templates/steps/run-on-windows.yml
new file mode 100644
index 00000000000..73e7e9c275a
--- /dev/null
+++ b/eng/common/templates/steps/run-on-windows.yml
@@ -0,0 +1,7 @@
+parameters:
+ agentOs: ''
+ steps: []
+
+steps:
+- ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
+ - ${{ parameters.steps }}
diff --git a/eng/common/templates/steps/run-script-ifequalelse.yml b/eng/common/templates/steps/run-script-ifequalelse.yml
new file mode 100644
index 00000000000..3d1242f5587
--- /dev/null
+++ b/eng/common/templates/steps/run-script-ifequalelse.yml
@@ -0,0 +1,33 @@
+parameters:
+ # if parameter1 equals parameter 2, run 'ifScript' command, else run 'elsescript' command
+ parameter1: ''
+ parameter2: ''
+ ifScript: ''
+ elseScript: ''
+
+ # name of script step
+ name: Script
+
+ # display name of script step
+ displayName: If-Equal-Else Script
+
+ # environment
+ env: {}
+
+ # conditional expression for step execution
+ condition: ''
+
+steps:
+- ${{ if and(ne(parameters.ifScript, ''), eq(parameters.parameter1, parameters.parameter2)) }}:
+ - script: ${{ parameters.ifScript }}
+ name: ${{ parameters.name }}
+ displayName: ${{ parameters.displayName }}
+ env: ${{ parameters.env }}
+ condition: ${{ parameters.condition }}
+
+- ${{ if and(ne(parameters.elseScript, ''), ne(parameters.parameter1, parameters.parameter2)) }}:
+ - script: ${{ parameters.elseScript }}
+ name: ${{ parameters.name }}
+ displayName: ${{ parameters.displayName }}
+ env: ${{ parameters.env }}
+ condition: ${{ parameters.condition }}
\ No newline at end of file
diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml
new file mode 100644
index 00000000000..a5835c0f473
--- /dev/null
+++ b/eng/common/templates/steps/send-to-helix.yml
@@ -0,0 +1,81 @@
+parameters:
+ HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/
+ HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/'
+ HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number
+ HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/api/2018-03-14/info/queues for a list of queues
+ HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group
+ HelixPreCommands: '' # optional -- commands to run before Helix work item execution
+ HelixPostCommands: '' # optional -- commands to run after Helix work item execution
+ WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
+ WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
+ WorkItemTimeout: '' # optional -- a timeout in seconds for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects
+ CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload
+ XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true
+ XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects
+ XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner
+ XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects
+ IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion
+ DotNetCliPackageType: '' # optional -- either 'sdk' or 'runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json
+ DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json
+ EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control
+ WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget."
+ IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set
+ Creator: '' # optional -- if the build is external, use this to specify who is sending the job
+ condition: succeeded() # optional -- condition for step to execute; defaults to succeeded()
+ continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false
+
+steps:
+ - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
+ displayName: Send job to Helix (Windows)
+ env:
+ BuildConfig: $(_BuildConfig)
+ HelixSource: ${{ parameters.HelixSource }}
+ HelixType: ${{ parameters.HelixType }}
+ HelixBuild: ${{ parameters.HelixBuild }}
+ HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
+ HelixAccessToken: ${{ parameters.HelixAccessToken }}
+ HelixPreCommands: ${{ parameters.HelixPreCommands }}
+ HelixPostCommands: ${{ parameters.HelixPostCommands }}
+ WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
+ WorkItemCommand: ${{ parameters.WorkItemCommand }}
+ WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
+ CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
+ XUnitProjects: ${{ parameters.XUnitProjects }}
+ XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
+ XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
+ IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
+ DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
+ DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
+ EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
+ WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
+ Creator: ${{ parameters.Creator }}
+ condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
+ displayName: Send job to Helix (Unix)
+ env:
+ BuildConfig: $(_BuildConfig)
+ HelixSource: ${{ parameters.HelixSource }}
+ HelixType: ${{ parameters.HelixType }}
+ HelixBuild: ${{ parameters.HelixBuild }}
+ HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
+ HelixAccessToken: ${{ parameters.HelixAccessToken }}
+ HelixPreCommands: ${{ parameters.HelixPreCommands }}
+ HelixPostCommands: ${{ parameters.HelixPostCommands }}
+ WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
+ WorkItemCommand: ${{ parameters.WorkItemCommand }}
+ WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
+ CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
+ XUnitProjects: ${{ parameters.XUnitProjects }}
+ XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
+ XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
+ IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
+ DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
+ DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
+ EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
+ WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
+ Creator: ${{ parameters.Creator }}
+ condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
diff --git a/eng/common/templates/steps/telemetry-end.yml b/eng/common/templates/steps/telemetry-end.yml
new file mode 100644
index 00000000000..9b61481e7e1
--- /dev/null
+++ b/eng/common/templates/steps/telemetry-end.yml
@@ -0,0 +1,63 @@
+steps:
+- bash: |
+ if [ "$AGENT_JOBSTATUS" = "Succeeded" ] || [ "$AGENT_JOBSTATUS" = "PartiallySucceeded" ]; then
+ errorCount=0
+ else
+ errorCount=1
+ fi
+ warningCount=0
+
+ # create a temporary file for curl output
+ res=`mktemp`
+
+ curlResult=`
+ curl --verbose --output $res --write-out "%{http_code}"\
+ -H 'Content-Type: application/json' \
+ -H "X-Helix-Job-Token: $Helix_JobToken" \
+ -H 'Content-Length: 0' \
+ -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$Helix_WorkItemId/finish" \
+ --data-urlencode "errorCount=$errorCount" \
+ --data-urlencode "warningCount=$warningCount"`
+ curlStatus=$?
+
+ if [ $curlStatus -eq 0 ]; then
+ if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then
+ curlStatus=$curlResult
+ fi
+ fi
+
+ if [ $curlStatus -ne 0 ]; then
+ echo "Failed to Send Build Finish information"
+ vstsLogOutput="vso[task.logissue type=error;sourcepath=templates/steps/telemetry-end.yml;code=1;]Failed to Send Build Finish information: $curlStatus"
+ echo "##$vstsLogOutput"
+ exit 1
+ fi
+ displayName: Send Unix Build End Telemetry
+ env:
+ # defined via VSTS variables in start-job.sh
+ Helix_JobToken: $(Helix_JobToken)
+ Helix_WorkItemId: $(Helix_WorkItemId)
+ condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT'))
+- powershell: |
+ if (($env:Agent_JobStatus -eq 'Succeeded') -or ($env:Agent_JobStatus -eq 'PartiallySucceeded')) {
+ $ErrorCount = 0
+ } else {
+ $ErrorCount = 1
+ }
+ $WarningCount = 0
+
+ try {
+ Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$env:Helix_WorkItemId/finish?errorCount=$ErrorCount&warningCount=$WarningCount" -Method Post -ContentType "application/json" -Body "" `
+ -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken }
+ }
+ catch {
+ Write-Error $_
+ Write-Error $_.Exception
+ exit 1
+ }
+ displayName: Send Windows Build End Telemetry
+ env:
+ # defined via VSTS variables in start-job.ps1
+ Helix_JobToken: $(Helix_JobToken)
+ Helix_WorkItemId: $(Helix_WorkItemId)
+ condition: and(always(),eq(variables['Agent.Os'], 'Windows_NT'))
diff --git a/eng/common/templates/steps/telemetry-start.yml b/eng/common/templates/steps/telemetry-start.yml
new file mode 100644
index 00000000000..79c128c5de8
--- /dev/null
+++ b/eng/common/templates/steps/telemetry-start.yml
@@ -0,0 +1,154 @@
+parameters:
+ helixSource: 'undefined_defaulted_in_telemetry.yml'
+ helixType: 'undefined_defaulted_in_telemetry.yml'
+ buildConfig: ''
+ runAsPublic: false
+
+steps:
+- ${{ if and(eq(parameters.runAsPublic, 'false'), not(eq(variables['System.TeamProject'], 'public'))) }}:
+ - task: AzureKeyVault@1
+ inputs:
+ azureSubscription: 'HelixProd_KeyVault'
+ KeyVaultName: HelixProdKV
+ SecretsFilter: 'HelixApiAccessToken'
+ condition: always()
+- bash: |
+ # create a temporary file
+ jobInfo=`mktemp`
+
+ # write job info content to temporary file
+ cat > $jobInfo <' | Set-Content $proj
+ MSBuild $proj $bl /t:__WriteToolsetLocation /noconsolelogger /p:__ToolsetLocationOutputFile=$toolsetLocationFile
+
+ $path = Get-Content $toolsetLocationFile -TotalCount 1
+ if (!(Test-Path $path)) {
+ throw "Invalid toolset path: $path"
+ }
+
+ return $global:_ToolsetBuildProj = $path
+}
+
+function ExitWithExitCode([int] $exitCode) {
+ if ($ci -and $prepareMachine) {
+ Stop-Processes
+ }
+ exit $exitCode
+}
+
+function Stop-Processes() {
+ Write-Host "Killing running build processes..."
+ foreach ($processName in $processesToStopOnExit) {
+ Get-Process -Name $processName -ErrorAction SilentlyContinue | Stop-Process
+ }
+}
+
+#
+# Executes msbuild (or 'dotnet msbuild') with arguments passed to the function.
+# The arguments are automatically quoted.
+# Terminates the script if the build fails.
+#
+function MSBuild() {
+ if ($ci) {
+ if (!$binaryLog) {
+ throw "Binary log must be enabled in CI build."
+ }
+
+ if ($nodeReuse) {
+ throw "Node reuse must be disabled in CI build."
+ }
+ }
+
+ $buildTool = InitializeBuildTool
+
+ $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse"
+
+ if ($warnAsError) {
+ $cmdArgs += " /warnaserror /p:TreatWarningsAsErrors=true"
+ }
+
+ foreach ($arg in $args) {
+ if ($arg -ne $null -and $arg.Trim() -ne "") {
+ $cmdArgs += " `"$arg`""
+ }
+ }
+
+ $exitCode = Exec-Process $buildTool.Path $cmdArgs
+
+ if ($exitCode -ne 0) {
+ Write-Host "Build failed." -ForegroundColor Red
+
+ $buildLog = GetMSBuildBinaryLogCommandLineArgument $args
+ if ($buildLog -ne $null) {
+ Write-Host "See log: $buildLog" -ForegroundColor DarkGray
+ }
+
+ ExitWithExitCode $exitCode
+ }
+}
+
+function GetMSBuildBinaryLogCommandLineArgument($arguments) {
+ foreach ($argument in $arguments) {
+ if ($argument -ne $null) {
+ $arg = $argument.Trim()
+ if ($arg.StartsWith("/bl:", "OrdinalIgnoreCase")) {
+ return $arg.Substring("/bl:".Length)
+ }
+
+ if ($arg.StartsWith("/binaryLogger:", "OrdinalIgnoreCase")) {
+ return $arg.Substring("/binaryLogger:".Length)
+ }
+ }
+ }
+
+ return $null
+}
+
+$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot "..\..")
+$EngRoot = Resolve-Path (Join-Path $PSScriptRoot "..")
+$ArtifactsDir = Join-Path $RepoRoot "artifacts"
+$ToolsetDir = Join-Path $ArtifactsDir "toolset"
+$ToolsDir = Join-Path $RepoRoot ".tools"
+$LogDir = Join-Path (Join-Path $ArtifactsDir "log") $configuration
+$TempDir = Join-Path (Join-Path $ArtifactsDir "tmp") $configuration
+$GlobalJson = Get-Content -Raw -Path (Join-Path $RepoRoot "global.json") | ConvertFrom-Json
+
+Create-Directory $ToolsetDir
+Create-Directory $TempDir
+Create-Directory $LogDir
+
+if ($ci) {
+ $env:TEMP = $TempDir
+ $env:TMP = $TempDir
+}
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
new file mode 100755
index 00000000000..8a253bef513
--- /dev/null
+++ b/eng/common/tools.sh
@@ -0,0 +1,319 @@
+# Initialize variables if they aren't already defined.
+
+# CI mode - set to true on CI server for PR validation build or official build.
+ci=${ci:-false}
+
+# Build configuration. Common values include 'Debug' and 'Release', but the repository may use other names.
+configuration=${configuration:-'Debug'}
+
+# Set to true to output binary log from msbuild. Note that emitting binary log slows down the build.
+# Binary log must be enabled on CI.
+binary_log=${binary_log:-$ci}
+
+# Turns on machine preparation/clean up code that changes the machine state (e.g. kills build processes).
+prepare_machine=${prepare_machine:-false}
+
+# True to restore toolsets and dependencies.
+restore=${restore:-true}
+
+# Adjusts msbuild verbosity level.
+verbosity=${verbosity:-'minimal'}
+
+# Set to true to reuse msbuild nodes. Recommended to not reuse on CI.
+if [[ "$ci" == true ]]; then
+ node_reuse=${node_reuse:-false}
+else
+ node_reuse=${node_reuse:-true}
+fi
+
+# Configures warning treatment in msbuild.
+warn_as_error=${warn_as_error:-true}
+
+# True to attempt using .NET Core already that meets requirements specified in global.json
+# installed on the machine instead of downloading one.
+use_installed_dotnet_cli=${use_installed_dotnet_cli:-true}
+
+# True to use global NuGet cache instead of restoring packages to repository-local directory.
+if [[ "$ci" == true ]]; then
+ use_global_nuget_cache=${use_global_nuget_cache:-false}
+else
+ use_global_nuget_cache=${use_global_nuget_cache:-true}
+fi
+
+# Resolve any symlinks in the given path.
+function ResolvePath {
+ local path=$1
+
+ while [[ -h $path ]]; do
+ local dir="$( cd -P "$( dirname "$path" )" && pwd )"
+ path="$(readlink "$path")"
+
+ # if $path was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $path != /* ]] && path="$dir/$path"
+ done
+
+ # return value
+ _ResolvePath="$path"
+}
+
+# ReadVersionFromJson [json key]
+function ReadGlobalVersion {
+ local key=$1
+
+ local line=`grep -m 1 "$key" "$global_json_file"`
+ local pattern="\"$key\" *: *\"(.*)\""
+
+ if [[ ! $line =~ $pattern ]]; then
+ echo "Error: Cannot find \"$key\" in $global_json_file" >&2
+ ExitWithExitCode 1
+ fi
+
+ # return value
+ _ReadGlobalVersion=${BASH_REMATCH[1]}
+}
+
+function InitializeDotNetCli {
+ if [[ -n "${_InitializeDotNetCli:-}" ]]; then
+ return
+ fi
+
+ local install=$1
+
+ # Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
+ export DOTNET_MULTILEVEL_LOOKUP=0
+
+ # Disable first run since we want to control all package sources
+ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+
+ # Disable telemetry on CI
+ if [[ $ci == true ]]; then
+ export DOTNET_CLI_TELEMETRY_OPTOUT=1
+ fi
+
+ # LTTNG is the logging infrastructure used by Core CLR. Need this variable set
+ # so it doesn't output warnings to the console.
+ export LTTNG_HOME="$HOME"
+
+ # Source Build uses DotNetCoreSdkDir variable
+ if [[ -n "${DotNetCoreSdkDir:-}" ]]; then
+ export DOTNET_INSTALL_DIR="$DotNetCoreSdkDir"
+ fi
+
+ # Find the first path on $PATH that contains the dotnet.exe
+ if [[ "$use_installed_dotnet_cli" == true && -z "${DOTNET_INSTALL_DIR:-}" ]]; then
+ local dotnet_path=`command -v dotnet`
+ if [[ -n "$dotnet_path" ]]; then
+ ResolvePath "$dotnet_path"
+ export DOTNET_INSTALL_DIR=`dirname "$_ResolvePath"`
+ fi
+ fi
+
+ ReadGlobalVersion "dotnet"
+ local dotnet_sdk_version=$_ReadGlobalVersion
+ local dotnet_root=""
+
+ # Use dotnet installation specified in DOTNET_INSTALL_DIR if it contains the required SDK version,
+ # otherwise install the dotnet CLI and SDK to repo local .dotnet directory to avoid potential permission issues.
+ if [[ -n "${DOTNET_INSTALL_DIR:-}" && -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then
+ dotnet_root="$DOTNET_INSTALL_DIR"
+ else
+ dotnet_root="$repo_root/.dotnet"
+ export DOTNET_INSTALL_DIR="$dotnet_root"
+
+ if [[ ! -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then
+ if [[ "$install" == true ]]; then
+ InstallDotNetSdk "$dotnet_root" "$dotnet_sdk_version"
+ else
+ echo "Unable to find dotnet with SDK version '$dotnet_sdk_version'" >&2
+ ExitWithExitCode 1
+ fi
+ fi
+ fi
+
+ # Add dotnet to PATH. This prevents any bare invocation of dotnet in custom
+ # build steps from using anything other than what we've downloaded.
+ export PATH="$dotnet_root:$PATH"
+
+ if [[ $ci == true ]]; then
+ # Make Sure that our bootstrapped dotnet cli is avaliable in future steps of the Azure Pipelines build
+ echo "##vso[task.prependpath]$dotnet_root"
+ echo "##vso[task.setvariable variable=DOTNET_MULTILEVEL_LOOKUP]0"
+ echo "##vso[task.setvariable variable=DOTNET_SKIP_FIRST_TIME_EXPERIENCE]1"
+ fi
+
+ # return value
+ _InitializeDotNetCli="$dotnet_root"
+}
+
+function InstallDotNetSdk {
+ local root=$1
+ local version=$2
+
+ GetDotNetInstallScript "$root"
+ local install_script=$_GetDotNetInstallScript
+
+ bash "$install_script" --version $version --install-dir "$root" || {
+ local exit_code=$?
+ echo "Failed to install dotnet SDK (exit code '$exit_code')." >&2
+ ExitWithExitCode $exit_code
+ }
+}
+
+function GetDotNetInstallScript {
+ local root=$1
+ local install_script="$root/dotnet-install.sh"
+ local install_script_url="https://dot.net/v1/dotnet-install.sh"
+
+ if [[ ! -a "$install_script" ]]; then
+ mkdir -p "$root"
+
+ echo "Downloading '$install_script_url'"
+
+ # Use curl if available, otherwise use wget
+ if command -v curl > /dev/null; then
+ curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script"
+ else
+ wget -q -O "$install_script" "$install_script_url"
+ fi
+ fi
+
+ # return value
+ _GetDotNetInstallScript="$install_script"
+}
+
+function InitializeBuildTool {
+ if [[ -n "${_InitializeBuildTool:-}" ]]; then
+ return
+ fi
+
+ InitializeDotNetCli $restore
+
+ # return values
+ _InitializeBuildTool="$_InitializeDotNetCli/dotnet"
+ _InitializeBuildToolCommand="msbuild"
+}
+
+function GetNuGetPackageCachePath {
+ if [[ -z ${NUGET_PACKAGES:-} ]]; then
+ if [[ "$use_global_nuget_cache" == true ]]; then
+ export NUGET_PACKAGES="$HOME/.nuget/packages"
+ else
+ export NUGET_PACKAGES="$repo_root/.packages"
+ fi
+ fi
+
+ # return value
+ _GetNuGetPackageCachePath=$NUGET_PACKAGES
+}
+
+function InitializeToolset {
+ if [[ -n "${_InitializeToolset:-}" ]]; then
+ return
+ fi
+
+ GetNuGetPackageCachePath
+
+ ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk"
+
+ local toolset_version=$_ReadGlobalVersion
+ local toolset_location_file="$toolset_dir/$toolset_version.txt"
+
+ if [[ -a "$toolset_location_file" ]]; then
+ local path=`cat "$toolset_location_file"`
+ if [[ -a "$path" ]]; then
+ # return value
+ _InitializeToolset="$path"
+ return
+ fi
+ fi
+
+ if [[ "$restore" != true ]]; then
+ echo "Toolset version $toolsetVersion has not been restored." >&2
+ ExitWithExitCode 2
+ fi
+
+ local toolset_restore_log="$log_dir/ToolsetRestore.binlog"
+ local proj="$toolset_dir/restore.proj"
+
+ echo '' > "$proj"
+ MSBuild "$proj" /t:__WriteToolsetLocation /noconsolelogger /bl:"$toolset_restore_log" /p:__ToolsetLocationOutputFile="$toolset_location_file"
+
+ local toolset_build_proj=`cat "$toolset_location_file"`
+
+ if [[ ! -a "$toolset_build_proj" ]]; then
+ echo "Invalid toolset path: $toolset_build_proj" >&2
+ ExitWithExitCode 3
+ fi
+
+ # return value
+ _InitializeToolset="$toolset_build_proj"
+}
+
+function ExitWithExitCode {
+ if [[ "$ci" == true && "$prepare_machine" == true ]]; then
+ StopProcesses
+ fi
+ exit $1
+}
+
+function StopProcesses {
+ echo "Killing running build processes..."
+ pkill -9 "dotnet" || true
+ pkill -9 "vbcscompiler" || true
+ return 0
+}
+
+function MSBuild {
+ if [[ "$ci" == true ]]; then
+ if [[ "$binary_log" != true ]]; then
+ echo "Binary log must be enabled in CI build." >&2
+ ExitWithExitCode 1
+ fi
+
+ if [[ "$node_reuse" == true ]]; then
+ echo "Node reuse must be disabled in CI build." >&2
+ ExitWithExitCode 1
+ fi
+ fi
+
+ InitializeBuildTool
+
+ local warnaserror_switch=""
+ if [[ $warn_as_error == true ]]; then
+ warnaserror_switch="/warnaserror"
+ fi
+
+ "$_InitializeBuildTool" "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error "$@" || {
+ local exit_code=$?
+ echo "Build failed (exit code '$exit_code')." >&2
+ ExitWithExitCode $exit_code
+ }
+}
+
+ResolvePath "${BASH_SOURCE[0]}"
+_script_dir=`dirname "$_ResolvePath"`
+
+eng_root=`cd -P "$_script_dir/.." && pwd`
+repo_root=`cd -P "$_script_dir/../.." && pwd`
+artifacts_dir="$repo_root/artifacts"
+toolset_dir="$artifacts_dir/toolset"
+log_dir="$artifacts_dir/log/$configuration"
+temp_dir="$artifacts_dir/tmp/$configuration"
+
+global_json_file="$repo_root/global.json"
+
+# HOME may not be defined in some scenarios, but it is required by NuGet
+if [[ -z $HOME ]]; then
+ export HOME="$repo_root/artifacts/.home/"
+ mkdir -p "$HOME"
+fi
+
+mkdir -p "$toolset_dir"
+mkdir -p "$temp_dir"
+mkdir -p "$log_dir"
+
+if [[ $ci == true ]]; then
+ export TEMP="$temp_dir"
+ export TMP="$temp_dir"
+fi
diff --git a/fcs/Directory.Build.props b/fcs/Directory.Build.props
new file mode 100644
index 00000000000..6535dbd2aea
--- /dev/null
+++ b/fcs/Directory.Build.props
@@ -0,0 +1,25 @@
+
+
+ $(UserProfile)\.nuget\packages\
+ $(HOME)/.nuget/packages/
+ $(NuGetPackageRoot)\
+ $(NuGetPackageRoot)/
+ $(MSBuildThisFileDirectory)..\artifacts
+ $(ArtifactsDir)\bin
+ $(ArtifactsDir)\obj
+ $(ArtifactsBinDir)\fcs
+ $(ArtifactsObjDir)\fcs
+
+
+
+
+ $(ArtifactsBinDir)\FSharp.Build\Proto\net46
+
+
+
+ $(ProtoOutputPath)\Microsoft.FSharp.Targets
+ $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.props
+ $(ProtoOutputPath)\Microsoft.FSharp.NetSdk.targets
+ $(ProtoOutputPath)\Microsoft.FSharp.Overrides.NetSdk.targets
+
+
diff --git a/fcs/Directory.Build.targets b/fcs/Directory.Build.targets
new file mode 100644
index 00000000000..bb5b23d29d0
--- /dev/null
+++ b/fcs/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj b/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj
index 8128ab15731..1126a60f2b6 100644
--- a/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj
+++ b/fcs/FSharp.Compiler.Service.MSBuild.v12/FSharp.Compiler.Service.MSBuild.v12.fsproj
@@ -7,7 +7,6 @@
net45true
- ..\..\$(Configuration.ToLower())\fcs$(DefineConstants);CROSS_PLATFORM_COMPILER$(DefineConstants);ENABLE_MONO_SUPPORT
@@ -29,7 +28,7 @@
-
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Framework.dll
@@ -51,18 +50,8 @@
$(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Tasks.v12.0.dllfalse
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.$(FSharpCoreFrozenPortablePackageVersion)\lib\profiles\net40\FSharp.Core.dll
- false
-
-
- FSharp.Compiler.Service
- {2e4d67b4-522d-4cf7-97e4-ba940f0b18f3}
- True
-
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj b/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj
index 86296dcea04..c132ae80bb1 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj
+++ b/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj
@@ -1,13 +1,9 @@
-
- $(MSBuildProjectDirectory)\..\..\src
- net45true
- ..\..\$(Configuration.ToLower())\fcsLegacy project file cracker for the F# compiler service.
@@ -25,13 +21,13 @@
-
-
+
+
-
+
\ No newline at end of file
diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj
index d7f29459dee..9f690c58ea1 100644
--- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj
+++ b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj
@@ -13,7 +13,6 @@
$(OtherFlags) --staticlink:FSharp.Coretruefalse
- ..\..\$(Configuration.ToLower())\fcs
@@ -24,11 +23,7 @@
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Portable.FSharp.Core.$(FSharpCoreFrozenPortablePackageVersion)\lib\profiles\net40\FSharp.Core.dll
- false
-
-
+ $(FSharpSourcesRoot)\..\fcs\dependencies\MSBuild.v12.0\Microsoft.Build.Framework.dllfalse
diff --git a/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj b/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj
index 49585864e4d..fc00709da42 100644
--- a/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj
+++ b/fcs/FSharp.Compiler.Service.Tests/CSharp_Analysis/CSharp_Analysis.csproj
@@ -3,6 +3,7 @@
net45;netstandard2.0false
+ $(NoWarn);0067;1591
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 55283b0065d..9c3eb687c20 100644
--- a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
+++ b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
@@ -66,17 +66,23 @@
TokenizerTests.fs
+
+ ServiceUntypedParseTests.fs
+
+
+ TreeVisitorTests.fs
+
Program.fs
-
+
-
+
diff --git a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
index 54ca43c2cf4..55a43730801 100644
--- a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
+++ b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj
@@ -1,23 +1,23 @@
-
+$(MSBuildProjectDirectory)\..\..\src
-
+
+ net45;netstandard2.0true$(DefineConstants);COMPILER_SERVICE_AS_DLL$(DefineConstants);COMPILER$(DefineConstants);ENABLE_MONO_SUPPORT$(DefineConstants);NO_STRONG_NAMES
- ..\..\$(Configuration.ToLower())\fcs$(TargetFramework)\$(TargetFramework)\$(OtherFlags) /warnon:1182$(OtherFlags) --times
- $(NoWarn);44;62;69;65;54;61;75;62;9;2003;
- true
+ $(NoWarn);44;62;69;65;54;61;75;62;9;2003;NU5125
+ truetruetrue
@@ -46,12 +46,12 @@
AssemblyInfo/AssemblyInfo.fs
-
+
FSComp.txt
-
-
+
+
FSIstrings.txt
-
+
FSStrings.resx
FSStrings.resources
@@ -635,11 +635,12 @@
-
+
+
@@ -655,7 +656,5 @@
$(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll
-
-
-
+
\ No newline at end of file
diff --git a/fcs/build.cmd b/fcs/build.cmd
index 731fc76abb7..26244446f6c 100644
--- a/fcs/build.cmd
+++ b/fcs/build.cmd
@@ -14,6 +14,9 @@ if errorlevel 1 (
exit /b %errorlevel%
)
+:: don't care if this fails
+dotnet build-server shutdown >NUL 2>&1
+
packages\FAKE\tools\FAKE.exe build.fsx %*
if errorlevel 1 (
endlocal
diff --git a/fcs/build.fsx b/fcs/build.fsx
index 145d4c88e8f..8549ed86348 100644
--- a/fcs/build.fsx
+++ b/fcs/build.fsx
@@ -13,8 +13,8 @@ open Fake.ReleaseNotesHelper
#if MONO
// prevent incorrect output encoding (e.g. https://github.com/fsharp/FAKE/issues/1196)
System.Console.OutputEncoding <- System.Text.Encoding.UTF8
-CleanDir (__SOURCE_DIRECTORY__ + "/../tests/TestResults")
-File.WriteAllText(__SOURCE_DIRECTORY__ + "/../tests/TestResults/notestsyet.txt","No tests yet")
+CleanDir (__SOURCE_DIRECTORY__ + "/../artifacts/TestResults")
+File.WriteAllText(__SOURCE_DIRECTORY__ + "/../artifacts/TestResults/notestsyet.txt","No tests yet")
let isMono = true
#else
let isMono = false
@@ -24,7 +24,7 @@ let isMono = false
// Utilities
// --------------------------------------------------------------------------------------
-let dotnetExePath = DotNetCli.InstallDotNetSDK "2.1.201"
+let dotnetExePath = DotNetCli.InstallDotNetSDK "2.1.403"
let runDotnet workingDir args =
let result =
@@ -54,7 +54,7 @@ let runCmdIn workDir (exe:string) = Printf.ksprintf (fun (args:string) ->
// The rest of the code is standard F# build script
// --------------------------------------------------------------------------------------
-let releaseDir = Path.Combine(__SOURCE_DIRECTORY__, "../release/fcs")
+let releaseDir = Path.Combine(__SOURCE_DIRECTORY__, "../artifacts/bin/fcs")
// Read release notes & version info from RELEASE_NOTES.md
let release = LoadReleaseNotes (__SOURCE_DIRECTORY__ + "/RELEASE_NOTES.md")
@@ -75,15 +75,8 @@ Target "Clean" (fun _ ->
Target "Restore" (fun _ ->
// We assume a paket restore has already been run
+ runDotnet __SOURCE_DIRECTORY__ "restore ../src/buildtools/buildtools.proj -v n"
runDotnet __SOURCE_DIRECTORY__ "restore FSharp.Compiler.Service.sln -v n"
- for p in [ "../packages.config" ] do
- let rec executeProcess count =
- let result = ExecProcess (fun info ->
- info.FileName <- FullName @"./../.nuget/NuGet.exe"
- info.WorkingDirectory <- FullName @"./.."
- info.Arguments <- sprintf "restore %s -PackagesDirectory \"%s\" -ConfigFile \"%s\"" (FullName p) (FullName "./../packages") (FullName "./../NuGet.Config")) TimeSpan.MaxValue
- if result <> 0 && count > 1 then executeProcess (count - 1) else result
- (executeProcess 5) |> assertExitCodeZero
)
Target "BuildVersion" (fun _ ->
@@ -91,7 +84,8 @@ Target "BuildVersion" (fun _ ->
)
Target "Build" (fun _ ->
- runDotnet __SOURCE_DIRECTORY__ "build FSharp.Compiler.Service.sln -v n -c Release"
+ runDotnet __SOURCE_DIRECTORY__ "build ../src/buildtools/buildtools.proj -v n -c Proto"
+ runDotnet __SOURCE_DIRECTORY__ "build FSharp.Compiler.Service.sln -v n -c release"
)
Target "Test" (fun _ ->
@@ -100,11 +94,11 @@ Target "Test" (fun _ ->
runDotnet __SOURCE_DIRECTORY__ "build ../tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj -v n"
// Now run the tests
- runDotnet __SOURCE_DIRECTORY__ "test FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj -v n -c Release"
+ runDotnet __SOURCE_DIRECTORY__ "test FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj --no-restore --no-build -v n -c release"
)
Target "NuGet" (fun _ ->
- runDotnet __SOURCE_DIRECTORY__ "pack FSharp.Compiler.Service.sln -v n -c Release"
+ runDotnet __SOURCE_DIRECTORY__ "pack FSharp.Compiler.Service.sln -v n -c release"
)
Target "GenerateDocsEn" (fun _ ->
diff --git a/fcs/docsrc/content/ja/symbols.fsx b/fcs/docsrc/content/ja/symbols.fsx
index 2e3f53bdba4..d6abee12332 100644
--- a/fcs/docsrc/content/ja/symbols.fsx
+++ b/fcs/docsrc/content/ja/symbols.fsx
@@ -175,8 +175,8 @@ argTy1c.TypeDefinition.CompiledName // "Int32"
*)
let projectContext = checkFileResults.ProjectContext
-for ass in projectContext.GetReferencedAssemblies() do
- match ass.FileName with
+for assembly in projectContext.GetReferencedAssemblies() do
+ match assembly.FileName with
| None -> printfn "コンパイル時にファイルの存在しないアセンブリを参照しました"
| Some s -> printfn "コンパイル時にアセンブリ '%s' を参照しました" s
diff --git a/fcs/docsrc/content/ja/tokenizer.fsx b/fcs/docsrc/content/ja/tokenizer.fsx
index 589061e0b0a..cf5117bfbd0 100644
--- a/fcs/docsrc/content/ja/tokenizer.fsx
+++ b/fcs/docsrc/content/ja/tokenizer.fsx
@@ -73,7 +73,7 @@ let rec tokenizeLine (tokenizer:FSharpLineTokenizer) state =
必要となるような新しい状態を返します。
初期値としては `0L` を指定します:
*)
-tokenizeLine tokenizer 0L
+tokenizeLine tokenizer FSharpTokenizerLexState.Initial
(**
この結果は LET WHITESPACE IDENT EQUALS INT32 という
トークン名のシーケンスになります。
diff --git a/fcs/docsrc/content/symbols.fsx b/fcs/docsrc/content/symbols.fsx
index fb6275fd37c..ac38053a1b8 100644
--- a/fcs/docsrc/content/symbols.fsx
+++ b/fcs/docsrc/content/symbols.fsx
@@ -168,8 +168,8 @@ used in the compilation, called the `ProjectContext`:
*)
let projectContext = checkFileResults.ProjectContext
-for ass in projectContext.GetReferencedAssemblies() do
- match ass.FileName with
+for assembly in projectContext.GetReferencedAssemblies() do
+ match assembly.FileName with
| None -> printfn "compilation referenced an assembly without a file"
| Some s -> printfn "compilation references assembly '%s'" s
diff --git a/fcs/docsrc/content/tokenizer.fsx b/fcs/docsrc/content/tokenizer.fsx
index 09d842ba8aa..9ac3d6f34d4 100644
--- a/fcs/docsrc/content/tokenizer.fsx
+++ b/fcs/docsrc/content/tokenizer.fsx
@@ -65,7 +65,7 @@ let rec tokenizeLine (tokenizer:FSharpLineTokenizer) state =
The function returns the new state, which is needed if you need to tokenize multiple lines
and an earlier line ends with a multi-line comment. As an initial state, we can use `0L`:
*)
-tokenizeLine tokenizer 0L
+tokenizeLine tokenizer FSharpTokenizerLexState.Initial
(**
The result is a sequence of tokens with names LET, WHITESPACE, IDENT, EQUALS and INT32.
There is a number of interesting properties on `FSharpTokenInfo` including:
diff --git a/fcs/fcs.props b/fcs/fcs.props
index 470ea0b88da..207d1f8085b 100644
--- a/fcs/fcs.props
+++ b/fcs/fcs.props
@@ -8,7 +8,7 @@
false
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools
- fsi.exe
+ $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools
+ fsi.exe
\ No newline at end of file
diff --git a/fcs/samples/EditorService/EditorService.fsproj b/fcs/samples/EditorService/EditorService.fsproj
index 05847e67f90..447906070f0 100644
--- a/fcs/samples/EditorService/EditorService.fsproj
+++ b/fcs/samples/EditorService/EditorService.fsproj
@@ -12,7 +12,7 @@
-
+
diff --git a/fcs/samples/FscExe/FscExe.fsproj b/fcs/samples/FscExe/FscExe.fsproj
index c482656827f..b2b146913a1 100644
--- a/fcs/samples/FscExe/FscExe.fsproj
+++ b/fcs/samples/FscExe/FscExe.fsproj
@@ -14,7 +14,7 @@
-
+
diff --git a/fcs/samples/FsiExe/FsiExe.fsproj b/fcs/samples/FsiExe/FsiExe.fsproj
index 7377f2c2912..aae2ba03182 100644
--- a/fcs/samples/FsiExe/FsiExe.fsproj
+++ b/fcs/samples/FsiExe/FsiExe.fsproj
@@ -16,7 +16,7 @@
-
+
diff --git a/fcs/samples/InteractiveService/InteractiveService.fsproj b/fcs/samples/InteractiveService/InteractiveService.fsproj
index 7aa42497261..387439fcfdd 100644
--- a/fcs/samples/InteractiveService/InteractiveService.fsproj
+++ b/fcs/samples/InteractiveService/InteractiveService.fsproj
@@ -12,7 +12,7 @@
-
+
diff --git a/fcs/samples/Tokenizer/Program.fs b/fcs/samples/Tokenizer/Program.fs
index 402fcc30295..9cc79e699f4 100644
--- a/fcs/samples/Tokenizer/Program.fs
+++ b/fcs/samples/Tokenizer/Program.fs
@@ -3,7 +3,7 @@
let sourceTok = FSharpSourceTokenizer([], Some "C:\\test.fsx")
let tokenizeLines (lines:string[]) =
- [ let state = ref 0L
+ [ let state = ref FSharpTokenizerLexState.Initial
for n, line in lines |> Seq.zip [ 0 .. lines.Length ] do
let tokenizer = sourceTok.CreateLineTokenizer(line)
let rec parseLine() = seq {
diff --git a/fcs/samples/Tokenizer/Tokenizer.fsproj b/fcs/samples/Tokenizer/Tokenizer.fsproj
index 7aa42497261..387439fcfdd 100644
--- a/fcs/samples/Tokenizer/Tokenizer.fsproj
+++ b/fcs/samples/Tokenizer/Tokenizer.fsproj
@@ -12,7 +12,7 @@
-
+
diff --git a/fcs/samples/UntypedTree/UntypedTree.fsproj b/fcs/samples/UntypedTree/UntypedTree.fsproj
index 7aa42497261..387439fcfdd 100644
--- a/fcs/samples/UntypedTree/UntypedTree.fsproj
+++ b/fcs/samples/UntypedTree/UntypedTree.fsproj
@@ -12,7 +12,7 @@
-
+
diff --git a/fsharp.proj b/fsharp.proj
new file mode 100644
index 00000000000..92b37d547ee
--- /dev/null
+++ b/fsharp.proj
@@ -0,0 +1,170 @@
+
+
+
+ Debug
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+
+
+
+ true
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+ TargetFramework=netstandard1.6
+ TargetFramework=net45
+
+
+ TargetFramework=netstandard2.0
+ TargetFramework=net46
+
+
+ TargetFramework=netstandard1.6
+ TargetFramework=net46
+
+
+ TargetFramework=net46
+
+
+ TargetFramework=netstandard1.6
+ TargetFramework=net46
+
+
+ TargetFramework=netcoreapp2.1
+ TargetFramework=net46
+
+
+ TargetFramework=netcoreapp2.1
+ TargetFramework=net46
+
+
+ TargetFramework=net46
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RunningRestore>true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/global.json b/global.json
new file mode 100644
index 00000000000..ac6900880b3
--- /dev/null
+++ b/global.json
@@ -0,0 +1,9 @@
+{
+ "tools": {
+ "dotnet": "2.1.500"
+ },
+ "msbuild-sdks": {
+ "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19069.2",
+ "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19069.2"
+ }
+}
diff --git a/init-tools.cmd b/init-tools.cmd
index e8aaa61b92f..cbdeb27afef 100644
--- a/init-tools.cmd
+++ b/init-tools.cmd
@@ -1,113 +1,38 @@
-@if not defined _echo @echo off
-setlocal
-
-set INIT_TOOLS_LOG=%~dp0init-tools.log
-set PACKAGES_DIR=%~dp0packages\
-set TOOLRUNTIME_DIR=%~dp0Tools
-
-set DOTNET_PATH=%TOOLRUNTIME_DIR%\dotnetcli\
-set DOTNET_CMD=%DOTNET_PATH%dotnet.exe
-
-set DOTNET_TOOLS_PATH=%TOOLRUNTIME_DIR%\dotnet20\
-set DOTNET_TOOLS_CMD=%DOTNET_TOOLS_PATH%dotnet.exe
-
-if [%BUILDTOOLS_SOURCE%]==[] set BUILDTOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json
-set /P BUILDTOOLS_VERSION=< "%~dp0BuildToolsVersion.txt"
-set BUILD_TOOLS_PATH=%PACKAGES_DIR%microsoft.dotnet.buildtools\%BUILDTOOLS_VERSION%\lib\
-set PROJECT_JSON_PATH=%TOOLRUNTIME_DIR%\%BUILDTOOLS_VERSION%
-set PROJECT_JSON_FILE=%PROJECT_JSON_PATH%\project.json
-set PROJECT_JSON_CONTENTS={ "dependencies": { "Microsoft.DotNet.BuildTools": "%BUILDTOOLS_VERSION%" , "Microsoft.DotNet.BuildTools.Coreclr": "1.0.4-prerelease"}, "frameworks": { "dnxcore50": { } } }
-set BUILD_TOOLS_SEMAPHORE=%PROJECT_JSON_PATH%\init-tools.completed0
-set TOOLS_INIT_RETURN_CODE=0
-
-:: if force option is specified then clean the tool runtime and build tools package directory to force it to get recreated
-if [%1]==[force] (
- if exist "%TOOLRUNTIME_DIR%" rmdir /S /Q "%TOOLRUNTIME_DIR%"
- 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
+@echo off
+setlocal enabledelayedexpansion
+
+set /p DOTNET_TOOLS_VERSION=<"%~dp0DotnetCLIToolsVersion.txt"
+set DOTNET_TOOLS_PATH=%~dp0artifacts\toolset\dotnet
+set dotnetexe=%DOTNET_TOOLS_PATH%\dotnet.exe
+set sdksentinel=%DOTNET_TOOLS_PATH%\sdk-version.txt
+
+:: remove an old copy of the SDK
+set cleanup_existing=
+if exist "%sdksentinel%" (
+ set /p INSTALLED_SDK_VERSION=<"%sdksentinel%"
+ if not "%DOTNET_TOOLS_VERSION%" == "!INSTALLED_SDK_VERSION!" (
+ :: wrong version installed, clean it up
+ set cleanup_existing=1
+
+ ) else (
+ echo Found up-to-date SDK.
+ )
+) else (
+ set cleanup_existing=1
+)
+
+if "!cleanup_existing!" == "1" (
+ echo Removing stale SDK.
+ rmdir /s /q "%DOTNET_TOOLS_PATH%"
+)
+
+:: download and install install SDK
+if not exist "%dotnetexe%" (
+ echo powershell -ExecutionPolicy unrestricted -NoProfile -Command ".\scripts\dotnet-install.ps1 -InstallDir %DOTNET_TOOLS_PATH% -Architecture x64 -Version %DOTNET_TOOLS_VERSION% -NoPath true; exit $LastExitCode;"
+ powershell -ExecutionPolicy unrestricted -NoProfile -Command ".\scripts\dotnet-install.ps1 -InstallDir %DOTNET_TOOLS_PATH% -Architecture x64 -Version %DOTNET_TOOLS_VERSION% -NoPath true; exit $LastExitCode;"
+ if errorlevel 1 (
+ echo ERROR: Could not install dotnet cli correctly.
+ exit /b 1
+ )
+ echo %DOTNET_TOOLS_VERSION%>"%sdksentinel%"
)
-
-:: If sempahore exists do nothing
-if exist "%BUILD_TOOLS_SEMAPHORE%" (
- echo Tools are already initialized.
- goto :DONE
-)
-
-if exist "%TOOLRUNTIME_DIR%" rmdir /S /Q "%TOOLRUNTIME_DIR%"
-
-:: Download Nuget.exe
-if NOT exist "%PACKAGES_DIR%NuGet.exe" (
- if NOT exist "%PACKAGES_DIR%" mkdir "%PACKAGES_DIR%"
- powershell -NoProfile -ExecutionPolicy unrestricted -Command "$wc = New-Object System.Net.WebClient; $wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy; $wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials; $wc.DownloadFile('https://www.nuget.org/nuget.exe', '%PACKAGES_DIR%NuGet.exe')
-)
-
-if NOT exist "%PROJECT_JSON_PATH%" mkdir "%PROJECT_JSON_PATH%"
-echo %PROJECT_JSON_CONTENTS% > "%PROJECT_JSON_FILE%"
-echo Running %0 > "%INIT_TOOLS_LOG%"
-
-if exist "%DOTNET_TOOLS_PATH%" goto :afterdotnettoolsrestore
-
-echo Installing dotnet OLD VERSION OF THE cli...
-echo ==========================================
-echo This is temporary until we build using the new dotnetcli
-echo The dotnet cli is a large file it may take a few minutes ...
-echo powershell -ExecutionPolicy unrestricted -NoProfile -Command ".\scripts\dotnet-install.ps1 -InstallDir %DOTNET_TOOLS_PATH% -Architecture x64 -Version %DOTNET_TOOLS_VERSION% -NoPath true; exit $LastExitCode;"
-powershell -ExecutionPolicy unrestricted -NoProfile -Command ".\scripts\dotnet-install.ps1 -InstallDir %DOTNET_TOOLS_PATH% -Architecture x64 -Version %DOTNET_TOOLS_VERSION% -NoPath true; exit $LastExitCode;"
-if errorlevel 1 (
- echo ERROR: Could not install dotnet cli correctly.
- set TOOLS_INIT_RETURN_CODE=1
- goto :DONE
-)
-:afterdotnettoolsrestore
-
-set /p DOTNET_VERSION=< "%~dp0DotnetCLIVersion.txt"
-if exist "%DOTNET_CMD%" goto :afterdotnetrestore
-
-echo Installing dotnet cli...
-echo The dotnet cli is a large file it may take a few minutes ...
-echo powershell -ExecutionPolicy unrestricted -NoProfile -Command ".\scripts\dotnet-install.ps1 -InstallDir %DOTNET_PATH% -Architecture x64 -Version %DOTNET_VERSION% -NoPath true; exit $LastExitCode;"
-powershell -ExecutionPolicy unrestricted -NoProfile -Command ".\scripts\dotnet-install.ps1 -InstallDir %DOTNET_PATH% -Architecture x64 -Version %DOTNET_VERSION% -NoPath true; exit $LastExitCode;"
-if errorlevel 1 (
- echo ERROR: Could not install dotnet cli correctly.
- set TOOLS_INIT_RETURN_CODE=1
- goto :DONE
-)
-:afterdotnetrestore
-
-if exist "%BUILD_TOOLS_PATH%" goto :afterbuildtoolsrestore
-echo Restoring BuildTools version %BUILDTOOLS_VERSION%...
-echo Running: "%DOTNET_CMD%" restore "%PROJECT_JSON_FILE%" --packages "%PACKAGES_DIR% " --source "%BUILDTOOLS_SOURCE%" >> "%INIT_TOOLS_LOG%"
-call "%DOTNET_CMD%" restore "%PROJECT_JSON_FILE%" --packages "%PACKAGES_DIR% " --source "%BUILDTOOLS_SOURCE%" >> "%INIT_TOOLS_LOG%"
-if NOT exist "%BUILD_TOOLS_PATH%init-tools.cmd" (
- echo ERROR: Could not restore build tools correctly. See '%INIT_TOOLS_LOG%' for more details.
- set TOOLS_INIT_RETURN_CODE=1
- goto :DONE
-)
-
-:afterbuildtoolsrestore
-
-echo Initializing BuildTools ...
-echo Running: "%BUILD_TOOLS_PATH%init-tools.cmd" "%~dp0" "%DOTNET_CMD%" "%TOOLRUNTIME_DIR%" >> "%INIT_TOOLS_LOG%"
-call "%BUILD_TOOLS_PATH%init-tools.cmd" "%~dp0" "%DOTNET_CMD%" "%TOOLRUNTIME_DIR%" >> "%INIT_TOOLS_LOG%"
-
-echo Updating CLI NuGet Frameworks map...
-robocopy "%TOOLRUNTIME_DIR%" "%DOTNET_PATH%\sdk\%DOTNET_VERSION%" NuGet.Frameworks.dll /XO >> "%INIT_TOOLS_LOG%"
-set UPDATE_CLI_ERRORLEVEL=%ERRORLEVEL%
-if %UPDATE_CLI_ERRORLEVEL% GTR 1 (
- echo ERROR: Failed to update Nuget for CLI {Error level %UPDATE_CLI_ERRORLEVEL%}. Please check '%INIT_TOOLS_LOG%' for more details. 1>&2
- exit /b %UPDATE_CLI_ERRORLEVEL%
-)
-
-:: Create sempahore file
-echo Done initializing tools.
-echo Init-Tools.cmd completed for BuildTools Version: %BUILDTOOLS_VERSION% > "%BUILD_TOOLS_SEMAPHORE%"
-
-:DONE
-
-exit /b %TOOLS_INIT_RETURN_CODE%
-
diff --git a/mono/cibuild.sh b/mono/cibuild.sh
index e91b33e7839..9a5ea5af571 100755
--- a/mono/cibuild.sh
+++ b/mono/cibuild.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# note: expects to run from top directory
-./mono/latest-mono-stable.sh
+#./mono/latest-mono-stable.sh
make Configuration=$@
#sudo make install Configuration=$@
#./mono/test-mono.sh
\ No newline at end of file
diff --git a/packages.config b/packages.config
index 0f658bb45ee..709d225851d 100644
--- a/packages.config
+++ b/packages.config
@@ -1,89 +1,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/proto.proj b/proto.proj
new file mode 100644
index 00000000000..0974580af5a
--- /dev/null
+++ b/proto.proj
@@ -0,0 +1,36 @@
+
+
+
+ Proto
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+
+
+
+
+ TargetFramework=net46
+ TargetFramework=netcoreapp2.1
+
+
+ TargetFramework=net46
+ TargetFramework=netcoreapp2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/release-notes.md b/release-notes.md
index 87135456997..790efce1005 100644
--- a/release-notes.md
+++ b/release-notes.md
@@ -1,7 +1,46 @@
-
Copyright (c) Microsoft Corporation. All Rights Reserved.
-
See License.txt in the project root for license information.
+
+## About the release notes
+
+We deliver F# and F# tools for Visual Studio and .NET Core releases. These can include bug fixes, new tooling features, new compiler features, performance improvements, infrastructure improvements, and new language versions. The most recent release of F# or any F# component will be at the top of this document.
+
+## Visual Studio 15.9
+
+You can find all tracked VS 15.9 items in the [15.9 milestone](https://github.com/Microsoft/visualfsharp/milestone/24).
+
+### F# Compiler
+
+* Fix (#4637) - Can't debug FCS when compiled with portable pdb debug symbols, by [Jason Imison](https://github.com/nosami).
+* Fix (#5355) - We fixed a bug where extension methods that take `byref` values could mutate an immutable value.
+* Fix (#5446) - We improved the compile error information for overloads on `byref`/`inref`/`outref`, rather than displaying the previously obscure error.
+* Fix (#5354) - Optional Type Extensions on `byref`s are now disallowed entirely. They could be declared previously, but were unusable, resulting in a confusing user experience.
+* Fix (#5294) - We fixed a bug where `CompareTo` on a struct tuple and causing a type equivalence with an aliased struct tuple would result in a runtime exception.
+* Fix (#5621) - We fixed a bug where use of `System.Void` in the context of authoring a Type Provider for .NET Standard could fail to find the `System.Void` type at design-time.
+* Fix (#5468) - We fixed a bug where an internal error could occur when a partially applied Discriminated Union constructor is mismatched with an annotated or inferred type for the Discriminated Union.
+* Fix (#5540) - We modified the compiler error message when attempting to take an address of an expression (such as accessing a property) to make it more clear that it violates scoping rules for `byref` types.
+* Fix (#5536) - We fixed a bug where your program could crash at runtime when partially applying a `byref` type to a method or function. An error message will now display.
+* Fix (#5459) - We fixed an issue where an invalid combination of a `byref` and a reference type (such as `byref option`) would fail at runtime and not emit an error message. We now emit an error message.
+
+### F# Tools for Visual Studio
+
+* Fix (#5657) - We resolved an issue where metadata for F# assemblies built with the .NET Core SDK was not shown in file properties on Windows. You can now see this metadata by right-clicking an assembly on Windows and selecting **Properties**.
+* Fix (#5615) - We fixed a bug where use of `module global` in F# source could cause Visual Studio to become unresponsive.
+* Fix (#5515) - We fixed a bug where extension methods using `inref<'T>` would not show in completion lists.
+* Fix (#5514) - We fixed a bug where the TargetFramework dropdown in Project Properties for .NET Framework F# projects was empty.
+* Fix (#5507) - We fixed a bug where File | New Project on a .NET Framework 4.0 project would fail.
+
+### F# OSS Build
+
+* Feature (#5027) - Set VisualFSharpFull as the default startup project, by [Robert Jeppesen](https://github.com/rojepp).
+
+## Visual Studio 15.8.5
+
+* Fix (#5504) - Internal MSBuild Error when building non-.NET SDK projects with MSBuild parallelism
+* Fix (#5518) - Visual Studio-deployed components are not NGEN'd
+* Fix ([Devcom 322883](https://developercommunity.visualstudio.com/content/problem/322883/all-net-framework-f-projects-build-to-4500-regardl.html)) - FSharp.Core 4.5.0.0 binary is deployed to FSharp.Core 4.4.3.0 location
+
+All other closed issues for the VS 15.8 release can be found [here](https://github.com/Microsoft/visualfsharp/milestone/14).
## F# 4.5
diff --git a/scripts/dotnet-install.ps1 b/scripts/dotnet-install.ps1
index 93d964540f5..9da0947d958 100644
--- a/scripts/dotnet-install.ps1
+++ b/scripts/dotnet-install.ps1
@@ -188,7 +188,7 @@ function GetHTTPResponse([Uri] $Uri)
}
# Default timeout for HttpClient is 100s. For a 50 MB download this assumes 500 KB/s average, any less will time out
# 10 minutes allows it to work over much slower connections.
- $HttpClient.Timeout = New-TimeSpan -Minutes 10
+ $HttpClient.Timeout = New-TimeSpan -Minutes 20
$Response = $HttpClient.GetAsync($Uri).Result
if (($Response -eq $null) -or (-not ($Response.IsSuccessStatusCode)))
{
diff --git a/scripts/dotnet-install.sh b/scripts/dotnet-install.sh
index 451525269ee..0d43070726d 100755
--- a/scripts/dotnet-install.sh
+++ b/scripts/dotnet-install.sh
@@ -22,7 +22,7 @@ exec 3>&1
# Setup some colors to use. These need to work in fairly limited shells, like the Ubuntu Docker container where there are only 8 colors.
# See if stdout is a terminal
-if [ -t 1 ]; then
+if [ -t 1 ] && command -v tput > /dev/null; then
# see if it supports colors
ncolors=$(tput colors)
if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then
@@ -39,6 +39,10 @@ if [ -t 1 ]; then
fi
fi
+say_warning() {
+ printf "%b\n" "${yellow:-}dotnet_install: Warning: $1${normal:-}"
+}
+
say_err() {
printf "%b\n" "${red:-}dotnet_install: Error: $1${normal:-}" >&2
}
@@ -55,7 +59,10 @@ say_verbose() {
fi
}
-get_os_download_name_from_platform() {
+# This platform list is finite - if the SDK/Runtime has supported Linux distribution-specific assets,
+# then and only then should the Linux distribution appear in this list.
+# Adding a Linux distribution to this list does not imply distribution-specific support.
+get_legacy_os_name_from_platform() {
eval $invocation
platform="$1"
@@ -68,6 +75,10 @@ get_os_download_name_from_platform() {
echo "debian"
return 0
;;
+ "debian.9")
+ echo "debian.9"
+ return 0
+ ;;
"fedora.23")
echo "fedora.23"
return 0
@@ -76,6 +87,14 @@ get_os_download_name_from_platform() {
echo "fedora.24"
return 0
;;
+ "fedora.27")
+ echo "fedora.27"
+ return 0
+ ;;
+ "fedora.28")
+ echo "fedora.28"
+ return 0
+ ;;
"opensuse.13.2")
echo "opensuse.13.2"
return 0
@@ -84,6 +103,10 @@ get_os_download_name_from_platform() {
echo "opensuse.42.1"
return 0
;;
+ "opensuse.42.3")
+ echo "opensuse.42.3"
+ return 0
+ ;;
"rhel.7"*)
echo "rhel"
return 0
@@ -100,6 +123,10 @@ get_os_download_name_from_platform() {
echo "ubuntu.16.10"
return 0
;;
+ "ubuntu.18.04")
+ echo "ubuntu.18.04"
+ return 0
+ ;;
"alpine.3.4.3")
echo "alpine"
return 0
@@ -108,6 +135,30 @@ get_os_download_name_from_platform() {
return 1
}
+get_linux_platform_name() {
+ eval $invocation
+
+ if [ -n "$runtime_id" ]; then
+ echo "${runtime_id%-*}"
+ return 0
+ else
+ if [ -e /etc/os-release ]; then
+ . /etc/os-release
+ echo "$ID.$VERSION_ID"
+ return 0
+ elif [ -e /etc/redhat-release ]; then
+ local redhatRelease=$(/dev/null | grep libunwind)" ] && say_warning "Unable to locate libunwind. Probable prerequisite missing; please install libunwind."
+ [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libssl)" ] && say_warning "Unable to locate libssl. Probable prerequisite missing; please install libssl."
+ [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libicu)" ] && say_warning "Unable to locate libicu. Probable prerequisite missing; please install libicu."
+ [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep -F libcurl.so)" ] && say_warning "Unable to locate libcurl. Probable prerequisite missing; please install libcurl."
fi
-
+
return 0
}
@@ -207,7 +265,7 @@ check_pre_reqs() {
# input - $1
to_lowercase() {
#eval $invocation
-
+
echo "$1" | tr '[:upper:]' '[:lower:]'
return 0
}
@@ -216,8 +274,8 @@ to_lowercase() {
# input - $1
remove_trailing_slash() {
#eval $invocation
-
- local input=${1:-}
+
+ local input="${1:-}"
echo "${input%/}"
return 0
}
@@ -226,8 +284,8 @@ remove_trailing_slash() {
# input - $1
remove_beginning_slash() {
#eval $invocation
-
- local input=${1:-}
+
+ local input="${1:-}"
echo "${input#/}"
return 0
}
@@ -237,15 +295,15 @@ remove_beginning_slash() {
# child_path - $2 - this parameter can be empty
combine_paths() {
eval $invocation
-
+
# TODO: Consider making it work with any number of paths. For now:
if [ ! -z "${3:-}" ]; then
say_err "combine_paths: Function takes two parameters."
return 1
fi
-
- local root_path=$(remove_trailing_slash $1)
- local child_path=$(remove_beginning_slash ${2:-})
+
+ local root_path="$(remove_trailing_slash "$1")"
+ local child_path="$(remove_beginning_slash "${2:-}")"
say_verbose "combine_paths: root_path=$root_path"
say_verbose "combine_paths: child_path=$child_path"
echo "$root_path/$child_path"
@@ -254,8 +312,22 @@ combine_paths() {
get_machine_architecture() {
eval $invocation
-
- # Currently the only one supported
+
+ if command -v uname > /dev/null; then
+ CPUName=$(uname -m)
+ case $CPUName in
+ armv7l)
+ echo "arm"
+ return 0
+ ;;
+ aarch64)
+ echo "arm64"
+ return 0
+ ;;
+ esac
+ fi
+
+ # Always default to 'x64'
echo "x64"
return 0
}
@@ -264,23 +336,27 @@ get_machine_architecture() {
# architecture - $1
get_normalized_architecture_from_architecture() {
eval $invocation
-
- local architecture=$(to_lowercase $1)
- case $architecture in
+
+ local architecture="$(to_lowercase "$1")"
+ case "$architecture" in
\)
- echo "$(get_normalized_architecture_from_architecture $(get_machine_architecture))"
+ echo "$(get_normalized_architecture_from_architecture "$(get_machine_architecture)")"
return 0
;;
amd64|x64)
echo "x64"
return 0
;;
- x86)
- say_err "Architecture \`x86\` currently not supported"
- return 1
+ arm)
+ echo "arm"
+ return 0
+ ;;
+ arm64)
+ echo "arm64"
+ return 0
;;
esac
-
+
say_err "Architecture \`$architecture\` not supported. If you think this is a bug, please report it at https://github.com/dotnet/cli/issues"
return 1
}
@@ -294,8 +370,8 @@ get_normalized_architecture_from_architecture() {
# version_text - stdin
get_version_from_version_info() {
eval $invocation
-
- cat | tail -n 1
+
+ cat | tail -n 1 | sed 's/\r$//'
return 0
}
@@ -303,8 +379,8 @@ get_version_from_version_info() {
# version_text - stdin
get_commit_hash_from_version_info() {
eval $invocation
-
- cat | head -n 1
+
+ cat | head -n 1 | sed 's/\r$//'
return 0
}
@@ -314,14 +390,14 @@ get_commit_hash_from_version_info() {
# specific_version - $3
is_dotnet_package_installed() {
eval $invocation
-
- local install_root=$1
- local relative_path_to_package=$2
- local specific_version=${3//[$'\t\r\n']}
-
- local dotnet_package_path=$(combine_paths $(combine_paths $install_root $relative_path_to_package) $specific_version)
+
+ local install_root="$1"
+ local relative_path_to_package="$2"
+ local specific_version="${3//[$'\t\r\n']}"
+
+ local dotnet_package_path="$(combine_paths "$(combine_paths "$install_root" "$relative_path_to_package")" "$specific_version")"
say_verbose "is_dotnet_package_installed: dotnet_package_path=$dotnet_package_path"
-
+
if [ -d "$dotnet_package_path" ]; then
return 0
else
@@ -333,27 +409,33 @@ is_dotnet_package_installed() {
# azure_feed - $1
# channel - $2
# normalized_architecture - $3
+# coherent - $4
get_latest_version_info() {
eval $invocation
-
- local azure_feed=$1
- local channel=$2
- local normalized_architecture=$3
- local coherent=$4
+
+ local azure_feed="$1"
+ local channel="$2"
+ local normalized_architecture="$3"
+ local coherent="$4"
local version_file_url=null
- if [ "$shared_runtime" = true ]; then
+ if [[ "$runtime" == "dotnet" ]]; then
version_file_url="$uncached_feed/Runtime/$channel/latest.version"
- else
+ elif [[ "$runtime" == "aspnetcore" ]]; then
+ version_file_url="$uncached_feed/aspnetcore/Runtime/$channel/latest.version"
+ elif [ -z "$runtime" ]; then
if [ "$coherent" = true ]; then
version_file_url="$uncached_feed/Sdk/$channel/latest.coherent.version"
else
version_file_url="$uncached_feed/Sdk/$channel/latest.version"
fi
+ else
+ say_err "Invalid value for \$runtime"
+ return 1
fi
say_verbose "get_latest_version_info: latest url: $version_file_url"
-
- download $version_file_url
+
+ download "$version_file_url"
return $?
}
@@ -364,29 +446,29 @@ get_latest_version_info() {
# version - $4
get_specific_version_from_version() {
eval $invocation
-
- local azure_feed=$1
- local channel=$2
- local normalized_architecture=$3
- local version=$(to_lowercase $4)
- case $version in
+ local azure_feed="$1"
+ local channel="$2"
+ local normalized_architecture="$3"
+ local version="$(to_lowercase "$4")"
+
+ case "$version" in
latest)
local version_info
- version_info="$(get_latest_version_info $azure_feed $channel $normalized_architecture false)" || return 1
+ version_info="$(get_latest_version_info "$azure_feed" "$channel" "$normalized_architecture" false)" || return 1
say_verbose "get_specific_version_from_version: version_info=$version_info"
echo "$version_info" | get_version_from_version_info
return 0
;;
coherent)
local version_info
- version_info="$(get_latest_version_info $azure_feed $channel $normalized_architecture true)" || return 1
+ version_info="$(get_latest_version_info "$azure_feed" "$channel" "$normalized_architecture" true)" || return 1
say_verbose "get_specific_version_from_version: version_info=$version_info"
echo "$version_info" | get_version_from_version_info
return 0
;;
*)
- echo $version
+ echo "$version"
return 0
;;
esac
@@ -399,22 +481,26 @@ get_specific_version_from_version() {
# specific_version - $4
construct_download_link() {
eval $invocation
-
- local azure_feed=$1
- local channel=$2
- local normalized_architecture=$3
- local specific_version=${4//[$'\t\r\n']}
-
+
+ local azure_feed="$1"
+ local channel="$2"
+ local normalized_architecture="$3"
+ local specific_version="${4//[$'\t\r\n']}"
+
local osname
- osname=$(get_current_os_name) || return 1
+ osname="$(get_current_os_name)" || return 1
local download_link=null
- if [ "$shared_runtime" = true ]; then
+ if [[ "$runtime" == "dotnet" ]]; then
download_link="$azure_feed/Runtime/$specific_version/dotnet-runtime-$specific_version-$osname-$normalized_architecture.tar.gz"
- else
+ elif [[ "$runtime" == "aspnetcore" ]]; then
+ download_link="$azure_feed/aspnetcore/Runtime/$specific_version/aspnetcore-runtime-$specific_version-$osname-$normalized_architecture.tar.gz"
+ elif [ -z "$runtime" ]; then
download_link="$azure_feed/Sdk/$specific_version/dotnet-sdk-$specific_version-$osname-$normalized_architecture.tar.gz"
+ else
+ return 1
fi
-
+
echo "$download_link"
return 0
}
@@ -426,20 +512,22 @@ construct_download_link() {
# specific_version - $4
construct_legacy_download_link() {
eval $invocation
-
- local azure_feed=$1
- local channel=$2
- local normalized_architecture=$3
- local specific_version=${4//[$'\t\r\n']}
+
+ local azure_feed="$1"
+ local channel="$2"
+ local normalized_architecture="$3"
+ local specific_version="${4//[$'\t\r\n']}"
local distro_specific_osname
- distro_specific_osname=$(get_distro_specific_os_name) || return 1
+ distro_specific_osname="$(get_legacy_os_name)" || return 1
local legacy_download_link=null
- if [ "$shared_runtime" = true ]; then
+ if [[ "$runtime" == "dotnet" ]]; then
legacy_download_link="$azure_feed/Runtime/$specific_version/dotnet-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
- else
+ elif [ -z "$runtime" ]; then
legacy_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
+ else
+ return 1
fi
echo "$legacy_download_link"
@@ -448,9 +536,9 @@ construct_legacy_download_link() {
get_user_install_path() {
eval $invocation
-
+
if [ ! -z "${DOTNET_INSTALL_DIR:-}" ]; then
- echo $DOTNET_INSTALL_DIR
+ echo "$DOTNET_INSTALL_DIR"
else
echo "$HOME/.dotnet"
fi
@@ -461,15 +549,15 @@ get_user_install_path() {
# install_dir - $1
resolve_installation_path() {
eval $invocation
-
+
local install_dir=$1
if [ "$install_dir" = "" ]; then
- local user_install_path=$(get_user_install_path)
+ local user_install_path="$(get_user_install_path)"
say_verbose "resolve_installation_path: user_install_path=$user_install_path"
echo "$user_install_path"
return 0
fi
-
+
echo "$install_dir"
return 0
}
@@ -478,16 +566,16 @@ resolve_installation_path() {
# install_root - $1
get_installed_version_info() {
eval $invocation
-
- local install_root=$1
- local version_file=$(combine_paths "$install_root" "$local_version_file_relative_path")
+
+ local install_root="$1"
+ local version_file="$(combine_paths "$install_root" "$local_version_file_relative_path")"
say_verbose "Local version file: $version_file"
if [ ! -z "$version_file" ] | [ -r "$version_file" ]; then
- local version_info="$(cat $version_file)"
+ local version_info="$(cat "$version_file")"
echo "$version_info"
return 0
fi
-
+
say_verbose "Local version file not found."
return 0
}
@@ -496,9 +584,9 @@ get_installed_version_info() {
# relative_or_absolute_path - $1
get_absolute_path() {
eval $invocation
-
+
local relative_or_absolute_path=$1
- echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")
+ echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")"
return 0
}
@@ -510,17 +598,25 @@ get_absolute_path() {
copy_files_or_dirs_from_list() {
eval $invocation
- local root_path=$(remove_trailing_slash $1)
- local out_path=$(remove_trailing_slash $2)
- local override=$3
- local override_switch=$(if [ "$override" = false ]; then printf -- "-n"; fi)
-
+ local root_path="$(remove_trailing_slash "$1")"
+ local out_path="$(remove_trailing_slash "$2")"
+ local override="$3"
+ local osname="$(get_current_os_name)"
+ local override_switch=$(
+ if [ "$override" = false ]; then
+ if [[ "$osname" == "linux-musl" ]]; then
+ printf -- "-u";
+ else
+ printf -- "-n";
+ fi
+ fi)
+
cat | uniq | while read -r file_path; do
- local path=$(remove_beginning_slash ${file_path#$root_path})
- local target=$out_path/$path
+ local path="$(remove_beginning_slash "${file_path#$root_path}")"
+ local target="$out_path/$path"
if [ "$override" = true ] || (! ([ -d "$target" ] || [ -e "$target" ])); then
- mkdir -p $out_path/$(dirname $path)
- cp -R $override_switch $root_path/$path $target
+ mkdir -p "$out_path/$(dirname "$path")"
+ cp -R $override_switch "$root_path/$path" "$target"
fi
done
}
@@ -530,21 +626,21 @@ copy_files_or_dirs_from_list() {
# out_path - $2
extract_dotnet_package() {
eval $invocation
-
- local zip_path=$1
- local out_path=$2
-
- local temp_out_path=$(mktemp -d $temporary_file_template)
-
+
+ local zip_path="$1"
+ local out_path="$2"
+
+ local temp_out_path="$(mktemp -d "$temporary_file_template")"
+
local failed=false
tar -xzf "$zip_path" -C "$temp_out_path" > /dev/null || failed=true
-
+
local folders_with_version_regex='^.*/[0-9]+\.[0-9]+[^/]+/'
- find $temp_out_path -type f | grep -Eo $folders_with_version_regex | copy_files_or_dirs_from_list $temp_out_path $out_path false
- find $temp_out_path -type f | grep -Ev $folders_with_version_regex | copy_files_or_dirs_from_list $temp_out_path $out_path true
-
- rm -rf $temp_out_path
-
+ find "$temp_out_path" -type f | grep -Eo "$folders_with_version_regex" | sort | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" false
+ find "$temp_out_path" -type f | grep -Ev "$folders_with_version_regex" | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" "$override_non_versioned_files"
+
+ rm -rf "$temp_out_path"
+
if [ "$failed" = true ]; then
say_err "Extraction failed"
return 1
@@ -557,14 +653,19 @@ extract_dotnet_package() {
download() {
eval $invocation
- local remote_path=$1
- local out_path=${2:-}
+ local remote_path="$1"
+ local out_path="${2:-}"
+
+ if [[ "$remote_path" != "http"* ]]; then
+ cp "$remote_path" "$out_path"
+ return $?
+ fi
local failed=false
if machine_has "curl"; then
- downloadcurl $remote_path $out_path || failed=true
+ downloadcurl "$remote_path" "$out_path" || failed=true
elif machine_has "wget"; then
- downloadwget $remote_path $out_path || failed=true
+ downloadwget "$remote_path" "$out_path" || failed=true
else
failed=true
fi
@@ -577,14 +678,17 @@ download() {
downloadcurl() {
eval $invocation
- local remote_path=$1
- local out_path=${2:-}
+ local remote_path="$1"
+ local out_path="${2:-}"
+
+ # Append feed_credential as late as possible before calling curl to avoid logging feed_credential
+ remote_path="${remote_path}${feed_credential}"
local failed=false
if [ -z "$out_path" ]; then
- curl --retry 10 -sSL -f --create-dirs $remote_path || failed=true
+ curl --retry 10 -sSL -f --create-dirs "$remote_path" || failed=true
else
- curl --retry 10 -sSL -f --create-dirs -o $out_path $remote_path || failed=true
+ curl --retry 10 -sSL -f --create-dirs -o "$out_path" "$remote_path" || failed=true
fi
if [ "$failed" = true ]; then
say_verbose "Curl download failed"
@@ -595,14 +699,17 @@ downloadcurl() {
downloadwget() {
eval $invocation
- local remote_path=$1
- local out_path=${2:-}
+ local remote_path="$1"
+ local out_path="${2:-}"
+
+ # Append feed_credential as late as possible before calling wget to avoid logging feed_credential
+ remote_path="${remote_path}${feed_credential}"
local failed=false
if [ -z "$out_path" ]; then
- wget -q --tries 10 $remote_path || failed=true
+ wget -q --tries 10 -O - "$remote_path" || failed=true
else
- wget -v --tries 10 -O $out_path $remote_path || failed=true
+ wget --tries 10 -O "$out_path" "$remote_path" || failed=true
fi
if [ "$failed" = true ]; then
say_verbose "Wget download failed"
@@ -615,20 +722,20 @@ calculate_vars() {
eval $invocation
valid_legacy_download_link=true
- normalized_architecture=$(get_normalized_architecture_from_architecture "$architecture")
+ normalized_architecture="$(get_normalized_architecture_from_architecture "$architecture")"
say_verbose "normalized_architecture=$normalized_architecture"
-
- specific_version=$(get_specific_version_from_version $azure_feed $channel $normalized_architecture $version)
+
+ specific_version="$(get_specific_version_from_version "$azure_feed" "$channel" "$normalized_architecture" "$version")"
say_verbose "specific_version=$specific_version"
if [ -z "$specific_version" ]; then
say_err "Could not get version information."
return 1
fi
-
- download_link=$(construct_download_link $azure_feed $channel $normalized_architecture $specific_version)
+
+ download_link="$(construct_download_link "$azure_feed" "$channel" "$normalized_architecture" "$specific_version")"
say_verbose "download_link=$download_link"
- legacy_download_link=$(construct_legacy_download_link $azure_feed $channel $normalized_architecture $specific_version) || valid_legacy_download_link=false
+ legacy_download_link="$(construct_legacy_download_link "$azure_feed" "$channel" "$normalized_architecture" "$specific_version")" || valid_legacy_download_link=false
if [ "$valid_legacy_download_link" = true ]; then
say_verbose "legacy_download_link=$legacy_download_link"
@@ -636,39 +743,74 @@ calculate_vars() {
say_verbose "Cound not construct a legacy_download_link; omitting..."
fi
- install_root=$(resolve_installation_path $install_dir)
+ install_root="$(resolve_installation_path "$install_dir")"
say_verbose "install_root=$install_root"
}
install_dotnet() {
eval $invocation
local download_failed=false
+ local asset_name=''
+ local asset_relative_path=''
+
+ if [[ "$runtime" == "dotnet" ]]; then
+ asset_relative_path="shared/Microsoft.NETCore.App"
+ asset_name=".NET Core Runtime"
+ elif [[ "$runtime" == "aspnetcore" ]]; then
+ asset_relative_path="shared/Microsoft.AspNetCore.App"
+ asset_name="ASP.NET Core Runtime"
+ elif [ -z "$runtime" ]; then
+ asset_relative_path="sdk"
+ asset_name=".NET Core SDK"
+ else
+ say_err "Invalid value for \$runtime"
+ return 1
+ fi
- if is_dotnet_package_installed $install_root "sdk" $specific_version; then
- say ".NET SDK version $specific_version is already installed."
+ # Check if the SDK version is already installed.
+ if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$specific_version"; then
+ say "$asset_name version $specific_version is already installed."
return 0
fi
-
- mkdir -p $install_root
- zip_path=$(mktemp $temporary_file_template)
+
+ mkdir -p "$install_root"
+ zip_path="$(mktemp "$temporary_file_template")"
say_verbose "Zip path: $zip_path"
say "Downloading link: $download_link"
- download "$download_link" $zip_path || download_failed=true
+
+ # Failures are normal in the non-legacy case for ultimately legacy downloads.
+ # Do not output to stderr, since output to stderr is considered an error.
+ download "$download_link" "$zip_path" 2>&1 || download_failed=true
# if the download fails, download the legacy_download_link
- if [ "$download_failed" = true ] && [ "$valid_legacy_download_link" = true ]; then
+ if [ "$download_failed" = true ]; then
say "Cannot download: $download_link"
- download_link=$legacy_download_link
- zip_path=$(mktemp $temporary_file_template)
- say_verbose "Legacy zip path: $zip_path"
- say "Downloading legacy link: $download_link"
- download "$download_link" $zip_path
+
+ if [ "$valid_legacy_download_link" = true ]; then
+ download_failed=false
+ download_link="$legacy_download_link"
+ zip_path="$(mktemp "$temporary_file_template")"
+ say_verbose "Legacy zip path: $zip_path"
+ say "Downloading legacy link: $download_link"
+ download "$download_link" "$zip_path" 2>&1 || download_failed=true
+ fi
fi
-
+
+ if [ "$download_failed" = true ]; then
+ say_err "Could not download $asset_name version $specific_version"
+ return 1
+ fi
+
say "Extracting zip from $download_link"
- extract_dotnet_package $zip_path $install_root
-
+ extract_dotnet_package "$zip_path" "$install_root"
+
+ # Check if the SDK version is now installed; if not, fail the installation.
+ if ! is_dotnet_package_installed "$install_root" "$asset_relative_path" "$specific_version"; then
+ say_err "$asset_name version $specific_version failed to install with an unknown error."
+ return 1
+ fi
+
return 0
}
@@ -682,19 +824,22 @@ install_dir=""
architecture=""
dry_run=false
no_path=false
+no_cdn=false
azure_feed="https://dotnetcli.azureedge.net/dotnet"
uncached_feed="https://dotnetcli.blob.core.windows.net/dotnet"
+feed_credential=""
verbose=false
-shared_runtime=false
+runtime=""
runtime_id=""
+override_non_versioned_files=true
while [ $# -ne 0 ]
do
- name=$1
- case $name in
+ name="$1"
+ case "$name" in
-c|--channel|-[Cc]hannel)
shift
- channel=$1
+ channel="$1"
;;
-v|--version|-[Vv]ersion)
shift
@@ -709,7 +854,18 @@ do
architecture="$1"
;;
--shared-runtime|-[Ss]hared[Rr]untime)
- shared_runtime=true
+ say_warning "The --shared-runtime flag is obsolete and may be removed in a future version of this script. The recommended usage is to specify '--runtime dotnet'."
+ if [ -z "$runtime" ]; then
+ runtime="dotnet"
+ fi
+ ;;
+ --runtime|-[Rr]untime)
+ shift
+ runtime="$1"
+ if [[ "$runtime" != "dotnet" ]] && [[ "$runtime" != "aspnetcore" ]]; then
+ say_err "Unsupported value for --runtime: '$1'. Valid values are 'dotnet' and 'aspnetcore'."
+ exit 1
+ fi
;;
--dry-run|-[Dd]ry[Rr]un)
dry_run=true
@@ -720,6 +876,9 @@ do
--verbose|-[Vv]erbose)
verbose=true
;;
+ --no-cdn|-[Nn]o[Cc]dn)
+ no_cdn=true
+ ;;
--azure-feed|-[Aa]zure[Ff]eed)
shift
azure_feed="$1"
@@ -728,12 +887,19 @@ do
shift
uncached_feed="$1"
;;
+ --feed-credential|-[Ff]eed[Cc]redential)
+ shift
+ feed_credential="$1"
+ ;;
--runtime-id|-[Rr]untime[Ii]d)
shift
runtime_id="$1"
;;
+ --skip-non-versioned-files|-[Ss]kip[Nn]on[Vv]ersioned[Ff]iles)
+ override_non_versioned_files=false
+ ;;
-?|--?|-h|--help|-[Hh]elp)
- script_name="$(basename $0)"
+ script_name="$(basename "$0")"
echo ".NET Tools Installer"
echo "Usage: $script_name [-c|--channel ] [-v|--version ] [-p|--prefix ]"
echo " $script_name -h|-?|--help"
@@ -741,7 +907,7 @@ do
echo "$script_name is a simple command line interface for obtaining dotnet cli."
echo ""
echo "Options:"
- echo " -c,--channel Download from the CHANNEL specified, Defaults to \`$channel\`."
+ echo " -c,--channel Download from the channel specified, Defaults to \`$channel\`."
echo " -Channel"
echo " Possible values:"
echo " - Current - most current release"
@@ -758,20 +924,32 @@ do
echo " coherent applies only to SDK downloads"
echo " - 3-part version in a format A.B.C - represents specific version of build"
echo " examples: 2.0.0-preview2-006120; 1.1.0"
- echo " -i,--install-dir Install under specified location (see Install Location below)"
+ echo " -i,--install-dir Install under specified location (see Install Location below)"
echo " -InstallDir"
- echo " --architecture Architecture of .NET Tools. Currently only x64 is supported."
+ echo " --architecture Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`."
echo " --arch,-Architecture,-Arch"
- echo " --shared-runtime Installs just the shared runtime bits, not the entire SDK."
- echo " -SharedRuntime"
- echo " --dry-run,-DryRun Do not perform installation. Display download link."
- echo " --no-path, -NoPath Do not set PATH for the current process."
- echo " --verbose,-Verbose Display diagnostics information."
- echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed, This parameter typically is not changed by the user."
- echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user."
- echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)."
+ echo " Possible values: x64, arm, and arm64"
+ echo " --runtime Installs a shared runtime only, without the SDK."
+ echo " -Runtime"
+ echo " Possible values:"
+ echo " - dotnet - the Microsoft.NETCore.App shared runtime"
+ echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime"
+ echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable."
+ echo " -SkipNonVersionedFiles"
+ echo " --dry-run,-DryRun Do not perform installation. Display download link."
+ echo " --no-path, -NoPath Do not set PATH for the current process."
+ echo " --verbose,-Verbose Display diagnostics information."
+ echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed, This parameter typically is not changed by the user."
+ echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user."
+ echo " --no-cdn,-NoCdn Disable downloading from the Azure CDN, and use the uncached feed directly."
+ echo " --feed-credential,-FeedCredential Azure feed shared access token. This parameter typically is not specified."
+ echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)."
echo " -RuntimeId"
- echo " -?,--?,-h,--help,-Help Shows this help message"
+ echo " -?,--?,-h,--help,-Help Shows this help message"
+ echo ""
+ echo "Obsolete parameters:"
+ echo " --shared-runtime The recommended alternative is '--runtime dotnet'."
+ echo " -SharedRuntime Installs just the shared runtime bits, not the entire SDK."
echo ""
echo "Install Location:"
echo " Location is chosen in following order:"
@@ -789,6 +967,10 @@ do
shift
done
+if [ "$no_cdn" = true ]; then
+ azure_feed="$uncached_feed"
+fi
+
check_min_reqs
calculate_vars
@@ -797,17 +979,17 @@ if [ "$dry_run" = true ]; then
if [ "$valid_legacy_download_link" = true ]; then
say "Legacy payload URL: $legacy_download_link"
fi
- say "Repeatable invocation: ./$(basename $0) --version $specific_version --channel $channel --install-dir $install_dir"
+ say "Repeatable invocation: ./$(basename "$0") --version $specific_version --channel $channel --install-dir $install_dir"
exit 0
fi
check_pre_reqs
install_dotnet
-bin_path=$(get_absolute_path $(combine_paths $install_root $bin_folder_relative_path))
+bin_path="$(get_absolute_path "$(combine_paths "$install_root" "$bin_folder_relative_path")")"
if [ "$no_path" = false ]; then
say "Adding to current process PATH: \`$bin_path\`. Note: This change will be visible only when sourcing script."
- export PATH=$bin_path:$PATH
+ export PATH="$bin_path":"$PATH"
else
say "Binaries of dotnet can be found in $bin_path"
fi
diff --git a/setup/Directory.Build.props b/setup/Directory.Build.props
new file mode 100644
index 00000000000..bd233e75785
--- /dev/null
+++ b/setup/Directory.Build.props
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ true
+ false
+ $(MSBuildThisFileDirectory)
+ $(SetupRootFolder)resources
+ $(SetupRootFolder)..\artifacts\bin
+ $(ArtifactsDir)\VSSetup\$(Configuration)
+ $(ArtifactsDir)\VSSetup.obj\$(Configuration)\$(MSBuildProjectName)
+ $(SetupRootFolder)..\artifacts\VSSetup\$(Configuration)
+ $(SetupRootFolder)..\artifacts\VSSetup\$(Configuration)\Insertion
+
+
+ $(VSMajorVersion).$(VSMinorVersion).$(BUILD_BUILDNUMBER)
+
+
+
diff --git a/setup/Directory.Build.targets b/setup/Directory.Build.targets
new file mode 100644
index 00000000000..ccd47cc0a9a
--- /dev/null
+++ b/setup/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/setup/FSharp.Setup.props b/setup/FSharp.Setup.props
deleted file mode 100644
index 899f78e6baa..00000000000
--- a/setup/FSharp.Setup.props
+++ /dev/null
@@ -1,150 +0,0 @@
-
-
-
-
- 2.0
- 3.10
- 3.10.0.1503
- $(MSBuildThisFileDirectory)
- $(SetupRootFolder)\..\packages\WiX.Toolset.2015.$(WiXToolset2015Version)\tools\wix
- $(SetupRootFolder)\..\packages
-
-
-
-
-
-
- $(VSMajorVersion).$(VSMinorVersion).$(BUILD_BUILDNUMBER)
-
-
-
- net40
- Debug
- AnyCPU
-
-
-
- $(SetupRootFolder)\..\$(Configuration)
- $(BinariesDir)\$(TargetDotnetProfile)\bin\
- $(BinariesDir)\insertion
- obj\$(Configuration)\
- $(BinariesDir)\setup
- $(BinariesDir)\setup\$(Lang)
-
-
-
-
- ENU
- 1033
- 9
- en
- en-US
- false
-
-
- CHT
- 1028
- 31748
- zh-Hant
- zh-TW
- true
-
-
- CSY
- 1029
- 5
- cs
- cs-CZ
- true
-
-
- DEU
- 1031
- 7
- de
- de-DE
- true
-
-
- FRA
- 1036
- 12
- fr
- fr-FR
- true
-
-
- ITA
- 1040
- 16
- it
- it-IT
- true
-
-
- JPN
- 1041
- 17
- ja
- ja-JP
- true
-
-
- KOR
- 1042
- 18
- ko
- ko-KR
- true
-
-
- PLK
- 1045
- 21
- pl
- pl-PL
- true
-
-
- PTB
- 1046
- 1046
- pt-BR
- pt-BR
- true
-
-
- RUS
- 1049
- 25
- ru
- ru-RU
- true
-
-
- TRK
- 1055
- 31
- tr
- tr-TR
- true
-
-
- CHS
- 2052
- 4
- zh-Hans
- zh-CN
- true
-
-
- ESN
- 3082
- 10
- es
- es-ES
- true
-
-
-
-
diff --git a/setup/Localization.props b/setup/Localization.props
new file mode 100644
index 00000000000..37c13afcd2c
--- /dev/null
+++ b/setup/Localization.props
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ ENU
+ 1033
+ 9
+ en
+ en-US
+ false
+
+
+ CHT
+ 1028
+ 31748
+ zh-Hant
+ zh-TW
+ true
+
+
+ CSY
+ 1029
+ 5
+ cs
+ cs-CZ
+ true
+
+
+ DEU
+ 1031
+ 7
+ de
+ de-DE
+ true
+
+
+ FRA
+ 1036
+ 12
+ fr
+ fr-FR
+ true
+
+
+ ITA
+ 1040
+ 16
+ it
+ it-IT
+ true
+
+
+ JPN
+ 1041
+ 17
+ ja
+ ja-JP
+ true
+
+
+ KOR
+ 1042
+ 18
+ ko
+ ko-KR
+ true
+
+
+ PLK
+ 1045
+ 21
+ pl
+ pl-PL
+ true
+
+
+ PTB
+ 1046
+ 1046
+ pt-BR
+ pt-BR
+ true
+
+
+ RUS
+ 1049
+ 25
+ ru
+ ru-RU
+ true
+
+
+ TRK
+ 1055
+ 31
+ tr
+ tr-TR
+ true
+
+
+ CHS
+ 2052
+ 4
+ zh-Hans
+ zh-CN
+ true
+
+
+ ESN
+ 3082
+ 10
+ es
+ es-ES
+ true
+
+
+
+
diff --git a/setup/Swix/Directory.Build.props b/setup/Swix/Directory.Build.props
new file mode 100644
index 00000000000..f64df1d29de
--- /dev/null
+++ b/setup/Swix/Directory.Build.props
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Debug
+ neutral
+ false
+ vsix
+ true
+ $(ArtifactsBinDir)
+
+
+
diff --git a/setup/Swix/Directory.Build.targets b/setup/Swix/Directory.Build.targets
new file mode 100644
index 00000000000..974c6da4f1b
--- /dev/null
+++ b/setup/Swix/Directory.Build.targets
@@ -0,0 +1,10 @@
+
+
+
+
+ $(ArtifactsDir)\VSSetup\$(Configuration)\Insertion\$(OutputName).vsix
+
+
+
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr
index 464fdd774ee..f3f60d490b9 100644
--- a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Files.swr
@@ -5,7 +5,7 @@ package name=Microsoft.FSharp.Compiler.Resources
vs.package.language=$(LocaleSpecificCulture)
folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharpCompiler\$(LocaleParentCulture)"
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Build.resources.dll"
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Compiler.Interactive.Settings.resources.dll"
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll"
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Core.resources.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Build.resources.dll"
+ file source="$(BinariesFolder)\FSharp.Compiler.Interactive.Settings\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Compiler.Interactive.Settings.resources.dll"
+ file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll"
+ file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\$(LocaleParentCulture)\FSharp.Core.resources.dll"
diff --git a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj
index d722fb0293e..ac8e74d4854 100644
--- a/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj
+++ b/setup/Swix/Microsoft.FSharp.Compiler.Resources/Microsoft.FSharp.Compiler.Resources.swixproj
@@ -1,23 +1,16 @@
-
+
+
+
+
- ..\..\..\src
- neutral
- false
- vsix
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(BinariesFolder)\insertionMicrosoft.FSharp.Compiler.Resources.$(LocaleCode)
- $(MSBuildThisFileDirectory)obj
-
-
$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
+ $(PackagePreprocessorDefinitions);Configuration=$(Configuration)$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)$(PackagePreprocessorDefinitions);LocaleParentCulture=$(LocaleParentCulture)$(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture)
@@ -35,7 +28,6 @@
-
-
-
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Compiler/Files.swr b/setup/Swix/Microsoft.FSharp.Compiler/Files.swr
index e546ffe0b30..b56667d2465 100644
--- a/setup/Swix/Microsoft.FSharp.Compiler/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.Compiler/Files.swr
@@ -5,35 +5,35 @@ package name=Microsoft.FSharp.Compiler
folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp"
- file source=$(BinariesFolder)\net40\bin\fsc.exe vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe"
- file source="$(BinariesFolder)\net40\bin\fsc.exe.config"
-
- file source=$(BinariesFolder)\net40\bin\fsi.exe vs.file.ngen=yes vs.file.ngenArchitecture=X86 vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsi.exe"
- file source="$(BinariesFolder)\net40\bin\fsi.exe.config"
-
- file source="$(BinariesFolder)\net40\bin\fsiAnyCpu.exe" vs.file.ngen=yes vs.file.ngenArchitecture=X64 vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsiAnyCpu.exe"
- file source="$(BinariesFolder)\net40\bin\fsiAnyCpu.exe.config"
-
- file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Interactive.Settings.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
- file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Private.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
- file source="$(BinariesFolder)\net40\bin\FSharp.Compiler.Server.Shared.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
-
- file source="$(BinariesFolder)\net40\bin\FSharp.Core.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
- file source="$(BinariesFolder)\net40\bin\FSharp.Core.optdata"
- file source="$(BinariesFolder)\net40\bin\FSharp.Core.sigdata"
-
- file source="$(BinariesFolder)\net40\bin\FSharp.Build.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
-
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Type.Providers.Redist.$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll"
- file source="$(BinariesFolder)\net40\bin\Microsoft.Build.dll"
- file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Framework.dll"
- file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Tasks.Core.dll"
- file source="$(BinariesFolder)\net40\bin\Microsoft.Build.Utilities.Core.dll"
- file source="$(BinariesFolder)\net40\bin\Microsoft.Portable.FSharp.Targets"
- file source="$(BinariesFolder)\net40\bin\System.Collections.Immutable.dll"
- file source="$(BinariesFolder)\net40\bin\System.Reflection.Metadata.dll"
- file source="$(BinariesFolder)\net40\bin\System.ValueTuple.dll"
- file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.NetSdk.props"
- file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.NetSdk.targets"
- file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.Overrides.NetSdk.targets"
- file source="$(BinariesFolder)\net40\bin\Microsoft.FSharp.Targets"
+ file source=$(BinariesFolder)\fsc\$(Configuration)\net46\fsc.exe vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe"
+ file source="$(BinariesFolder)\fsc\$(Configuration)\net46\fsc.exe.config"
+
+ file source=$(BinariesFolder)\fsi\$(Configuration)\net46\fsi.exe vs.file.ngen=yes vs.file.ngenArchitecture=X86 vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsi.exe"
+ file source="$(BinariesFolder)\fsi\$(Configuration)\net46\fsi.exe.config"
+
+ file source="$(BinariesFolder)\fsiAnyCpu\$(Configuration)\net46\fsiAnyCpu.exe" vs.file.ngen=yes vs.file.ngenArchitecture=X64 vs.file.ngenPriority=2 vs.file.ngenApplication="[installDir]\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsiAnyCpu.exe"
+ file source="$(BinariesFolder)\fsiAnyCpu\$(Configuration)\net46\fsiAnyCpu.exe.config"
+
+ file source="$(BinariesFolder)\FSharp.Compiler.Interactive.Settings\$(Configuration)\net46\FSharp.Compiler.Interactive.Settings.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+ file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\FSharp.Compiler.Private.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+ file source="$(BinariesFolder)\FSharp.Compiler.Server.Shared\$(Configuration)\net46\FSharp.Compiler.Server.Shared.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+
+ file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\FSharp.Core.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+ file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\FSharp.Core.optdata"
+ file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\FSharp.Core.sigdata"
+
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\FSharp.Build.dll" vs.file.ngen=yes vs.file.ngenArchitecture=All vs.file.ngenPriority=2
+
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Type.Providers.Redist\$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.Framework.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.Tasks.Core.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Build.Utilities.Core.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.Portable.FSharp.Targets"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\System.Collections.Immutable.dll"
+ file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\System.Reflection.Metadata.dll"
+ file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\System.ValueTuple.dll"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.NetSdk.props"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.NetSdk.targets"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.Overrides.NetSdk.targets"
+ file source="$(BinariesFolder)\FSharp.Build\$(Configuration)\net46\Microsoft.FSharp.Targets"
diff --git a/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj b/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj
index d748087bfcc..f256dd46779 100644
--- a/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj
+++ b/setup/Swix/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.swixproj
@@ -1,27 +1,17 @@
-
+
+
+
+
- $(MSBuildThisFileDirectory)..\..\..\src
- $(FSharpSourcesRoot)\..
- neutral
- false
- vsix
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(FSharpSourcesRoot)\..\packages
- $(BinariesFolder)\insertionMicrosoft.FSharp.Compiler
- $(MSBuildThisFileDirectory)obj
-
-
-
$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
- $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
+ $(PackagePreprocessorDefinitions);Configuration=$(Configuration)
+ $(PackagePreprocessorDefinitions);PackagesFolder=$(NuGetPackageRoot)$(PackagePreprocessorDefinitions);FSharpTreeRoot=$(FSharpTreeRoot)$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)$(PackagePreprocessorDefinitions);MicrosoftVisualFSharpTypeProvidersRedistPackageVersion=$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)
@@ -36,7 +26,6 @@
-
-
-
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr b/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr
index 29a77d01c79..f927497e193 100644
--- a/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.Dependencies/Files.swr
@@ -4,16 +4,11 @@ package name=Microsoft.FSharp.Dependencies
version=$(FSharpPackageVersion)
folder "InstallDir:MSBuild\Microsoft\VisualStudio\v$(VSGeneralVersion)\FSharp"
- file "Microsoft.FSharp.targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.Shim.targets"
- file "Microsoft.Portable.FSharp.targets" source="$(BinariesFolder)\setup\resources\Microsoft.Portable.FSharp.Shim.targets"
- file "Microsoft.FSharp.NetSdk.targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.NetSdk.Shim.targets"
- file "Microsoft.FSharp.Overrides.NetSdk.targets" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.Overrides.NetSdk.Shim.targets"
- file "Microsoft.FSharp.NetSdk.props" source="$(BinariesFolder)\setup\resources\Microsoft.FSharp.NetSdk.Shim.props"
-
-folder "InstallDir:Common7\IDE\PublicAssemblies"
- file source="$(BinariesFolder)\net40\bin\FSharp.Core.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\FSharp.Core.optdata"
- file source="$(BinariesFolder)\net40\bin\FSharp.Core.sigdata"
+ file "Microsoft.FSharp.targets" source="$(SetupShimsDir)\Microsoft.FSharp.Shim.targets"
+ file "Microsoft.Portable.FSharp.targets" source="$(SetupShimsDir)\Microsoft.Portable.FSharp.Shim.targets"
+ file "Microsoft.FSharp.NetSdk.targets" source="$(SetupShimsDir)\Microsoft.FSharp.NetSdk.Shim.targets"
+ file "Microsoft.FSharp.Overrides.NetSdk.targets" source="$(SetupShimsDir)\Microsoft.FSharp.Overrides.NetSdk.Shim.targets"
+ file "Microsoft.FSharp.NetSdk.props" source="$(SetupShimsDir)\Microsoft.FSharp.NetSdk.Shim.props"
folder "InstallDir:Common7\Tools\VsDevCmd\Ext"
file source="fsharp.bat"
diff --git a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj
index 06d75f70f72..e30eaaf0fe1 100644
--- a/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj
+++ b/setup/Swix/Microsoft.FSharp.Dependencies/Microsoft.FSharp.Dependencies.swixproj
@@ -1,26 +1,19 @@
-
+
+
+
+
- ..\..\..\src
- neutral
- false
- vsix
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(FSharpSourcesRoot)\..\packages
- $(BinariesFolder)\insertionMicrosoft.FSharp.Dependencies
- $(MSBuildThisFileDirectory)obj
-
-
$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
- $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
+ $(PackagePreprocessorDefinitions);Configuration=$(Configuration)$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
+ $(PackagePreprocessorDefinitions);SetupShimsDir=$(MSBuildThisFileDirectory)..\..\shims
+ $(PackagePreprocessorDefinitions);TargetFramework=$(TargetFramework)$(PackagePreprocessorDefinitions);VSGeneralVersion=$(VSGeneralVersion)
@@ -31,10 +24,10 @@
+
-
-
-
+
+
diff --git a/setup/Swix/Microsoft.FSharp.IDE/Files.swr b/setup/Swix/Microsoft.FSharp.IDE/Files.swr
index bf544b4be14..2e0ee2bcf3b 100644
--- a/setup/Swix/Microsoft.FSharp.IDE/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.IDE/Files.swr
@@ -4,10 +4,10 @@ package name=Microsoft.FSharp.IDE
version=$(FSharpPackageVersion)
folder "InstallDir:Common7\IDE\NewScriptItems"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\Script\NewFSharpScriptItems.vsdir"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\Script\Script.fsx"
+ file source="$(SetupResourcesDir)\NewFileDialog\Script\NewFSharpScriptItems.vsdir"
+ file source="$(SetupResourcesDir)\NewFileDialog\Script\Script.fsx"
folder "InstallDir:Common7\IDE\NewFileItems"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\NewFSharpFileItems.vsdir"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\File.fs"
- file source="$(BinariesFolder)\setup\resources\NewFileDialog\General\Script.fsx"
+ file source="$(SetupResourcesDir)\NewFileDialog\General\NewFSharpFileItems.vsdir"
+ file source="$(SetupResourcesDir)\NewFileDialog\General\File.fs"
+ file source="$(SetupResourcesDir)\NewFileDialog\General\Script.fsx"
diff --git a/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj
index 47c00dd88fe..223a7262fcb 100644
--- a/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj
+++ b/setup/Swix/Microsoft.FSharp.IDE/Microsoft.FSharp.IDE.swixproj
@@ -1,26 +1,17 @@
-
+
+
+
+
- $(MSBuildThisFileDirectory)..\..\..\src
- neutral
- false
- vsix
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(FSharpSourcesRoot)\..\packages
- $(BinariesFolder)\insertionMicrosoft.FSharp.IDE
- $(MSBuildThisFileDirectory)obj
-
-
- $(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)
- $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
+ $(PackagePreprocessorDefinitions);SetupResourcesDir=$(MSBuildThisFileDirectory)..\..\resources
+ $(PackagePreprocessorDefinitions);TargetFramework=$(TargetFramework)
@@ -30,9 +21,9 @@
+
-
-
-
+
+
diff --git a/setup/Swix/Microsoft.FSharp.SDK/Files.swr b/setup/Swix/Microsoft.FSharp.SDK/Files.swr
index 228bc933437..cffd90ed366 100644
--- a/setup/Swix/Microsoft.FSharp.SDK/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.SDK/Files.swr
@@ -7,96 +7,96 @@ folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharpSdk"
folder ".NETCore"
folder "3.3.1.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.3.1.0\FSharp.Core.xml"
folder "3.7.4.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.7.4.0\FSharp.Core.xml"
folder "3.7.41.0"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45\FSharp.Core.xml"
folder "3.78.3.1"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.3.1\FSharp.Core.xml"
folder "3.78.4.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.78.4.0\FSharp.Core.xml"
folder "3.78.41.0"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wp8\FSharp.Core.xml"
folder "3.259.3.1"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.3.1\FSharp.Core.xml"
folder "3.259.4.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETCore\3.259.4.0\FSharp.Core.xml"
folder "3.259.41.0"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+netcore45+wpa81+wp8\FSharp.Core.xml"
folder ".NETFramework\v4.0"
folder "4.3.0.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.0.0\FSharp.Core.xml"
folder "4.3.1.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.3.1.0\FSharp.Core.xml"
folder "4.4.0.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETFramework\v4.0\4.4.0.0\FSharp.Core.xml"
folder "4.4.1.0"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\versions\4.4.1.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\versions\4.4.1.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\versions\4.4.1.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\versions\4.4.1.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\versions\4.4.1.0\FSharp.Core.xml"
folder "4.4.3.0"
- file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.dll"
- file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.optdata"
- file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\FSharp.Core.4.3.4\lib\net45\FSharp.Core.xml"
+ file source="$(PackagesFolder)\FSharp.Core\4.3.4\lib\net45\FSharp.Core.dll"
+ file source="$(PackagesFolder)\FSharp.Core\4.3.4\lib\net45\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\FSharp.Core\4.3.4\lib\net45\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\FSharp.Core\4.3.4\lib\net45\FSharp.Core.xml"
folder ".NETPortable"
folder "2.3.5.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.0\FSharp.Core.xml"
folder "2.3.5.1"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\2.3.5.1\FSharp.Core.xml"
folder "3.47.4.0"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist.1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.VisualFSharp.Core.Redist\1.0.0\content\.NETPortable\3.47.4.0\FSharp.Core.xml"
folder "3.47.41.0"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.dll"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.optdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.sigdata"
- file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core.10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.xml"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.dll"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.optdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.sigdata"
+ file source="$(PackagesFolder)\Microsoft.Portable.FSharp.Core\10.1.0\lib\profiles\portable-net45+sl5+netcore45\FSharp.Core.xml"
diff --git a/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj
index 9256eadc32f..aac26eaaa0d 100644
--- a/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj
+++ b/setup/Swix/Microsoft.FSharp.SDK/Microsoft.FSharp.SDK.swixproj
@@ -1,24 +1,15 @@
-
+
+
+
+
- ..\..\..\src
- neutral
- false
- vsixMicrosoft.FSharp.SDK
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(FSharpSourcesRoot)\..\packages
- $(BinariesFolder)\insertion
- $(MSBuildThisFileDirectory)obj
-
-
- $(PackagePreprocessorDefinitions);PackagesFolder=$(PackagesFolder)
+ $(PackagePreprocessorDefinitions);PackagesFolder=$(NuGetPackageRoot)$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)
@@ -30,7 +21,6 @@
-
-
-
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr
index a8c5becc80e..f3b95d49900 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Files.swr
@@ -5,16 +5,16 @@ package name=Microsoft.FSharp.VSIX.Full.Resources
vs.package.language=$(LocaleSpecificCulture)
folder "InstallDir:Common7\IDE\PublicAssemblies\$(LocaleParentCulture)"
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes
folder "InstallDir:Common7\IDE\CommonExtensions\Microsoft\FSharp\$(LocaleParentCulture)"
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.Editor.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.LanguageService.Base.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.LanguageService.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.ProjectSystem.Base.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.ProjectSystem.FSharp.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.ProjectSystem.PropertyPages.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.UIResources.resources.dll" vs.file.ngen=yes
- file source="$(BinariesFolder)\net40\bin\$(LocaleParentCulture)\FSharp.VS.FSI.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.Compiler.Private\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Compiler.Private.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.Core\$(Configuration)\net45\$(LocaleParentCulture)\FSharp.Core.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.Editor\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.Editor.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.LanguageService.Base\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.LanguageService.Base.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.LanguageService\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.LanguageService.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\ProjectSystem.Base\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.ProjectSystem.Base.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\ProjectSystem\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.ProjectSystem.FSharp.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.PropertiesPages\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.ProjectSystem.PropertyPages.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.UIResources\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.UIResources.resources.dll" vs.file.ngen=yes
+ file source="$(BinariesFolder)\FSharp.VS.FSI\$(Configuration)\net46\$(LocaleParentCulture)\FSharp.VS.FSI.resources.dll" vs.file.ngen=yes
diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj
index 2277444e075..d8952b40fe7 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Microsoft.FSharp.Vsix.Resources.swixproj
@@ -1,22 +1,15 @@
-
+
+
+
+
- ..\..\..\src
- neutral
- false
- true
- Debug
- $(FSharpSourcesRoot)\..\$(Configuration)
- $(BinariesFolder)\insertionMicrosoft.FSharp.VSIX.Full.Resources.$(LocaleCode)
- $(MSBuildThisFileDirectory)obj
- vsix
-
-
+ $(PackagePreprocessorDefinitions);Configuration=$(Configuration)$(PackagePreprocessorDefinitions);BinariesFolder=$(BinariesFolder)$(PackagePreprocessorDefinitions);FSharpPackageVersion=$(FSharpPackageVersion)$(PackagePreprocessorDefinitions);LocaleCode=$(LocaleCode)
@@ -26,15 +19,16 @@
$(PackagePreprocessorDefinitions);LocaleSpecificCulture=$(LocaleSpecificCulture)$(PackagePreprocessorDefinitions);IsLangPack=$(IsLangPack)
-
+
-
+
+
@@ -45,7 +39,6 @@
-
-
-
+
+
diff --git a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
index 770d904e226..5de89f0cadd 100644
--- a/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
+++ b/setup/Swix/Microsoft.FSharp.Vsix.Resources/Templates.swr
@@ -6,8 +6,8 @@ package name=Microsoft.FSharp.VSIX.Full.Resources
folder "InstallDir:Common7\IDE\ProjectTemplates\FSharp\$(LocaleId)"
folder "ConsoleApplication"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\FSharp\$(LocaleParentId)\ConsoleApplication.zip"
+ file source="$(BinariesFolder)\ConsoleProject\$(Configuration)\$(LocaleParentId)\ConsoleApplication.zip"
folder "Library"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\FSharp\$(LocaleParentId)\Library.zip"
+ file source="$(BinariesFolder)\LibraryProject\$(Configuration)\$(LocaleParentId)\Library.zip"
folder "Tutorial"
- file source="$(BinariesFolder)\net40\bin\ProjectTemplates\FSharp\$(LocaleParentId)\Tutorial.zip"
+ file source="$(BinariesFolder)\TutorialProject\$(Configuration)\$(LocaleParentId)\Tutorial.zip"
diff --git a/setup/Swix/Microsoft.FSharp.vsmanproj b/setup/Swix/Microsoft.FSharp.vsmanproj
index f89afddafa0..6e6f7d4e7e9 100644
--- a/setup/Swix/Microsoft.FSharp.vsmanproj
+++ b/setup/Swix/Microsoft.FSharp.vsmanproj
@@ -1,44 +1,43 @@
-
-
-
-
-
- ..\..\src
- true
- true
- true
- $(FSharpSourcesRoot)\..\$(Configuration)\insertion
- $(OutputPath)
- $(FSharpPackageVersion)
-
-
+
+
+
+
+
+ true
+ true
+ $(ArtifactsDir)\VSSetup\$(Configuration)\Insertion
+ $(OutputPath)
+ $(FSharpPackageVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
-
-
-
+
-
-
-
-
+
+
-
+
+
+
+
+
-
-
+
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/setup/build-insertion.proj b/setup/build-insertion.proj
index 35496258dee..b132d3edfea 100644
--- a/setup/build-insertion.proj
+++ b/setup/build-insertion.proj
@@ -1,47 +1,47 @@
-
-
-
-
+
+
+
+
+
+ .
+ Debug
+
+
+
+
+
+ Swix\Microsoft.FSharp.SDK\Microsoft.FSharp.SDK.swixproj
+
+
+ Swix\Microsoft.FSharp.Compiler\Microsoft.FSharp.Compiler.swixproj
+
+
+
+
+
+
+
+
+
- .
- net40
- Debug
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- Swix\Microsoft.FSharp.SDK\Microsoft.FSharp.SDK.swixproj
-
-
- Swix\Microsoft.FSharp.Compiler\Microsoft.FSharp.Compiler.swixproj
-
-
-
-
-
-
-
-
-
-
- AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/setup/fsharp-setup-build.csproj b/setup/fsharp-setup-build.csproj
new file mode 100644
index 00000000000..7968f56c51b
--- /dev/null
+++ b/setup/fsharp-setup-build.csproj
@@ -0,0 +1,70 @@
+
+
+
+
+
+ net46
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj
+
+
+ ..\vsintegration\Vsix\VisualFSharpTemplates\VisualFSharpTemplates.csproj
+
+
+
+
+
+
+
+
+
+ Swix\Microsoft.FSharp.Dependencies\Microsoft.FSharp.Dependencies.swixproj
+
+
+ Swix\Microsoft.FSharp.IDE\Microsoft.FSharp.IDE.swixproj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
+
+
+
+
+
+
diff --git a/setup/fsharp-setup-build.proj b/setup/fsharp-setup-build.proj
deleted file mode 100644
index e56e3191bd1..00000000000
--- a/setup/fsharp-setup-build.proj
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
- .
- net40
- Debug
-
-
-
-
-
-
-
- ..\vsintegration\Vsix\VisualFSharpFull\VisualFSharpFull.csproj
-
-
- ..\vsintegration\Vsix\VisualFSharpTemplates\VisualFSharpTemplates.csproj
-
-
-
-
-
-
-
-
-
- Swix\Microsoft.FSharp.Dependencies\Microsoft.FSharp.Dependencies.swixproj
-
-
- Swix\Microsoft.FSharp.IDE\Microsoft.FSharp.IDE.swixproj
-
-
-
-
-
-
- AssemblySearchPaths={HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/setup/packages.config b/setup/packages.config
deleted file mode 100644
index f6caa5c2da4..00000000000
--- a/setup/packages.config
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/setup/publish-assets.ps1 b/setup/publish-assets.ps1
index 29604698b4c..bfa905bbad9 100644
--- a/setup/publish-assets.ps1
+++ b/setup/publish-assets.ps1
@@ -16,7 +16,8 @@ The API key used to authenticate with MyGet.
Param(
[string]$binariesPath = $null,
[string]$branchName = $null,
- [string]$apiKey = $null
+ [string]$apiKey = $null,
+ [string]$configuration = $null
)
Set-StrictMode -Version 2.0
@@ -40,7 +41,7 @@ try {
}
$branchName = $branchName.Replace("/", "_") # can't have slashes in the branch name
- $vsix = Join-Path $binariesPath "net40\bin\VisualFSharpFull.vsix"
+ $vsix = Join-Path $binariesPath "VisualFSharpFull\$configuration\net46\VisualFSharpFull.vsix"
Write-Host " Uploading '$vsix' to '$requestUrl'."
diff --git a/setup/resources/Microsoft.FSharp.NetSdk.Shim.props b/setup/shims/Microsoft.FSharp.NetSdk.Shim.props
similarity index 100%
rename from setup/resources/Microsoft.FSharp.NetSdk.Shim.props
rename to setup/shims/Microsoft.FSharp.NetSdk.Shim.props
diff --git a/setup/resources/Microsoft.FSharp.NetSdk.Shim.targets b/setup/shims/Microsoft.FSharp.NetSdk.Shim.targets
similarity index 100%
rename from setup/resources/Microsoft.FSharp.NetSdk.Shim.targets
rename to setup/shims/Microsoft.FSharp.NetSdk.Shim.targets
diff --git a/setup/resources/Microsoft.FSharp.Overrides.NetSdk.Shim.targets b/setup/shims/Microsoft.FSharp.Overrides.NetSdk.Shim.targets
similarity index 100%
rename from setup/resources/Microsoft.FSharp.Overrides.NetSdk.Shim.targets
rename to setup/shims/Microsoft.FSharp.Overrides.NetSdk.Shim.targets
diff --git a/setup/resources/Microsoft.FSharp.Shim.targets b/setup/shims/Microsoft.FSharp.Shim.targets
similarity index 100%
rename from setup/resources/Microsoft.FSharp.Shim.targets
rename to setup/shims/Microsoft.FSharp.Shim.targets
diff --git a/setup/resources/Microsoft.Portable.FSharp.Shim.targets b/setup/shims/Microsoft.Portable.FSharp.Shim.targets
similarity index 100%
rename from setup/resources/Microsoft.Portable.FSharp.Shim.targets
rename to setup/shims/Microsoft.Portable.FSharp.Shim.targets
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
new file mode 100644
index 00000000000..bb8eac309b1
--- /dev/null
+++ b/src/Directory.Build.props
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
new file mode 100644
index 00000000000..ccd47cc0a9a
--- /dev/null
+++ b/src/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/FSharpSource.Profiles.targets b/src/FSharpSource.Profiles.targets
deleted file mode 100644
index 9069ebdb955..00000000000
--- a/src/FSharpSource.Profiles.targets
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
- $(DefineConstants);CROSS_PLATFORM_COMPILER
- $(DefineConstants);ENABLE_MONO_SUPPORT
- $(DefineConstants);BE_SECURITY_TRANSPARENT
- $(DefineConstants);FX_LCIDFROMCODEPAGE
-
-
-
-
-
-
- $(DefineConstants);NETSTANDARD1_6
- $(DefineConstants);FX_NO_APP_DOMAINS
- $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH
- $(DefineConstants);FX_NO_BEGINEND_READWRITE
- $(DefineConstants);FX_NO_BINARY_SERIALIZATION
- $(DefineConstants);FX_NO_CONVERTER
- $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE
- $(DefineConstants);FX_NO_CORHOST_SIGNER
- $(DefineConstants);FX_NO_EVENTWAITHANDLE_IDISPOSABLE
- $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS
- $(DefineConstants);FX_NO_HEAPTERMINATION
- $(DefineConstants);FX_NO_LINKEDRESOURCES
- $(DefineConstants);FX_NO_LOADER_OPTIMIZATION
- $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START
- $(DefineConstants);FX_NO_PDB_READER
- $(DefineConstants);FX_NO_PDB_WRITER
- $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES
- $(DefineConstants);FX_NO_REFLECTION_ONLY
- $(DefineConstants);FX_NO_RUNTIMEENVIRONMENT
- $(DefineConstants);FX_NO_SECURITY_PERMISSIONS
- $(DefineConstants);FX_NO_SERVERCODEPAGES
- $(DefineConstants);FX_NO_SYMBOLSTORE
- $(DefineConstants);FX_NO_SYSTEM_CONFIGURATION
- $(DefineConstants);FX_NO_THREAD
- $(DefineConstants);FX_NO_THREADABORT
- $(DefineConstants);FX_NO_WAITONE_MILLISECONDS
- $(DefineConstants);FX_NO_WEB_CLIENT
- $(DefineConstants);FX_NO_WIN_REGISTRY
- $(DefineConstants);FX_NO_WINFORMS
- $(DefineConstants);FX_NO_INDENTED_TEXT_WRITER
- $(DefineConstants);FX_REDUCED_EXCEPTIONS
- $(DefineConstants);FX_REDUCED_CONSOLE
- $(DefineConstants);FX_RESHAPED_REFEMIT
- $(DefineConstants);FX_RESHAPED_GLOBALIZATION
- $(DefineConstants);FX_RESHAPED_REFLECTION
- $(DefineConstants);FX_RESHAPED_MSBUILD
- $(OtherFlags) --simpleresolution
- netstandard1.6
-
-
-
diff --git a/src/FSharpSource.Settings.targets b/src/FSharpSource.Settings.targets
deleted file mode 100644
index 3f0d657a9b5..00000000000
--- a/src/FSharpSource.Settings.targets
+++ /dev/null
@@ -1,174 +0,0 @@
-
-
-
-
-
-
- Debug
- $(ConfigurationGroup)
- $(TargetGroup)_$(Configuration)
- $(OSGroup)_$(Configuration)
-
-
-
- Debug
- Release
- Debug
-
-
-
-
-
-
-
- true
- net40
-
-
- net40
- FSharp
- true
- true
- true
-
-
-
- obj\$(Configuration)\$(TargetDotnetProfile)\
- obj\$(Configuration)\$(TargetDotnetProfile)\$(PortableProfileBeingReferenced)\
-
-
- obj\$(Configuration)\$(TargetDotnetProfile)\
- obj\$(Configuration)\$(TargetDotnetProfile)\$(PortableProfileBeingReferenced)\
-
-
- 10.1.0
- 10.2.0
- 10.2
-
-
- 3.5.0
- 3.5.0.0
- $(FSharpSourcesRoot)\..\packages\NUnit.$(NUnitVersion)\lib\net45
-
- true
-
- $(MSBuildThisFileDirectory)..\Tools\dependencyUptake\PackageVersions.props
-
-
- true
- true
- 0.2.0-beta-000081
-
-
-
-
-
-
-
- false
- true
- true
- $(FSharpSourcesRoot)\fsharp\msft.pubkey
- true
- true
-
-
-
-
- true
- false
- true
- $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk
- $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\bin
- $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\Microsoft.VsSDK.targets
- $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\inc
- $(MSBuildThisFileDirectory)..\packages\Microsoft.VSSDK.BuildTools.$(MicrosoftVSSDKBuildToolsPackageVersion)\tools\vssdk\schemas\VSIXManifestSchema.xsd
-
-
-
-
- $(OtherFlags) --times
- $(NoWarn);69;65;54;61;75
-
-
-
-
- full
- portable
-
- false
- prompt
- $(OtherFlags) --no-jit-optimize
- true
- DEBUG;TRACE;CODE_ANALYSIS;$(DefineConstants)
- DEBUG=True,TRACE=True,CODE_ANALYSIS=True,$(DefineConstants)
-
-
-
-
- pdbonly
- portable
-
- true
- false
- prompt
- TRACE;$(DefineConstants)
- TRACE=True,$(DefineConstants)
-
-
-
-
- full
- portable
- true
- DEBUG;NO_STRONG_NAMES;$(DefineConstants)
-
-
-
-
- bin\$(Configuration)
- 3
-
-
-
-
- $([System.DateTime]::Now.ToString(`yyMMdd`))
- 1.0.0
- $(NuGetReleaseVersion)-rc
- $(NuGetPreReleaseVersion)-$(BuildRevision.Trim())
- $(MSBuildThisFileDirectory)..\packages
- $(NUGET_PACKAGES)
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\FsLexYacc.7.0.6\build
- $(FSharpSourcesRoot)\..\packages\FsLexYacc.7.0.6\build
- fsi.exe
- fslex.exe
- fsyacc.exe
-
-
-
- $(FSharpSourcesRoot)\..\packages\FSharp.Compiler.Tools.4.1.27\tools
-
-
-
- 14.0.0.0
-
-
-
-
-
-
-
- en;$(XlfLanguages)
-
-
-
-
-
-
-
diff --git a/src/FSharpSource.targets b/src/FSharpSource.targets
deleted file mode 100644
index 1d513b81e87..00000000000
--- a/src/FSharpSource.targets
+++ /dev/null
@@ -1,383 +0,0 @@
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\
-
-
-
- fs
-
-
-
-
-
- true
- false
- false
- NO_STRONG_NAMES;$(DefineConstants)
-
-
-
-
- $(FSharpSourcesRoot)\fsharp\test.snk
- false
- STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY;$(DefineConstants)
-
-
-
-
- $(FSCoreVersion)
- $(OtherFlags) --version:"$(MicroBuildAssemblyVersion)"
-
-
-
- $(IntermediateOutputPath)source_link.json
-
-
-
-
- MSBUILD_AT_LEAST_14;$(DefineConstants)
-
-
-
-
- false
-
-
-
- $(FSharpSourcesRoot)\..\packages
- 3.0.0-alpha3
- 3.0.0.0
- $(FSharpSourcesRoot)\..\packages\FsCheck.$(FsCheckVersion)\lib\
-
-
-
-
-
- v4.6
-
-
-
-
-
- netcore
-
- v5.0
- false
- .NETStandard,Version=v1.6
- true
-
-
-
- bin\$(Configuration)\netcoreapp1.0
- true
- true
- win7-x64
- $(FSharpSourcesRoot)\..\tests\testbin\$(Configuration)\coreclr\$(AssemblyName)
- Exe
- .dll
-
-
-
- true
- $(FSharpSourcesRoot)\..\tests\testbin\$(Configuration)\coreclr\FSC
- true
- $(FSharpSourcesRoot)\..\tests\testbin\$(Configuration)\coreclr\FSC
-
-
-
-
- $(TargetDotnetProfile)
- fsharp30\$(TargetDotnetProfile)
- fsharp31\$(TargetDotnetProfile)
- fsharp40\$(TargetDotnetProfile)
- $(TargetDotnetProfile)
- obj\$(Configuration)\$(TargetFrameworkOutputDirectory)\
-
-
-
-
-
- $(FSharpSourcesRoot)\..\$(Configuration)\$(ProtoFlavour)\bin
-
- $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\DotnetCLIToolsVersion.txt').Trim())
- $(MSBuildThisFileDirectory)..\Tools\dotnet20\sdk\$(DotnetSdkVersion)\FSharp
-
-
- ..\packages\FSharp.Compiler.Tools.4.1.27\tools\Microsoft.FSharp.Targets
-
-
- $(FSharpSourcesRoot)\..\Tools\dotnet20
- dotnet.exe
- dotnet
- $(FSharpNetCoreLkgPath)\fsc.exe
-
-
-
-
-
- $(FSharpSourcesRoot)\..\$(Configuration)\$(ProtoFlavour)\bin
- ..\packages\FSharp.Compiler.Tools.4.1.27\tools\Microsoft.FSharp.Targets
-
-
-
-
-
- $(FSharpSourcesRoot)\..\$(Configuration)\$(TargetFrameworkOutputDirectory)\bin
- $(FSharpSourcesRoot)\..\Proto\$(ProtoFlavour)\bin
- fsc.exe
- ..\Proto\$(ProtoFlavour)\bin\Microsoft.Portable.FSharp.targets
-
-
-
-
-
- $(FSharpSourcesRoot)\..\$(Configuration)\$(TargetFrameworkOutputDirectory)\bin
- $(FSharpSourcesRoot)\..\Proto\$(ProtoFlavour)\bin
- fsc.exe
- ..\Proto\$(ProtoFlavour)\bin\Microsoft.FSharp.Targets
-
-
-
-
-
- ValidateBuildTools;$(CompileDependsOn)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(NUGET_PACKAGES)
-
- $(FSharpSourcesRoot)\..\.nuget\
- -ConfigFile "$(NuGetConfigFile)"
- "$(NuGetToolPath)NuGet.exe install -OutputDirectory "$(PackagesDir)" -Config "$(NuGetToolPath)..\NuGet.Config"
- "$(NuGetToolPath)NuGet.exe" restore -OutputDirectory "$(PackagesDir)" -Config "$(NuGetToolPath)..\NuGet.Config"
-
-
- true
-
-
-
-
-
- $(OutputPath)$(AssemblyName).xml
-
-
-
- https://github.com/Microsoft/visualfsharp/blob/master/License.txt
- https://github.com/Microsoft/visualfsharp
- $(NuGetPerBuildPreReleaseVersion)
- Microsoft
- Visual F# Compiler FSharp coreclr functional programming
-
-
-
-
- $(CompileDependsOn);CopyAndSubstituteTextFiles
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory.TrimEnd("\"))))
- $(SrcRootDirectory.Replace("\", "\\"))
-
-
-
-
-
-
-
-
-
-
-
-
-
- $([System.IO.Path]::GetDirectoryName($(BuildVersionFilePath)))
-
-
-
-
-
-
-
- $([System.IO.Path]::GetDirectoryName($(BuildVersionFilePath)))
- $(NuGetPerBuildPreReleaseVersion)
- $([MSBuild]::Add($(PackageVersionMinor), 1))
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Microbuild.Settings.targets b/src/Microbuild.Settings.targets
deleted file mode 100644
index 6e11e3f2206..00000000000
--- a/src/Microbuild.Settings.targets
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- 0.2.0
-
-
-
-
-
-
-
-
diff --git a/src/absil/il.fs b/src/absil/il.fs
index c2314418fe4..61c5a33a845 100644
--- a/src/absil/il.fs
+++ b/src/absil/il.fs
@@ -154,12 +154,11 @@ let unsplitTypeName (ns, n) =
| [] -> String.concat "." ns + "." + n
| _ -> n
-let splitTypeNameRightAux nm =
- if String.contains nm '.' then
- let idx = String.rindex nm '.'
- let s1, s2 = splitNameAt nm idx
- Some s1, s2
- else None, nm
+let splitTypeNameRightAux (nm:string) =
+ let idx = nm.LastIndexOf '.'
+ if idx = -1 then None, nm else
+ let s1, s2 = splitNameAt nm idx
+ Some s1, s2
let splitTypeNameRight nm =
memoizeNamespaceRightTable.GetOrAdd(nm, splitTypeNameRightAux)
@@ -310,8 +309,12 @@ module SHA1 =
let (_h0, _h1, _h2, h3, h4) = sha1Hash { stream = s; pos = 0; eof = false } // the result of the SHA algorithm is stored in registers 3 and 4
Array.map byte [| b0 h4; b1 h4; b2 h4; b3 h4; b0 h3; b1 h3; b2 h3; b3 h3; |]
+ let sha1HashInt64 s =
+ let (_h0,_h1,_h2,h3,h4) = sha1Hash { stream = s; pos = 0; eof = false } // the result of the SHA algorithm is stored in registers 3 and 4
+ (int64 h3 <<< 32) ||| int64 h4
let sha1HashBytes s = SHA1.sha1HashBytes s
+let sha1HashInt64 s = SHA1.sha1HashInt64 s
// --------------------------------------------------------------------
//
@@ -947,11 +950,25 @@ type ILAttribElem =
type ILAttributeNamedArg = (string * ILType * bool * ILAttribElem)
-[]
-type ILAttribute =
- { Method: ILMethodSpec
- Data: byte[]
- Elements: ILAttribElem list }
+[]
+type ILAttribute =
+ | Encoded of method: ILMethodSpec * data: byte[] * elements: ILAttribElem list
+ | Decoded of method: ILMethodSpec * fixedArgs: ILAttribElem list * namedArgs: ILAttributeNamedArg list
+
+ member x.Method =
+ match x with
+ | Encoded (method, _, _)
+ | Decoded (method, _, _) -> method
+
+ member x.Elements =
+ match x with
+ | Encoded (_, _, elements) -> elements
+ | Decoded (_, fixedArgs, namedArgs) -> fixedArgs @ (namedArgs |> List.map (fun (_, _, _, e) -> e))
+
+ member x.WithMethod(method: ILMethodSpec) =
+ match x with
+ | Encoded (_, data, elements) -> Encoded (method, data, elements)
+ | Decoded (_, fixedArgs, namedArgs) -> Decoded (method, fixedArgs, namedArgs)
/// For debugging
[]
@@ -2313,7 +2330,7 @@ let mkILNonGenericValueTy tref = mkILNamedTy AsValue tref []
let mkILNonGenericBoxedTy tref = mkILNamedTy AsObject tref []
-let mkSimpleAssRef n =
+let mkSimpleAssemblyRef n =
ILAssemblyRef.Create(n, None, None, false, None, None)
let mkSimpleModRef n =
@@ -3174,9 +3191,9 @@ let destTypeDefsWithGlobalFunctionsFirst ilg (tdefs: ILTypeDefs) =
let top2 = if isNil top then [ mkILTypeDefForGlobalFunctions ilg (emptyILMethods, emptyILFields) ] else top
top2@nontop
-let mkILSimpleModule assname modname dll subsystemVersion useHighEntropyVA tdefs hashalg locale flags exportedTypes metadataVersion =
+let mkILSimpleModule assemblyName modname dll subsystemVersion useHighEntropyVA tdefs hashalg locale flags exportedTypes metadataVersion =
let manifest =
- { Name=assname
+ { Name=assemblyName
AuxModuleHashAlgorithm= match hashalg with | Some(alg) -> alg | _ -> 0x8004 // SHA1
SecurityDeclsStored=emptyILSecurityDeclsStored
PublicKey= None
@@ -3572,21 +3589,30 @@ let encodeCustomAttrNamedArg ilg (nm, ty, prop, elem) =
yield! encodeCustomAttrString nm
yield! encodeCustomAttrValue ilg ty elem |]
-let mkILCustomAttribMethRef (ilg: ILGlobals) (mspec:ILMethodSpec, fixedArgs: list<_>, namedArgs: list<_>) =
+let encodeCustomAttrArgs (ilg: ILGlobals) (mspec:ILMethodSpec) (fixedArgs: list<_>) (namedArgs: list<_>) =
let argtys = mspec.MethodRef.ArgTypes
- let args =
- [| yield! [| 0x01uy; 0x00uy; |]
- for (argty, fixedArg) in Seq.zip argtys fixedArgs do
- yield! encodeCustomAttrValue ilg argty fixedArg
- yield! u16AsBytes (uint16 namedArgs.Length)
- for namedArg in namedArgs do
- yield! encodeCustomAttrNamedArg ilg namedArg |]
- { Method = mspec
- Data = args
- Elements = fixedArgs @ (namedArgs |> List.map(fun (_, _, _, e) -> e)) }
-
-let mkILCustomAttribute ilg (tref, argtys, argvs, propvs) =
- mkILCustomAttribMethRef ilg (mkILNonGenericCtorMethSpec (tref, argtys), argvs, propvs)
+ [| yield! [| 0x01uy; 0x00uy; |]
+ for (argty, fixedArg) in Seq.zip argtys fixedArgs do
+ yield! encodeCustomAttrValue ilg argty fixedArg
+ yield! u16AsBytes (uint16 namedArgs.Length)
+ for namedArg in namedArgs do
+ yield! encodeCustomAttrNamedArg ilg namedArg |]
+
+let encodeCustomAttr (ilg: ILGlobals) (mspec:ILMethodSpec, fixedArgs: list<_>, namedArgs: list<_>) =
+ let args = encodeCustomAttrArgs ilg mspec fixedArgs namedArgs
+ ILAttribute.Encoded (mspec, args, fixedArgs @ (namedArgs |> List.map (fun (_, _, _, e) -> e)))
+
+let mkILCustomAttribMethRef (ilg: ILGlobals) (mspec:ILMethodSpec, fixedArgs: list<_>, namedArgs: list<_>) =
+ encodeCustomAttr ilg (mspec, fixedArgs, namedArgs)
+
+let mkILCustomAttribute ilg (tref, argtys, argvs, propvs) =
+ encodeCustomAttr ilg (mkILNonGenericCtorMethSpec (tref, argtys), argvs, propvs)
+
+let getCustomAttrData (ilg: ILGlobals) cattr =
+ match cattr with
+ | ILAttribute.Encoded (_, data, _) -> data
+ | ILAttribute.Decoded (mspec, fixedArgs, namedArgs) ->
+ encodeCustomAttrArgs ilg mspec fixedArgs namedArgs
let MscorlibScopeRef = ILScopeRef.Assembly (ILAssemblyRef.Create("mscorlib", None, Some ecmaPublicKey, true, None, None))
let EcmaMscorlibILGlobals = mkILGlobals MscorlibScopeRef
@@ -3755,7 +3781,10 @@ type ILTypeSigParser(tstring : string) =
ILAttribElem.Type(Some(ilty))
let decodeILAttribData (ilg: ILGlobals) (ca: ILAttribute) =
- let bytes = ca.Data
+ match ca with
+ | ILAttribute.Decoded (_, fixedArgs, namedArgs) -> fixedArgs, namedArgs
+ | ILAttribute.Encoded (_, bytes, _) ->
+
let sigptr = 0
let bb0, sigptr = sigptr_get_byte bytes sigptr
let bb1, sigptr = sigptr_get_byte bytes sigptr
@@ -3892,13 +3921,13 @@ let emptyILRefs =
ModuleReferences = [] }
(* Now find references. *)
-let refs_of_assref (s:ILReferencesAccumulator) x = s.refsA.Add x |> ignore
+let refs_of_assemblyRef (s:ILReferencesAccumulator) x = s.refsA.Add x |> ignore
let refs_of_modref (s:ILReferencesAccumulator) x = s.refsM.Add x |> ignore
let refs_of_scoref s x =
match x with
| ILScopeRef.Local -> ()
- | ILScopeRef.Assembly assref -> refs_of_assref s assref
+ | ILScopeRef.Assembly assemblyRef -> refs_of_assemblyRef s assemblyRef
| ILScopeRef.Module modref -> refs_of_modref s modref
let refs_of_tref s (x:ILTypeRef) = refs_of_scoref s x.Scope
@@ -3944,9 +3973,9 @@ and refs_of_token s x =
| ILToken.ILMethod mr -> refs_of_mspec s mr
| ILToken.ILField fr -> refs_of_fspec s fr
-and refs_of_custom_attr s x = refs_of_mspec s x.Method
+and refs_of_custom_attr s (cattr: ILAttribute) = refs_of_mspec s cattr.Method
-and refs_of_custom_attrs s (cas : ILAttributes) = List.iter (refs_of_custom_attr s) cas.AsList
+and refs_of_custom_attrs s (cas : ILAttributes) = Array.iter (refs_of_custom_attr s) cas.AsArray
and refs_of_varargs s tyso = Option.iter (refs_of_tys s) tyso
and refs_of_instr s x =
match x with
@@ -4070,7 +4099,7 @@ and refs_of_resource_where s x =
| ILResourceLocation.LocalIn _ -> ()
| ILResourceLocation.LocalOut _ -> ()
| ILResourceLocation.File (mref, _) -> refs_of_modref s mref
- | ILResourceLocation.Assembly aref -> refs_of_assref s aref
+ | ILResourceLocation.Assembly aref -> refs_of_assemblyRef s aref
and refs_of_resource s x =
refs_of_resource_where s x.Location
@@ -4189,23 +4218,6 @@ let resolveILMethodRef td mref = resolveILMethodRefWithRescope id td mref
let mkRefToILModule m =
ILModuleRef.Create(m.Name, true, None)
-
-let ungenericizeTypeName n =
- let sym = '`'
- if
- String.contains n sym &&
- (* check what comes after the symbol is a number *)
- (let m = String.rindex n sym
- let res = ref (m < n.Length - 1)
- for i = m + 1 to n.Length - 1 do
- res := !res && n.[i] >= '0' && n.[i] <= '9'
- !res)
- then
- let pos = String.rindex n sym
- String.sub n 0 pos
- else n
-
-
type ILEventRef =
{ erA: ILTypeRef; erB: string }
static member Create(a, b) = {erA=a;erB=b}
diff --git a/src/absil/il.fsi b/src/absil/il.fsi
index 6ed4d42aa33..668459088fd 100644
--- a/src/absil/il.fsi
+++ b/src/absil/il.fsi
@@ -752,12 +752,22 @@ type ILAttribElem =
/// Named args: values and flags indicating if they are fields or properties.
type ILAttributeNamedArg = string * ILType * bool * ILAttribElem
-/// Custom attributes. See 'decodeILAttribData' for a helper to parse the byte[]
-/// to ILAttribElem's as best as possible.
+/// Custom attribute.
type ILAttribute =
- { Method: ILMethodSpec
- Data: byte[]
- Elements: ILAttribElem list}
+ /// Attribute with args encoded to a binary blob according to ECMA-335 II.21 and II.23.3.
+ /// 'decodeILAttribData' is used to parse the byte[] blob to ILAttribElem's as best as possible.
+ | Encoded of method: ILMethodSpec * data: byte[] * elements: ILAttribElem list
+
+ /// Attribute with args in decoded form.
+ | Decoded of method: ILMethodSpec * fixedArgs: ILAttribElem list * namedArgs: ILAttributeNamedArg list
+
+ /// Attribute instance constructor.
+ member Method: ILMethodSpec
+
+ /// Decoded arguments. May be empty in encoded attribute form.
+ member Elements: ILAttribElem list
+
+ member WithMethod: method: ILMethodSpec -> ILAttribute
[]
type ILAttributes =
@@ -1540,9 +1550,6 @@ val typeNameForGlobalFunctions: string
val isTypeNameForGlobalFunctions: string -> bool
-val ungenericizeTypeName: string -> string (* e.g. List`1 --> List *)
-
-
// ====================================================================
// PART 2
//
@@ -1598,7 +1605,7 @@ val decodeILAttribData:
ILAttributeNamedArg list (* named args: values and flags indicating if they are fields or properties *)
/// Generate simple references to assemblies and modules.
-val mkSimpleAssRef: string -> ILAssemblyRef
+val mkSimpleAssemblyRef: string -> ILAssemblyRef
val mkSimpleModRef: string -> ILModuleRef
@@ -1682,6 +1689,8 @@ val mkILCustomAttribute:
ILAttributeNamedArg list (* named args: values and flags indicating if they are fields or properties *)
-> ILAttribute
+val getCustomAttrData: ILGlobals -> ILAttribute -> byte[]
+
val mkPermissionSet: ILGlobals -> ILSecurityAction * (ILTypeRef * (string * ILType * ILAttribElem) list) list -> ILSecurityDecl
/// Making code.
@@ -1946,6 +1955,7 @@ val isILTypedReferenceTy: ILType -> bool
val isILDoubleTy: ILType -> bool
val isILSingleTy: ILType -> bool
+val sha1HashInt64 : byte[] -> int64
/// Get a public key token from a public key.
val sha1HashBytes: byte[] -> byte[] (* SHA1 hash *)
diff --git a/src/absil/illib.fs b/src/absil/illib.fs
index b2fd979a55e..44261606387 100644
--- a/src/absil/illib.fs
+++ b/src/absil/illib.fs
@@ -41,6 +41,10 @@ let inline isNonNull x = not (isNull x)
let inline nonNull msg x = if isNull x then failwith ("null: " + msg) else x
let inline (===) x y = LanguagePrimitives.PhysicalEquality x y
+/// Per the docs the threshold for the Large Object Heap is 85000 bytes: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap#how-an-object-ends-up-on-the-large-object-heap-and-how-gc-handles-them
+/// We set the limit to slightly under that to allow for some 'slop'
+let LOH_SIZE_THRESHOLD_BYTES = 84_900
+
//---------------------------------------------------------------------
// Library: ReportTime
//---------------------------------------------------------------------
@@ -91,7 +95,7 @@ module Order =
let toFunction (pxOrder: IComparer<'U>) x y = pxOrder.Compare(x,y)
//-------------------------------------------------------------------------
-// Library: arrays,lists,options
+// Library: arrays,lists,options,resizearrays
//-------------------------------------------------------------------------
module Array =
@@ -432,18 +436,57 @@ module List =
let existsSquared f xss = xss |> List.exists (fun xs -> xs |> List.exists (fun x -> f x))
let mapiFoldSquared f z xss = mapFoldSquared f z (xss |> mapiSquared (fun i j x -> (i,j,x)))
-[]
-type ValueOption<'T> =
- | ValueSome of 'T
- | ValueNone
- member x.IsSome = match x with ValueSome _ -> true | ValueNone -> false
- member x.IsNone = match x with ValueSome _ -> false | ValueNone -> true
- member x.Value = match x with ValueSome r -> r | ValueNone -> failwith "ValueOption.Value: value is None"
+module ResizeArray =
-[]
-module ValueOption =
+ /// Split a ResizeArray into an array of smaller chunks.
+ /// This requires `items/chunkSize` Array copies of length `chunkSize` if `items/chunkSize % 0 = 0`,
+ /// otherwise `items/chunkSize + 1` Array copies.
+ let chunkBySize chunkSize f (items: ResizeArray<'t>) =
+ // we could use Seq.chunkBySize here, but that would involve many enumerator.MoveNext() calls that we can sidestep with a bit of math
+ let itemCount = items.Count
+ if itemCount = 0
+ then [||]
+ else
+ let chunksCount =
+ match itemCount / chunkSize with
+ | n when itemCount % chunkSize = 0 -> n
+ | n -> n + 1 // any remainder means we need an additional chunk to store it
+
+ [| for index in 0..chunksCount-1 do
+ let startIndex = index * chunkSize
+ let takeCount = min (itemCount - startIndex) chunkSize
+
+ let holder = Array.zeroCreate takeCount
+ // we take a bounds-check hit here on each access.
+ // other alternatives here include
+ // * iterating across an IEnumerator (incurs MoveNext penalty)
+ // * doing a block copy using `List.CopyTo(index, array, index, count)` (requires more copies to do the mapping)
+ // none are significantly better.
+ for i in 0 .. takeCount - 1 do
+ holder.[i] <- f items.[i]
+ yield holder |]
+
+ /// Split a large ResizeArray into a series of array chunks that are each under the Large Object Heap limit.
+ /// This is done to help prevent a stop-the-world collection of the single large array, instead allowing for a greater
+ /// probability of smaller collections. Stop-the-world is still possible, just less likely.
+ let mapToSmallArrayChunks f (inp: ResizeArray<'t>) =
+ let itemSizeBytes = sizeof<'t>
+ // rounding down here is good because it ensures we don't go over
+ let maxArrayItemCount = LOH_SIZE_THRESHOLD_BYTES / itemSizeBytes
+
+ /// chunk the provided input into arrays that are smaller than the LOH limit
+ /// in order to prevent long-term storage of those values
+ chunkBySize maxArrayItemCount f inp
+
+
+/// Because FSharp.Compiler.Service is a library that will target FSharp.Core 4.5.2 for the forseeable future,
+/// we need to stick these functions in this module rather than using the module functions for ValueOption
+/// that come after FSharp.Core 4.5.2.
+module ValueOptionInternal =
let inline ofOption x = match x with Some x -> ValueSome x | None -> ValueNone
let inline bind f x = match x with ValueSome x -> f x | ValueNone -> ValueNone
+ let inline isSome x = match x with ValueSome _ -> true | ValueNone -> false
+ let inline isNone x = match x with ValueSome _ -> false | ValueNone -> true
type String with
member inline x.StartsWithOrdinal(value) =
@@ -452,25 +495,14 @@ type String with
member inline x.EndsWithOrdinal(value) =
x.EndsWith(value, StringComparison.Ordinal)
-module String =
- let indexNotFound() = raise (new KeyNotFoundException("An index for the character was not found in the string"))
-
+module String =
let make (n: int) (c: char) : string = new String(c, n)
let get (str:string) i = str.[i]
let sub (s:string) (start:int) (len:int) = s.Substring(start,len)
- let index (s:string) (c:char) =
- let r = s.IndexOf(c)
- if r = -1 then indexNotFound() else r
-
- let rindex (s:string) (c:char) =
- let r = s.LastIndexOf(c)
- if r = -1 then indexNotFound() else r
-
- let contains (s:string) (c:char) =
- s.IndexOf(c,0,String.length s) <> -1
+ let contains (s:string) (c:char) = s.IndexOf(c) <> -1
let order = LanguagePrimitives.FastGenericComparer
@@ -1134,7 +1166,7 @@ module NameMap =
[]
module NameMultiMap =
let existsInRange f (m: NameMultiMap<'T>) = NameMap.exists (fun _ l -> List.exists f l) m
- let find v (m: NameMultiMap<'T>) = match Map.tryFind v m with None -> [] | Some r -> r
+ let find v (m: NameMultiMap<'T>) = match m.TryGetValue v with true, r -> r | _ -> []
let add v x (m: NameMultiMap<'T>) = NameMap.add v (x :: find v m) m
let range (m: NameMultiMap<'T>) = Map.foldBack (fun _ x sofar -> x @ sofar) m []
let rangeReversingEachBucket (m: NameMultiMap<'T>) = Map.foldBack (fun _ x sofar -> List.rev x @ sofar) m []
@@ -1148,7 +1180,7 @@ module NameMultiMap =
[]
module MultiMap =
let existsInRange f (m: MultiMap<_,_>) = Map.exists (fun _ l -> List.exists f l) m
- let find v (m: MultiMap<_,_>) = match Map.tryFind v m with None -> [] | Some r -> r
+ let find v (m: MultiMap<_,_>) = match m.TryGetValue v with true, r -> r | _ -> []
let add v x (m: MultiMap<_,_>) = Map.add v (x :: find v m) m
let range (m: MultiMap<_,_>) = Map.foldBack (fun _ x sofar -> x @ sofar) m []
let empty : MultiMap<_,_> = Map.empty
@@ -1159,11 +1191,6 @@ type LayeredMap<'Key,'Value when 'Key : comparison> = Map<'Key,'Value>
type Map<'Key,'Value when 'Key : comparison> with
static member Empty : Map<'Key,'Value> = Map.empty
- member m.TryGetValue (key,res:byref<'Value>) =
- match m.TryFind key with
- | None -> false
- | Some r -> res <- r; true
-
member x.Values = [ for (KeyValue(_,v)) in x -> v ]
member x.AddAndMarkAsCollapsible (kvs: _[]) = (x,kvs) ||> Array.fold (fun x (KeyValue(k,v)) -> x.Add(k,v))
member x.LinearTryModifyThenLaterFlatten (key, f: 'Value option -> 'Value) = x.Add (key, f (x.TryFind key))
@@ -1173,12 +1200,13 @@ type Map<'Key,'Value when 'Key : comparison> with
[]
type LayeredMultiMap<'Key,'Value when 'Key : equality and 'Key : comparison>(contents : LayeredMap<'Key,'Value list>) =
member x.Add (k,v) = LayeredMultiMap(contents.Add(k,v :: x.[k]))
- member x.Item with get k = match contents.TryFind k with None -> [] | Some l -> l
+ member x.Item with get k = match contents.TryGetValue k with true, l -> l | _ -> []
member x.AddAndMarkAsCollapsible (kvs: _[]) =
let x = (x,kvs) ||> Array.fold (fun x (KeyValue(k,v)) -> x.Add(k,v))
x.MarkAsCollapsible()
member x.MarkAsCollapsible() = LayeredMultiMap(contents.MarkAsCollapsible())
member x.TryFind k = contents.TryFind k
+ member x.TryGetValue k = contents.TryGetValue k
member x.Values = contents.Values |> List.concat
static member Empty : LayeredMultiMap<'Key,'Value> = LayeredMultiMap LayeredMap.Empty
diff --git a/src/absil/ilmorph.fs b/src/absil/ilmorph.fs
index c6d009cd4d3..d5398099e0d 100644
--- a/src/absil/ilmorph.fs
+++ b/src/absil/ilmorph.fs
@@ -136,7 +136,7 @@ let rec celem_ty2ty f celem =
let cnamedarg_ty2ty f ((nm, ty, isProp, elem) : ILAttributeNamedArg) =
(nm, f ty, isProp, celem_ty2ty f elem)
-let cattr_ty2ty ilg f c =
+let cattr_ty2ty ilg f (c: ILAttribute) =
let meth = mspec_ty2ty (f, (fun _ -> f)) c.Method
// dev11 M3 defensive coding: if anything goes wrong with attribute decoding or encoding, then back out.
if morphCustomAttributeData then
@@ -144,11 +144,11 @@ let cattr_ty2ty ilg f c =
let elems,namedArgs = IL.decodeILAttribData ilg c
let elems = elems |> List.map (celem_ty2ty f)
let namedArgs = namedArgs |> List.map (cnamedarg_ty2ty f)
- IL.mkILCustomAttribMethRef ilg (meth, elems, namedArgs)
- with _ ->
- { c with Method = meth }
+ mkILCustomAttribMethRef ilg (meth, elems, namedArgs)
+ with _ ->
+ c.WithMethod(meth)
else
- { c with Method = meth }
+ c.WithMethod(meth)
let cattrs_ty2ty ilg f (cs: ILAttributes) =
diff --git a/src/absil/ilprint.fs b/src/absil/ilprint.fs
index f11524bc8d1..58c13ba1482 100644
--- a/src/absil/ilprint.fs
+++ b/src/absil/ilprint.fs
@@ -30,13 +30,14 @@ let tyvar_generator =
// Carry an environment because the way we print method variables
// depends on the gparams of the current scope.
type ppenv =
- { ppenvClassFormals: int;
+ { ilGlobals: ILGlobals
+ ppenvClassFormals: int;
ppenvMethodFormals: int }
let ppenv_enter_method mgparams env =
{env with ppenvMethodFormals=mgparams}
let ppenv_enter_tdef gparams env =
{env with ppenvClassFormals=List.length gparams; ppenvMethodFormals=0}
-let mk_ppenv = { ppenvClassFormals=0; ppenvMethodFormals=0 }
+let mk_ppenv ilg = { ilGlobals = ilg; ppenvClassFormals = 0; ppenvMethodFormals = 0 }
let debug_ppenv = mk_ppenv
let ppenv_enter_modul env = { env with ppenvClassFormals=0; ppenvMethodFormals=0 }
@@ -97,6 +98,13 @@ let output_seq sep f os (a:seq<_>) =
output_string os sep;
f os e.Current
+let output_array sep f os (a:_ []) =
+ if not (Array.isEmpty a) then
+ for i in 0..a.Length-2 do
+ f os a.[i]
+ output_string os sep
+ f os (a.[a.Length - 1])
+
let output_parens f os a = output_string os "("; f os a; output_string os ")"
let output_angled f os a = output_string os "<"; f os a; output_string os ">"
let output_bracks f os a = output_string os "["; f os a; output_string os "]"
@@ -436,12 +444,12 @@ let output_option f os = function None -> () | Some x -> f os x
let goutput_alternative_ref env os (alt: IlxUnionAlternative) =
output_id os alt.Name;
- alt.FieldDefs |> Array.toList |> output_parens (output_seq "," (fun os fdef -> goutput_typ env os fdef.Type)) os
+ alt.FieldDefs |> output_parens (output_array "," (fun os fdef -> goutput_typ env os fdef.Type)) os
let goutput_curef env os (IlxUnionRef(_,tref,alts,_,_)) =
output_string os " .classunion import ";
goutput_tref env os tref;
- output_parens (output_seq "," (goutput_alternative_ref env)) os (Array.toList alts)
+ output_parens (output_array "," (goutput_alternative_ref env)) os alts
let goutput_cuspec env os (IlxUnionSpec(IlxUnionRef(_,tref,_,_,_),i)) =
output_string os "class /* classunion */ ";
@@ -469,13 +477,14 @@ let output_basic_type os x =
let output_custom_attr_data os data =
output_string os " = "; output_parens output_bytes os data
-let goutput_custom_attr env os attr =
+let goutput_custom_attr env os (attr: ILAttribute) =
output_string os " .custom "
goutput_mspec env os attr.Method
- output_custom_attr_data os attr.Data
+ let data = getCustomAttrData env.ilGlobals attr
+ output_custom_attr_data os data
let goutput_custom_attrs env os (attrs : ILAttributes) =
- List.iter (fun attr -> goutput_custom_attr env os attr; output_string os "\n" ) attrs.AsList
+ Array.iter (fun attr -> goutput_custom_attr env os attr; output_string os "\n" ) attrs.AsArray
let goutput_fdef _tref env os (fd: ILFieldDef) =
output_string os " .field "
@@ -702,7 +711,7 @@ let rec goutput_instr env os inst =
goutput_dlocref env os (mkILArrTy(typ,shape));
output_string os ".ctor";
let rank = shape.Rank
- output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32))
+ output_parens (output_array "," (goutput_typ env)) os (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32)
| I_stelem_any (shape,dt) ->
if shape = ILArrayShape.SingleDimensional then
output_string os "stelem.any "; goutput_typ env os dt
@@ -711,7 +720,9 @@ let rec goutput_instr env os inst =
goutput_dlocref env os (mkILArrTy(dt,shape));
output_string os "Set";
let rank = shape.Rank
- output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32) @ [dt])
+ let arr = Array.create (rank + 1) EcmaMscorlibILGlobals.typ_Int32
+ arr.[rank] <- dt
+ output_parens (output_array "," (goutput_typ env)) os arr
| I_ldelem_any (shape,tok) ->
if shape = ILArrayShape.SingleDimensional then
output_string os "ldelem.any "; goutput_typ env os tok
@@ -722,7 +733,7 @@ let rec goutput_instr env os inst =
goutput_dlocref env os (mkILArrTy(tok,shape));
output_string os "Get";
let rank = shape.Rank
- output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32))
+ output_parens (output_array "," (goutput_typ env)) os (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32)
| I_ldelema (ro,_,shape,tok) ->
if ro = ReadonlyAddress then output_string os "readonly. ";
if shape = ILArrayShape.SingleDimensional then
@@ -734,7 +745,7 @@ let rec goutput_instr env os inst =
goutput_dlocref env os (mkILArrTy(tok,shape));
output_string os "Address";
let rank = shape.Rank
- output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32))
+ output_parens (output_array "," (goutput_typ env)) os (Array.create ( rank) EcmaMscorlibILGlobals.typ_Int32)
| I_box tok -> output_string os "box "; goutput_typ env os tok
| I_unbox tok -> output_string os "unbox "; goutput_typ env os tok
@@ -888,7 +899,7 @@ let splitTypeLayout = function
let goutput_fdefs tref env os (fdefs: ILFieldDefs) =
List.iter (fun f -> (goutput_fdef tref env) os f; output_string os "\n" ) fdefs.AsList
let goutput_mdefs env os (mdefs: ILMethodDefs) =
- List.iter (fun f -> (goutput_mdef env) os f; output_string os "\n" ) mdefs.AsList
+ Array.iter (fun f -> (goutput_mdef env) os f; output_string os "\n" ) mdefs.AsArray
let goutput_pdefs env os (pdefs: ILPropertyDefs) =
List.iter (fun f -> (goutput_pdef env) os f; output_string os "\n" ) pdefs.AsList
@@ -975,7 +986,7 @@ let output_publickeyinfo os = function
| PublicKey k -> output_publickey os k
| PublicKeyToken k -> output_publickeytoken os k
-let output_assref os (aref:ILAssemblyRef) =
+let output_assemblyRef os (aref:ILAssemblyRef) =
output_string os " .assembly extern ";
output_sqstring os aref.Name;
if aref.Retargetable then output_string os " retargetable ";
@@ -1029,9 +1040,9 @@ let goutput_manifest env os m =
output_string os " } \n"
-let output_module_fragment_aux _refs os modul =
+let output_module_fragment_aux _refs os (ilg: ILGlobals) modul =
try
- let env = mk_ppenv
+ let env = mk_ppenv ilg
let env = ppenv_enter_modul env
goutput_tdefs false ([]) env os modul.TypeDefs;
goutput_tdefs true ([]) env os modul.TypeDefs;
@@ -1039,13 +1050,13 @@ let output_module_fragment_aux _refs os modul =
output_string os "*** Error during printing : "; output_string os (e.ToString()); os.Flush();
reraise()
-let output_module_fragment os modul =
+let output_module_fragment os (ilg: ILGlobals) modul =
let refs = computeILRefs modul
- output_module_fragment_aux refs os modul;
+ output_module_fragment_aux refs os ilg modul
refs
let output_module_refs os refs =
- List.iter (fun x -> output_assref os x; output_string os "\n") refs.AssemblyReferences;
+ List.iter (fun x -> output_assemblyRef os x; output_string os "\n") refs.AssemblyReferences;
List.iter (fun x -> output_modref os x; output_string os "\n") refs.ModuleReferences
let goutput_module_manifest env os modul =
@@ -1059,14 +1070,14 @@ let goutput_module_manifest env os modul =
output_string os "\n";
(output_option (goutput_manifest env)) os modul.Manifest
-let output_module os modul =
+let output_module os (ilg: ILGlobals) modul =
try
let refs = computeILRefs modul
- let env = mk_ppenv
+ let env = mk_ppenv ilg
let env = ppenv_enter_modul env
output_module_refs os refs;
goutput_module_manifest env os modul;
- output_module_fragment_aux refs os modul;
+ output_module_fragment_aux refs os ilg modul;
with e ->
output_string os "*** Error during printing : "; output_string os (e.ToString()); os.Flush();
raise e
diff --git a/src/absil/ilprint.fsi b/src/absil/ilprint.fsi
index 55e768ab686..5f7ebe4f11d 100644
--- a/src/absil/ilprint.fsi
+++ b/src/absil/ilprint.fsi
@@ -9,6 +9,6 @@ open Microsoft.FSharp.Compiler.AbstractIL.Internal
open System.IO
#if DEBUG
-val public output_module : TextWriter -> ILModuleDef -> unit
+val public output_module: TextWriter -> ilg: ILGlobals -> ILModuleDef -> unit
#endif
diff --git a/src/absil/ilread.fs b/src/absil/ilread.fs
index 5d94041dae1..c2c10e9479b 100644
--- a/src/absil/ilread.fs
+++ b/src/absil/ilread.fs
@@ -2101,7 +2101,7 @@ and sigptrGetTy (ctxt: ILMetadataReader) numtypars bytes sigptr =
let dim i =
(if i < numLoBounded then Some (List.item i lobounds) else None),
(if i < numSized then Some (List.item i sizes) else None)
- ILArrayShape (Array.toList (Array.init rank dim))
+ ILArrayShape (List.init rank dim)
mkILArrTy (ty, shape), sigptr
elif b0 = et_VOID then ILType.Void, sigptr
@@ -2567,12 +2567,13 @@ and seekReadCustomAttr ctxt (TaggedIndex(cat, idx), b) =
and seekReadCustomAttrUncached ctxtH (CustomAttrIdx (cat, idx, valIdx)) =
let ctxt = getHole ctxtH
- { Method=seekReadCustomAttrType ctxt (TaggedIndex(cat, idx))
- Data=
+ let method = seekReadCustomAttrType ctxt (TaggedIndex(cat, idx))
+ let data =
match readBlobHeapOption ctxt valIdx with
| Some bytes -> bytes
- | None -> Bytes.ofInt32Array [| |]
- Elements = [] }
+ | None -> Bytes.ofInt32Array [| |]
+ let elements = []
+ ILAttribute.Encoded (method, data, elements)
and securityDeclsReader ctxtH tag =
mkILSecurityDeclsReader
diff --git a/src/absil/ilreflect.fs b/src/absil/ilreflect.fs
index 96ca8efe04c..5e15cbbd37b 100644
--- a/src/absil/ilreflect.fs
+++ b/src/absil/ilreflect.fs
@@ -289,6 +289,7 @@ module Zmap =
let equalTypes (s:Type) (t:Type) = s.Equals(t)
let equalTypeLists ss tt = List.lengthsEqAndForall2 equalTypes ss tt
+let equalTypeArrays ss tt = Array.lengthsEqAndForall2 equalTypes ss tt
let getGenericArgumentsOfType (typT : Type) =
if typT.IsGenericType then typT.GetGenericArguments() else [| |]
@@ -1414,16 +1415,16 @@ let emitMethodBody cenv modB emEnv ilG _name (mbody: ILLazyMethodBody) =
| MethodBody.Native -> failwith "emitMethodBody: native"
| MethodBody.NotAvailable -> failwith "emitMethodBody: metadata only"
-let convCustomAttr cenv emEnv cattr =
+let convCustomAttr cenv emEnv (cattr: ILAttribute) =
let methInfo =
match convConstructorSpec cenv emEnv cattr.Method with
| null -> failwithf "convCustomAttr: %+A" cattr.Method
| res -> res
- let data = cattr.Data
+ let data = getCustomAttrData cenv.ilg cattr
(methInfo, data)
let emitCustomAttr cenv emEnv add cattr = add (convCustomAttr cenv emEnv cattr)
-let emitCustomAttrs cenv emEnv add (cattrs : ILAttributes) = List.iter (emitCustomAttr cenv emEnv add) cattrs.AsList
+let emitCustomAttrs cenv emEnv add (cattrs : ILAttributes) = Array.iter (emitCustomAttr cenv emEnv add) cattrs.AsArray
//----------------------------------------------------------------------------
// buildGenParams
@@ -1597,9 +1598,7 @@ let rec buildMethodPass3 cenv tref modB (typB:TypeBuilder) emEnv (mdef : ILMetho
(getGenericArgumentsOfType (typB.AsType()))
(getGenericArgumentsOfMethod methB))
- match mdef.Return.CustomAttrs.AsList with
- | [] -> ()
- | _ ->
+ if not (Array.isEmpty mdef.Return.CustomAttrs.AsArray) then
let retB = methB.DefineParameterAndLog(0, System.Reflection.ParameterAttributes.Retval, null)
emitCustomAttrs cenv emEnv (wrapCustomAttr retB.SetCustomAttribute) mdef.Return.CustomAttrs
@@ -1825,7 +1824,7 @@ let rec buildTypeDefPass2 cenv nesting emEnv (tdef : ILTypeDef) =
// add interface impls
tdef.Implements |> convTypes cenv emEnv |> List.iter (fun implT -> typB.AddInterfaceImplementationAndLog(implT));
// add methods, properties
- let emEnv = List.fold (buildMethodPass2 cenv tref typB) emEnv tdef.Methods.AsList
+ let emEnv = Array.fold (buildMethodPass2 cenv tref typB) emEnv tdef.Methods.AsArray
let emEnv = List.fold (buildFieldPass2 cenv tref typB) emEnv tdef.Fields.AsList
let emEnv = List.fold (buildPropertyPass2 cenv tref typB) emEnv tdef.Properties.AsList
let emEnv = envPopTyvars emEnv
@@ -1942,7 +1941,7 @@ let createTypeRef (visited : Dictionary<_, _>, created : Dictionary<_, _>) emEnv
traverseType CollectTypes.All cx
if verbose2 then dprintf "buildTypeDefPass4: Doing method constraints of %s\n" tdef.Name
- for md in tdef.Methods.AsList do
+ for md in tdef.Methods.AsArray do
for gp in md.GenericParams do
for cx in gp.Constraints do
traverseType CollectTypes.All cx
diff --git a/src/absil/ilwrite.fs b/src/absil/ilwrite.fs
index d28348bf860..12541d5089e 100644
--- a/src/absil/ilwrite.fs
+++ b/src/absil/ilwrite.fs
@@ -1382,8 +1382,9 @@ and GetMethodRefAsCustomAttribType cenv (mref:ILMethodRef) =
let rec GetCustomAttrDataAsBlobIdx cenv (data:byte[]) =
if data.Length = 0 then 0 else GetBytesAsBlobIdx cenv data
-and GetCustomAttrRow cenv hca attr =
+and GetCustomAttrRow cenv hca (attr: ILAttribute) =
let cat = GetMethodRefAsCustomAttribType cenv attr.Method.MethodRef
+ let data = getCustomAttrData cenv.ilg attr
for element in attr.Elements do
match element with
| ILAttribElem.Type (Some ty) when ty.IsNominal -> GetTypeRefAsTypeRefIdx cenv ty.TypeRef |> ignore
@@ -1393,14 +1394,14 @@ and GetCustomAttrRow cenv hca attr =
UnsharedRow
[| HasCustomAttribute (fst hca, snd hca);
CustomAttributeType (fst cat, snd cat);
- Blob (GetCustomAttrDataAsBlobIdx cenv attr.Data)
+ Blob (GetCustomAttrDataAsBlobIdx cenv data)
|]
and GenCustomAttrPass3Or4 cenv hca attr =
AddUnsharedRow cenv TableNames.CustomAttribute (GetCustomAttrRow cenv hca attr) |> ignore
and GenCustomAttrsPass3Or4 cenv hca (attrs: ILAttributes) =
- attrs.AsList |> List.iter (GenCustomAttrPass3Or4 cenv hca)
+ attrs.AsArray |> Array.iter (GenCustomAttrPass3Or4 cenv hca)
// --------------------------------------------------------------------
// ILSecurityDecl --> DeclSecurity rows
@@ -2462,7 +2463,7 @@ let GenReturnAsParamRow (returnv : ILReturn) =
StringE 0 |]
let GenReturnPass3 cenv (returnv: ILReturn) =
- if Option.isSome returnv.Marshal || not (isNil returnv.CustomAttrs.AsList) then
+ if Option.isSome returnv.Marshal || not (Array.isEmpty returnv.CustomAttrs.AsArray) then
let pidx = AddUnsharedRow cenv TableNames.Param (GenReturnAsParamRow returnv)
GenCustomAttrsPass3Or4 cenv (hca_ParamDef, pidx) returnv.CustomAttrs
match returnv.Marshal with
diff --git a/src/buildfromsource/BuildFromSource.targets b/src/buildfromsource/BuildFromSource.targets
index bfcd3d48e82..223415a1a9b 100644
--- a/src/buildfromsource/BuildFromSource.targets
+++ b/src/buildfromsource/BuildFromSource.targets
@@ -34,7 +34,6 @@
net40
-
diff --git a/src/buildfromsource/Directory.Build.targets b/src/buildfromsource/Directory.Build.targets
new file mode 100644
index 00000000000..ea0ce741b15
--- /dev/null
+++ b/src/buildfromsource/Directory.Build.targets
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs b/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs
index f6fc5a409ea..c6ff96cb901 100644
--- a/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSComp.fs
@@ -1429,2934 +1429,2976 @@ type internal SR private() =
/// Unmatched '{'
/// (Originally from ..\FSComp.txt:442)
static member parsUnmatchedBrace() = (604, GetStringFunc("parsUnmatchedBrace",",,,") )
- /// Field bindings must have the form 'id = expr;'
+ /// Unmatched '{|'
/// (Originally from ..\FSComp.txt:443)
+ static member parsUnmatchedBraceBar() = (605, GetStringFunc("parsUnmatchedBraceBar",",,,") )
+ /// 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:444)
+ /// (Originally from ..\FSComp.txt:445)
static member parsMemberIllegalInObjectImplementation() = (610, GetStringFunc("parsMemberIllegalInObjectImplementation",",,,") )
/// Missing function body
- /// (Originally from ..\FSComp.txt:445)
+ /// (Originally from ..\FSComp.txt:446)
static member parsMissingFunctionBody() = (611, GetStringFunc("parsMissingFunctionBody",",,,") )
/// Syntax error in labelled type argument
- /// (Originally from ..\FSComp.txt:446)
+ /// (Originally from ..\FSComp.txt:447)
static member parsSyntaxErrorInLabeledType() = (613, GetStringFunc("parsSyntaxErrorInLabeledType",",,,") )
/// Unexpected infix operator in type expression
- /// (Originally from ..\FSComp.txt:447)
+ /// (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:448)
+ /// (Originally from ..\FSComp.txt:449)
static member parsMultiArgumentGenericTypeFormDeprecated() = (GetStringFunc("parsMultiArgumentGenericTypeFormDeprecated",",,,") )
/// Invalid literal in type
- /// (Originally from ..\FSComp.txt:449)
+ /// (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:450)
+ /// (Originally from ..\FSComp.txt:451)
static member parsUnexpectedOperatorForUnitOfMeasure() = (619, GetStringFunc("parsUnexpectedOperatorForUnitOfMeasure",",,,") )
/// Unexpected integer literal in unit-of-measure expression
- /// (Originally from ..\FSComp.txt:451)
+ /// (Originally from ..\FSComp.txt:452)
static member parsUnexpectedIntegerLiteralForUnitOfMeasure() = (620, GetStringFunc("parsUnexpectedIntegerLiteralForUnitOfMeasure",",,,") )
/// Syntax error: unexpected type parameter specification
- /// (Originally from ..\FSComp.txt:452)
+ /// (Originally from ..\FSComp.txt:453)
static member parsUnexpectedTypeParameter() = (621, GetStringFunc("parsUnexpectedTypeParameter",",,,") )
/// Mismatched quotation operator name, beginning with '%s'
- /// (Originally from ..\FSComp.txt:453)
+ /// (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:454)
+ /// (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:455)
+ /// (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:456)
+ /// (Originally from ..\FSComp.txt:457)
static member parsIllegalDenominatorForMeasureExponent() = (625, GetStringFunc("parsIllegalDenominatorForMeasureExponent",",,,") )
/// No '=' symbol should follow a 'namespace' declaration
- /// (Originally from ..\FSComp.txt:457)
+ /// (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:458)
+ /// (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:459)
+ /// (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:460)
+ /// (Originally from ..\FSComp.txt:461)
static member tcStaticFieldUsedWhenInstanceFieldExpected() = (627, GetStringFunc("tcStaticFieldUsedWhenInstanceFieldExpected",",,,") )
/// Method '%s' is not accessible from this code location
- /// (Originally from ..\FSComp.txt:461)
+ /// (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:463)
+ /// (Originally from ..\FSComp.txt:464)
static member tcImplicitMeasureFollowingSlash() = (632, GetStringFunc("tcImplicitMeasureFollowingSlash",",,,") )
/// Unexpected SynMeasure.Anon
- /// (Originally from ..\FSComp.txt:464)
+ /// (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:465)
+ /// (Originally from ..\FSComp.txt:466)
static member tcNonZeroConstantCannotHaveGenericUnit() = (634, GetStringFunc("tcNonZeroConstantCannotHaveGenericUnit",",,,") )
/// In sequence expressions, results are generated using 'yield'
- /// (Originally from ..\FSComp.txt:466)
+ /// (Originally from ..\FSComp.txt:467)
static member tcSeqResultsUseYield() = (635, GetStringFunc("tcSeqResultsUseYield",",,,") )
/// Unexpected big rational constant
- /// (Originally from ..\FSComp.txt:467)
+ /// (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:468)
+ /// (Originally from ..\FSComp.txt:469)
static member tcInvalidTypeForUnitsOfMeasure() = (636, GetStringFunc("tcInvalidTypeForUnitsOfMeasure",",,,") )
/// Unexpected Const_uint16array
- /// (Originally from ..\FSComp.txt:469)
+ /// (Originally from ..\FSComp.txt:470)
static member tcUnexpectedConstUint16Array() = (GetStringFunc("tcUnexpectedConstUint16Array",",,,") )
/// Unexpected Const_bytearray
- /// (Originally from ..\FSComp.txt:470)
+ /// (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:471)
+ /// (Originally from ..\FSComp.txt:472)
static member tcParameterRequiresName() = (640, GetStringFunc("tcParameterRequiresName",",,,") )
/// Return values cannot have names
- /// (Originally from ..\FSComp.txt:472)
+ /// (Originally from ..\FSComp.txt:473)
static member tcReturnValuesCannotHaveNames() = (641, GetStringFunc("tcReturnValuesCannotHaveNames",",,,") )
/// MemberKind.PropertyGetSet only expected in parse trees
- /// (Originally from ..\FSComp.txt:473)
+ /// (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:474)
+ /// (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:475)
+ /// (Originally from ..\FSComp.txt:476)
static member tcNamespaceCannotContainExtensionMembers() = (644, GetStringFunc("tcNamespaceCannotContainExtensionMembers",",,,") )
/// Multiple visibility attributes have been specified for this identifier
- /// (Originally from ..\FSComp.txt:476)
+ /// (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:477)
+ /// (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:478)
+ /// (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:479)
+ /// (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:480)
+ /// (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:481)
+ /// (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:482)
+ /// (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:483)
+ /// (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:484)
+ /// (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:485)
+ /// (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:486)
+ /// (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:487)
+ /// (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:488)
+ /// (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:489)
+ /// (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:490)
+ /// (Originally from ..\FSComp.txt:491)
static member tcRecordFieldInconsistentTypes() = (656, GetStringFunc("tcRecordFieldInconsistentTypes",",,,") )
/// DLLImport stubs cannot be inlined
- /// (Originally from ..\FSComp.txt:491)
+ /// (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:492)
+ /// (Originally from ..\FSComp.txt:493)
static member tcStructsCanOnlyBindThisAtMemberDeclaration() = (658, GetStringFunc("tcStructsCanOnlyBindThisAtMemberDeclaration",",,,") )
/// Unexpected expression at recursive inference point
- /// (Originally from ..\FSComp.txt:493)
+ /// (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:494)
+ /// (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:495)
+ /// (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:496)
+ /// (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:497)
+ /// (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:498)
+ /// (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:499)
+ /// (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:500)
+ /// (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:501)
+ /// (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:502)
+ /// (Originally from ..\FSComp.txt:503)
static member tcFieldAppearsTwiceInRecord(a0 : System.String) = (668, GetStringFunc("tcFieldAppearsTwiceInRecord",",,,%s,,,") a0)
/// Unknown union case
- /// (Originally from ..\FSComp.txt:503)
+ /// (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:504)
+ /// (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:505)
+ /// (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:506)
+ /// (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:507)
+ /// (Originally from ..\FSComp.txt:508)
static member tcInstanceMemberRequiresTarget() = (673, GetStringFunc("tcInstanceMemberRequiresTarget",",,,") )
/// Unexpected source-level property specification in syntax tree
- /// (Originally from ..\FSComp.txt:508)
+ /// (Originally from ..\FSComp.txt:509)
static member tcUnexpectedPropertyInSyntaxTree() = (674, GetStringFunc("tcUnexpectedPropertyInSyntaxTree",",,,") )
/// A static initializer requires an argument
- /// (Originally from ..\FSComp.txt:509)
+ /// (Originally from ..\FSComp.txt:510)
static member tcStaticInitializerRequiresArgument() = (675, GetStringFunc("tcStaticInitializerRequiresArgument",",,,") )
/// An object constructor requires an argument
- /// (Originally from ..\FSComp.txt:510)
+ /// (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:511)
+ /// (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:512)
+ /// (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:513)
+ /// (Originally from ..\FSComp.txt:514)
static member tcExplicitObjectConstructorSyntax() = (679, GetStringFunc("tcExplicitObjectConstructorSyntax",",,,") )
/// Unexpected source-level property specification
- /// (Originally from ..\FSComp.txt:514)
+ /// (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:515)
+ /// (Originally from ..\FSComp.txt:516)
static member tcObjectExpressionFormDeprecated() = (GetStringFunc("tcObjectExpressionFormDeprecated",",,,") )
/// Invalid declaration
- /// (Originally from ..\FSComp.txt:516)
+ /// (Originally from ..\FSComp.txt:517)
static member tcInvalidDeclaration() = (682, GetStringFunc("tcInvalidDeclaration",",,,") )
/// Attributes are not allowed within patterns
- /// (Originally from ..\FSComp.txt:517)
+ /// (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:518)
+ /// (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:519)
+ /// (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:520)
+ /// (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:521)
+ /// (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:522)
+ /// (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:523)
+ /// (Originally from ..\FSComp.txt:524)
static member tcNonLiteralCannotBeUsedInPattern() = (689, GetStringFunc("tcNonLiteralCannotBeUsedInPattern",",,,") )
/// This field is readonly
- /// (Originally from ..\FSComp.txt:524)
+ /// (Originally from ..\FSComp.txt:525)
static member tcFieldIsReadonly() = (690, GetStringFunc("tcFieldIsReadonly",",,,") )
/// Named arguments must appear after all other arguments
- /// (Originally from ..\FSComp.txt:525)
+ /// (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:526)
+ /// (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:527)
+ /// (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:528)
+ /// (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:529)
+ /// (Originally from ..\FSComp.txt:530)
static member tcInvalidObjectConstructionExpression() = (696, GetStringFunc("tcInvalidObjectConstructionExpression",",,,") )
/// Invalid constraint
- /// (Originally from ..\FSComp.txt:530)
+ /// (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:531)
+ /// (Originally from ..\FSComp.txt:532)
static member tcInvalidConstraintTypeSealed() = (698, GetStringFunc("tcInvalidConstraintTypeSealed",",,,") )
/// An 'enum' constraint must be of the form 'enum'
- /// (Originally from ..\FSComp.txt:532)
+ /// (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:533)
+ /// (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:534)
+ /// (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:535)
+ /// (Originally from ..\FSComp.txt:536)
static member tcExpectedUnitOfMeasureMarkWithAttribute() = (702, GetStringFunc("tcExpectedUnitOfMeasureMarkWithAttribute",",,,") )
/// Expected type parameter, not unit-of-measure parameter
- /// (Originally from ..\FSComp.txt:536)
+ /// (Originally from ..\FSComp.txt:537)
static member tcExpectedTypeParameter() = (703, GetStringFunc("tcExpectedTypeParameter",",,,") )
/// Expected type, not unit-of-measure
- /// (Originally from ..\FSComp.txt:537)
+ /// (Originally from ..\FSComp.txt:538)
static member tcExpectedTypeNotUnitOfMeasure() = (704, GetStringFunc("tcExpectedTypeNotUnitOfMeasure",",,,") )
/// Expected unit-of-measure, not type
- /// (Originally from ..\FSComp.txt:538)
+ /// (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:539)
+ /// (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:540)
+ /// (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:541)
+ /// (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:542)
+ /// (Originally from ..\FSComp.txt:543)
static member tcTypeHasNoNestedTypes() = (709, GetStringFunc("tcTypeHasNoNestedTypes",",,,") )
/// Unexpected %s in type expression
- /// (Originally from ..\FSComp.txt:543)
+ /// (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:544)
+ /// (Originally from ..\FSComp.txt:545)
static member tcTypeParameterInvalidAsTypeConstructor() = (712, GetStringFunc("tcTypeParameterInvalidAsTypeConstructor",",,,") )
/// Illegal syntax in type expression
- /// (Originally from ..\FSComp.txt:545)
+ /// (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:546)
+ /// (Originally from ..\FSComp.txt:547)
static member tcAnonymousUnitsOfMeasureCannotBeNested() = (714, GetStringFunc("tcAnonymousUnitsOfMeasureCannotBeNested",",,,") )
/// Anonymous type variables are not permitted in this declaration
- /// (Originally from ..\FSComp.txt:547)
+ /// (Originally from ..\FSComp.txt:548)
static member tcAnonymousTypeInvalidInDeclaration() = (715, GetStringFunc("tcAnonymousTypeInvalidInDeclaration",",,,") )
/// Unexpected / in type
- /// (Originally from ..\FSComp.txt:548)
+ /// (Originally from ..\FSComp.txt:549)
static member tcUnexpectedSlashInType() = (716, GetStringFunc("tcUnexpectedSlashInType",",,,") )
/// Unexpected type arguments
- /// (Originally from ..\FSComp.txt:549)
+ /// (Originally from ..\FSComp.txt:550)
static member tcUnexpectedTypeArguments() = (717, GetStringFunc("tcUnexpectedTypeArguments",",,,") )
/// Optional arguments are only permitted on type members
- /// (Originally from ..\FSComp.txt:550)
+ /// (Originally from ..\FSComp.txt:551)
static member tcOptionalArgsOnlyOnMembers() = (718, GetStringFunc("tcOptionalArgsOnlyOnMembers",",,,") )
/// Name '%s' not bound in pattern context
- /// (Originally from ..\FSComp.txt:551)
+ /// (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:552)
+ /// (Originally from ..\FSComp.txt:553)
static member tcInvalidNonPrimitiveLiteralInPatternMatch() = (720, GetStringFunc("tcInvalidNonPrimitiveLiteralInPatternMatch",",,,") )
/// Type arguments cannot be specified here
- /// (Originally from ..\FSComp.txt:553)
+ /// (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:554)
+ /// (Originally from ..\FSComp.txt:555)
static member tcRequireActivePatternWithOneResult() = (722, GetStringFunc("tcRequireActivePatternWithOneResult",",,,") )
/// Invalid argument to parameterized pattern label
- /// (Originally from ..\FSComp.txt:555)
+ /// (Originally from ..\FSComp.txt:556)
static member tcInvalidArgForParameterizedPattern() = (723, GetStringFunc("tcInvalidArgForParameterizedPattern",",,,") )
/// Internal error. Invalid index into active pattern array
- /// (Originally from ..\FSComp.txt:556)
+ /// (Originally from ..\FSComp.txt:557)
static member tcInvalidIndexIntoActivePatternArray() = (724, GetStringFunc("tcInvalidIndexIntoActivePatternArray",",,,") )
/// This union case does not take arguments
- /// (Originally from ..\FSComp.txt:557)
+ /// (Originally from ..\FSComp.txt:558)
static member tcUnionCaseDoesNotTakeArguments() = (725, GetStringFunc("tcUnionCaseDoesNotTakeArguments",",,,") )
/// This union case takes one argument
- /// (Originally from ..\FSComp.txt:558)
+ /// (Originally from ..\FSComp.txt:559)
static member tcUnionCaseRequiresOneArgument() = (726, GetStringFunc("tcUnionCaseRequiresOneArgument",",,,") )
/// This union case expects %d arguments in tupled form
- /// (Originally from ..\FSComp.txt:559)
+ /// (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:560)
+ /// (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:561)
+ /// (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:562)
+ /// (Originally from ..\FSComp.txt:563)
static member tcRequireVarConstRecogOrLiteral() = (730, GetStringFunc("tcRequireVarConstRecogOrLiteral",",,,") )
/// This is not a valid pattern
- /// (Originally from ..\FSComp.txt:563)
+ /// (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:564)
+ /// (Originally from ..\FSComp.txt:565)
static member tcUseWhenPatternGuard() = (GetStringFunc("tcUseWhenPatternGuard",",,,") )
/// Illegal pattern
- /// (Originally from ..\FSComp.txt:565)
+ /// (Originally from ..\FSComp.txt:566)
static member tcIllegalPattern() = (733, GetStringFunc("tcIllegalPattern",",,,") )
/// Syntax error - unexpected '?' symbol
- /// (Originally from ..\FSComp.txt:566)
+ /// (Originally from ..\FSComp.txt:567)
static member tcSyntaxErrorUnexpectedQMark() = (734, GetStringFunc("tcSyntaxErrorUnexpectedQMark",",,,") )
/// Expected %d expressions, got %d
- /// (Originally from ..\FSComp.txt:567)
+ /// (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:568)
+ /// (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:569)
+ /// (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:570)
+ /// (Originally from ..\FSComp.txt:571)
static member tcInvalidObjectExpressionSyntaxForm() = (738, GetStringFunc("tcInvalidObjectExpressionSyntaxForm",",,,") )
/// Invalid object, sequence or record expression
- /// (Originally from ..\FSComp.txt:571)
+ /// (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:572)
+ /// (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:573)
+ /// (Originally from ..\FSComp.txt:574)
static member tcExpressionWithIfRequiresParenthesis() = (GetStringFunc("tcExpressionWithIfRequiresParenthesis",",,,") )
/// Unable to parse format string '%s'
- /// (Originally from ..\FSComp.txt:574)
+ /// (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:575)
+ /// (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:576)
+ /// (Originally from ..\FSComp.txt:577)
static member tcExpressionFormRequiresObjectConstructor() = (743, GetStringFunc("tcExpressionFormRequiresObjectConstructor",",,,") )
/// Named arguments cannot be given to member trait calls
- /// (Originally from ..\FSComp.txt:577)
+ /// (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:578)
+ /// (Originally from ..\FSComp.txt:579)
static member tcNotValidEnumCaseName() = (745, GetStringFunc("tcNotValidEnumCaseName",",,,") )
/// This field is not mutable
- /// (Originally from ..\FSComp.txt:579)
+ /// (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:580)
+ /// (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:581)
+ /// (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:582)
+ /// (Originally from ..\FSComp.txt:583)
static member tcConstructRequiresSequenceOrComputations() = (749, GetStringFunc("tcConstructRequiresSequenceOrComputations",",,,") )
/// This construct may only be used within computation expressions
- /// (Originally from ..\FSComp.txt:583)
+ /// (Originally from ..\FSComp.txt:584)
static member tcConstructRequiresComputationExpression() = (750, GetStringFunc("tcConstructRequiresComputationExpression",",,,") )
/// Invalid indexer expression
- /// (Originally from ..\FSComp.txt:584)
+ /// (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:585)
+ /// (Originally from ..\FSComp.txt:586)
static member tcObjectOfIndeterminateTypeUsedRequireTypeConstraint() = (752, GetStringFunc("tcObjectOfIndeterminateTypeUsedRequireTypeConstraint",",,,") )
/// Cannot inherit from a variable type
- /// (Originally from ..\FSComp.txt:586)
+ /// (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:587)
+ /// (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:588)
+ /// (Originally from ..\FSComp.txt:589)
static member tcCompiledNameAttributeMisused() = (755, GetStringFunc("tcCompiledNameAttributeMisused",",,,") )
/// '%s' may only be used with named types
- /// (Originally from ..\FSComp.txt:589)
+ /// (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:590)
+ /// (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:591)
+ /// (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:592)
+ /// (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:593)
+ /// (Originally from ..\FSComp.txt:594)
static member tcIDisposableTypeShouldUseNew() = (760, GetStringFunc("tcIDisposableTypeShouldUseNew",",,,") )
/// '%s' may only be used to construct object types
- /// (Originally from ..\FSComp.txt:594)
+ /// (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:595)
+ /// (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:596)
+ /// (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:597)
+ /// (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:598)
+ /// (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:599)
+ /// (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:600)
+ /// (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:601)
+ /// (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:602)
+ /// (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:603)
+ /// (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:604)
+ /// (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:605)
+ /// (Originally from ..\FSComp.txt:606)
static member tcPredefinedTypeCannotBeUsedAsSuperType() = (771, GetStringFunc("tcPredefinedTypeCannotBeUsedAsSuperType",",,,") )
/// 'new' must be used with a named type
- /// (Originally from ..\FSComp.txt:606)
+ /// (Originally from ..\FSComp.txt:607)
static member tcNewMustBeUsedWithNamedType() = (772, GetStringFunc("tcNewMustBeUsedWithNamedType",",,,") )
/// Cannot create an extension of a sealed type
- /// (Originally from ..\FSComp.txt:607)
+ /// (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:608)
+ /// (Originally from ..\FSComp.txt:609)
static member tcNoArgumentsForRecordValue() = (774, GetStringFunc("tcNoArgumentsForRecordValue",",,,") )
/// Interface implementations cannot be given on construction expressions
- /// (Originally from ..\FSComp.txt:609)
+ /// (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:610)
+ /// (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:611)
+ /// (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:612)
+ /// (Originally from ..\FSComp.txt:613)
static member tcObjectsMustBeInitializedWithObjectExpression() = (778, GetStringFunc("tcObjectsMustBeInitializedWithObjectExpression",",,,") )
/// Expected an interface type
- /// (Originally from ..\FSComp.txt:613)
+ /// (Originally from ..\FSComp.txt:614)
static member tcExpectedInterfaceType() = (779, GetStringFunc("tcExpectedInterfaceType",",,,") )
/// Constructor expressions for interfaces do not take arguments
- /// (Originally from ..\FSComp.txt:614)
+ /// (Originally from ..\FSComp.txt:615)
static member tcConstructorForInterfacesDoNotTakeArguments() = (780, GetStringFunc("tcConstructorForInterfacesDoNotTakeArguments",",,,") )
/// This object constructor requires arguments
- /// (Originally from ..\FSComp.txt:615)
+ /// (Originally from ..\FSComp.txt:616)
static member tcConstructorRequiresArguments() = (781, GetStringFunc("tcConstructorRequiresArguments",",,,") )
/// 'new' may only be used with object constructors
- /// (Originally from ..\FSComp.txt:616)
+ /// (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:617)
+ /// (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:618)
+ /// (Originally from ..\FSComp.txt:619)
static member tcNumericLiteralRequiresModule(a0 : System.String) = (784, GetStringFunc("tcNumericLiteralRequiresModule",",,,%s,,,") a0)
/// Invalid record construction
- /// (Originally from ..\FSComp.txt:619)
+ /// (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:620)
+ /// (Originally from ..\FSComp.txt:621)
static member tcExpressionFormRequiresRecordTypes() = (786, GetStringFunc("tcExpressionFormRequiresRecordTypes",",,,") )
/// The inherited type is not an object model type
- /// (Originally from ..\FSComp.txt:621)
+ /// (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:622)
+ /// (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:623)
+ /// (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:624)
+ /// (Originally from ..\FSComp.txt:625)
static member tcTypeIsNotARecordTypeNeedConstructor() = (790, GetStringFunc("tcTypeIsNotARecordTypeNeedConstructor",",,,") )
/// This type is not a record type
- /// (Originally from ..\FSComp.txt:625)
+ /// (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:626)
+ /// (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:627)
+ /// (Originally from ..\FSComp.txt:628)
static member tcConstructIsAmbiguousInSequenceExpression() = (793, GetStringFunc("tcConstructIsAmbiguousInSequenceExpression",",,,") )
/// 'do!' cannot be used within sequence expressions
- /// (Originally from ..\FSComp.txt:628)
+ /// (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:629)
+ /// (Originally from ..\FSComp.txt:630)
static member tcUseForInSequenceExpression() = (795, GetStringFunc("tcUseForInSequenceExpression",",,,") )
/// 'try'/'with' cannot be used within sequence expressions
- /// (Originally from ..\FSComp.txt:630)
+ /// (Originally from ..\FSComp.txt:631)
static member tcTryIllegalInSequenceExpression() = (796, GetStringFunc("tcTryIllegalInSequenceExpression",",,,") )
/// In sequence expressions, multiple results are generated using 'yield!'
- /// (Originally from ..\FSComp.txt:631)
+ /// (Originally from ..\FSComp.txt:632)
static member tcUseYieldBangForMultipleResults() = (797, GetStringFunc("tcUseYieldBangForMultipleResults",",,,") )
/// Invalid assignment
- /// (Originally from ..\FSComp.txt:632)
+ /// (Originally from ..\FSComp.txt:633)
static member tcInvalidAssignment() = (799, GetStringFunc("tcInvalidAssignment",",,,") )
/// Invalid use of a type name
- /// (Originally from ..\FSComp.txt:633)
+ /// (Originally from ..\FSComp.txt:634)
static member tcInvalidUseOfTypeName() = (800, GetStringFunc("tcInvalidUseOfTypeName",",,,") )
/// This type has no accessible object constructors
- /// (Originally from ..\FSComp.txt:634)
+ /// (Originally from ..\FSComp.txt:635)
static member tcTypeHasNoAccessibleConstructor() = (801, GetStringFunc("tcTypeHasNoAccessibleConstructor",",,,") )
/// Invalid use of an interface type
- /// (Originally from ..\FSComp.txt:637)
+ /// (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:638)
+ /// (Originally from ..\FSComp.txt:639)
static member tcInvalidUseOfDelegate() = (805, GetStringFunc("tcInvalidUseOfDelegate",",,,") )
/// Property '%s' is not static
- /// (Originally from ..\FSComp.txt:639)
+ /// (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:640)
+ /// (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:641)
+ /// (Originally from ..\FSComp.txt:642)
static member tcLookupMayNotBeUsedHere() = (808, GetStringFunc("tcLookupMayNotBeUsedHere",",,,") )
/// Property '%s' is static
- /// (Originally from ..\FSComp.txt:642)
+ /// (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:643)
+ /// (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:644)
+ /// (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:645)
+ /// (Originally from ..\FSComp.txt:646)
static member tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields() = (812, GetStringFunc("tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields",",,,") )
/// Event '%s' is static
- /// (Originally from ..\FSComp.txt:646)
+ /// (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:647)
+ /// (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:648)
+ /// (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:649)
+ /// (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:650)
+ /// (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:651)
+ /// (Originally from ..\FSComp.txt:652)
static member tcStaticOptimizationConditionalsOnlyForFSharpLibrary() = (817, GetStringFunc("tcStaticOptimizationConditionalsOnlyForFSharpLibrary",",,,") )
/// The corresponding formal argument is not optional
- /// (Originally from ..\FSComp.txt:652)
+ /// (Originally from ..\FSComp.txt:653)
static member tcFormalArgumentIsNotOptional() = (818, GetStringFunc("tcFormalArgumentIsNotOptional",",,,") )
/// Invalid optional assignment to a property or field
- /// (Originally from ..\FSComp.txt:653)
+ /// (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:654)
+ /// (Originally from ..\FSComp.txt:655)
static member tcDelegateConstructorMustBePassed() = (820, GetStringFunc("tcDelegateConstructorMustBePassed",",,,") )
/// A binding cannot be marked both 'use' and 'rec'
- /// (Originally from ..\FSComp.txt:655)
+ /// (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:656)
+ /// (Originally from ..\FSComp.txt:657)
static member tcVolatileOnlyOnClassLetBindings() = (823, GetStringFunc("tcVolatileOnlyOnClassLetBindings",",,,") )
/// Attributes are not permitted on 'let' bindings in expressions
- /// (Originally from ..\FSComp.txt:657)
+ /// (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:658)
+ /// (Originally from ..\FSComp.txt:659)
static member tcDefaultValueAttributeRequiresVal() = (825, GetStringFunc("tcDefaultValueAttributeRequiresVal",",,,") )
/// The 'ConditionalAttribute' attribute may only be used on members
- /// (Originally from ..\FSComp.txt:659)
+ /// (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:660)
+ /// (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:661)
+ /// (Originally from ..\FSComp.txt:662)
static member tcEntryPointAttributeRequiresFunctionInModule() = (828, GetStringFunc("tcEntryPointAttributeRequiresFunctionInModule",",,,") )
/// Mutable values cannot be marked 'inline'
- /// (Originally from ..\FSComp.txt:662)
+ /// (Originally from ..\FSComp.txt:663)
static member tcMutableValuesCannotBeInline() = (829, GetStringFunc("tcMutableValuesCannotBeInline",",,,") )
/// Mutable values cannot have generic parameters
- /// (Originally from ..\FSComp.txt:663)
+ /// (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:664)
+ /// (Originally from ..\FSComp.txt:665)
static member tcMutableValuesSyntax() = (831, GetStringFunc("tcMutableValuesSyntax",",,,") )
/// Only functions may be marked 'inline'
- /// (Originally from ..\FSComp.txt:665)
+ /// (Originally from ..\FSComp.txt:666)
static member tcOnlyFunctionsCanBeInline() = (832, GetStringFunc("tcOnlyFunctionsCanBeInline",",,,") )
/// A literal value cannot be given the [] or [] attributes
- /// (Originally from ..\FSComp.txt:666)
+ /// (Originally from ..\FSComp.txt:667)
static member tcIllegalAttributesForLiteral() = (833, GetStringFunc("tcIllegalAttributesForLiteral",",,,") )
/// A literal value cannot be marked 'mutable'
- /// (Originally from ..\FSComp.txt:667)
+ /// (Originally from ..\FSComp.txt:668)
static member tcLiteralCannotBeMutable() = (834, GetStringFunc("tcLiteralCannotBeMutable",",,,") )
/// A literal value cannot be marked 'inline'
- /// (Originally from ..\FSComp.txt:668)
+ /// (Originally from ..\FSComp.txt:669)
static member tcLiteralCannotBeInline() = (835, GetStringFunc("tcLiteralCannotBeInline",",,,") )
/// Literal values cannot have generic parameters
- /// (Originally from ..\FSComp.txt:669)
+ /// (Originally from ..\FSComp.txt:670)
static member tcLiteralCannotHaveGenericParameters() = (836, GetStringFunc("tcLiteralCannotHaveGenericParameters",",,,") )
/// This is not a valid constant expression
- /// (Originally from ..\FSComp.txt:670)
+ /// (Originally from ..\FSComp.txt:671)
static member tcInvalidConstantExpression() = (837, GetStringFunc("tcInvalidConstantExpression",",,,") )
/// This type is not accessible from this code location
- /// (Originally from ..\FSComp.txt:671)
+ /// (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:672)
+ /// (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:673)
+ /// (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:674)
+ /// (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:675)
+ /// (Originally from ..\FSComp.txt:676)
static member tcAttributeIsNotValidForLanguageElement() = (842, GetStringFunc("tcAttributeIsNotValidForLanguageElement",",,,") )
/// Optional arguments cannot be used in custom attributes
- /// (Originally from ..\FSComp.txt:676)
+ /// (Originally from ..\FSComp.txt:677)
static member tcOptionalArgumentsCannotBeUsedInCustomAttribute() = (843, GetStringFunc("tcOptionalArgumentsCannotBeUsedInCustomAttribute",",,,") )
/// This property cannot be set
- /// (Originally from ..\FSComp.txt:677)
+ /// (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:678)
+ /// (Originally from ..\FSComp.txt:679)
static member tcPropertyOrFieldNotFoundInAttribute() = (845, GetStringFunc("tcPropertyOrFieldNotFoundInAttribute",",,,") )
/// A custom attribute must be a reference type
- /// (Originally from ..\FSComp.txt:679)
+ /// (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:680)
+ /// (Originally from ..\FSComp.txt:681)
static member tcCustomAttributeArgumentMismatch() = (847, GetStringFunc("tcCustomAttributeArgumentMismatch",",,,") )
/// A custom attribute must invoke an object constructor
- /// (Originally from ..\FSComp.txt:681)
+ /// (Originally from ..\FSComp.txt:682)
static member tcCustomAttributeMustInvokeConstructor() = (848, GetStringFunc("tcCustomAttributeMustInvokeConstructor",",,,") )
/// Attribute expressions must be calls to object constructors
- /// (Originally from ..\FSComp.txt:682)
+ /// (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:683)
+ /// (Originally from ..\FSComp.txt:684)
static member tcUnsupportedAttribute() = (850, GetStringFunc("tcUnsupportedAttribute",",,,") )
/// Invalid inline specification
- /// (Originally from ..\FSComp.txt:684)
+ /// (Originally from ..\FSComp.txt:685)
static member tcInvalidInlineSpecification() = (851, GetStringFunc("tcInvalidInlineSpecification",",,,") )
/// 'use' bindings must be of the form 'use = '
- /// (Originally from ..\FSComp.txt:685)
+ /// (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:686)
+ /// (Originally from ..\FSComp.txt:687)
static member tcAbstractMembersIllegalInAugmentation() = (853, GetStringFunc("tcAbstractMembersIllegalInAugmentation",",,,") )
/// Method overrides and interface implementations are not permitted here
- /// (Originally from ..\FSComp.txt:687)
+ /// (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:688)
+ /// (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:689)
+ /// (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:690)
+ /// (Originally from ..\FSComp.txt:691)
static member tcDefaultImplementationAlreadyExists() = (857, GetStringFunc("tcDefaultImplementationAlreadyExists",",,,") )
/// The method implemented by this default is ambiguous
- /// (Originally from ..\FSComp.txt:691)
+ /// (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:692)
+ /// (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:693)
+ /// (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:694)
+ /// (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:695)
+ /// (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:696)
+ /// (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:697)
+ /// (Originally from ..\FSComp.txt:698)
static member tcStaticInitializersIllegalInInterface() = (865, GetStringFunc("tcStaticInitializersIllegalInInterface",",,,") )
/// Interfaces cannot contain definitions of object constructors
- /// (Originally from ..\FSComp.txt:698)
+ /// (Originally from ..\FSComp.txt:699)
static member tcObjectConstructorsIllegalInInterface() = (866, GetStringFunc("tcObjectConstructorsIllegalInInterface",",,,") )
/// Interfaces cannot contain definitions of member overrides
- /// (Originally from ..\FSComp.txt:699)
+ /// (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:700)
+ /// (Originally from ..\FSComp.txt:701)
static member tcConcreteMembersIllegalInInterface() = (868, GetStringFunc("tcConcreteMembersIllegalInInterface",",,,") )
/// Constructors cannot be specified in exception augmentations
- /// (Originally from ..\FSComp.txt:701)
+ /// (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:702)
+ /// (Originally from ..\FSComp.txt:703)
static member tcStructsCannotHaveConstructorWithNoArguments() = (870, GetStringFunc("tcStructsCannotHaveConstructorWithNoArguments",",,,") )
/// Constructors cannot be defined for this type
- /// (Originally from ..\FSComp.txt:703)
+ /// (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:704)
+ /// (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:705)
+ /// (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:706)
+ /// (Originally from ..\FSComp.txt:707)
static member tcOnlyRecordFieldsAndSimpleLetCanBeMutable() = (874, GetStringFunc("tcOnlyRecordFieldsAndSimpleLetCanBeMutable",",,,") )
/// This member is not sufficiently generic
- /// (Originally from ..\FSComp.txt:707)
+ /// (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:708)
+ /// (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:709)
+ /// (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:710)
+ /// (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:711)
+ /// (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:712)
+ /// (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:713)
+ /// (Originally from ..\FSComp.txt:714)
static member tcStaticValFieldsMustBeMutableAndPrivate() = (881, GetStringFunc("tcStaticValFieldsMustBeMutableAndPrivate",",,,") )
/// This field requires a name
- /// (Originally from ..\FSComp.txt:714)
+ /// (Originally from ..\FSComp.txt:715)
static member tcFieldRequiresName() = (882, GetStringFunc("tcFieldRequiresName",",,,") )
/// Invalid namespace, module, type or union case name
- /// (Originally from ..\FSComp.txt:715)
+ /// (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:716)
+ /// (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:717)
+ /// (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:718)
+ /// (Originally from ..\FSComp.txt:719)
static member tcInvalidEnumerationLiteral() = (886, GetStringFunc("tcInvalidEnumerationLiteral",",,,") )
/// The type '%s' is not an interface type
- /// (Originally from ..\FSComp.txt:719)
+ /// (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:720)
+ /// (Originally from ..\FSComp.txt:721)
static member tcDuplicateSpecOfInterface() = (888, GetStringFunc("tcDuplicateSpecOfInterface",",,,") )
/// A field/val declaration is not permitted here
- /// (Originally from ..\FSComp.txt:721)
+ /// (Originally from ..\FSComp.txt:722)
static member tcFieldValIllegalHere() = (889, GetStringFunc("tcFieldValIllegalHere",",,,") )
/// A inheritance declaration is not permitted here
- /// (Originally from ..\FSComp.txt:722)
+ /// (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:723)
+ /// (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:724)
+ /// (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:725)
+ /// (Originally from ..\FSComp.txt:726)
static member tcLocalClassBindingsCannotBeInline() = (894, GetStringFunc("tcLocalClassBindingsCannotBeInline",",,,") )
/// Type abbreviations cannot have members
- /// (Originally from ..\FSComp.txt:726)
+ /// (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:727)
+ /// (Originally from ..\FSComp.txt:728)
static member tcTypeAbbreviationsCheckedAtCompileTime() = (GetStringFunc("tcTypeAbbreviationsCheckedAtCompileTime",",,,") )
/// Enumerations cannot have members
- /// (Originally from ..\FSComp.txt:728)
+ /// (Originally from ..\FSComp.txt:729)
static member tcEnumerationsMayNotHaveMembers() = (896, GetStringFunc("tcEnumerationsMayNotHaveMembers",",,,") )
/// Measure declarations may have only static members
- /// (Originally from ..\FSComp.txt:729)
+ /// (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:730)
+ /// (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:731)
+ /// (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:732)
+ /// (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:733)
+ /// (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:734)
+ /// (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:735)
+ /// (Originally from ..\FSComp.txt:736)
static member tcTypeAbbreviationsCannotHaveInterfaceDeclaration() = (906, GetStringFunc("tcTypeAbbreviationsCannotHaveInterfaceDeclaration",",,,") )
/// Enumerations cannot have interface declarations
- /// (Originally from ..\FSComp.txt:736)
+ /// (Originally from ..\FSComp.txt:737)
static member tcEnumerationsCannotHaveInterfaceDeclaration() = (907, GetStringFunc("tcEnumerationsCannotHaveInterfaceDeclaration",",,,") )
/// This type is not an interface type
- /// (Originally from ..\FSComp.txt:737)
+ /// (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:738)
+ /// (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:739)
+ /// (Originally from ..\FSComp.txt:740)
static member tcDefaultImplementationForInterfaceHasAlreadyBeenAdded() = (910, GetStringFunc("tcDefaultImplementationForInterfaceHasAlreadyBeenAdded",",,,") )
/// This member is not permitted in an interface implementation
- /// (Originally from ..\FSComp.txt:740)
+ /// (Originally from ..\FSComp.txt:741)
static member tcMemberNotPermittedInInterfaceImplementation() = (911, GetStringFunc("tcMemberNotPermittedInInterfaceImplementation",",,,") )
/// This declaration element is not permitted in an augmentation
- /// (Originally from ..\FSComp.txt:741)
+ /// (Originally from ..\FSComp.txt:742)
static member tcDeclarationElementNotPermittedInAugmentation() = (912, GetStringFunc("tcDeclarationElementNotPermittedInAugmentation",",,,") )
/// Types cannot contain nested type definitions
- /// (Originally from ..\FSComp.txt:742)
+ /// (Originally from ..\FSComp.txt:743)
static member tcTypesCannotContainNestedTypes() = (913, GetStringFunc("tcTypesCannotContainNestedTypes",",,,") )
/// type, exception or module
- /// (Originally from ..\FSComp.txt:743)
+ /// (Originally from ..\FSComp.txt:744)
static member tcTypeExceptionOrModule() = (GetStringFunc("tcTypeExceptionOrModule",",,,") )
/// type or module
- /// (Originally from ..\FSComp.txt:744)
+ /// (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:745)
+ /// (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:746)
+ /// (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:747)
+ /// (Originally from ..\FSComp.txt:748)
static member tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors() = (916, GetStringFunc("tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors",",,,") )
/// Exception abbreviations should not have argument lists
- /// (Originally from ..\FSComp.txt:748)
+ /// (Originally from ..\FSComp.txt:749)
static member tcExceptionAbbreviationsShouldNotHaveArgumentList() = (917, GetStringFunc("tcExceptionAbbreviationsShouldNotHaveArgumentList",",,,") )
/// Abbreviations for Common IL exceptions cannot take arguments
- /// (Originally from ..\FSComp.txt:749)
+ /// (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:750)
+ /// (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:751)
+ /// (Originally from ..\FSComp.txt:752)
static member tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor() = (920, GetStringFunc("tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor",",,,") )
/// Not an exception
- /// (Originally from ..\FSComp.txt:752)
+ /// (Originally from ..\FSComp.txt:753)
static member tcNotAnException() = (921, GetStringFunc("tcNotAnException",",,,") )
/// Invalid module name
- /// (Originally from ..\FSComp.txt:754)
+ /// (Originally from ..\FSComp.txt:755)
static member tcInvalidModuleName() = (924, GetStringFunc("tcInvalidModuleName",",,,") )
/// Invalid type extension
- /// (Originally from ..\FSComp.txt:755)
+ /// (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:756)
+ /// (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:757)
+ /// (Originally from ..\FSComp.txt:758)
static member tcKindOfTypeSpecifiedDoesNotMatchDefinition() = (927, GetStringFunc("tcKindOfTypeSpecifiedDoesNotMatchDefinition",",,,") )
/// Measure definitions cannot have type parameters
- /// (Originally from ..\FSComp.txt:758)
+ /// (Originally from ..\FSComp.txt:759)
static member tcMeasureDefinitionsCannotHaveTypeParameters() = (928, GetStringFunc("tcMeasureDefinitionsCannotHaveTypeParameters",",,,") )
/// This type requires a definition
- /// (Originally from ..\FSComp.txt:759)
+ /// (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:760)
+ /// (Originally from ..\FSComp.txt:761)
static member tcTypeAbbreviationHasTypeParametersMissingOnType() = (GetStringFunc("tcTypeAbbreviationHasTypeParametersMissingOnType",",,,") )
/// Structs, interfaces, enums and delegates cannot inherit from other types
- /// (Originally from ..\FSComp.txt:761)
+ /// (Originally from ..\FSComp.txt:762)
static member tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes() = (931, GetStringFunc("tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes",",,,") )
/// Types cannot inherit from multiple concrete types
- /// (Originally from ..\FSComp.txt:762)
+ /// (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:763)
+ /// (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:764)
+ /// (Originally from ..\FSComp.txt:765)
static member tcAllowNullTypesMayOnlyInheritFromAllowNullTypes() = (935, GetStringFunc("tcAllowNullTypesMayOnlyInheritFromAllowNullTypes",",,,") )
/// Generic types cannot be given the 'StructLayout' attribute
- /// (Originally from ..\FSComp.txt:765)
+ /// (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:766)
+ /// (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:767)
+ /// (Originally from ..\FSComp.txt:768)
static member tcRepresentationOfTypeHiddenBySignature() = (938, GetStringFunc("tcRepresentationOfTypeHiddenBySignature",",,,") )
/// Only classes may be given the 'AbstractClass' attribute
- /// (Originally from ..\FSComp.txt:768)
+ /// (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:769)
+ /// (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:770)
+ /// (Originally from ..\FSComp.txt:771)
static member tcOverridesCannotHaveVisibilityDeclarations() = (941, GetStringFunc("tcOverridesCannotHaveVisibilityDeclarations",",,,") )
/// Discriminated union types are always sealed
- /// (Originally from ..\FSComp.txt:771)
+ /// (Originally from ..\FSComp.txt:772)
static member tcTypesAreAlwaysSealedDU() = (942, GetStringFunc("tcTypesAreAlwaysSealedDU",",,,") )
/// Record types are always sealed
- /// (Originally from ..\FSComp.txt:772)
+ /// (Originally from ..\FSComp.txt:773)
static member tcTypesAreAlwaysSealedRecord() = (942, GetStringFunc("tcTypesAreAlwaysSealedRecord",",,,") )
/// Assembly code types are always sealed
- /// (Originally from ..\FSComp.txt:773)
+ /// (Originally from ..\FSComp.txt:774)
static member tcTypesAreAlwaysSealedAssemblyCode() = (942, GetStringFunc("tcTypesAreAlwaysSealedAssemblyCode",",,,") )
/// Struct types are always sealed
- /// (Originally from ..\FSComp.txt:774)
+ /// (Originally from ..\FSComp.txt:775)
static member tcTypesAreAlwaysSealedStruct() = (942, GetStringFunc("tcTypesAreAlwaysSealedStruct",",,,") )
/// Delegate types are always sealed
- /// (Originally from ..\FSComp.txt:775)
+ /// (Originally from ..\FSComp.txt:776)
static member tcTypesAreAlwaysSealedDelegate() = (942, GetStringFunc("tcTypesAreAlwaysSealedDelegate",",,,") )
/// Enum types are always sealed
- /// (Originally from ..\FSComp.txt:776)
+ /// (Originally from ..\FSComp.txt:777)
static member tcTypesAreAlwaysSealedEnum() = (942, GetStringFunc("tcTypesAreAlwaysSealedEnum",",,,") )
/// Interface types and delegate types cannot contain fields
- /// (Originally from ..\FSComp.txt:777)
+ /// (Originally from ..\FSComp.txt:778)
static member tcInterfaceTypesAndDelegatesCannotContainFields() = (943, GetStringFunc("tcInterfaceTypesAndDelegatesCannotContainFields",",,,") )
/// Abbreviated types cannot be given the 'Sealed' attribute
- /// (Originally from ..\FSComp.txt:778)
+ /// (Originally from ..\FSComp.txt:779)
static member tcAbbreviatedTypesCannotBeSealed() = (944, GetStringFunc("tcAbbreviatedTypesCannotBeSealed",",,,") )
/// Cannot inherit a sealed type
- /// (Originally from ..\FSComp.txt:779)
+ /// (Originally from ..\FSComp.txt:780)
static member tcCannotInheritFromSealedType() = (945, GetStringFunc("tcCannotInheritFromSealedType",",,,") )
/// Cannot inherit from interface type. Use interface ... with instead.
- /// (Originally from ..\FSComp.txt:780)
+ /// (Originally from ..\FSComp.txt:781)
static member tcCannotInheritFromInterfaceType() = (946, GetStringFunc("tcCannotInheritFromInterfaceType",",,,") )
/// Struct types cannot contain abstract members
- /// (Originally from ..\FSComp.txt:781)
+ /// (Originally from ..\FSComp.txt:782)
static member tcStructTypesCannotContainAbstractMembers() = (947, GetStringFunc("tcStructTypesCannotContainAbstractMembers",",,,") )
/// Interface types cannot be sealed
- /// (Originally from ..\FSComp.txt:782)
+ /// (Originally from ..\FSComp.txt:783)
static member tcInterfaceTypesCannotBeSealed() = (948, GetStringFunc("tcInterfaceTypesCannotBeSealed",",,,") )
/// Delegate specifications must be of the form 'typ -> typ'
- /// (Originally from ..\FSComp.txt:783)
+ /// (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:784)
+ /// (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:785)
+ /// (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:787)
+ /// (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:788)
+ /// (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:789)
+ /// (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:790)
+ /// (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:791)
+ /// (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:792)
+ /// (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:793)
+ /// (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:794)
+ /// (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:795)
+ /// (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:796)
+ /// (Originally from ..\FSComp.txt:797)
static member tcLetAndDoRequiresImplicitConstructionSequence() = (963, GetStringFunc("tcLetAndDoRequiresImplicitConstructionSequence",",,,") )
/// Type abbreviations cannot have augmentations
- /// (Originally from ..\FSComp.txt:797)
+ /// (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:798)
+ /// (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:799)
+ /// (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:800)
+ /// (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:803)
+ /// (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:804)
+ /// (Originally from ..\FSComp.txt:805)
static member ilUndefinedValue(a0 : System.String) = (971, GetStringFunc("ilUndefinedValue",",,,%s,,,") a0)
/// Label %s not found
- /// (Originally from ..\FSComp.txt:805)
+ /// (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:806)
+ /// (Originally from ..\FSComp.txt:807)
static member ilIncorrectNumberOfTypeArguments() = (973, GetStringFunc("ilIncorrectNumberOfTypeArguments",",,,") )
/// Dynamic invocation of %s is not supported
- /// (Originally from ..\FSComp.txt:807)
+ /// (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:808)
+ /// (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:809)
+ /// (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:810)
+ /// (Originally from ..\FSComp.txt:811)
static member ilCustomMarshallersCannotBeUsedInFSharp() = (980, GetStringFunc("ilCustomMarshallersCannotBeUsedInFSharp",",,,") )
/// The MarshalAs attribute could not be decoded
- /// (Originally from ..\FSComp.txt:811)
+ /// (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:812)
+ /// (Originally from ..\FSComp.txt:813)
static member ilSignatureForExternalFunctionContainsTypeParameters() = (982, GetStringFunc("ilSignatureForExternalFunctionContainsTypeParameters",",,,") )
/// The DllImport attribute could not be decoded
- /// (Originally from ..\FSComp.txt:813)
+ /// (Originally from ..\FSComp.txt:814)
static member ilDllImportAttributeCouldNotBeDecoded() = (983, GetStringFunc("ilDllImportAttributeCouldNotBeDecoded",",,,") )
/// Literal fields cannot be set
- /// (Originally from ..\FSComp.txt:814)
+ /// (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:815)
+ /// (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:816)
+ /// (Originally from ..\FSComp.txt:817)
static member ilMutableVariablesCannotEscapeMethod() = (986, GetStringFunc("ilMutableVariablesCannotEscapeMethod",",,,") )
/// Compiler error: unexpected unrealized value
- /// (Originally from ..\FSComp.txt:817)
+ /// (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:818)
+ /// (Originally from ..\FSComp.txt:819)
static member ilMainModuleEmpty() = (988, GetStringFunc("ilMainModuleEmpty",",,,") )
/// This type cannot be used for a literal field
- /// (Originally from ..\FSComp.txt:819)
+ /// (Originally from ..\FSComp.txt:820)
static member ilTypeCannotBeUsedForLiteralField() = (989, GetStringFunc("ilTypeCannotBeUsedForLiteralField",",,,") )
/// Unexpected GetSet annotation on a property
- /// (Originally from ..\FSComp.txt:820)
+ /// (Originally from ..\FSComp.txt:821)
static member ilUnexpectedGetSetAnnotation() = (990, GetStringFunc("ilUnexpectedGetSetAnnotation",",,,") )
/// The FieldOffset attribute could not be decoded
- /// (Originally from ..\FSComp.txt:821)
+ /// (Originally from ..\FSComp.txt:822)
static member ilFieldOffsetAttributeCouldNotBeDecoded() = (991, GetStringFunc("ilFieldOffsetAttributeCouldNotBeDecoded",",,,") )
/// The StructLayout attribute could not be decoded
- /// (Originally from ..\FSComp.txt:822)
+ /// (Originally from ..\FSComp.txt:823)
static member ilStructLayoutAttributeCouldNotBeDecoded() = (992, GetStringFunc("ilStructLayoutAttributeCouldNotBeDecoded",",,,") )
/// The DefaultAugmentation attribute could not be decoded
- /// (Originally from ..\FSComp.txt:823)
+ /// (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:824)
+ /// (Originally from ..\FSComp.txt:825)
static member ilReflectedDefinitionsCannotUseSliceOperator() = (994, GetStringFunc("ilReflectedDefinitionsCannotUseSliceOperator",",,,") )
/// Problem with codepage '%d': %s
- /// (Originally from ..\FSComp.txt:825)
+ /// (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:826)
+ /// (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:827)
+ /// (Originally from ..\FSComp.txt:828)
static member optsCopyrightCommunity() = (GetStringFunc("optsCopyrightCommunity",",,,") )
/// Name of the output file (Short form: -o)
- /// (Originally from ..\FSComp.txt:828)
+ /// (Originally from ..\FSComp.txt:829)
static member optsNameOfOutputFile() = (GetStringFunc("optsNameOfOutputFile",",,,") )
/// Build a console executable
- /// (Originally from ..\FSComp.txt:829)
+ /// (Originally from ..\FSComp.txt:830)
static member optsBuildConsole() = (GetStringFunc("optsBuildConsole",",,,") )
/// Build a Windows executable
- /// (Originally from ..\FSComp.txt:830)
+ /// (Originally from ..\FSComp.txt:831)
static member optsBuildWindows() = (GetStringFunc("optsBuildWindows",",,,") )
/// Build a library (Short form: -a)
- /// (Originally from ..\FSComp.txt:831)
+ /// (Originally from ..\FSComp.txt:832)
static member optsBuildLibrary() = (GetStringFunc("optsBuildLibrary",",,,") )
/// Build a module that can be added to another assembly
- /// (Originally from ..\FSComp.txt:832)
+ /// (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:833)
+ /// (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:834)
+ /// (Originally from ..\FSComp.txt:835)
static member optsPublicSign() = (GetStringFunc("optsPublicSign",",,,") )
/// Write the xmldoc of the assembly to the given file
- /// (Originally from ..\FSComp.txt:835)
+ /// (Originally from ..\FSComp.txt:836)
static member optsWriteXml() = (GetStringFunc("optsWriteXml",",,,") )
/// Specify a strong name key file
- /// (Originally from ..\FSComp.txt:836)
+ /// (Originally from ..\FSComp.txt:837)
static member optsStrongKeyFile() = (GetStringFunc("optsStrongKeyFile",",,,") )
/// Specify a strong name key container
- /// (Originally from ..\FSComp.txt:837)
+ /// (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:838)
+ /// (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:839)
+ /// (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:840)
+ /// (Originally from ..\FSComp.txt:841)
static member optsNoInterface() = (GetStringFunc("optsNoInterface",",,,") )
/// Print the inferred interface of the assembly to a file
- /// (Originally from ..\FSComp.txt:841)
+ /// (Originally from ..\FSComp.txt:842)
static member optsSig() = (GetStringFunc("optsSig",",,,") )
/// Reference an assembly (Short form: -r)
- /// (Originally from ..\FSComp.txt:842)
+ /// (Originally from ..\FSComp.txt:843)
static member optsReference() = (GetStringFunc("optsReference",",,,") )
/// Specify a Win32 resource file (.res)
- /// (Originally from ..\FSComp.txt:843)
+ /// (Originally from ..\FSComp.txt:844)
static member optsWin32res() = (GetStringFunc("optsWin32res",",,,") )
/// Specify a Win32 manifest file
- /// (Originally from ..\FSComp.txt:844)
+ /// (Originally from ..\FSComp.txt:845)
static member optsWin32manifest() = (GetStringFunc("optsWin32manifest",",,,") )
/// Do not include the default Win32 manifest
- /// (Originally from ..\FSComp.txt:845)
+ /// (Originally from ..\FSComp.txt:846)
static member optsNowin32manifest() = (GetStringFunc("optsNowin32manifest",",,,") )
/// Embed all source files in the portable PDB file
- /// (Originally from ..\FSComp.txt:846)
+ /// (Originally from ..\FSComp.txt:847)
static member optsEmbedAllSource() = (GetStringFunc("optsEmbedAllSource",",,,") )
/// Embed specific source files in the portable PDB file
- /// (Originally from ..\FSComp.txt:847)
+ /// (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:848)
+ /// (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:849)
+ /// (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:850)
+ /// (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:851)
+ /// (Originally from ..\FSComp.txt:852)
static member srcFileTooLarge() = (GetStringFunc("srcFileTooLarge",",,,") )
/// Embed the specified managed resource
- /// (Originally from ..\FSComp.txt:852)
+ /// (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:853)
+ /// (Originally from ..\FSComp.txt:854)
static member optsLinkresource() = (GetStringFunc("optsLinkresource",",,,") )
/// Emit debug information (Short form: -g)
- /// (Originally from ..\FSComp.txt:854)
+ /// (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:855)
+ /// (Originally from ..\FSComp.txt:856)
static member optsDebug(a0 : System.String) = (GetStringFunc("optsDebug",",,,%s,,,") a0)
/// Enable optimizations (Short form: -O)
- /// (Originally from ..\FSComp.txt:856)
+ /// (Originally from ..\FSComp.txt:857)
static member optsOptimize() = (GetStringFunc("optsOptimize",",,,") )
/// Enable or disable tailcalls
- /// (Originally from ..\FSComp.txt:857)
+ /// (Originally from ..\FSComp.txt:858)
static member optsTailcalls() = (GetStringFunc("optsTailcalls",",,,") )
/// Produce a deterministic assembly (including module version GUID and timestamp)
- /// (Originally from ..\FSComp.txt:858)
+ /// (Originally from ..\FSComp.txt:859)
static member optsDeterministic() = (GetStringFunc("optsDeterministic",",,,") )
/// Enable or disable cross-module optimizations
- /// (Originally from ..\FSComp.txt:859)
+ /// (Originally from ..\FSComp.txt:860)
static member optsCrossoptimize() = (GetStringFunc("optsCrossoptimize",",,,") )
/// Report all warnings as errors
- /// (Originally from ..\FSComp.txt:860)
+ /// (Originally from ..\FSComp.txt:861)
static member optsWarnaserrorPM() = (GetStringFunc("optsWarnaserrorPM",",,,") )
/// Report specific warnings as errors
- /// (Originally from ..\FSComp.txt:861)
+ /// (Originally from ..\FSComp.txt:862)
static member optsWarnaserror() = (GetStringFunc("optsWarnaserror",",,,") )
/// Set a warning level (0-5)
- /// (Originally from ..\FSComp.txt:862)
+ /// (Originally from ..\FSComp.txt:863)
static member optsWarn() = (GetStringFunc("optsWarn",",,,") )
/// Disable specific warning messages
- /// (Originally from ..\FSComp.txt:863)
+ /// (Originally from ..\FSComp.txt:864)
static member optsNowarn() = (GetStringFunc("optsNowarn",",,,") )
/// Enable specific warnings that may be off by default
- /// (Originally from ..\FSComp.txt:864)
+ /// (Originally from ..\FSComp.txt:865)
static member optsWarnOn() = (GetStringFunc("optsWarnOn",",,,") )
/// Generate overflow checks
- /// (Originally from ..\FSComp.txt:865)
+ /// (Originally from ..\FSComp.txt:866)
static member optsChecked() = (GetStringFunc("optsChecked",",,,") )
/// Define conditional compilation symbols (Short form: -d)
- /// (Originally from ..\FSComp.txt:866)
+ /// (Originally from ..\FSComp.txt:867)
static member optsDefine() = (GetStringFunc("optsDefine",",,,") )
/// Ignore ML compatibility warnings
- /// (Originally from ..\FSComp.txt:867)
+ /// (Originally from ..\FSComp.txt:868)
static member optsMlcompatibility() = (GetStringFunc("optsMlcompatibility",",,,") )
/// Suppress compiler copyright message
- /// (Originally from ..\FSComp.txt:868)
+ /// (Originally from ..\FSComp.txt:869)
static member optsNologo() = (GetStringFunc("optsNologo",",,,") )
/// Display this usage message (Short form: -?)
- /// (Originally from ..\FSComp.txt:869)
+ /// (Originally from ..\FSComp.txt:870)
static member optsHelp() = (GetStringFunc("optsHelp",",,,") )
/// Read response file for more options
- /// (Originally from ..\FSComp.txt:870)
+ /// (Originally from ..\FSComp.txt:871)
static member optsResponseFile() = (GetStringFunc("optsResponseFile",",,,") )
/// Specify the codepage used to read source files
- /// (Originally from ..\FSComp.txt:871)
+ /// (Originally from ..\FSComp.txt:872)
static member optsCodepage() = (GetStringFunc("optsCodepage",",,,") )
/// Output messages in UTF-8 encoding
- /// (Originally from ..\FSComp.txt:872)
+ /// (Originally from ..\FSComp.txt:873)
static member optsUtf8output() = (GetStringFunc("optsUtf8output",",,,") )
/// Output messages with fully qualified paths
- /// (Originally from ..\FSComp.txt:873)
+ /// (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:874)
+ /// (Originally from ..\FSComp.txt:875)
static member optsLib() = (GetStringFunc("optsLib",",,,") )
/// Base address for the library to be built
- /// (Originally from ..\FSComp.txt:875)
+ /// (Originally from ..\FSComp.txt:876)
static member optsBaseaddress() = (GetStringFunc("optsBaseaddress",",,,") )
/// Do not reference the default CLI assemblies by default
- /// (Originally from ..\FSComp.txt:876)
+ /// (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:877)
+ /// (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:878)
+ /// (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:879)
+ /// (Originally from ..\FSComp.txt:880)
static member optsResident() = (GetStringFunc("optsResident",",,,") )
/// Name the output debug file
- /// (Originally from ..\FSComp.txt:880)
+ /// (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:881)
+ /// (Originally from ..\FSComp.txt:882)
static member optsSimpleresolution() = (GetStringFunc("optsSimpleresolution",",,,") )
/// Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'
- /// (Originally from ..\FSComp.txt:882)
+ /// (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:883)
+ /// (Originally from ..\FSComp.txt:884)
static member optsUnrecognizedDebugType(a0 : System.String) = (1049, GetStringFunc("optsUnrecognizedDebugType",",,,%s,,,") a0)
/// Invalid warning level '%d'
- /// (Originally from ..\FSComp.txt:884)
+ /// (Originally from ..\FSComp.txt:885)
static member optsInvalidWarningLevel(a0 : System.Int32) = (1050, GetStringFunc("optsInvalidWarningLevel",",,,%d,,,") a0)
/// Short form of '%s'
- /// (Originally from ..\FSComp.txt:885)
+ /// (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:886)
+ /// (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:887)
+ /// (Originally from ..\FSComp.txt:888)
static member optsClirootDescription() = (GetStringFunc("optsClirootDescription",",,,") )
/// - OUTPUT FILES -
- /// (Originally from ..\FSComp.txt:888)
+ /// (Originally from ..\FSComp.txt:889)
static member optsHelpBannerOutputFiles() = (GetStringFunc("optsHelpBannerOutputFiles",",,,") )
/// - INPUT FILES -
- /// (Originally from ..\FSComp.txt:889)
+ /// (Originally from ..\FSComp.txt:890)
static member optsHelpBannerInputFiles() = (GetStringFunc("optsHelpBannerInputFiles",",,,") )
/// - RESOURCES -
- /// (Originally from ..\FSComp.txt:890)
+ /// (Originally from ..\FSComp.txt:891)
static member optsHelpBannerResources() = (GetStringFunc("optsHelpBannerResources",",,,") )
/// - CODE GENERATION -
- /// (Originally from ..\FSComp.txt:891)
+ /// (Originally from ..\FSComp.txt:892)
static member optsHelpBannerCodeGen() = (GetStringFunc("optsHelpBannerCodeGen",",,,") )
/// - ADVANCED -
- /// (Originally from ..\FSComp.txt:892)
+ /// (Originally from ..\FSComp.txt:893)
static member optsHelpBannerAdvanced() = (GetStringFunc("optsHelpBannerAdvanced",",,,") )
/// - MISCELLANEOUS -
- /// (Originally from ..\FSComp.txt:893)
+ /// (Originally from ..\FSComp.txt:894)
static member optsHelpBannerMisc() = (GetStringFunc("optsHelpBannerMisc",",,,") )
/// - LANGUAGE -
- /// (Originally from ..\FSComp.txt:894)
+ /// (Originally from ..\FSComp.txt:895)
static member optsHelpBannerLanguage() = (GetStringFunc("optsHelpBannerLanguage",",,,") )
/// - ERRORS AND WARNINGS -
- /// (Originally from ..\FSComp.txt:895)
+ /// (Originally from ..\FSComp.txt:896)
static member optsHelpBannerErrsAndWarns() = (GetStringFunc("optsHelpBannerErrsAndWarns",",,,") )
/// Unknown --test argument: '%s'
- /// (Originally from ..\FSComp.txt:896)
+ /// (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:897)
+ /// (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:898)
+ /// (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:899)
+ /// (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:900)
+ /// (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:901)
+ /// (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:902)
+ /// (Originally from ..\FSComp.txt:903)
static member optsConsoleColors() = (GetStringFunc("optsConsoleColors",",,,") )
/// Enable high-entropy ASLR
- /// (Originally from ..\FSComp.txt:903)
+ /// (Originally from ..\FSComp.txt:904)
static member optsUseHighEntropyVA() = (GetStringFunc("optsUseHighEntropyVA",",,,") )
/// Specify subsystem version of this assembly
- /// (Originally from ..\FSComp.txt:904)
+ /// (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:905)
+ /// (Originally from ..\FSComp.txt:906)
static member optsTargetProfile() = (GetStringFunc("optsTargetProfile",",,,") )
/// Emit debug information in quotations
- /// (Originally from ..\FSComp.txt:906)
+ /// (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:907)
+ /// (Originally from ..\FSComp.txt:908)
static member optsPreferredUiLang() = (GetStringFunc("optsPreferredUiLang",",,,") )
/// Don't copy FSharp.Core.dll along the produced binaries
- /// (Originally from ..\FSComp.txt:908)
+ /// (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:909)
+ /// (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:910)
+ /// (Originally from ..\FSComp.txt:911)
static member optsInvalidTargetProfile(a0 : System.String) = (1052, GetStringFunc("optsInvalidTargetProfile",",,,%s,,,") a0)
/// Full name
- /// (Originally from ..\FSComp.txt:911)
+ /// (Originally from ..\FSComp.txt:912)
static member typeInfoFullName() = (GetStringFunc("typeInfoFullName",",,,") )
/// and %d other overloads
- /// (Originally from ..\FSComp.txt:915)
+ /// (Originally from ..\FSComp.txt:916)
static member typeInfoOtherOverloads(a0 : System.Int32) = (GetStringFunc("typeInfoOtherOverloads",",,,%d,,,") a0)
/// union case
- /// (Originally from ..\FSComp.txt:916)
+ /// (Originally from ..\FSComp.txt:917)
static member typeInfoUnionCase() = (GetStringFunc("typeInfoUnionCase",",,,") )
/// active pattern result
- /// (Originally from ..\FSComp.txt:917)
+ /// (Originally from ..\FSComp.txt:918)
static member typeInfoActivePatternResult() = (GetStringFunc("typeInfoActivePatternResult",",,,") )
/// active recognizer
- /// (Originally from ..\FSComp.txt:918)
+ /// (Originally from ..\FSComp.txt:919)
static member typeInfoActiveRecognizer() = (GetStringFunc("typeInfoActiveRecognizer",",,,") )
/// field
- /// (Originally from ..\FSComp.txt:919)
+ /// (Originally from ..\FSComp.txt:920)
static member typeInfoField() = (GetStringFunc("typeInfoField",",,,") )
/// event
- /// (Originally from ..\FSComp.txt:920)
+ /// (Originally from ..\FSComp.txt:921)
static member typeInfoEvent() = (GetStringFunc("typeInfoEvent",",,,") )
/// property
- /// (Originally from ..\FSComp.txt:921)
+ /// (Originally from ..\FSComp.txt:922)
static member typeInfoProperty() = (GetStringFunc("typeInfoProperty",",,,") )
/// extension
- /// (Originally from ..\FSComp.txt:922)
+ /// (Originally from ..\FSComp.txt:923)
static member typeInfoExtension() = (GetStringFunc("typeInfoExtension",",,,") )
/// custom operation
- /// (Originally from ..\FSComp.txt:923)
+ /// (Originally from ..\FSComp.txt:924)
static member typeInfoCustomOperation() = (GetStringFunc("typeInfoCustomOperation",",,,") )
/// argument
- /// (Originally from ..\FSComp.txt:924)
+ /// (Originally from ..\FSComp.txt:925)
static member typeInfoArgument() = (GetStringFunc("typeInfoArgument",",,,") )
+ /// anonymous record field
+ /// (Originally from ..\FSComp.txt:926)
+ static member typeInfoAnonRecdField() = (GetStringFunc("typeInfoAnonRecdField",",,,") )
/// patvar
- /// (Originally from ..\FSComp.txt:925)
+ /// (Originally from ..\FSComp.txt:927)
static member typeInfoPatternVariable() = (GetStringFunc("typeInfoPatternVariable",",,,") )
/// namespace
- /// (Originally from ..\FSComp.txt:926)
+ /// (Originally from ..\FSComp.txt:928)
static member typeInfoNamespace() = (GetStringFunc("typeInfoNamespace",",,,") )
/// module
- /// (Originally from ..\FSComp.txt:927)
+ /// (Originally from ..\FSComp.txt:929)
static member typeInfoModule() = (GetStringFunc("typeInfoModule",",,,") )
/// namespace/module
- /// (Originally from ..\FSComp.txt:928)
+ /// (Originally from ..\FSComp.txt:930)
static member typeInfoNamespaceOrModule() = (GetStringFunc("typeInfoNamespaceOrModule",",,,") )
/// from %s
- /// (Originally from ..\FSComp.txt:929)
+ /// (Originally from ..\FSComp.txt:931)
static member typeInfoFromFirst(a0 : System.String) = (GetStringFunc("typeInfoFromFirst",",,,%s,,,") a0)
/// also from %s
- /// (Originally from ..\FSComp.txt:930)
+ /// (Originally from ..\FSComp.txt:932)
static member typeInfoFromNext(a0 : System.String) = (GetStringFunc("typeInfoFromNext",",,,%s,,,") a0)
/// generated property
- /// (Originally from ..\FSComp.txt:931)
+ /// (Originally from ..\FSComp.txt:933)
static member typeInfoGeneratedProperty() = (GetStringFunc("typeInfoGeneratedProperty",",,,") )
/// generated type
- /// (Originally from ..\FSComp.txt:932)
+ /// (Originally from ..\FSComp.txt:934)
static member typeInfoGeneratedType() = (GetStringFunc("typeInfoGeneratedType",",,,") )
/// Found by AssemblyFolders registry key
- /// (Originally from ..\FSComp.txt:933)
+ /// (Originally from ..\FSComp.txt:935)
static member assemblyResolutionFoundByAssemblyFoldersKey() = (GetStringFunc("assemblyResolutionFoundByAssemblyFoldersKey",",,,") )
/// Found by AssemblyFoldersEx registry key
- /// (Originally from ..\FSComp.txt:934)
+ /// (Originally from ..\FSComp.txt:936)
static member assemblyResolutionFoundByAssemblyFoldersExKey() = (GetStringFunc("assemblyResolutionFoundByAssemblyFoldersExKey",",,,") )
/// .NET Framework
- /// (Originally from ..\FSComp.txt:935)
+ /// (Originally from ..\FSComp.txt:937)
static member assemblyResolutionNetFramework() = (GetStringFunc("assemblyResolutionNetFramework",",,,") )
/// Global Assembly Cache
- /// (Originally from ..\FSComp.txt:936)
+ /// (Originally from ..\FSComp.txt:938)
static member assemblyResolutionGAC() = (GetStringFunc("assemblyResolutionGAC",",,,") )
/// Recursive class hierarchy in type '%s'
- /// (Originally from ..\FSComp.txt:937)
+ /// (Originally from ..\FSComp.txt:939)
static member recursiveClassHierarchy(a0 : System.String) = (1089, GetStringFunc("recursiveClassHierarchy",",,,%s,,,") a0)
/// Invalid recursive reference to an abstract slot
- /// (Originally from ..\FSComp.txt:938)
+ /// (Originally from ..\FSComp.txt:940)
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:939)
+ /// (Originally from ..\FSComp.txt:941)
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:940)
+ /// (Originally from ..\FSComp.txt:942)
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:941)
+ /// (Originally from ..\FSComp.txt:943)
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:942)
+ /// (Originally from ..\FSComp.txt:944)
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:943)
+ /// (Originally from ..\FSComp.txt:945)
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:944)
+ /// (Originally from ..\FSComp.txt:946)
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:945)
+ /// (Originally from ..\FSComp.txt:947)
static member structOrClassFieldIsNotAccessible(a0 : System.String) = (1097, GetStringFunc("structOrClassFieldIsNotAccessible",",,,%s,,,") a0)
/// This construct is experimental
- /// (Originally from ..\FSComp.txt:946)
+ /// (Originally from ..\FSComp.txt:948)
static member experimentalConstruct() = (GetStringFunc("experimentalConstruct",",,,") )
/// No Invoke methods found for delegate type
- /// (Originally from ..\FSComp.txt:947)
+ /// (Originally from ..\FSComp.txt:949)
static member noInvokeMethodsFound() = (1099, GetStringFunc("noInvokeMethodsFound",",,,") )
/// More than one Invoke method found for delegate type
- /// (Originally from ..\FSComp.txt:948)
+ /// (Originally from ..\FSComp.txt:950)
static member moreThanOneInvokeMethodFound() = (GetStringFunc("moreThanOneInvokeMethodFound",",,,") )
/// Delegates are not allowed to have curried signatures
- /// (Originally from ..\FSComp.txt:949)
+ /// (Originally from ..\FSComp.txt:951)
static member delegatesNotAllowedToHaveCurriedSignatures() = (1101, GetStringFunc("delegatesNotAllowedToHaveCurriedSignatures",",,,") )
/// Unexpected Expr.TyChoose
- /// (Originally from ..\FSComp.txt:950)
+ /// (Originally from ..\FSComp.txt:952)
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:951)
+ /// (Originally from ..\FSComp.txt:953)
static member tlrLambdaLiftingOptimizationsNotApplied() = (1103, GetStringFunc("tlrLambdaLiftingOptimizationsNotApplied",",,,") )
/// Identifiers containing '@' are reserved for use in F# code generation
- /// (Originally from ..\FSComp.txt:952)
+ /// (Originally from ..\FSComp.txt:954)
static member lexhlpIdentifiersContainingAtSymbolReserved() = (1104, GetStringFunc("lexhlpIdentifiersContainingAtSymbolReserved",",,,") )
/// The identifier '%s' is reserved for future use by F#
- /// (Originally from ..\FSComp.txt:953)
+ /// (Originally from ..\FSComp.txt:955)
static member lexhlpIdentifierReserved(a0 : System.String) = (GetStringFunc("lexhlpIdentifierReserved",",,,%s,,,") a0)
/// Missing variable '%s'
- /// (Originally from ..\FSComp.txt:954)
+ /// (Originally from ..\FSComp.txt:956)
static member patcMissingVariable(a0 : System.String) = (1106, GetStringFunc("patcMissingVariable",",,,%s,,,") a0)
/// Partial active patterns may only generate one result
- /// (Originally from ..\FSComp.txt:955)
+ /// (Originally from ..\FSComp.txt:957)
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:956)
+ /// (Originally from ..\FSComp.txt:958)
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:957)
+ /// (Originally from ..\FSComp.txt:959)
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:958)
+ /// (Originally from ..\FSComp.txt:960)
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:959)
+ /// (Originally from ..\FSComp.txt:961)
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:960)
+ /// (Originally from ..\FSComp.txt:962)
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:961)
+ /// (Originally from ..\FSComp.txt:963)
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:962)
+ /// (Originally from ..\FSComp.txt:964)
static member optValueMarkedInlineButWasNotBoundInTheOptEnv(a0 : System.String) = (1114, GetStringFunc("optValueMarkedInlineButWasNotBoundInTheOptEnv",",,,%s,,,") a0)
/// Local value %s not found during optimization
- /// (Originally from ..\FSComp.txt:963)
+ /// (Originally from ..\FSComp.txt:965)
static member optLocalValueNotFoundDuringOptimization(a0 : System.String) = (1115, GetStringFunc("optLocalValueNotFoundDuringOptimization",",,,%s,,,") a0)
/// A value marked as 'inline' has an unexpected value
- /// (Originally from ..\FSComp.txt:964)
+ /// (Originally from ..\FSComp.txt:966)
static member optValueMarkedInlineHasUnexpectedValue() = (1116, GetStringFunc("optValueMarkedInlineHasUnexpectedValue",",,,") )
/// A value marked as 'inline' could not be inlined
- /// (Originally from ..\FSComp.txt:965)
+ /// (Originally from ..\FSComp.txt:967)
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:966)
+ /// (Originally from ..\FSComp.txt:968)
static member optFailedToInlineValue(a0 : System.String) = (1118, GetStringFunc("optFailedToInlineValue",",,,%s,,,") a0)
/// Recursive ValValue %s
- /// (Originally from ..\FSComp.txt:967)
+ /// (Originally from ..\FSComp.txt:969)
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:968)
+ /// (Originally from ..\FSComp.txt:970)
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:969)
+ /// (Originally from ..\FSComp.txt:971)
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:970)
+ /// (Originally from ..\FSComp.txt:972)
static member lexfltSeparatorTokensOfPatternMatchMisaligned() = (GetStringFunc("lexfltSeparatorTokensOfPatternMatchMisaligned",",,,") )
/// Invalid module/expression/type
- /// (Originally from ..\FSComp.txt:971)
+ /// (Originally from ..\FSComp.txt:973)
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:972)
+ /// (Originally from ..\FSComp.txt:974)
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:973)
+ /// (Originally from ..\FSComp.txt:975)
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:974)
+ /// (Originally from ..\FSComp.txt:976)
static member nrGlobalUsedOnlyAsFirstName() = (1126, GetStringFunc("nrGlobalUsedOnlyAsFirstName",",,,") )
/// This is not a constructor or literal, or a constructor is being used incorrectly
- /// (Originally from ..\FSComp.txt:975)
+ /// (Originally from ..\FSComp.txt:977)
static member nrIsNotConstructorOrLiteral() = (1127, GetStringFunc("nrIsNotConstructorOrLiteral",",,,") )
/// Unexpected empty long identifier
- /// (Originally from ..\FSComp.txt:976)
+ /// (Originally from ..\FSComp.txt:978)
static member nrUnexpectedEmptyLongId() = (1128, GetStringFunc("nrUnexpectedEmptyLongId",",,,") )
/// The record type '%s' does not contain a label '%s'.
- /// (Originally from ..\FSComp.txt:977)
+ /// (Originally from ..\FSComp.txt:979)
static member nrRecordDoesNotContainSuchLabel(a0 : System.String, a1 : System.String) = (1129, GetStringFunc("nrRecordDoesNotContainSuchLabel",",,,%s,,,%s,,,") a0 a1)
/// Invalid field label
- /// (Originally from ..\FSComp.txt:978)
+ /// (Originally from ..\FSComp.txt:980)
static member nrInvalidFieldLabel() = (1130, GetStringFunc("nrInvalidFieldLabel",",,,") )
/// Invalid expression '%s'
- /// (Originally from ..\FSComp.txt:979)
+ /// (Originally from ..\FSComp.txt:981)
static member nrInvalidExpression(a0 : System.String) = (1132, GetStringFunc("nrInvalidExpression",",,,%s,,,") a0)
/// No constructors are available for the type '%s'
- /// (Originally from ..\FSComp.txt:980)
+ /// (Originally from ..\FSComp.txt:982)
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:981)
+ /// (Originally from ..\FSComp.txt:983)
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:982)
+ /// (Originally from ..\FSComp.txt:984)
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:983)
+ /// (Originally from ..\FSComp.txt:985)
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:984)
+ /// (Originally from ..\FSComp.txt:986)
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:988)
+ /// (Originally from ..\FSComp.txt:990)
static member lexCharNotAllowedInOperatorNames(a0 : System.String) = (GetStringFunc("lexCharNotAllowedInOperatorNames",",,,%s,,,") a0)
/// Unexpected character '%s'
- /// (Originally from ..\FSComp.txt:989)
+ /// (Originally from ..\FSComp.txt:991)
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:990)
+ /// (Originally from ..\FSComp.txt:992)
static member lexByteArrayCannotEncode() = (1140, GetStringFunc("lexByteArrayCannotEncode",",,,") )
/// Identifiers followed by '%s' are reserved for future use
- /// (Originally from ..\FSComp.txt:991)
+ /// (Originally from ..\FSComp.txt:993)
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:992)
+ /// (Originally from ..\FSComp.txt:994)
static member lexOutsideEightBitSigned() = (1142, GetStringFunc("lexOutsideEightBitSigned",",,,") )
/// This number is outside the allowable range for hexadecimal 8-bit signed integers
- /// (Originally from ..\FSComp.txt:993)
+ /// (Originally from ..\FSComp.txt:995)
static member lexOutsideEightBitSignedHex() = (1143, GetStringFunc("lexOutsideEightBitSignedHex",",,,") )
/// This number is outside the allowable range for 8-bit unsigned integers
- /// (Originally from ..\FSComp.txt:994)
+ /// (Originally from ..\FSComp.txt:996)
static member lexOutsideEightBitUnsigned() = (1144, GetStringFunc("lexOutsideEightBitUnsigned",",,,") )
/// This number is outside the allowable range for 16-bit signed integers
- /// (Originally from ..\FSComp.txt:995)
+ /// (Originally from ..\FSComp.txt:997)
static member lexOutsideSixteenBitSigned() = (1145, GetStringFunc("lexOutsideSixteenBitSigned",",,,") )
/// This number is outside the allowable range for 16-bit unsigned integers
- /// (Originally from ..\FSComp.txt:996)
+ /// (Originally from ..\FSComp.txt:998)
static member lexOutsideSixteenBitUnsigned() = (1146, GetStringFunc("lexOutsideSixteenBitUnsigned",",,,") )
/// This number is outside the allowable range for 32-bit signed integers
- /// (Originally from ..\FSComp.txt:997)
+ /// (Originally from ..\FSComp.txt:999)
static member lexOutsideThirtyTwoBitSigned() = (1147, GetStringFunc("lexOutsideThirtyTwoBitSigned",",,,") )
/// This number is outside the allowable range for 32-bit unsigned integers
- /// (Originally from ..\FSComp.txt:998)
+ /// (Originally from ..\FSComp.txt:1000)
static member lexOutsideThirtyTwoBitUnsigned() = (1148, GetStringFunc("lexOutsideThirtyTwoBitUnsigned",",,,") )
/// This number is outside the allowable range for 64-bit signed integers
- /// (Originally from ..\FSComp.txt:999)
+ /// (Originally from ..\FSComp.txt:1001)
static member lexOutsideSixtyFourBitSigned() = (1149, GetStringFunc("lexOutsideSixtyFourBitSigned",",,,") )
/// This number is outside the allowable range for 64-bit unsigned integers
- /// (Originally from ..\FSComp.txt:1000)
+ /// (Originally from ..\FSComp.txt:1002)
static member lexOutsideSixtyFourBitUnsigned() = (1150, GetStringFunc("lexOutsideSixtyFourBitUnsigned",",,,") )
/// This number is outside the allowable range for signed native integers
- /// (Originally from ..\FSComp.txt:1001)
+ /// (Originally from ..\FSComp.txt:1003)
static member lexOutsideNativeSigned() = (1151, GetStringFunc("lexOutsideNativeSigned",",,,") )
/// This number is outside the allowable range for unsigned native integers
- /// (Originally from ..\FSComp.txt:1002)
+ /// (Originally from ..\FSComp.txt:1004)
static member lexOutsideNativeUnsigned() = (1152, GetStringFunc("lexOutsideNativeUnsigned",",,,") )
/// Invalid floating point number
- /// (Originally from ..\FSComp.txt:1003)
+ /// (Originally from ..\FSComp.txt:1005)
static member lexInvalidFloat() = (1153, GetStringFunc("lexInvalidFloat",",,,") )
/// This number is outside the allowable range for decimal literals
- /// (Originally from ..\FSComp.txt:1004)
+ /// (Originally from ..\FSComp.txt:1006)
static member lexOusideDecimal() = (1154, GetStringFunc("lexOusideDecimal",",,,") )
/// This number is outside the allowable range for 32-bit floats
- /// (Originally from ..\FSComp.txt:1005)
+ /// (Originally from ..\FSComp.txt:1007)
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:1006)
+ /// (Originally from ..\FSComp.txt:1008)
static member lexInvalidNumericLiteral() = (1156, GetStringFunc("lexInvalidNumericLiteral",",,,") )
/// This is not a valid byte literal
- /// (Originally from ..\FSComp.txt:1007)
+ /// (Originally from ..\FSComp.txt:1009)
static member lexInvalidByteLiteral() = (1157, GetStringFunc("lexInvalidByteLiteral",",,,") )
/// This is not a valid character literal
- /// (Originally from ..\FSComp.txt:1008)
+ /// (Originally from ..\FSComp.txt:1010)
static member lexInvalidCharLiteral() = (1158, GetStringFunc("lexInvalidCharLiteral",",,,") )
/// This Unicode encoding is only valid in string literals
- /// (Originally from ..\FSComp.txt:1009)
+ /// (Originally from ..\FSComp.txt:1011)
static member lexThisUnicodeOnlyInStringLiterals() = (1159, GetStringFunc("lexThisUnicodeOnlyInStringLiterals",",,,") )
/// This token is reserved for future use
- /// (Originally from ..\FSComp.txt:1010)
+ /// (Originally from ..\FSComp.txt:1012)
static member lexTokenReserved() = (1160, GetStringFunc("lexTokenReserved",",,,") )
/// TABs are not allowed in F# code unless the #indent \"off\" option is used
- /// (Originally from ..\FSComp.txt:1011)
+ /// (Originally from ..\FSComp.txt:1013)
static member lexTabsNotAllowed() = (1161, GetStringFunc("lexTabsNotAllowed",",,,") )
/// Invalid line number: '%s'
- /// (Originally from ..\FSComp.txt:1012)
+ /// (Originally from ..\FSComp.txt:1014)
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:1013)
+ /// (Originally from ..\FSComp.txt:1015)
static member lexHashIfMustBeFirst() = (1163, GetStringFunc("lexHashIfMustBeFirst",",,,") )
/// #else has no matching #if
- /// (Originally from ..\FSComp.txt:1014)
+ /// (Originally from ..\FSComp.txt:1016)
static member lexHashElseNoMatchingIf() = (GetStringFunc("lexHashElseNoMatchingIf",",,,") )
/// #endif required for #else
- /// (Originally from ..\FSComp.txt:1015)
+ /// (Originally from ..\FSComp.txt:1017)
static member lexHashEndifRequiredForElse() = (GetStringFunc("lexHashEndifRequiredForElse",",,,") )
/// #else directive must appear as the first non-whitespace character on a line
- /// (Originally from ..\FSComp.txt:1016)
+ /// (Originally from ..\FSComp.txt:1018)
static member lexHashElseMustBeFirst() = (1166, GetStringFunc("lexHashElseMustBeFirst",",,,") )
/// #endif has no matching #if
- /// (Originally from ..\FSComp.txt:1017)
+ /// (Originally from ..\FSComp.txt:1019)
static member lexHashEndingNoMatchingIf() = (GetStringFunc("lexHashEndingNoMatchingIf",",,,") )
/// #endif directive must appear as the first non-whitespace character on a line
- /// (Originally from ..\FSComp.txt:1018)
+ /// (Originally from ..\FSComp.txt:1020)
static member lexHashEndifMustBeFirst() = (1168, GetStringFunc("lexHashEndifMustBeFirst",",,,") )
/// #if directive should be immediately followed by an identifier
- /// (Originally from ..\FSComp.txt:1019)
+ /// (Originally from ..\FSComp.txt:1021)
static member lexHashIfMustHaveIdent() = (1169, GetStringFunc("lexHashIfMustHaveIdent",",,,") )
/// Syntax error. Wrong nested #endif, unexpected tokens before it.
- /// (Originally from ..\FSComp.txt:1020)
+ /// (Originally from ..\FSComp.txt:1022)
static member lexWrongNestedHashEndif() = (1170, GetStringFunc("lexWrongNestedHashEndif",",,,") )
/// #! may only appear as the first line at the start of a file.
- /// (Originally from ..\FSComp.txt:1021)
+ /// (Originally from ..\FSComp.txt:1023)
static member lexHashBangMustBeFirstInFile() = (GetStringFunc("lexHashBangMustBeFirstInFile",",,,") )
/// Expected single line comment or end of line
- /// (Originally from ..\FSComp.txt:1022)
+ /// (Originally from ..\FSComp.txt:1024)
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:1023)
+ /// (Originally from ..\FSComp.txt:1025)
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:1024)
+ /// (Originally from ..\FSComp.txt:1026)
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:1025)
+ /// (Originally from ..\FSComp.txt:1027)
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:1026)
+ /// (Originally from ..\FSComp.txt:1028)
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:1027)
+ /// (Originally from ..\FSComp.txt:1029)
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:1028)
+ /// (Originally from ..\FSComp.txt:1030)
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:1029)
+ /// (Originally from ..\FSComp.txt:1031)
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:1030)
+ /// (Originally from ..\FSComp.txt:1032)
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:1031)
+ /// (Originally from ..\FSComp.txt:1033)
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:1032)
+ /// (Originally from ..\FSComp.txt:1034)
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:1033)
+ /// (Originally from ..\FSComp.txt:1035)
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:1034)
+ /// (Originally from ..\FSComp.txt:1036)
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:1035)
+ /// (Originally from ..\FSComp.txt:1037)
static member tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly() = (1181, GetStringFunc("tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly",",,,") )
/// The value '%s' is unused
- /// (Originally from ..\FSComp.txt:1036)
+ /// (Originally from ..\FSComp.txt:1038)
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:1037)
+ /// (Originally from ..\FSComp.txt:1039)
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:1038)
+ /// (Originally from ..\FSComp.txt:1040)
static member parsGetterAtMostOneArgument() = (1184, GetStringFunc("parsGetterAtMostOneArgument",",,,") )
/// A setter property may have at most two argument groups
- /// (Originally from ..\FSComp.txt:1039)
+ /// (Originally from ..\FSComp.txt:1041)
static member parsSetterAtMostTwoArguments() = (1185, GetStringFunc("parsSetterAtMostTwoArguments",",,,") )
/// Invalid property getter or setter
- /// (Originally from ..\FSComp.txt:1040)
+ /// (Originally from ..\FSComp.txt:1042)
static member parsInvalidProperty() = (1186, GetStringFunc("parsInvalidProperty",",,,") )
/// An indexer property must be given at least one argument
- /// (Originally from ..\FSComp.txt:1041)
+ /// (Originally from ..\FSComp.txt:1043)
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:1042)
+ /// (Originally from ..\FSComp.txt:1044)
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:1043)
+ /// Remove spaces between the type name and type parameter, e.g. \"type C<'T>\", not type \"C <'T>\". Type parameters must be placed directly adjacent to the type name.
+ /// (Originally from ..\FSComp.txt:1045)
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:1044)
+ /// Remove spaces between the type name and type parameter, e.g. \"C<'T>\", not \"C <'T>\". Type parameters must be placed directly adjacent to the type name.
+ /// (Originally from ..\FSComp.txt:1046)
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:1045)
+ /// (Originally from ..\FSComp.txt:1047)
static member parsNonAtomicType() = (GetStringFunc("parsNonAtomicType",",,,") )
/// The module/namespace '%s' from compilation unit '%s' did not contain the module/namespace '%s'
- /// (Originally from ..\FSComp.txt:1048)
+ /// (Originally from ..\FSComp.txt:1050)
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:1049)
+ /// (Originally from ..\FSComp.txt:1051)
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:1050)
+ /// (Originally from ..\FSComp.txt:1052)
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:1051)
+ /// (Originally from ..\FSComp.txt:1053)
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:1052)
+ /// (Originally from ..\FSComp.txt:1054)
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:1053)
+ /// (Originally from ..\FSComp.txt:1055)
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:1054)
+ /// (Originally from ..\FSComp.txt:1056)
static member tcAttribArgsDiffer(a0 : System.String) = (1200, GetStringFunc("tcAttribArgsDiffer",",,,%s,,,") a0)
/// Cannot call an abstract base member: '%s'
- /// (Originally from ..\FSComp.txt:1055)
+ /// (Originally from ..\FSComp.txt:1057)
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:1056)
+ /// (Originally from ..\FSComp.txt:1058)
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:1059)
+ /// (Originally from ..\FSComp.txt:1061)
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:1061)
+ /// (Originally from ..\FSComp.txt:1063)
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:1062)
+ /// (Originally from ..\FSComp.txt:1064)
static member tcInterfacesShouldUseInheritNotInterface() = (1207, GetStringFunc("tcInterfacesShouldUseInheritNotInterface",",,,") )
/// Invalid prefix operator
- /// (Originally from ..\FSComp.txt:1063)
+ /// (Originally from ..\FSComp.txt:1065)
static member parsInvalidPrefixOperator() = (1208, GetStringFunc("parsInvalidPrefixOperator",",,,") )
/// Invalid operator definition. Prefix operator definitions must use a valid prefix operator name.
- /// (Originally from ..\FSComp.txt:1064)
+ /// (Originally from ..\FSComp.txt:1066)
static member parsInvalidPrefixOperatorDefinition() = (1208, GetStringFunc("parsInvalidPrefixOperatorDefinition",",,,") )
/// The file extensions '.ml' and '.mli' are for ML compatibility
- /// (Originally from ..\FSComp.txt:1065)
+ /// (Originally from ..\FSComp.txt:1067)
static member buildCompilingExtensionIsForML() = (GetStringFunc("buildCompilingExtensionIsForML",",,,") )
/// Consider using a file with extension '.ml' or '.mli' instead
- /// (Originally from ..\FSComp.txt:1066)
+ /// (Originally from ..\FSComp.txt:1068)
static member lexIndentOffForML() = (GetStringFunc("lexIndentOffForML",",,,") )
/// Active pattern '%s' is not a function
- /// (Originally from ..\FSComp.txt:1067)
+ /// (Originally from ..\FSComp.txt:1069)
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:1068)
+ /// (Originally from ..\FSComp.txt:1070)
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:1069)
+ /// (Originally from ..\FSComp.txt:1071)
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:1070)
+ /// (Originally from ..\FSComp.txt:1072)
static member tcOptionalArgsMustComeAfterNonOptionalArgs() = (1212, GetStringFunc("tcOptionalArgsMustComeAfterNonOptionalArgs",",,,") )
/// Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on methods or attribute classes
- /// (Originally from ..\FSComp.txt:1071)
+ /// (Originally from ..\FSComp.txt:1073)
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:1073)
+ /// (Originally from ..\FSComp.txt:1075)
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:1074)
+ /// (Originally from ..\FSComp.txt:1076)
static member ilwriteMDBFileNameCannotBeChangedWarning() = (1216, GetStringFunc("ilwriteMDBFileNameCannotBeChangedWarning",",,,") )
/// MDB generation failed. Could not find compatible member %s
- /// (Originally from ..\FSComp.txt:1075)
+ /// (Originally from ..\FSComp.txt:1077)
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:1076)
+ /// (Originally from ..\FSComp.txt:1078)
static member ilwriteErrorCreatingMdb() = (1218, GetStringFunc("ilwriteErrorCreatingMdb",",,,") )
/// The union case named '%s' conflicts with the generated type '%s'
- /// (Originally from ..\FSComp.txt:1077)
+ /// (Originally from ..\FSComp.txt:1079)
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:1078)
+ /// (Originally from ..\FSComp.txt:1080)
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:1079)
+ /// (Originally from ..\FSComp.txt:1081)
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:1080)
+ /// (Originally from ..\FSComp.txt:1082)
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:1081)
+ /// (Originally from ..\FSComp.txt:1083)
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:1082)
+ /// (Originally from ..\FSComp.txt:1084)
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:1083)
+ /// (Originally from ..\FSComp.txt:1085)
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:1084)
+ /// (Originally from ..\FSComp.txt:1086)
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:1085)
+ /// (Originally from ..\FSComp.txt:1087)
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:1086)
+ /// (Originally from ..\FSComp.txt:1088)
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:1087)
+ /// (Originally from ..\FSComp.txt:1089)
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:1088)
+ /// (Originally from ..\FSComp.txt:1090)
static member parsEofInTripleQuoteStringInComment() = (1233, GetStringFunc("parsEofInTripleQuoteStringInComment",",,,") )
/// This type test or downcast will ignore the unit-of-measure '%s'
- /// (Originally from ..\FSComp.txt:1089)
+ /// (Originally from ..\FSComp.txt:1091)
static member tcTypeTestLosesMeasures(a0 : System.String) = (1240, GetStringFunc("tcTypeTestLosesMeasures",",,,%s,,,") a0)
/// Expected type argument or static argument
- /// (Originally from ..\FSComp.txt:1090)
+ /// (Originally from ..\FSComp.txt:1092)
static member parsMissingTypeArgs() = (1241, GetStringFunc("parsMissingTypeArgs",",,,") )
/// Unmatched '<'. Expected closing '>'
- /// (Originally from ..\FSComp.txt:1091)
+ /// (Originally from ..\FSComp.txt:1093)
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:1092)
+ /// (Originally from ..\FSComp.txt:1094)
static member parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString() = (1243, GetStringFunc("parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString",",,,") )
/// Attempted to parse this as an operator name, but failed
- /// (Originally from ..\FSComp.txt:1093)
+ /// (Originally from ..\FSComp.txt:1095)
static member parsErrorParsingAsOperatorName() = (1244, GetStringFunc("parsErrorParsingAsOperatorName",",,,") )
/// \U%s is not a valid Unicode character escape sequence
- /// (Originally from ..\FSComp.txt:1094)
+ /// (Originally from ..\FSComp.txt:1096)
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:1095)
+ /// (Originally from ..\FSComp.txt:1097)
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:1096)
+ /// (Originally from ..\FSComp.txt:1098)
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:1098)
+ /// (Originally from ..\FSComp.txt:1100)
static member toolLocationHelperUnsupportedFrameworkVersion(a0 : System.String) = (1300, GetStringFunc("toolLocationHelperUnsupportedFrameworkVersion",",,,%s,,,") a0)
/// Invalid Magic value in CLR Header
- /// (Originally from ..\FSComp.txt:1102)
+ /// (Originally from ..\FSComp.txt:1104)
static member ilSignInvalidMagicValue() = (1301, GetStringFunc("ilSignInvalidMagicValue",",,,") )
/// Bad image format
- /// (Originally from ..\FSComp.txt:1103)
+ /// (Originally from ..\FSComp.txt:1105)
static member ilSignBadImageFormat() = (1302, GetStringFunc("ilSignBadImageFormat",",,,") )
/// Private key expected
- /// (Originally from ..\FSComp.txt:1104)
+ /// (Originally from ..\FSComp.txt:1106)
static member ilSignPrivateKeyExpected() = (1303, GetStringFunc("ilSignPrivateKeyExpected",",,,") )
/// RSA key expected
- /// (Originally from ..\FSComp.txt:1105)
+ /// (Originally from ..\FSComp.txt:1107)
static member ilSignRsaKeyExpected() = (1304, GetStringFunc("ilSignRsaKeyExpected",",,,") )
/// Invalid bit Length
- /// (Originally from ..\FSComp.txt:1106)
+ /// (Originally from ..\FSComp.txt:1108)
static member ilSignInvalidBitLen() = (1305, GetStringFunc("ilSignInvalidBitLen",",,,") )
/// Invalid RSAParameters structure - '{0}' expected
- /// (Originally from ..\FSComp.txt:1107)
+ /// (Originally from ..\FSComp.txt:1109)
static member ilSignInvalidRSAParams() = (1306, GetStringFunc("ilSignInvalidRSAParams",",,,") )
/// Invalid algId - 'Exponent' expected
- /// (Originally from ..\FSComp.txt:1108)
+ /// (Originally from ..\FSComp.txt:1110)
static member ilSignInvalidAlgId() = (1307, GetStringFunc("ilSignInvalidAlgId",",,,") )
/// Invalid signature size
- /// (Originally from ..\FSComp.txt:1109)
+ /// (Originally from ..\FSComp.txt:1111)
static member ilSignInvalidSignatureSize() = (1308, GetStringFunc("ilSignInvalidSignatureSize",",,,") )
/// No signature directory
- /// (Originally from ..\FSComp.txt:1110)
+ /// (Originally from ..\FSComp.txt:1112)
static member ilSignNoSignatureDirectory() = (1309, GetStringFunc("ilSignNoSignatureDirectory",",,,") )
/// Invalid Public Key blob
- /// (Originally from ..\FSComp.txt:1111)
+ /// (Originally from ..\FSComp.txt:1113)
static member ilSignInvalidPKBlob() = (1310, GetStringFunc("ilSignInvalidPKBlob",",,,") )
/// Exiting - too many errors
- /// (Originally from ..\FSComp.txt:1113)
+ /// (Originally from ..\FSComp.txt:1115)
static member fscTooManyErrors() = (GetStringFunc("fscTooManyErrors",",,,") )
/// The documentation file has no .xml suffix
- /// (Originally from ..\FSComp.txt:1114)
+ /// (Originally from ..\FSComp.txt:1116)
static member docfileNoXmlSuffix() = (2001, GetStringFunc("docfileNoXmlSuffix",",,,") )
/// No implementation files specified
- /// (Originally from ..\FSComp.txt:1115)
+ /// (Originally from ..\FSComp.txt:1117)
static member fscNoImplementationFiles() = (2002, GetStringFunc("fscNoImplementationFiles",",,,") )
/// The attribute %s specified version '%s', but this value is invalid and has been ignored
- /// (Originally from ..\FSComp.txt:1116)
+ /// (Originally from ..\FSComp.txt:1118)
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:1117)
+ /// (Originally from ..\FSComp.txt:1119)
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:1118)
+ /// (Originally from ..\FSComp.txt:1120)
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:1119)
+ /// (Originally from ..\FSComp.txt:1121)
static member fscQuotationLiteralsStaticLinking0() = (2006, GetStringFunc("fscQuotationLiteralsStaticLinking0",",,,") )
/// Static linking may not include a .EXE
- /// (Originally from ..\FSComp.txt:1120)
+ /// (Originally from ..\FSComp.txt:1122)
static member fscStaticLinkingNoEXE() = (2007, GetStringFunc("fscStaticLinkingNoEXE",",,,") )
/// Static linking may not include a mixed managed/unmanaged DLL
- /// (Originally from ..\FSComp.txt:1121)
+ /// (Originally from ..\FSComp.txt:1123)
static member fscStaticLinkingNoMixedDLL() = (2008, GetStringFunc("fscStaticLinkingNoMixedDLL",",,,") )
/// Ignoring mixed managed/unmanaged assembly '%s' during static linking
- /// (Originally from ..\FSComp.txt:1122)
+ /// (Originally from ..\FSComp.txt:1124)
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:1123)
+ /// (Originally from ..\FSComp.txt:1125)
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:1124)
+ /// (Originally from ..\FSComp.txt:1126)
static member fscAssemblyNotFoundInDependencySet(a0 : System.String) = (2012, GetStringFunc("fscAssemblyNotFoundInDependencySet",",,,%s,,,") a0)
/// The key file '%s' could not be opened
- /// (Originally from ..\FSComp.txt:1125)
+ /// (Originally from ..\FSComp.txt:1127)
static member fscKeyFileCouldNotBeOpened(a0 : System.String) = (2013, GetStringFunc("fscKeyFileCouldNotBeOpened",",,,%s,,,") a0)
/// A problem occurred writing the binary '%s': %s
- /// (Originally from ..\FSComp.txt:1126)
+ /// (Originally from ..\FSComp.txt:1128)
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:1127)
+ /// (Originally from ..\FSComp.txt:1129)
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:1128)
+ /// (Originally from ..\FSComp.txt:1130)
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:1129)
+ /// (Originally from ..\FSComp.txt:1131)
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:1130)
+ /// (Originally from ..\FSComp.txt:1132)
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:1131)
+ /// (Originally from ..\FSComp.txt:1133)
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:1132)
+ /// (Originally from ..\FSComp.txt:1134)
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:1133)
+ /// (Originally from ..\FSComp.txt:1135)
static member fscRemotingError() = (2021, GetStringFunc("fscRemotingError",",,,") )
/// Problem with filename '%s': Illegal characters in path.
- /// (Originally from ..\FSComp.txt:1134)
+ /// (Originally from ..\FSComp.txt:1136)
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:1135)
+ /// (Originally from ..\FSComp.txt:1137)
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:1136)
+ /// (Originally from ..\FSComp.txt:1138)
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:1137)
+ /// (Originally from ..\FSComp.txt:1139)
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:1138)
+ /// (Originally from ..\FSComp.txt:1140)
static member fscDeterministicDebugRequiresPortablePdb() = (2026, GetStringFunc("fscDeterministicDebugRequiresPortablePdb",",,,") )
/// Character '%s' is not allowed in provided namespace name '%s'
- /// (Originally from ..\FSComp.txt:1139)
+ /// (Originally from ..\FSComp.txt:1141)
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:1140)
+ /// (Originally from ..\FSComp.txt:1142)
static member etNullOrEmptyMemberName(a0 : System.String) = (3001, GetStringFunc("etNullOrEmptyMemberName",",,,%s,,,") a0)
/// The provided type '%s' returned a null member
- /// (Originally from ..\FSComp.txt:1141)
+ /// (Originally from ..\FSComp.txt:1143)
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:1142)
+ /// (Originally from ..\FSComp.txt:1144)
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:1143)
+ /// (Originally from ..\FSComp.txt:1145)
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:1144)
+ /// (Originally from ..\FSComp.txt:1146)
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:1145)
+ /// (Originally from ..\FSComp.txt:1147)
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:1146)
+ /// (Originally from ..\FSComp.txt:1148)
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:1147)
+ /// (Originally from ..\FSComp.txt:1149)
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:1148)
+ /// (Originally from ..\FSComp.txt:1150)
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:1149)
+ /// (Originally from ..\FSComp.txt:1151)
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:1150)
+ /// (Originally from ..\FSComp.txt:1152)
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:1151)
+ /// (Originally from ..\FSComp.txt:1153)
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:1152)
+ /// (Originally from ..\FSComp.txt:1154)
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:1153)
+ /// (Originally from ..\FSComp.txt:1155)
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:1154)
+ /// (Originally from ..\FSComp.txt:1156)
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:1155)
+ /// (Originally from ..\FSComp.txt:1157)
static member etOneOrMoreErrorsSeenDuringExtensionTypeSetting() = (3020, GetStringFunc("etOneOrMoreErrorsSeenDuringExtensionTypeSetting",",,,") )
/// Unexpected exception from provided type '%s' member '%s': %s
- /// (Originally from ..\FSComp.txt:1156)
+ /// (Originally from ..\FSComp.txt:1158)
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:1157)
+ /// (Originally from ..\FSComp.txt:1159)
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:1158)
+ /// (Originally from ..\FSComp.txt:1160)
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:1159)
+ /// (Originally from ..\FSComp.txt:1161)
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:1160)
+ /// (Originally from ..\FSComp.txt:1162)
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:1161)
+ /// (Originally from ..\FSComp.txt:1163)
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:1162)
+ /// (Originally from ..\FSComp.txt:1164)
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:1163)
+ /// (Originally from ..\FSComp.txt:1165)
static member etProviderDoesNotHaveValidConstructor() = (3032, GetStringFunc("etProviderDoesNotHaveValidConstructor",",,,") )
/// The type provider '%s' reported an error: %s
- /// (Originally from ..\FSComp.txt:1164)
+ /// (Originally from ..\FSComp.txt:1166)
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:1165)
+ /// (Originally from ..\FSComp.txt:1167)
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:1166)
+ /// (Originally from ..\FSComp.txt:1168)
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:1167)
+ /// (Originally from ..\FSComp.txt:1169)
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:1168)
+ /// (Originally from ..\FSComp.txt:1170)
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:1169)
+ /// (Originally from ..\FSComp.txt:1171)
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:1170)
+ /// (Originally from ..\FSComp.txt:1172)
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:1171)
+ /// (Originally from ..\FSComp.txt:1173)
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:1172)
+ /// (Originally from ..\FSComp.txt:1174)
static member etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters() = (3044, GetStringFunc("etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters",",,,") )
/// Invalid static argument to provided type. Expected an argument of kind '%s'.
- /// (Originally from ..\FSComp.txt:1173)
+ /// (Originally from ..\FSComp.txt:1175)
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:1174)
+ /// (Originally from ..\FSComp.txt:1176)
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:1175)
+ /// (Originally from ..\FSComp.txt:1177)
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:1176)
+ /// (Originally from ..\FSComp.txt:1178)
static member invalidNamespaceForProvidedType() = (GetStringFunc("invalidNamespaceForProvidedType",",,,") )
/// invalid full name for provided type
- /// (Originally from ..\FSComp.txt:1177)
+ /// (Originally from ..\FSComp.txt:1179)
static member invalidFullNameForProvidedType() = (GetStringFunc("invalidFullNameForProvidedType",",,,") )
/// The type provider returned 'null', which is not a valid return value from '%s'
- /// (Originally from ..\FSComp.txt:1179)
+ /// (Originally from ..\FSComp.txt:1181)
static member etProviderReturnedNull(a0 : System.String) = (3051, GetStringFunc("etProviderReturnedNull",",,,%s,,,") a0)
/// The type provider constructor has thrown an exception: %s
- /// (Originally from ..\FSComp.txt:1180)
+ /// (Originally from ..\FSComp.txt:1182)
static member etTypeProviderConstructorException(a0 : System.String) = (3053, GetStringFunc("etTypeProviderConstructorException",",,,%s,,,") a0)
/// Type provider '%s' returned null from GetInvokerExpression.
- /// (Originally from ..\FSComp.txt:1181)
+ /// (Originally from ..\FSComp.txt:1183)
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:1182)
+ /// (Originally from ..\FSComp.txt:1184)
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:1183)
+ /// (Originally from ..\FSComp.txt:1185)
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:1184)
+ /// (Originally from ..\FSComp.txt:1186)
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:1185)
+ /// (Originally from ..\FSComp.txt:1187)
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:1186)
+ /// (Originally from ..\FSComp.txt:1188)
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:1187)
+ /// (Originally from ..\FSComp.txt:1189)
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:1188)
+ /// (Originally from ..\FSComp.txt:1190)
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:1189)
+ /// (Originally from ..\FSComp.txt:1191)
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:1190)
+ /// (Originally from ..\FSComp.txt:1192)
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:1191)
+ /// (Originally from ..\FSComp.txt:1193)
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:1192)
+ /// (Originally from ..\FSComp.txt:1194)
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:1193)
+ /// (Originally from ..\FSComp.txt:1195)
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:1194)
+ /// (Originally from ..\FSComp.txt:1196)
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:1195)
+ /// (Originally from ..\FSComp.txt:1197)
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:1196)
+ /// (Originally from ..\FSComp.txt:1198)
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:1197)
+ /// (Originally from ..\FSComp.txt:1199)
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:1198)
+ /// (Originally from ..\FSComp.txt:1200)
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:1199)
+ /// (Originally from ..\FSComp.txt:1201)
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:1200)
+ /// (Originally from ..\FSComp.txt:1202)
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:1201)
+ /// (Originally from ..\FSComp.txt:1203)
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:1202)
+ /// (Originally from ..\FSComp.txt:1204)
static member etStaticParameterAlreadyHasValue(a0 : System.String) = (3083, GetStringFunc("etStaticParameterAlreadyHasValue",",,,%s,,,") a0)
/// Multiple static parameters exist with name '%s'
- /// (Originally from ..\FSComp.txt:1203)
+ /// (Originally from ..\FSComp.txt:1205)
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:1204)
+ /// (Originally from ..\FSComp.txt:1206)
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:1205)
+ /// (Originally from ..\FSComp.txt:1207)
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:1206)
+ /// (Originally from ..\FSComp.txt:1208)
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:1207)
+ /// (Originally from ..\FSComp.txt:1209)
static member tcIfThenElseMayNotBeUsedWithinQueries() = (3090, GetStringFunc("tcIfThenElseMayNotBeUsedWithinQueries",",,,") )
/// Invalid argument to 'methodhandleof' during codegen
- /// (Originally from ..\FSComp.txt:1208)
+ /// (Originally from ..\FSComp.txt:1210)
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:1209)
+ /// (Originally from ..\FSComp.txt:1211)
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:1210)
+ /// (Originally from ..\FSComp.txt:1212)
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:1211)
+ /// (Originally from ..\FSComp.txt:1213)
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:1212)
+ /// (Originally from ..\FSComp.txt:1214)
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:1213)
+ /// (Originally from ..\FSComp.txt:1215)
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:1214)
+ /// (Originally from ..\FSComp.txt:1216)
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:1215)
+ /// (Originally from ..\FSComp.txt:1217)
static member customOperationTextLikeZip(a0 : System.String) = (GetStringFunc("customOperationTextLikeZip",",,,%s,,,") a0)
/// '%s' must be followed by a variable name. Usage: %s.
- /// (Originally from ..\FSComp.txt:1216)
+ /// (Originally from ..\FSComp.txt:1218)
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:1217)
+ /// (Originally from ..\FSComp.txt:1219)
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:1218)
+ /// (Originally from ..\FSComp.txt:1220)
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:1219)
+ /// (Originally from ..\FSComp.txt:1221)
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:1220)
+ /// (Originally from ..\FSComp.txt:1222)
static member parsExpectedExpressionAfterToken() = (3100, GetStringFunc("parsExpectedExpressionAfterToken",",,,") )
/// Expected a type after this point
- /// (Originally from ..\FSComp.txt:1221)
+ /// (Originally from ..\FSComp.txt:1223)
static member parsExpectedTypeAfterToken() = (3101, GetStringFunc("parsExpectedTypeAfterToken",",,,") )
/// Unmatched '[<'. Expected closing '>]'
- /// (Originally from ..\FSComp.txt:1222)
+ /// (Originally from ..\FSComp.txt:1224)
static member parsUnmatchedLBrackLess() = (3102, GetStringFunc("parsUnmatchedLBrackLess",",,,") )
/// Unexpected end of input in 'match' expression. Expected 'match with | -> | -> ...'.
- /// (Originally from ..\FSComp.txt:1223)
+ /// (Originally from ..\FSComp.txt:1225)
static member parsUnexpectedEndOfFileMatch() = (3103, GetStringFunc("parsUnexpectedEndOfFileMatch",",,,") )
/// Unexpected end of input in 'try' expression. Expected 'try with ' or 'try finally '.
- /// (Originally from ..\FSComp.txt:1224)
+ /// (Originally from ..\FSComp.txt:1226)
static member parsUnexpectedEndOfFileTry() = (3104, GetStringFunc("parsUnexpectedEndOfFileTry",",,,") )
/// Unexpected end of input in 'while' expression. Expected 'while do '.
- /// (Originally from ..\FSComp.txt:1225)
+ /// (Originally from ..\FSComp.txt:1227)
static member parsUnexpectedEndOfFileWhile() = (3105, GetStringFunc("parsUnexpectedEndOfFileWhile",",,,") )
/// Unexpected end of input in 'for' expression. Expected 'for in do '.
- /// (Originally from ..\FSComp.txt:1226)
+ /// (Originally from ..\FSComp.txt:1228)
static member parsUnexpectedEndOfFileFor() = (3106, GetStringFunc("parsUnexpectedEndOfFileFor",",,,") )
/// Unexpected end of input in 'match' or 'try' expression
- /// (Originally from ..\FSComp.txt:1227)
+ /// (Originally from ..\FSComp.txt:1229)
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:1228)
+ /// (Originally from ..\FSComp.txt:1230)
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:1229)
+ /// (Originally from ..\FSComp.txt:1231)
static member parsUnexpectedEndOfFileElse() = (3109, GetStringFunc("parsUnexpectedEndOfFileElse",",,,") )
/// Unexpected end of input in body of lambda expression. Expected 'fun ... -> '.
- /// (Originally from ..\FSComp.txt:1230)
+ /// (Originally from ..\FSComp.txt:1232)
static member parsUnexpectedEndOfFileFunBody() = (3110, GetStringFunc("parsUnexpectedEndOfFileFunBody",",,,") )
/// Unexpected end of input in type arguments
- /// (Originally from ..\FSComp.txt:1231)
+ /// (Originally from ..\FSComp.txt:1233)
static member parsUnexpectedEndOfFileTypeArgs() = (3111, GetStringFunc("parsUnexpectedEndOfFileTypeArgs",",,,") )
/// Unexpected end of input in type signature
- /// (Originally from ..\FSComp.txt:1232)
+ /// (Originally from ..\FSComp.txt:1234)
static member parsUnexpectedEndOfFileTypeSignature() = (3112, GetStringFunc("parsUnexpectedEndOfFileTypeSignature",",,,") )
/// Unexpected end of input in type definition
- /// (Originally from ..\FSComp.txt:1233)
+ /// (Originally from ..\FSComp.txt:1235)
static member parsUnexpectedEndOfFileTypeDefinition() = (3113, GetStringFunc("parsUnexpectedEndOfFileTypeDefinition",",,,") )
/// Unexpected end of input in object members
- /// (Originally from ..\FSComp.txt:1234)
+ /// (Originally from ..\FSComp.txt:1236)
static member parsUnexpectedEndOfFileObjectMembers() = (3114, GetStringFunc("parsUnexpectedEndOfFileObjectMembers",",,,") )
/// Unexpected end of input in value, function or member definition
- /// (Originally from ..\FSComp.txt:1235)
+ /// (Originally from ..\FSComp.txt:1237)
static member parsUnexpectedEndOfFileDefinition() = (3115, GetStringFunc("parsUnexpectedEndOfFileDefinition",",,,") )
/// Unexpected end of input in expression
- /// (Originally from ..\FSComp.txt:1236)
+ /// (Originally from ..\FSComp.txt:1238)
static member parsUnexpectedEndOfFileExpression() = (3116, GetStringFunc("parsUnexpectedEndOfFileExpression",",,,") )
/// Unexpected end of type. Expected a name after this point.
- /// (Originally from ..\FSComp.txt:1237)
+ /// (Originally from ..\FSComp.txt:1239)
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:1238)
+ /// (Originally from ..\FSComp.txt:1240)
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:1239)
+ /// (Originally from ..\FSComp.txt:1241)
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:1240)
+ /// (Originally from ..\FSComp.txt:1242)
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:1241)
+ /// (Originally from ..\FSComp.txt:1243)
static member parsUnmatchedUse() = (3121, GetStringFunc("parsUnmatchedUse",",,,") )
/// Missing 'do' in 'while' expression. Expected 'while do '.
- /// (Originally from ..\FSComp.txt:1242)
+ /// (Originally from ..\FSComp.txt:1244)
static member parsWhileDoExpected() = (3122, GetStringFunc("parsWhileDoExpected",",,,") )
/// Missing 'do' in 'for' expression. Expected 'for in do '.
- /// (Originally from ..\FSComp.txt:1243)
+ /// (Originally from ..\FSComp.txt:1245)
static member parsForDoExpected() = (3123, GetStringFunc("parsForDoExpected",",,,") )
/// Invalid join relation in '%s'. Expected 'expr expr', where is =, =?, ?= or ?=?.
- /// (Originally from ..\FSComp.txt:1244)
+ /// (Originally from ..\FSComp.txt:1246)
static member tcInvalidRelationInJoin(a0 : System.String) = (3125, GetStringFunc("tcInvalidRelationInJoin",",,,%s,,,") a0)
/// Calls
- /// (Originally from ..\FSComp.txt:1245)
+ /// (Originally from ..\FSComp.txt:1247)
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:1246)
+ /// (Originally from ..\FSComp.txt:1248)
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:1247)
+ /// (Originally from ..\FSComp.txt:1249)
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:1248)
+ /// (Originally from ..\FSComp.txt:1250)
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:1249)
+ /// (Originally from ..\FSComp.txt:1251)
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:1250)
+ /// (Originally from ..\FSComp.txt:1252)
static member tcIntoNeedsRestOfQuery() = (3129, GetStringFunc("tcIntoNeedsRestOfQuery",",,,") )
/// The operator '%s' does not accept the use of 'into'
- /// (Originally from ..\FSComp.txt:1251)
+ /// (Originally from ..\FSComp.txt:1253)
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:1252)
+ /// (Originally from ..\FSComp.txt:1254)
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:1253)
+ /// (Originally from ..\FSComp.txt:1255)
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:1254)
+ /// (Originally from ..\FSComp.txt:1256)
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:1255)
+ /// (Originally from ..\FSComp.txt:1257)
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:1256)
+ /// (Originally from ..\FSComp.txt:1258)
static member parsMutableOnAutoPropertyShouldBeGetSetNotJustSet() = (3135, GetStringFunc("parsMutableOnAutoPropertyShouldBeGetSetNotJustSet",",,,") )
/// Type '%s' is illegal because in byref, T cannot contain byref types.
- /// (Originally from ..\FSComp.txt:1257)
+ /// (Originally from ..\FSComp.txt:1259)
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:1258)
+ /// (Originally from ..\FSComp.txt:1260)
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:1259)
+ /// (Originally from ..\FSComp.txt:1261)
static member tcNoIntegerForLoopInQuery() = (3139, GetStringFunc("tcNoIntegerForLoopInQuery",",,,") )
/// 'while' expressions may not be used in queries
- /// (Originally from ..\FSComp.txt:1260)
+ /// (Originally from ..\FSComp.txt:1262)
static member tcNoWhileInQuery() = (3140, GetStringFunc("tcNoWhileInQuery",",,,") )
/// 'try/finally' expressions may not be used in queries
- /// (Originally from ..\FSComp.txt:1261)
+ /// (Originally from ..\FSComp.txt:1263)
static member tcNoTryFinallyInQuery() = (3141, GetStringFunc("tcNoTryFinallyInQuery",",,,") )
/// 'use' expressions may not be used in queries
- /// (Originally from ..\FSComp.txt:1262)
+ /// (Originally from ..\FSComp.txt:1264)
static member tcUseMayNotBeUsedInQueries() = (3142, GetStringFunc("tcUseMayNotBeUsedInQueries",",,,") )
/// 'let!', 'use!' and 'do!' expressions may not be used in queries
- /// (Originally from ..\FSComp.txt:1263)
+ /// (Originally from ..\FSComp.txt:1265)
static member tcBindMayNotBeUsedInQueries() = (3143, GetStringFunc("tcBindMayNotBeUsedInQueries",",,,") )
/// 'return' and 'return!' may not be used in queries
- /// (Originally from ..\FSComp.txt:1264)
+ /// (Originally from ..\FSComp.txt:1266)
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:1265)
+ /// (Originally from ..\FSComp.txt:1267)
static member tcUnrecognizedQueryOperator() = (3145, GetStringFunc("tcUnrecognizedQueryOperator",",,,") )
/// 'try/with' expressions may not be used in queries
- /// (Originally from ..\FSComp.txt:1266)
+ /// (Originally from ..\FSComp.txt:1268)
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:1267)
+ /// (Originally from ..\FSComp.txt:1269)
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:1268)
+ /// (Originally from ..\FSComp.txt:1270)
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:1269)
+ /// (Originally from ..\FSComp.txt:1271)
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:1270)
+ /// (Originally from ..\FSComp.txt:1272)
static member invalidPlatformTarget() = (3150, GetStringFunc("invalidPlatformTarget",",,,") )
/// This member, function or value declaration may not be declared 'inline'
- /// (Originally from ..\FSComp.txt:1271)
+ /// (Originally from ..\FSComp.txt:1273)
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:1272)
+ /// (Originally from ..\FSComp.txt:1274)
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:1273)
+ /// (Originally from ..\FSComp.txt:1275)
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:1274)
+ /// (Originally from ..\FSComp.txt:1276)
static member crefNoSetOfHole() = (3155, GetStringFunc("crefNoSetOfHole",",,,") )
/// + 1 overload
- /// (Originally from ..\FSComp.txt:1275)
+ /// (Originally from ..\FSComp.txt:1277)
static member nicePrintOtherOverloads1() = (GetStringFunc("nicePrintOtherOverloads1",",,,") )
/// + %d overloads
- /// (Originally from ..\FSComp.txt:1276)
+ /// (Originally from ..\FSComp.txt:1278)
static member nicePrintOtherOverloadsN(a0 : System.Int32) = (GetStringFunc("nicePrintOtherOverloadsN",",,,%d,,,") a0)
/// Erased to
- /// (Originally from ..\FSComp.txt:1277)
+ /// (Originally from ..\FSComp.txt:1279)
static member erasedTo() = (GetStringFunc("erasedTo",",,,") )
/// Unexpected token '%s' or incomplete expression
- /// (Originally from ..\FSComp.txt:1278)
+ /// (Originally from ..\FSComp.txt:1280)
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:1279)
+ /// (Originally from ..\FSComp.txt:1281)
static member parsAttributeOnIncompleteCode() = (3158, GetStringFunc("parsAttributeOnIncompleteCode",",,,") )
/// Type name cannot be empty.
- /// (Originally from ..\FSComp.txt:1280)
+ /// (Originally from ..\FSComp.txt:1282)
static member parsTypeNameCannotBeEmpty() = (3159, GetStringFunc("parsTypeNameCannotBeEmpty",",,,") )
/// Problem reading assembly '%s': %s
- /// (Originally from ..\FSComp.txt:1281)
+ /// (Originally from ..\FSComp.txt:1283)
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:1282)
+ /// (Originally from ..\FSComp.txt:1284)
static member tcTPFieldMustBeLiteral() = (3161, GetStringFunc("tcTPFieldMustBeLiteral",",,,") )
/// (loading description...)
- /// (Originally from ..\FSComp.txt:1283)
+ /// (Originally from ..\FSComp.txt:1285)
static member loadingDescription() = (GetStringFunc("loadingDescription",",,,") )
/// (description unavailable...)
- /// (Originally from ..\FSComp.txt:1284)
+ /// (Originally from ..\FSComp.txt:1286)
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:1285)
+ /// (Originally from ..\FSComp.txt:1287)
static member chkTyparMultipleClassConstraints() = (3162, GetStringFunc("chkTyparMultipleClassConstraints",",,,") )
/// 'match' expressions may not be used in queries
- /// (Originally from ..\FSComp.txt:1286)
+ /// (Originally from ..\FSComp.txt:1288)
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:1287)
+ /// (Originally from ..\FSComp.txt:1289)
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:1288)
+ /// (Originally from ..\FSComp.txt:1290)
static member cannotResolveNullableOperators(a0 : System.String) = (3165, GetStringFunc("cannotResolveNullableOperators",",,,%s,,,") a0)
/// '%s' must be followed by 'in'. Usage: %s.
- /// (Originally from ..\FSComp.txt:1289)
+ /// (Originally from ..\FSComp.txt:1291)
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:1290)
+ /// (Originally from ..\FSComp.txt:1292)
static member parsIllegalMemberVarInObjectImplementation() = (3168, GetStringFunc("parsIllegalMemberVarInObjectImplementation",",,,") )
/// Copy-and-update record expressions must include at least one field.
- /// (Originally from ..\FSComp.txt:1291)
+ /// (Originally from ..\FSComp.txt:1293)
static member tcEmptyCopyAndUpdateRecordInvalid() = (3169, GetStringFunc("tcEmptyCopyAndUpdateRecordInvalid",",,,") )
/// '_' cannot be used as field name
- /// (Originally from ..\FSComp.txt:1292)
+ /// (Originally from ..\FSComp.txt:1294)
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:1293)
+ /// (Originally from ..\FSComp.txt:1295)
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:1294)
+ /// (Originally from ..\FSComp.txt:1296)
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:1295)
+ /// (Originally from ..\FSComp.txt:1297)
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:1296)
+ /// The union case '%s' does not have a field named '%s'.
+ /// (Originally from ..\FSComp.txt:1298)
static member tcUnionCaseConstructorDoesNotHaveFieldWithGivenName(a0 : System.String, a1 : System.String) = (3174, GetStringFunc("tcUnionCaseConstructorDoesNotHaveFieldWithGivenName",",,,%s,,,%s,,,") a0 a1)
+ /// The exception '%s' does not have a field named '%s'.
+ /// (Originally from ..\FSComp.txt:1299)
+ static member tcExceptionConstructorDoesNotHaveFieldWithGivenName(a0 : System.String, a1 : System.String) = (3174, GetStringFunc("tcExceptionConstructorDoesNotHaveFieldWithGivenName",",,,%s,,,%s,,,") a0 a1)
+ /// Active patterns do not have fields. This syntax is invalid.
+ /// (Originally from ..\FSComp.txt:1300)
+ static member tcActivePatternsDoNotHaveFields() = (3174, GetStringFunc("tcActivePatternsDoNotHaveFields",",,,") )
+ /// The constructor does not have a field named '%s'.
+ /// (Originally from ..\FSComp.txt:1301)
+ static member tcConstructorDoesNotHaveFieldWithGivenName(a0 : System.String) = (3174, GetStringFunc("tcConstructorDoesNotHaveFieldWithGivenName",",,,%s,,,") a0)
/// Union case/exception field '%s' cannot be used more than once.
- /// (Originally from ..\FSComp.txt:1297)
+ /// (Originally from ..\FSComp.txt:1302)
static member tcUnionCaseFieldCannotBeUsedMoreThanOnce(a0 : System.String) = (3175, GetStringFunc("tcUnionCaseFieldCannotBeUsedMoreThanOnce",",,,%s,,,") a0)
/// Named field '%s' is used more than once.
- /// (Originally from ..\FSComp.txt:1298)
+ /// (Originally from ..\FSComp.txt:1303)
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:1299)
+ /// (Originally from ..\FSComp.txt:1304)
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:1300)
+ /// (Originally from ..\FSComp.txt:1305)
static member tastConstantExpressionOverflow() = (3177, GetStringFunc("tastConstantExpressionOverflow",",,,") )
/// This is not valid literal expression. The [] attribute will be ignored.
- /// (Originally from ..\FSComp.txt:1301)
+ /// (Originally from ..\FSComp.txt:1306)
static member tcIllegalStructTypeForConstantExpression() = (3178, GetStringFunc("tcIllegalStructTypeForConstantExpression",",,,") )
/// System.Runtime.InteropServices assembly is required to use UnknownWrapper\DispatchWrapper classes.
- /// (Originally from ..\FSComp.txt:1302)
+ /// (Originally from ..\FSComp.txt:1307)
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:1303)
+ /// (Originally from ..\FSComp.txt:1308)
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:1304)
+ /// (Originally from ..\FSComp.txt:1309)
static member estApplyStaticArgumentsForMethodNotImplemented() = (GetStringFunc("estApplyStaticArgumentsForMethodNotImplemented",",,,") )
/// An error occured applying the static arguments to a provided method
- /// (Originally from ..\FSComp.txt:1305)
+ /// (Originally from ..\FSComp.txt:1310)
static member etErrorApplyingStaticArgumentsToMethod() = (3181, GetStringFunc("etErrorApplyingStaticArgumentsToMethod",",,,") )
/// Unexpected character '%s' in preprocessor expression
- /// (Originally from ..\FSComp.txt:1306)
+ /// (Originally from ..\FSComp.txt:1311)
static member pplexUnexpectedChar(a0 : System.String) = (3182, GetStringFunc("pplexUnexpectedChar",",,,%s,,,") a0)
/// Unexpected token '%s' in preprocessor expression
- /// (Originally from ..\FSComp.txt:1307)
+ /// (Originally from ..\FSComp.txt:1312)
static member ppparsUnexpectedToken(a0 : System.String) = (3183, GetStringFunc("ppparsUnexpectedToken",",,,%s,,,") a0)
/// Incomplete preprocessor expression
- /// (Originally from ..\FSComp.txt:1308)
+ /// (Originally from ..\FSComp.txt:1313)
static member ppparsIncompleteExpression() = (3184, GetStringFunc("ppparsIncompleteExpression",",,,") )
/// Missing token '%s' in preprocessor expression
- /// (Originally from ..\FSComp.txt:1309)
+ /// (Originally from ..\FSComp.txt:1314)
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:1310)
+ /// (Originally from ..\FSComp.txt:1315)
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:1311)
+ /// (Originally from ..\FSComp.txt:1316)
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:1312)
+ /// (Originally from ..\FSComp.txt:1317)
static member checkNotSufficientlyGenericBecauseOfScopeAnon() = (3188, GetStringFunc("checkNotSufficientlyGenericBecauseOfScopeAnon",",,,") )
/// Redundant arguments are being ignored in function '%s'. Expected %d but got %d arguments.
- /// (Originally from ..\FSComp.txt:1313)
+ /// (Originally from ..\FSComp.txt:1318)
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:1314)
+ /// (Originally from ..\FSComp.txt:1319)
static member checkLowercaseLiteralBindingInPattern(a0 : System.String) = (3190, GetStringFunc("checkLowercaseLiteralBindingInPattern",",,,%s,,,") a0)
/// This literal pattern does not take arguments
- /// (Originally from ..\FSComp.txt:1315)
+ /// (Originally from ..\FSComp.txt:1320)
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:1316)
+ /// (Originally from ..\FSComp.txt:1321)
static member tcConstructorsIllegalInAugmentation() = (3192, GetStringFunc("tcConstructorsIllegalInAugmentation",",,,") )
/// Invalid response file '%s' ( '%s' )
- /// (Originally from ..\FSComp.txt:1317)
+ /// (Originally from ..\FSComp.txt:1322)
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:1318)
+ /// (Originally from ..\FSComp.txt:1323)
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:1319)
+ /// (Originally from ..\FSComp.txt:1324)
static member optsResponseFileNameInvalid(a0 : System.String) = (3195, GetStringFunc("optsResponseFileNameInvalid",",,,%s,,,") a0)
/// Cannot find FSharp.Core.dll in compiler's directory
- /// (Originally from ..\FSComp.txt:1320)
+ /// (Originally from ..\FSComp.txt:1325)
static member fsharpCoreNotFoundToBeCopied() = (3196, GetStringFunc("fsharpCoreNotFoundToBeCopied",",,,") )
/// One tuple type is a struct tuple, the other is a reference tuple
- /// (Originally from ..\FSComp.txt:1321)
+ /// (Originally from ..\FSComp.txt:1326)
static member tcTupleStructMismatch() = (GetStringFunc("tcTupleStructMismatch",",,,") )
/// This provided method requires static parameters
- /// (Originally from ..\FSComp.txt:1322)
+ /// (Originally from ..\FSComp.txt:1327)
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:1323)
+ /// (Originally from ..\FSComp.txt:1328)
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:1324)
+ /// (Originally from ..\FSComp.txt:1329)
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:1325)
+ /// (Originally from ..\FSComp.txt:1330)
static member tcRecImplied() = (3199, GetStringFunc("tcRecImplied",",,,") )
/// In a recursive declaration group, 'open' declarations must come first in each module
- /// (Originally from ..\FSComp.txt:1326)
+ /// (Originally from ..\FSComp.txt:1331)
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:1327)
+ /// (Originally from ..\FSComp.txt:1332)
static member tcModuleAbbrevFirstInMutRec() = (3201, GetStringFunc("tcModuleAbbrevFirstInMutRec",",,,") )
/// This declaration is not supported in recursive declaration groups
- /// (Originally from ..\FSComp.txt:1328)
+ /// (Originally from ..\FSComp.txt:1333)
static member tcUnsupportedMutRecDecl() = (3202, GetStringFunc("tcUnsupportedMutRecDecl",",,,") )
/// Invalid use of 'rec' keyword
- /// (Originally from ..\FSComp.txt:1329)
+ /// (Originally from ..\FSComp.txt:1334)
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:1330)
+ /// (Originally from ..\FSComp.txt:1335)
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:1331)
+ /// (Originally from ..\FSComp.txt:1336)
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:1332)
+ /// (Originally from ..\FSComp.txt:1337)
static member tcFixedNotAllowed() = (3207, GetStringFunc("tcFixedNotAllowed",",,,") )
/// Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression.
- /// (Originally from ..\FSComp.txt:1333)
+ /// (Originally from ..\FSComp.txt:1338)
static member tcCouldNotFindOffsetToStringData() = (3208, GetStringFunc("tcCouldNotFindOffsetToStringData",",,,") )
/// The address of the variable '%s' or a related expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope.
- /// (Originally from ..\FSComp.txt:1334)
+ /// (Originally from ..\FSComp.txt:1339)
static member chkNoByrefAddressOfLocal(a0 : System.String) = (3209, GetStringFunc("chkNoByrefAddressOfLocal",",,,%s,,,") a0)
/// %s is an active pattern and cannot be treated as a discriminated union case with named fields.
- /// (Originally from ..\FSComp.txt:1335)
+ /// (Originally from ..\FSComp.txt:1340)
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:1336)
+ /// (Originally from ..\FSComp.txt:1341)
static member DefaultParameterValueNotAppropriateForArgument() = (3211, GetStringFunc("DefaultParameterValueNotAppropriateForArgument",",,,") )
/// The system type '%s' was required but no referenced system DLL contained this type
- /// (Originally from ..\FSComp.txt:1337)
+ /// (Originally from ..\FSComp.txt:1342)
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:1338)
+ /// (Originally from ..\FSComp.txt:1343)
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:1339)
+ /// (Originally from ..\FSComp.txt:1344)
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:1340)
+ /// (Originally from ..\FSComp.txt:1345)
static member parsUnexpectedSymbolEqualsInsteadOfIn() = (3215, GetStringFunc("parsUnexpectedSymbolEqualsInsteadOfIn",",,,") )
+ /// Two anonymous record types are from different assemblies '%s' and '%s'
+ /// (Originally from ..\FSComp.txt:1346)
+ static member tcAnonRecdCcuMismatch(a0 : System.String, a1 : System.String) = (GetStringFunc("tcAnonRecdCcuMismatch",",,,%s,,,%s,,,") a0 a1)
+ /// Two anonymous record types have mismatched sets of field names '%s' and '%s'
+ /// (Originally from ..\FSComp.txt:1347)
+ static member tcAnonRecdFieldNameMismatch(a0 : System.String, a1 : System.String) = (GetStringFunc("tcAnonRecdFieldNameMismatch",",,,%s,,,%s,,,") a0 a1)
/// 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:1341)
+ /// (Originally from ..\FSComp.txt:1348)
static member keywordDescriptionAbstract() = (GetStringFunc("keywordDescriptionAbstract",",,,") )
/// Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters.
- /// (Originally from ..\FSComp.txt:1342)
+ /// (Originally from ..\FSComp.txt:1349)
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:1343)
+ /// (Originally from ..\FSComp.txt:1350)
static member keywordDescriptionAs() = (GetStringFunc("keywordDescriptionAs",",,,") )
/// Used to verify code during debugging.
- /// (Originally from ..\FSComp.txt:1344)
+ /// (Originally from ..\FSComp.txt:1351)
static member keywordDescriptionAssert() = (GetStringFunc("keywordDescriptionAssert",",,,") )
/// Used as the name of the base class object.
- /// (Originally from ..\FSComp.txt:1345)
+ /// (Originally from ..\FSComp.txt:1352)
static member keywordDescriptionBase() = (GetStringFunc("keywordDescriptionBase",",,,") )
/// In verbose syntax, indicates the start of a code block.
- /// (Originally from ..\FSComp.txt:1346)
+ /// (Originally from ..\FSComp.txt:1353)
static member keywordDescriptionBegin() = (GetStringFunc("keywordDescriptionBegin",",,,") )
/// In verbose syntax, indicates the start of a class definition.
- /// (Originally from ..\FSComp.txt:1347)
+ /// (Originally from ..\FSComp.txt:1354)
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:1348)
+ /// (Originally from ..\FSComp.txt:1355)
static member keywordDescriptionDefault() = (GetStringFunc("keywordDescriptionDefault",",,,") )
/// Used to declare a delegate.
- /// (Originally from ..\FSComp.txt:1349)
+ /// (Originally from ..\FSComp.txt:1356)
static member keywordDescriptionDelegate() = (GetStringFunc("keywordDescriptionDelegate",",,,") )
/// Used in looping constructs or to execute imperative code.
- /// (Originally from ..\FSComp.txt:1350)
+ /// (Originally from ..\FSComp.txt:1357)
static member keywordDescriptionDo() = (GetStringFunc("keywordDescriptionDo",",,,") )
/// In verbose syntax, indicates the end of a block of code in a looping expression.
- /// (Originally from ..\FSComp.txt:1351)
+ /// (Originally from ..\FSComp.txt:1358)
static member keywordDescriptionDone() = (GetStringFunc("keywordDescriptionDone",",,,") )
/// Used to convert to a type that is lower in the inheritance chain.
- /// (Originally from ..\FSComp.txt:1352)
+ /// (Originally from ..\FSComp.txt:1359)
static member keywordDescriptionDowncast() = (GetStringFunc("keywordDescriptionDowncast",",,,") )
/// In a for expression, used when counting in reverse.
- /// (Originally from ..\FSComp.txt:1353)
+ /// (Originally from ..\FSComp.txt:1360)
static member keywordDescriptionDownto() = (GetStringFunc("keywordDescriptionDownto",",,,") )
/// Used in conditional branching. A short form of else if.
- /// (Originally from ..\FSComp.txt:1354)
+ /// (Originally from ..\FSComp.txt:1361)
static member keywordDescriptionElif() = (GetStringFunc("keywordDescriptionElif",",,,") )
/// Used in conditional branching.
- /// (Originally from ..\FSComp.txt:1355)
+ /// (Originally from ..\FSComp.txt:1362)
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:1356)
+ /// (Originally from ..\FSComp.txt:1363)
static member keywordDescriptionEnd() = (GetStringFunc("keywordDescriptionEnd",",,,") )
/// Used to declare an exception type.
- /// (Originally from ..\FSComp.txt:1357)
+ /// (Originally from ..\FSComp.txt:1364)
static member keywordDescriptionException() = (GetStringFunc("keywordDescriptionException",",,,") )
/// Indicates that a declared program element is defined in another binary or assembly.
- /// (Originally from ..\FSComp.txt:1358)
+ /// (Originally from ..\FSComp.txt:1365)
static member keywordDescriptionExtern() = (GetStringFunc("keywordDescriptionExtern",",,,") )
/// Used as a Boolean literal.
- /// (Originally from ..\FSComp.txt:1359)
+ /// (Originally from ..\FSComp.txt:1366)
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:1360)
+ /// (Originally from ..\FSComp.txt:1367)
static member keywordDescriptionFinally() = (GetStringFunc("keywordDescriptionFinally",",,,") )
/// Used in looping constructs.
- /// (Originally from ..\FSComp.txt:1361)
+ /// (Originally from ..\FSComp.txt:1368)
static member keywordDescriptionFor() = (GetStringFunc("keywordDescriptionFor",",,,") )
/// Used in lambda expressions, also known as anonymous functions.
- /// (Originally from ..\FSComp.txt:1362)
+ /// (Originally from ..\FSComp.txt:1369)
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:1363)
+ /// (Originally from ..\FSComp.txt:1370)
static member keywordDescriptionFunction() = (GetStringFunc("keywordDescriptionFunction",",,,") )
/// Used to reference the top-level .NET namespace.
- /// (Originally from ..\FSComp.txt:1364)
+ /// (Originally from ..\FSComp.txt:1371)
static member keywordDescriptionGlobal() = (GetStringFunc("keywordDescriptionGlobal",",,,") )
/// Used in conditional branching constructs.
- /// (Originally from ..\FSComp.txt:1365)
+ /// (Originally from ..\FSComp.txt:1372)
static member keywordDescriptionIf() = (GetStringFunc("keywordDescriptionIf",",,,") )
/// Used for sequence expressions and, in verbose syntax, to separate expressions from bindings.
- /// (Originally from ..\FSComp.txt:1366)
+ /// (Originally from ..\FSComp.txt:1373)
static member keywordDescriptionIn() = (GetStringFunc("keywordDescriptionIn",",,,") )
/// Used to specify a base class or base interface.
- /// (Originally from ..\FSComp.txt:1367)
+ /// (Originally from ..\FSComp.txt:1374)
static member keywordDescriptionInherit() = (GetStringFunc("keywordDescriptionInherit",",,,") )
/// Used to indicate a function that should be integrated directly into the caller's code.
- /// (Originally from ..\FSComp.txt:1368)
+ /// (Originally from ..\FSComp.txt:1375)
static member keywordDescriptionInline() = (GetStringFunc("keywordDescriptionInline",",,,") )
/// Used to declare and implement interfaces.
- /// (Originally from ..\FSComp.txt:1369)
+ /// (Originally from ..\FSComp.txt:1376)
static member keywordDescriptionInterface() = (GetStringFunc("keywordDescriptionInterface",",,,") )
/// Used to specify that a member is visible inside an assembly but not outside it.
- /// (Originally from ..\FSComp.txt:1370)
+ /// (Originally from ..\FSComp.txt:1377)
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:1371)
+ /// (Originally from ..\FSComp.txt:1378)
static member keywordDescriptionLazy() = (GetStringFunc("keywordDescriptionLazy",",,,") )
/// Used to associate, or bind, a name to a value or function.
- /// (Originally from ..\FSComp.txt:1372)
+ /// (Originally from ..\FSComp.txt:1379)
static member keywordDescriptionLet() = (GetStringFunc("keywordDescriptionLet",",,,") )
/// Used in computation expressions to bind a name to the result of another computation expression.
- /// (Originally from ..\FSComp.txt:1373)
+ /// (Originally from ..\FSComp.txt:1380)
static member keywordDescriptionLetBang() = (GetStringFunc("keywordDescriptionLetBang",",,,") )
/// Used to branch by comparing a value to a pattern.
- /// (Originally from ..\FSComp.txt:1374)
+ /// (Originally from ..\FSComp.txt:1381)
static member keywordDescriptionMatch() = (GetStringFunc("keywordDescriptionMatch",",,,") )
/// Used in computation expressions to pattern match directly over the result of another computation expression.
- /// (Originally from ..\FSComp.txt:1375)
+ /// (Originally from ..\FSComp.txt:1382)
static member keywordDescriptionMatchBang() = (GetStringFunc("keywordDescriptionMatchBang",",,,") )
/// Used to declare a property or method in an object type.
- /// (Originally from ..\FSComp.txt:1376)
+ /// (Originally from ..\FSComp.txt:1383)
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)
+ /// (Originally from ..\FSComp.txt:1384)
static member keywordDescriptionModule() = (GetStringFunc("keywordDescriptionModule",",,,") )
/// Used to declare a variable, that is, a value that can be changed.
- /// (Originally from ..\FSComp.txt:1378)
+ /// (Originally from ..\FSComp.txt:1385)
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)
+ /// (Originally from ..\FSComp.txt:1386)
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)
+ /// (Originally from ..\FSComp.txt:1387)
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)
+ /// (Originally from ..\FSComp.txt:1388)
static member keywordDescriptionNot() = (GetStringFunc("keywordDescriptionNot",",,,") )
/// Indicates the absence of an object. Also used in generic parameter constraints.
- /// (Originally from ..\FSComp.txt:1382)
+ /// (Originally from ..\FSComp.txt:1389)
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)
+ /// (Originally from ..\FSComp.txt:1390)
static member keywordDescriptionOf() = (GetStringFunc("keywordDescriptionOf",",,,") )
/// Used to make the contents of a namespace or module available without qualification.
- /// (Originally from ..\FSComp.txt:1384)
+ /// (Originally from ..\FSComp.txt:1391)
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)
+ /// (Originally from ..\FSComp.txt:1392)
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)
+ /// (Originally from ..\FSComp.txt:1393)
static member keywordDescriptionOverride() = (GetStringFunc("keywordDescriptionOverride",",,,") )
/// Restricts access to a member to code in the same type or module.
- /// (Originally from ..\FSComp.txt:1387)
+ /// (Originally from ..\FSComp.txt:1394)
static member keywordDescriptionPrivate() = (GetStringFunc("keywordDescriptionPrivate",",,,") )
/// Allows access to a member from outside the type.
- /// (Originally from ..\FSComp.txt:1388)
+ /// (Originally from ..\FSComp.txt:1395)
static member keywordDescriptionPublic() = (GetStringFunc("keywordDescriptionPublic",",,,") )
/// Used to indicate that a function is recursive.
- /// (Originally from ..\FSComp.txt:1389)
+ /// (Originally from ..\FSComp.txt:1396)
static member keywordDescriptionRec() = (GetStringFunc("keywordDescriptionRec",",,,") )
/// Used to provide a value for the result of the containing computation expression.
- /// (Originally from ..\FSComp.txt:1390)
+ /// (Originally from ..\FSComp.txt:1397)
static member keywordDescriptionReturn() = (GetStringFunc("keywordDescriptionReturn",",,,") )
/// Used to provide a value for the result of the containing computation expression, where that value itself comes from the result another computation expression.
- /// (Originally from ..\FSComp.txt:1391)
+ /// (Originally from ..\FSComp.txt:1398)
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)
+ /// (Originally from ..\FSComp.txt:1399)
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)
+ /// (Originally from ..\FSComp.txt:1400)
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)
+ /// (Originally from ..\FSComp.txt:1401)
static member keywordDescriptionStruct() = (GetStringFunc("keywordDescriptionStruct",",,,") )
/// Used in conditional expressions. Also used to perform side effects after object construction.
- /// (Originally from ..\FSComp.txt:1395)
+ /// (Originally from ..\FSComp.txt:1402)
static member keywordDescriptionThen() = (GetStringFunc("keywordDescriptionThen",",,,") )
/// Used in for loops to indicate a range.
- /// (Originally from ..\FSComp.txt:1396)
+ /// (Originally from ..\FSComp.txt:1403)
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)
+ /// (Originally from ..\FSComp.txt:1404)
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)
+ /// (Originally from ..\FSComp.txt:1405)
static member keywordDescriptionType() = (GetStringFunc("keywordDescriptionType",",,,") )
/// Used to convert to a type that is higher in the inheritance chain.
- /// (Originally from ..\FSComp.txt:1399)
+ /// (Originally from ..\FSComp.txt:1406)
static member keywordDescriptionUpcast() = (GetStringFunc("keywordDescriptionUpcast",",,,") )
/// Used instead of let for values that implement IDisposable"
- /// (Originally from ..\FSComp.txt:1400)
+ /// (Originally from ..\FSComp.txt:1407)
static member keywordDescriptionUse() = (GetStringFunc("keywordDescriptionUse",",,,") )
/// Used instead of let! in computation expressions for computation expression results that implement IDisposable.
- /// (Originally from ..\FSComp.txt:1401)
+ /// (Originally from ..\FSComp.txt:1408)
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)
+ /// (Originally from ..\FSComp.txt:1409)
static member keywordDescriptionVal() = (GetStringFunc("keywordDescriptionVal",",,,") )
/// Indicates the .NET void type. Used when interoperating with other .NET languages.
- /// (Originally from ..\FSComp.txt:1403)
+ /// (Originally from ..\FSComp.txt:1410)
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)
+ /// (Originally from ..\FSComp.txt:1411)
static member keywordDescriptionWhen() = (GetStringFunc("keywordDescriptionWhen",",,,") )
/// Introduces a looping construct.
- /// (Originally from ..\FSComp.txt:1405)
+ /// (Originally from ..\FSComp.txt:1412)
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)
+ /// (Originally from ..\FSComp.txt:1413)
static member keywordDescriptionWith() = (GetStringFunc("keywordDescriptionWith",",,,") )
/// Used in a sequence expression to produce a value for a sequence.
- /// (Originally from ..\FSComp.txt:1407)
+ /// (Originally from ..\FSComp.txt:1414)
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)
+ /// (Originally from ..\FSComp.txt:1415)
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)
+ /// (Originally from ..\FSComp.txt:1416)
static member keywordDescriptionRightArrow() = (GetStringFunc("keywordDescriptionRightArrow",",,,") )
/// Assigns a value to a variable.
- /// (Originally from ..\FSComp.txt:1410)
+ /// (Originally from ..\FSComp.txt:1417)
static member keywordDescriptionLeftArrow() = (GetStringFunc("keywordDescriptionLeftArrow",",,,") )
/// Converts a type to type that is higher in the hierarchy.
- /// (Originally from ..\FSComp.txt:1411)
+ /// (Originally from ..\FSComp.txt:1418)
static member keywordDescriptionCast() = (GetStringFunc("keywordDescriptionCast",",,,") )
/// Converts a type to a type that is lower in the hierarchy.
- /// (Originally from ..\FSComp.txt:1412)
+ /// (Originally from ..\FSComp.txt:1419)
static member keywordDescriptionDynamicCast() = (GetStringFunc("keywordDescriptionDynamicCast",",,,") )
/// Delimits a typed code quotation.
- /// (Originally from ..\FSComp.txt:1413)
+ /// (Originally from ..\FSComp.txt:1420)
static member keywordDescriptionTypedQuotation() = (GetStringFunc("keywordDescriptionTypedQuotation",",,,") )
/// Delimits a untyped code quotation.
- /// (Originally from ..\FSComp.txt:1414)
+ /// (Originally from ..\FSComp.txt:1421)
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)
+ /// (Originally from ..\FSComp.txt:1422)
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)
+ /// (Originally from ..\FSComp.txt:1423)
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)
+ /// (Originally from ..\FSComp.txt:1424)
static member descriptionWordIs() = (GetStringFunc("descriptionWordIs",",,,") )
/// This value is not a function and cannot be applied.
- /// (Originally from ..\FSComp.txt:1418)
+ /// (Originally from ..\FSComp.txt:1425)
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)
+ /// (Originally from ..\FSComp.txt:1426)
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)
+ /// (Originally from ..\FSComp.txt:1427)
static member notAFunctionButMaybeIndexer() = (GetStringFunc("notAFunctionButMaybeIndexer",",,,") )
///
- /// (Originally from ..\FSComp.txt:1421)
+ /// (Originally from ..\FSComp.txt:1428)
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)
+ /// (Originally from ..\FSComp.txt:1429)
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)
+ /// (Originally from ..\FSComp.txt:1430)
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)
+ /// (Originally from ..\FSComp.txt:1431)
static member pickleUnexpectedNonZero(a0 : System.String) = (3219, GetStringFunc("pickleUnexpectedNonZero",",,,%s,,,") a0)
/// This method or property is not normally used from F# code, use an explicit tuple pattern for deconstruction instead.
- /// (Originally from ..\FSComp.txt:1425)
+ /// (Originally from ..\FSComp.txt:1432)
static member tcTupleMemberNotNormallyUsed() = (3220, GetStringFunc("tcTupleMemberNotNormallyUsed",",,,") )
/// This expression returns a value of type '%s' but is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'. If you intended to use the expression as a value in the sequence then use an explicit 'yield'.
- /// (Originally from ..\FSComp.txt:1426)
+ /// (Originally from ..\FSComp.txt:1433)
static member implicitlyDiscardedInSequenceExpression(a0 : System.String) = (3221, GetStringFunc("implicitlyDiscardedInSequenceExpression",",,,%s,,,") a0)
/// This expression returns a value of type '%s' but is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'. If you intended to use the expression as a value in the sequence then use an explicit 'yield!'.
- /// (Originally from ..\FSComp.txt:1427)
+ /// (Originally from ..\FSComp.txt:1434)
static member implicitlyDiscardedSequenceInSequenceExpression(a0 : System.String) = (3222, GetStringFunc("implicitlyDiscardedSequenceInSequenceExpression",",,,%s,,,") a0)
/// The file '%s' changed on disk unexpectedly, please reload.
- /// (Originally from ..\FSComp.txt:1428)
+ /// (Originally from ..\FSComp.txt:1435)
static member ilreadFileChanged(a0 : System.String) = (3223, GetStringFunc("ilreadFileChanged",",,,%s,,,") a0)
/// The byref pointer is readonly, so this write is not permitted.
- /// (Originally from ..\FSComp.txt:1429)
+ /// (Originally from ..\FSComp.txt:1436)
static member writeToReadOnlyByref() = (3224, GetStringFunc("writeToReadOnlyByref",",,,") )
/// A ReadOnly attribute has been applied to a struct type with a mutable field.
- /// (Originally from ..\FSComp.txt:1430)
+ /// (Originally from ..\FSComp.txt:1437)
static member readOnlyAttributeOnStructWithMutableField() = (3225, GetStringFunc("readOnlyAttributeOnStructWithMutableField",",,,") )
/// A byref pointer returned by a function or method is implicitly dereferenced as of F# 4.5. To acquire the return value as a pointer, use the address-of operator, e.g. '&f(x)' or '&obj.Method(arg1, arg2)'.
- /// (Originally from ..\FSComp.txt:1431)
+ /// (Originally from ..\FSComp.txt:1438)
static member tcByrefReturnImplicitlyDereferenced() = (3226, GetStringFunc("tcByrefReturnImplicitlyDereferenced",",,,") )
/// A type annotated with IsByRefLike must also be a struct. Consider adding the [] attribute to the type.
- /// (Originally from ..\FSComp.txt:1432)
+ /// (Originally from ..\FSComp.txt:1439)
static member tcByRefLikeNotStruct() = (3227, GetStringFunc("tcByRefLikeNotStruct",",,,") )
/// The address of a value returned from the expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope.
- /// (Originally from ..\FSComp.txt:1433)
+ /// (Originally from ..\FSComp.txt:1440)
static member chkNoByrefAddressOfValueFromExpression() = (3228, GetStringFunc("chkNoByrefAddressOfValueFromExpression",",,,") )
- /// The Span or IsByRefLike expression cannot be returned from this function or method, because it is composed using elements that may escape their scope.
- /// (Originally from ..\FSComp.txt:1434)
- static member chkNoReturnOfLimitedSpan() = (3229, GetStringFunc("chkNoReturnOfLimitedSpan",",,,") )
/// This value can't be assigned because the target '%s' may refer to non-stack-local memory, while the expression being assigned is assessed to potentially refer to stack-local memory. This is to help prevent pointers to stack-bound memory escaping their scope.
- /// (Originally from ..\FSComp.txt:1435)
- static member chkNoWriteToLimitedSpan(a0 : System.String) = (3230, GetStringFunc("chkNoWriteToLimitedSpan",",,,%s,,,") a0)
+ /// (Originally from ..\FSComp.txt:1441)
+ static member chkNoWriteToLimitedSpan(a0 : System.String) = (3229, GetStringFunc("chkNoWriteToLimitedSpan",",,,%s,,,") a0)
/// A value defined in a module must be mutable in order to take its address, e.g. 'let mutable x = ...'
- /// (Originally from ..\FSComp.txt:1436)
- static member tastValueMustBeLocal() = (3231, GetStringFunc("tastValueMustBeLocal",",,,") )
+ /// (Originally from ..\FSComp.txt:1442)
+ static member tastValueMustBeLocal() = (3230, GetStringFunc("tastValueMustBeLocal",",,,") )
/// A type annotated with IsReadOnly must also be a struct. Consider adding the [] attribute to the type.
- /// (Originally from ..\FSComp.txt:1437)
- static member tcIsReadOnlyNotStruct() = (3232, GetStringFunc("tcIsReadOnlyNotStruct",",,,") )
+ /// (Originally from ..\FSComp.txt:1443)
+ static member tcIsReadOnlyNotStruct() = (3231, GetStringFunc("tcIsReadOnlyNotStruct",",,,") )
/// Struct members cannot return the address of fields of the struct by reference
- /// (Originally from ..\FSComp.txt:1438)
- static member chkStructsMayNotReturnAddressesOfContents() = (3233, GetStringFunc("chkStructsMayNotReturnAddressesOfContents",",,,") )
+ /// (Originally from ..\FSComp.txt:1444)
+ static member chkStructsMayNotReturnAddressesOfContents() = (3232, GetStringFunc("chkStructsMayNotReturnAddressesOfContents",",,,") )
/// The function or method call cannot be used at this point, because one argument that is a byref of a non-stack-local Span or IsByRefLike type is used with another argument that is a stack-local Span or IsByRefLike type. This is to ensure the address of the local value does not escape its scope.
- /// (Originally from ..\FSComp.txt:1439)
- static member chkNoByrefLikeFunctionCall() = (3234, GetStringFunc("chkNoByrefLikeFunctionCall",",,,") )
+ /// (Originally from ..\FSComp.txt:1445)
+ static member chkNoByrefLikeFunctionCall() = (3233, GetStringFunc("chkNoByrefLikeFunctionCall",",,,") )
/// The Span or IsByRefLike variable '%s' cannot be used at this point. This is to ensure the address of the local value does not escape its scope.
- /// (Originally from ..\FSComp.txt:1440)
- static member chkNoSpanLikeVariable(a0 : System.String) = (3235, GetStringFunc("chkNoSpanLikeVariable",",,,%s,,,") a0)
+ /// (Originally from ..\FSComp.txt:1446)
+ static member chkNoSpanLikeVariable(a0 : System.String) = (3234, GetStringFunc("chkNoSpanLikeVariable",",,,%s,,,") a0)
/// A Span or IsByRefLike value returned from the expression cannot be used at ths point. This is to ensure the address of the local value does not escape its scope.
- /// (Originally from ..\FSComp.txt:1441)
- static member chkNoSpanLikeValueFromExpression() = (3236, GetStringFunc("chkNoSpanLikeValueFromExpression",",,,") )
+ /// (Originally from ..\FSComp.txt:1447)
+ static member chkNoSpanLikeValueFromExpression() = (3235, GetStringFunc("chkNoSpanLikeValueFromExpression",",,,") )
/// Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address.
- /// (Originally from ..\FSComp.txt:1442)
- static member tastCantTakeAddressOfExpression() = (3237, GetStringFunc("tastCantTakeAddressOfExpression",",,,") )
+ /// (Originally from ..\FSComp.txt:1448)
+ static member tastCantTakeAddressOfExpression() = (3236, GetStringFunc("tastCantTakeAddressOfExpression",",,,") )
+ /// Cannot call the byref extension method '%s. The first parameter requires the value to be mutable or a non-readonly byref type.
+ /// (Originally from ..\FSComp.txt:1449)
+ static member tcCannotCallExtensionMethodInrefToByref(a0 : System.String) = (3237, GetStringFunc("tcCannotCallExtensionMethodInrefToByref",",,,%s,,,") a0)
+ /// Byref types are not allowed to have optional type extensions.
+ /// (Originally from ..\FSComp.txt:1450)
+ static member tcByrefsMayNotHaveTypeExtensions() = (3238, GetStringFunc("tcByrefsMayNotHaveTypeExtensions",",,,") )
+ /// Cannot partially apply the extension method '%s' because the first parameter is a byref type.
+ /// (Originally from ..\FSComp.txt:1451)
+ static member tcCannotPartiallyApplyExtensionMethodForByref(a0 : System.String) = (3239, GetStringFunc("tcCannotPartiallyApplyExtensionMethodForByref",",,,%s,,,") a0)
/// This type does not inherit Attribute, it will not work correctly with other .NET languages.
- /// (Originally from ..\FSComp.txt:1443)
+ /// (Originally from ..\FSComp.txt:1452)
static member tcTypeDoesNotInheritAttribute() = (3242, GetStringFunc("tcTypeDoesNotInheritAttribute",",,,") )
+ /// Invalid anonymous record expression
+ /// (Originally from ..\FSComp.txt:1453)
+ static member parsInvalidAnonRecdExpr() = (3243, GetStringFunc("parsInvalidAnonRecdExpr",",,,") )
+ /// Invalid anonymous record type
+ /// (Originally from ..\FSComp.txt:1454)
+ static member parsInvalidAnonRecdType() = (3244, GetStringFunc("parsInvalidAnonRecdType",",,,") )
+ /// The input to a copy-and-update expression that creates an anonymous record must be either an anonymous record or a record
+ /// (Originally from ..\FSComp.txt:1455)
+ static member tcCopyAndUpdateNeedsRecordType() = (3245, GetStringFunc("tcCopyAndUpdateNeedsRecordType",",,,") )
+ /// The parameter '%s' has an invalid type '%s'. This is not permitted by the rules of Common IL.
+ /// (Originally from ..\FSComp.txt:1456)
+ static member chkInvalidFunctionParameterType(a0 : System.String, a1 : System.String) = (3300, GetStringFunc("chkInvalidFunctionParameterType",",,,%s,,,%s,,,") a0 a1)
+ /// The function or method has an invalid return type '%s'. This is not permitted by the rules of Common IL.
+ /// (Originally from ..\FSComp.txt:1457)
+ static member chkInvalidFunctionReturnType(a0 : System.String) = (3301, GetStringFunc("chkInvalidFunctionReturnType",",,,%s,,,") a0)
/// Call this method once to validate that all known resources are valid; throws if not
static member RunStartupValidation() =
@@ -4798,6 +4840,7 @@ type internal SR private() =
ignore(GetString("parsUnmatched"))
ignore(GetString("parsUnmatchedBracketBar"))
ignore(GetString("parsUnmatchedBrace"))
+ ignore(GetString("parsUnmatchedBraceBar"))
ignore(GetString("parsFieldBinding"))
ignore(GetString("parsMemberIllegalInObjectImplementation"))
ignore(GetString("parsMissingFunctionBody"))
@@ -5270,6 +5313,7 @@ type internal SR private() =
ignore(GetString("typeInfoExtension"))
ignore(GetString("typeInfoCustomOperation"))
ignore(GetString("typeInfoArgument"))
+ ignore(GetString("typeInfoAnonRecdField"))
ignore(GetString("typeInfoPatternVariable"))
ignore(GetString("typeInfoNamespace"))
ignore(GetString("typeInfoModule"))
@@ -5627,6 +5671,9 @@ type internal SR private() =
ignore(GetString("chkGetterAndSetterHaveSamePropertyType"))
ignore(GetString("tcRuntimeSuppliedMethodCannotBeUsedInUserCode"))
ignore(GetString("tcUnionCaseConstructorDoesNotHaveFieldWithGivenName"))
+ ignore(GetString("tcExceptionConstructorDoesNotHaveFieldWithGivenName"))
+ ignore(GetString("tcActivePatternsDoNotHaveFields"))
+ ignore(GetString("tcConstructorDoesNotHaveFieldWithGivenName"))
ignore(GetString("tcUnionCaseFieldCannotBeUsedMoreThanOnce"))
ignore(GetString("tcFieldNameIsUsedModeThanOnce"))
ignore(GetString("tcFieldNameConflictsWithGeneratedNameForAnonymousField"))
@@ -5671,6 +5718,8 @@ type internal SR private() =
ignore(GetString("typrelMemberHasMultiplePossibleDispatchSlots"))
ignore(GetString("methodIsNotStatic"))
ignore(GetString("parsUnexpectedSymbolEqualsInsteadOfIn"))
+ ignore(GetString("tcAnonRecdCcuMismatch"))
+ ignore(GetString("tcAnonRecdFieldNameMismatch"))
ignore(GetString("keywordDescriptionAbstract"))
ignore(GetString("keyworkDescriptionAnd"))
ignore(GetString("keywordDescriptionAs"))
@@ -5764,7 +5813,6 @@ type internal SR private() =
ignore(GetString("tcByrefReturnImplicitlyDereferenced"))
ignore(GetString("tcByRefLikeNotStruct"))
ignore(GetString("chkNoByrefAddressOfValueFromExpression"))
- ignore(GetString("chkNoReturnOfLimitedSpan"))
ignore(GetString("chkNoWriteToLimitedSpan"))
ignore(GetString("tastValueMustBeLocal"))
ignore(GetString("tcIsReadOnlyNotStruct"))
@@ -5773,5 +5821,13 @@ type internal SR private() =
ignore(GetString("chkNoSpanLikeVariable"))
ignore(GetString("chkNoSpanLikeValueFromExpression"))
ignore(GetString("tastCantTakeAddressOfExpression"))
+ ignore(GetString("tcCannotCallExtensionMethodInrefToByref"))
+ ignore(GetString("tcByrefsMayNotHaveTypeExtensions"))
+ ignore(GetString("tcCannotPartiallyApplyExtensionMethodForByref"))
ignore(GetString("tcTypeDoesNotInheritAttribute"))
+ ignore(GetString("parsInvalidAnonRecdExpr"))
+ ignore(GetString("parsInvalidAnonRecdType"))
+ ignore(GetString("tcCopyAndUpdateNeedsRecordType"))
+ ignore(GetString("chkInvalidFunctionParameterType"))
+ ignore(GetString("chkInvalidFunctionReturnType"))
()
diff --git a/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx b/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx
index be8589241b4..4985923a951 100644
--- a/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSComp.resx
@@ -1431,6 +1431,9 @@
Unmatched '{{'
+
+ Unmatched '{{|'
+
Field bindings must have the form 'id = expr;'
@@ -2847,6 +2850,9 @@
argument
+
+ anonymous record field
+
patvar
@@ -3193,10 +3199,10 @@
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>\"
+ Remove spaces between the type name and type parameter, e.g. \"type C<'T>\", not type \"C <'T>\". Type parameters must be placed directly adjacent to the type name.
- Type arguments must be placed directly adjacent to the type name, e.g. \"C<'T>\", not \"C <'T>\"
+ Remove spaces between the type name and type parameter, e.g. \"C<'T>\", not \"C <'T>\". Type parameters must be placed directly adjacent to the type name.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>'
@@ -3916,7 +3922,16 @@
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}'.
+ The union case '{0}' does not have a field named '{1}'.
+
+
+ The exception '{0}' does not have a field named '{1}'.
+
+
+ Active patterns do not have fields. This syntax is invalid.
+
+
+ The constructor does not have a field named '{0}'.Union case/exception field '{0}' cannot be used more than once.
@@ -4050,6 +4065,12 @@
Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?
+
+ Two anonymous record types are from different assemblies '{0}' and '{1}'
+
+
+ Two anonymous record types have mismatched sets of field names '{0}' and '{1}'
+
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.
@@ -4330,9 +4351,6 @@
The address of a value returned from the expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope.
-
- The Span or IsByRefLike expression cannot be returned from this function or method, because it is composed using elements that may escape their scope.
-
This value can't be assigned because the target '{0}' may refer to non-stack-local memory, while the expression being assigned is assessed to potentially refer to stack-local memory. This is to help prevent pointers to stack-bound memory escaping their scope.
@@ -4357,7 +4375,31 @@
Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address.
+
+ Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type.
+
+
+ Byref types are not allowed to have optional type extensions.
+
+
+ Cannot partially apply the extension method '{0}' because the first parameter is a byref type.
+
This type does not inherit Attribute, it will not work correctly with other .NET languages.
+
+ Invalid anonymous record expression
+
+
+ Invalid anonymous record type
+
+
+ The input to a copy-and-update expression that creates an anonymous record must be either an anonymous record or a record
+
+
+ The parameter '{0}' has an invalid type '{1}'. This is not permitted by the rules of Common IL.
+
+
+ The function or method has an invalid return type '{0}'. This is not permitted by the rules of Common IL.
+
\ 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 1668c425ebe..7edd03a10e8 100644
--- a/src/buildfromsource/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
+++ b/src/buildfromsource/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
@@ -629,18 +629,22 @@
+
+
+
+
diff --git a/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj b/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
index 92144d8db07..0a6b022ba75 100644
--- a/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
+++ b/src/buildfromsource/FSharp.Compiler.nuget/FSharp.Compiler.nuget.fsproj
@@ -25,7 +25,7 @@
- $(FSharpSourcesRoot)\fsharp\FSharp.Compiler.nuget\Microsoft.FSharp.Compiler.nuspec
+ Microsoft.FSharp.Compiler.nuspeclicenseUrl=$(PackageLicenceUrl);version=$(PackageVersion);authors=$(PackageAuthors);projectUrl=$(PackageProjectUrl);tags=$(PackageTags)$(OutputPath)/$(TargetFramework)
diff --git a/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec b/src/buildfromsource/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
similarity index 52%
rename from src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec
rename to src/buildfromsource/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
index d2dd36b3174..d77c01e9ecc 100644
--- a/src/fsharp/FSharp.Compiler.nuget/Testing.FSharp.Compiler.nuspec
+++ b/src/buildfromsource/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
@@ -1,9 +1,11 @@
- Testing.FSharp.Compiler
+ Microsoft.FSharp.Compiler
- Test deployable versionthe fsharp compiler fsc.exe. Supported Platforms: - .NET Core (.netstandard1.6)
+ .NET Core compatible version of the F# compiler fsc.exe.
+ Supported Platforms: - .NET Core (.netstandard2.0).
+ Commit hash: $githeadsha$.
en-UStrue
@@ -13,53 +15,69 @@
$projectUrl$$tags$
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/buildfromsource/FSharp.Core/FSharp.Core.fsproj b/src/buildfromsource/FSharp.Core/FSharp.Core.fsproj
index 29030516ebd..fae084de12a 100644
--- a/src/buildfromsource/FSharp.Core/FSharp.Core.fsproj
+++ b/src/buildfromsource/FSharp.Core/FSharp.Core.fsproj
@@ -25,7 +25,7 @@
Primitives/prim-types-prelude.fs
-
+
Primitives/SR.fs
diff --git a/src/fsharp/FSharp.Core/SR.fs b/src/buildfromsource/FSharp.Core/SR.fs
similarity index 100%
rename from src/fsharp/FSharp.Core/SR.fs
rename to src/buildfromsource/FSharp.Core/SR.fs
diff --git a/src/buildfromsource/Fsc/Fsc.fsproj b/src/buildfromsource/Fsc/Fsc.fsproj
index d1b1bfa2f80..c5178aaca2e 100644
--- a/src/buildfromsource/Fsc/Fsc.fsproj
+++ b/src/buildfromsource/Fsc/Fsc.fsproj
@@ -29,7 +29,6 @@
-
diff --git a/src/buildfromsource/Fsi/Fsi.fsproj b/src/buildfromsource/Fsi/Fsi.fsproj
index 56390954225..69daac7764a 100644
--- a/src/buildfromsource/Fsi/Fsi.fsproj
+++ b/src/buildfromsource/Fsi/Fsi.fsproj
@@ -34,7 +34,6 @@
-
diff --git a/src/buildfromsource/targets/PackageVersions.props b/src/buildfromsource/targets/PackageVersions.props
index e4f39318bac..a24eded9c32 100644
--- a/src/buildfromsource/targets/PackageVersions.props
+++ b/src/buildfromsource/targets/PackageVersions.props
@@ -9,23 +9,28 @@
4.3.04.3.04.3.0
+ 4.3.04.3.01.5.04.3.04.3.04.3.04.3.0
+ 4.3.04.3.0
+ 4.3.0
+ 4.3.04.3.04.3.04.3.04.4.0
- 15.1.548
- 15.1.548
- 15.1.548
- 15.1.548
+ 15.8.166
+ $(MicrosoftBuildOverallPackagesVersion)
+ $(MicrosoftBuildOverallPackagesVersion)
+ $(MicrosoftBuildOverallPackagesVersion)
+ $(MicrosoftBuildOverallPackagesVersion)4.3.0
diff --git a/src/buildtools/Directory.Build.props b/src/buildtools/Directory.Build.props
new file mode 100644
index 00000000000..12d9ad073ec
--- /dev/null
+++ b/src/buildtools/Directory.Build.props
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/buildtools/Directory.Build.targets b/src/buildtools/Directory.Build.targets
new file mode 100644
index 00000000000..14437118703
--- /dev/null
+++ b/src/buildtools/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/buildtools/README-fslexyacc.md b/src/buildtools/README-fslexyacc.md
new file mode 100644
index 00000000000..a498a74720b
--- /dev/null
+++ b/src/buildtools/README-fslexyacc.md
@@ -0,0 +1,74 @@
+# Notes on FsLex and FsYacc
+
+For better or worse the F# compiler contains three tokenizers (`*.fsl`) and three
+grammars (`*.fsy`) implemented using FsLex and FsYacc respectively, including the all-important F# grammar itself.
+The canonical home for FsLex and FsYacc is http://github.com/fsprojects/FsLexYacc.
+FsLex and FsYacc are themselves built using earlier versions of FsLex and FsYacc.
+
+**If you would like to improve, modify, extend, test or document these
+tools, generally please do so in that repository. There are some exceptions, see below.**
+
+The `src\buildtools\fslex` and `src\buildtools\fsyacc` directories are an _exact_ copy of `packages\FsLexYacc.XYZ\src\fslex` and `packages\FsLexYacc.XYZ\src\fsyacc`. We should really verify this as part of our build.
+This copy is done because we needed to have a build-from-source story.
+In build-from-source, the only tool we can assume is an install of the .NET SDK.
+That means we have to build up FsLex and FsYacc from scratch, _including_ their own generated fslexlex.fs, fslexpars.fs and so on.
+We can't pick up the source from "packages" because in a build-from-source scenario we can't even fetch those
+packages - we really have to build from just our source tree and .NET SDK.
+
+Please do _not_ modify the code in these directories except by copying over from an upgraded FsLexYacc pacakge.
+Without the testing and documentation in the `FsLexYacc` repo, this copied code is just a bunch of untested, undocumented and
+largely generated code checked into our source tree.
+
+## What if I want to modify/improve FsLex and FsYacc
+
+First, be clear on what you want to do:
+
+1. You might want to update the _code generators_ for the fslex or fsyacc tools.
+
+2. You might want to update the _runtime_ of the fslex or fsyacc tools.
+
+For (1), to improve the code/table generators, make a PR to the `FsLexYacc` repository and go through the cycle of updating these files to match a package upgrade.
+
+For (2), normally for FsLexYacc-based tools the runtime is either a source inclusion of `Lexing.fs`, Lexing.fsi, Parsing.fs, Parsing.fsi or a reference to the `FsLexYacc.Runtime` package. The runtime contains LexBuffer and the lexing/parsing table interpreters.
+
+However long ago we decided to duplicate and ingest the _runtime_ files for FsLex and FsYacc into the F# compiler rather than taking them directly from the FsLexYacc project. This was mainly because we wanted to squeeze optimizations out of them based on profiling and simplify them a bit. The duplicated files are `prim-lexing.fs`, `prim-parsing.fs` and the corresponding `.fsi` files in `src/utils`. These files are sufficient to implement the contracts exepcted by the FsLex/FsYacc generated code, and require exactly the same table formats as generated by FsLex/FsYacc.
+
+This means you can improve some aspects of the _runtime_ for FsLex and FsYacc by making direct changes to `prim-lexing.fs` and `prim-parsing.fs`.
+
+For example, the _actual_ `LexBuffer` type being used in the F# compiler (for all three lexers and grammars) is this one: https://github.com/Microsoft/visualfsharp/blob/master/src/utils/prim-lexing.fsi#L50. (That version of the Lex/Yacc runtime has added some things: `BufferLocalStore` for example, which we use for the `XmlDoc` accumulator as we strip those out. It's also dropped any mention of async lexing, and any mention of `byte`. The use
+of generics for `LexBuffer<'Char>` is also superfluous because `'Char` is always `char` but is needed because the FsLex/FsYacc generated code expects this type to be generic.)
+
+## What if I want to eridicate our use of FsLex and FsYacc?
+
+The use of FsLex and FsYacc in this repo is somewhat controversial since the C# compiler implementation uses hand-written lexers and parsers.
+
+In the balance the use of FsLex is fairly reasonable and unlikely to change, though moving to an alternative tokenization technique wouldn't be
+overly difficult given the declarative nature of `FsLex` tokenization.
+
+The use of a table-driven LALR(1) parser is more controversial: there is a general feeling that it would be great to
+somehow move on from FsYacc and do parsing some other way. However, it is not at all easy to do that and remain
+fully compatible. For this reason it is unlikely we will remove the use of FsYacc any time soon. However incremental
+modifications to extract more information from the grammer may yield good results.
+
+## Why aren't FsLex and FsYacc just ingested into this repo if we depend on them (and even have an exact copy of them for build-from-source)?
+
+FsLex and FsYacc are non-trivial tools that require documentation and testing. Also, for external users, they require packaging. Changes to their design should be
+considered carefully. While we are open to adding features to these tools specifically for use by the F# compiler, the tools are open source and available
+independently. For these reasons it is generally best that these tools live in their own repository.
+
+The copy of the `fslex` and `fsyacc` source code in `buildtools` is an exact copy and is not tested or documented
+apart from what's been done before in FsLexYacc repo. Adjusting these copies is not allowed and would be wrong from an engineering persepctive,
+because there's no place to put documentation or tests.
+
+Occasionally we discuss ingesting FsLex and FsYacc into this repository. This often comes up in the hope that by doing so
+we can somehow eventually code-fold them away until we no longer require them at all, instead moving to hand-written parsers
+and lexers. That's an admirable goal. However, moving the tools into this repo doesn't actually help with eliminating their
+use, and may indeed make it harder. This is because these tools use table generation
+based on very specific lexer/grammar specifications. The tables are unreadable and unmaintainable. You can't just
+somehow "specialize" the tools to the F# grammar and then get rid of them as this doesn't give a useful, maintainable lexer or parser.
+To our knowledge there is no way to convert an LALR(1) parser specification to readable, maintainable recursive descent parsing code.
+
+As a result, ingesting the tools into this repo (and modifying them here) would be counter-productive, as the tools would no longer be tested, documented or
+maintained properly, and overall engineering quality would decrease. Further the bootstrap process for the repo then becomes very unwieldy.
+
+
diff --git a/src/buildtools/buildtools.proj b/src/buildtools/buildtools.proj
new file mode 100644
index 00000000000..593f086dd07
--- /dev/null
+++ b/src/buildtools/buildtools.proj
@@ -0,0 +1,32 @@
+
+
+
+ Debug
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/buildtools/buildtools.targets b/src/buildtools/buildtools.targets
index f82f981542c..9b00e18cf72 100644
--- a/src/buildtools/buildtools.targets
+++ b/src/buildtools/buildtools.targets
@@ -1,69 +1,56 @@
-
+ $(DotNetExe)
+
+
+
+
+
+
+ $(ArtifactsBinDir)\fslex\Proto\netcoreapp2.0\fslex.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(ArtifactsBinDir)\fsyacc\Proto\netcoreapp2.0\fsyacc.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
-WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
- created a backup copy. Incorrect changes to this file will make it
- impossible to load or build your projects from the command-line or the IDE.
-
-PowerPack build rules.
-
-Copyright (C) Microsoft Corporation. All rights reserved.
-***********************************************************************************************
--->
-
-
-
- CallFsLex;CallFsYacc;$(CompileDependsOn)
- $(MSBuildThisFileDirectory)
- fslex.exe
- $(MSBuildThisFileDirectory)
- fsyacc.exe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
- false
-
-
-
-
diff --git a/src/buildtools/fslex/fslex.fs b/src/buildtools/fslex/fslex.fs
index 46795d728ef..d2f1af826bd 100644
--- a/src/buildtools/fslex/fslex.fs
+++ b/src/buildtools/fslex/fslex.fs
@@ -67,7 +67,8 @@ let sentinel = 255 * 256 + 255
let lineCount = ref 0
let cfprintfn (os: #TextWriter) fmt = Printf.kfprintf (fun () -> incr lineCount; os.WriteLine()) os fmt
-let main() =
+[]
+let main(args: string[]) =
try
let filename = (match !input with Some x -> x | None -> failwith "no input given")
let domain = if !unicode then "Unicode" else "Ascii"
@@ -216,10 +217,8 @@ let main() =
printLinesIfCodeDefined spec.BottomCode
cfprintfn os "# 3000000 \"%s\"" output;
+ 0
with e ->
eprintf "FSLEX: error FSL000: %s" (match e with Failure s -> s | e -> e.ToString());
exit 1
-
-
-let result = main()
diff --git a/src/buildtools/fslex/fslex.fsproj b/src/buildtools/fslex/fslex.fsproj
index 9fba6aab33f..9e21a860d8c 100644
--- a/src/buildtools/fslex/fslex.fsproj
+++ b/src/buildtools/fslex/fslex.fsproj
@@ -1,12 +1,22 @@
-
+
+ Exenetcoreapp2.0INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstant)
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/buildtools/fslex/fslex.fsx b/src/buildtools/fslex/fslex.fsx
deleted file mode 100644
index 82e434bcbbe..00000000000
--- a/src/buildtools/fslex/fslex.fsx
+++ /dev/null
@@ -1,3 +0,0 @@
-#load "Lexing.fsi" "Lexing.fs" "Parsing.fsi" "Parsing.fs" "Arg.fsi" "Arg.fs" "fslexast.fs" "fslexpars.fs" "fslexlex.fs" "fslex.fs"
-
-let v = FsLexYacc.FsLex.Driver.result
diff --git a/src/buildtools/fssrgen/fssrgen.fsproj b/src/buildtools/fssrgen/fssrgen.fsproj
deleted file mode 100644
index d6d06d53dfe..00000000000
--- a/src/buildtools/fssrgen/fssrgen.fsproj
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- netcoreapp2.0
- COMPILED;$(DefineConstant)
-
-
-
-
-
-
-
diff --git a/src/buildtools/fssrgen/fssrgen.fsx b/src/buildtools/fssrgen/fssrgen.fsx
deleted file mode 100644
index 4fe5bbb38e1..00000000000
--- a/src/buildtools/fssrgen/fssrgen.fsx
+++ /dev/null
@@ -1,476 +0,0 @@
-// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
-let PrintErr(filename, line, msg) =
- printfn "%s(%d): error : %s" filename line msg
-
-let Err(filename, line, msg) =
- PrintErr(filename, line, msg)
- printfn "Note that the syntax of each line is one of these three alternatives:"
- printfn "# comment"
- printfn "ident,\"string\""
- printfn "errNum,ident,\"string\""
- failwith (sprintf "there were errors in the file '%s'" filename)
-
-let xmlBoilerPlateString = @"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-"
-
-
-type HoleType = string
-
-
-// The kinds of 'holes' we can do
-let ComputeHoles filename lineNum (txt:string) : ResizeArray * string =
- // takes in a %d%s kind of string, returns array of HoleType and {0}{1} kind of string
- let mutable i = 0
- let mutable holeNumber = 0
- let mutable holes = ResizeArray() // order
- let sb = new System.Text.StringBuilder()
- let AddHole holeType =
- sb.Append(sprintf "{%d}" holeNumber) |> ignore
- holeNumber <- holeNumber + 1
- holes.Add(holeType)
- while i < txt.Length do
- if txt.[i] = '%' then
- if i+1 = txt.Length then
- Err(filename, lineNum, "(at end of string) % must be followed by d, f, s, or %")
- else
- match txt.[i+1] with
- | 'd' -> AddHole "System.Int32"
- | 'f' -> AddHole "System.Double"
- | 's' -> AddHole "System.String"
- | '%' -> sb.Append('%') |> ignore
- | c -> Err(filename, lineNum, sprintf "'%%%c' is not a valid sequence, only %%d %%f %%s or %%%%" c)
- i <- i + 2
- else
- match txt.[i] with
- | '{' -> sb.Append "{{" |> ignore
- | '}' -> sb.Append "}}" |> ignore
- | c -> sb.Append c |> ignore
- i <- i + 1
- //printfn "holes.Length = %d, lineNum = %d" holes.Length //lineNum txt
- (holes, sb.ToString())
-
-let Unquote (s : string) =
- if s.StartsWith "\"" && s.EndsWith "\"" then s.Substring(1, s.Length - 2)
- else failwith "error message string should be quoted"
-
-let ParseLine filename lineNum (txt:string) =
- let mutable errNum = None
- let identB = new System.Text.StringBuilder()
- let mutable i = 0
- // parse optional error number
- if i < txt.Length && System.Char.IsDigit txt.[i] then
- let numB = new System.Text.StringBuilder()
- while i < txt.Length && System.Char.IsDigit txt.[i] do
- numB.Append txt.[i] |> ignore
- i <- i + 1
- errNum <- Some(int (numB.ToString()))
- if i = txt.Length || not(txt.[i] = ',') then
- Err(filename, lineNum, sprintf "After the error number '%d' there should be a comma" errNum.Value)
- // Skip the comma
- i <- i + 1
- // parse short identifier
- if i < txt.Length && not(System.Char.IsLetter(txt.[i])) then
- Err(filename, lineNum, sprintf "The first character in the short identifier should be a letter, but found '%c'" txt.[i])
- while i < txt.Length && System.Char.IsLetterOrDigit txt.[i] do
- identB.Append txt.[i] |> ignore
- i <- i + 1
- let ident = identB.ToString()
- if ident.Length = 0 then
- Err(filename, lineNum, "Did not find the short identifier")
- else
- if i = txt.Length || not(txt.[i] = ',') then
- Err(filename, lineNum, sprintf "After the identifier '%s' there should be a comma" ident)
- else
- // Skip the comma
- i <- i + 1
- if i = txt.Length then
- Err(filename, lineNum, sprintf "After the identifier '%s' and comma, there should be the quoted string resource" ident)
- else
- let str =
- try
- System.String.Format(Unquote(txt.Substring i)) // Format turns e.g '\n' into that char, but also requires that we 'escape' curlies in the original .txt file, e.g. "{{"
- with
- e -> Err(filename, lineNum, sprintf "Error calling System.String.Format (note that curly braces must be escaped, and there cannot be trailing space on the line): >>>%s<<< -- %s" (txt.Substring i) e.Message)
- let holes, netFormatString = ComputeHoles filename lineNum str
- (lineNum, (errNum,ident), str, holes.ToArray(), netFormatString)
-
-let stringBoilerPlatePrefix = @"
-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
-"
-let StringBoilerPlate filename =
-
- @"
- // BEGIN BOILERPLATE
-
- static let getCurrentAssembly () =
- #if FX_RESHAPED_REFLECTION
- typeof.GetTypeInfo().Assembly
- #else
- System.Reflection.Assembly.GetExecutingAssembly()
- #endif
-
- static let getTypeInfo (t: System.Type) =
- #if FX_RESHAPED_REFLECTION
- t.GetTypeInfo()
- #else
- t
- #endif
-
- static let resources = lazy (new System.Resources.ResourceManager(""" + filename + @""", 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
-"
-
-let RunMain(filename, outFilename, outXmlFilenameOpt, projectNameOpt) =
- try
- let justfilename = System.IO.Path.GetFileNameWithoutExtension(filename)
- if justfilename |> Seq.exists (fun c -> not(System.Char.IsLetterOrDigit(c))) then
- Err(filename, 0, sprintf "The filename '%s' is not allowed; only letters and digits can be used, as the filename also becomes the namespace for the SR class" justfilename)
-
- printfn "fssrgen.fsx: Reading %s" filename
- let lines = System.IO.File.ReadAllLines(filename)
- |> Array.mapi (fun i s -> i,s) // keep line numbers
- |> Array.filter (fun (i,s) -> not(s.StartsWith "#")) // filter out comments
-
- printfn "fssrgen.fsx: Parsing %s" filename
- let stringInfos = lines |> Array.map (fun (i,s) -> ParseLine filename i s)
- // now we have array of (lineNum, ident, str, holes, netFormatString) // str has %d, netFormatString has {0}
-
- printfn "fssrgen.fsx: Validating %s" filename
- // validate that all the idents are unique
- let allIdents = new System.Collections.Generic.Dictionary()
- for (line,(_,ident),_,_,_) in stringInfos do
- if allIdents.ContainsKey(ident) then
- Err(filename,line,sprintf "Identifier '%s' is already used previously on line %d - each identifier must be unique" ident allIdents.[ident])
- allIdents.Add(ident,line)
-
- printfn "fssrgen.fsx: Validating uniqueness of %s" filename
- // validate that all the strings themselves are unique
- let allStrs = new System.Collections.Generic.Dictionary()
- for (line,(_,ident),str,_,_) in stringInfos do
- if allStrs.ContainsKey(str) then
- let prevLine,prevIdent = allStrs.[str]
- Err(filename,line,sprintf "String '%s' already appears on line %d with identifier '%s' - each string must be unique" str prevLine prevIdent)
- allStrs.Add(str,(line,ident))
-
- printfn "fssrgen.fsx: Generating %s" outFilename
- use outStream = System.IO.File.Create outFilename
- use out = new System.IO.StreamWriter(outStream)
- fprintfn out "// This is a generated file; the original input is '%s'" filename
- fprintfn out "namespace %s" justfilename
- if Option.isNone outXmlFilenameOpt then
- fprintfn out "type internal SR private() ="
- else
- fprintfn out "%s" stringBoilerPlatePrefix
- fprintfn out "type internal SR private() ="
- let theResourceName = match projectNameOpt with Some p -> sprintf "%s.%s" p justfilename | None -> justfilename
- fprintfn out "%s" (StringBoilerPlate theResourceName)
-
- printfn "fssrgen.fsx: Generating resource methods for %s" outFilename
- // gen each resource method
- stringInfos |> Seq.iter (fun (lineNum, (optErrNum,ident), str, holes, netFormatString) ->
- let formalArgs = new System.Text.StringBuilder()
- let actualArgs = new System.Text.StringBuilder()
- let firstTime = ref true
- let n = ref 0
- formalArgs.Append "(" |> ignore
- for hole in holes do
- if !firstTime then
- firstTime := false
- else
- formalArgs.Append ", " |> ignore
- actualArgs.Append " " |> ignore
- formalArgs.Append(sprintf "a%d : %s" !n hole) |> ignore
- actualArgs.Append(sprintf "a%d" !n) |> ignore
- n := !n + 1
- formalArgs.Append ")" |> ignore
- fprintfn out " /// %s" str
- fprintfn out " /// (Originally from %s:%d)" filename (lineNum+1)
- let justPercentsFromFormatString =
- (holes |> Array.fold (fun acc holeType ->
- acc + match holeType with
- | "System.Int32" -> ",,,%d"
- | "System.Double" -> ",,,%f"
- | "System.String" -> ",,,%s"
- | _ -> failwith "unreachable") "") + ",,,"
- let errPrefix = match optErrNum with
- | None -> ""
- | Some n -> sprintf "%d, " n
- if Option.isNone outXmlFilenameOpt then
- fprintfn out " static member %s%s = (%ssprintf \"%s\" %s)" ident (formalArgs.ToString()) errPrefix str (actualArgs.ToString())
- else
- fprintfn out " static member %s%s = (%sGetStringFunc(\"%s\",\"%s\") %s)" ident (formalArgs.ToString()) errPrefix ident justPercentsFromFormatString (actualArgs.ToString())
- )
-
- if Option.isSome outXmlFilenameOpt then
- printfn "fssrgen.fsx: Generating .resx for %s" outFilename
- fprintfn out ""
- // gen validation method
- fprintfn out " /// Call this method once to validate that all known resources are valid; throws if not"
- fprintfn out " static member RunStartupValidation() ="
- stringInfos |> Seq.iter (fun (lineNum, (optErrNum,ident), str, holes, netFormatString) ->
- fprintfn out " ignore(GetString(\"%s\"))" ident
- )
- fprintfn out " ()" // in case there are 0 strings, we need the generated code to parse
- // gen to resx
- let xd = new System.Xml.XmlDocument()
- xd.LoadXml(xmlBoilerPlateString)
- stringInfos |> Seq.iter (fun (lineNum, (optErrNum,ident), str, holes, netFormatString) ->
- let xn = xd.CreateElement("data")
- xn.SetAttribute("name",ident) |> ignore
- xn.SetAttribute("xml:space","preserve") |> ignore
- let xnc = xd.CreateElement "value"
- xn.AppendChild xnc |> ignore
- xnc.AppendChild(xd.CreateTextNode netFormatString) |> ignore
- xd.LastChild.AppendChild xn |> ignore
- )
- use outXmlStream = System.IO.File.Create outXmlFilenameOpt.Value
- xd.Save outXmlStream
- printfn "fssrgen.fsx: Done %s" outFilename
- 0
- with e ->
- PrintErr(filename, 0, sprintf "An exception occurred when processing '%s'\n%s" filename (e.ToString()))
- 1
-
-#if COMPILED
-[]
-#endif
-let Main args =
-
- match args |> List.ofArray with
- | [ inputFile; outFile; ] ->
- let filename = System.IO.Path.GetFullPath(inputFile)
- let outFilename = System.IO.Path.GetFullPath(outFile)
-
- RunMain(filename, outFilename, None, None)
-
- | [ inputFile; outFile; outXml ] ->
- let filename = System.IO.Path.GetFullPath inputFile
- let outFilename = System.IO.Path.GetFullPath outFile
- let outXmlFilename = System.IO.Path.GetFullPath outXml
-
- RunMain(filename, outFilename, Some outXmlFilename, None)
-
- | [ inputFile; outFile; outXml; projectName ] ->
- let filename = System.IO.Path.GetFullPath inputFile
- let outFilename = System.IO.Path.GetFullPath outFile
- let outXmlFilename = System.IO.Path.GetFullPath outXml
-
- RunMain(filename, outFilename, Some outXmlFilename, Some projectName)
-
- | _ ->
- printfn "Error: invalid arguments."
- printfn "Usage: "
- 1
-#if !COMPILED
-printfn "fssrgen: args = %A" fsi.CommandLineArgs
-Main (fsi.CommandLineArgs |> Seq.skip 1 |> Seq.toArray)
-#endif
diff --git a/src/buildtools/fssrgen/fssrgen.targets b/src/buildtools/fssrgen/fssrgen.targets
deleted file mode 100644
index 525015ae163..00000000000
--- a/src/buildtools/fssrgen/fssrgen.targets
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
- ProcessFsSrGen;$(PrepareForBuildDependsOn)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
-
diff --git a/src/buildtools/fsyacc/fsyacc.fs b/src/buildtools/fsyacc/fsyacc.fs
index 513262f29db..185ff33232b 100644
--- a/src/buildtools/fsyacc/fsyacc.fs
+++ b/src/buildtools/fsyacc/fsyacc.fs
@@ -523,9 +523,11 @@ let main() =
logf (fun oso -> oso.Close())
-let result =
- try main()
+[]
+let result(args: string[]) =
+ try
+ main()
+ 0
with e ->
- eprintf "FSYACC: error FSY000: %s" (match e with Failure s -> s | e -> e.Message);
- exit 1
-
+ eprintf "FSYACC: error FSY000: %s" (match e with Failure s -> s | e -> e.Message);
+ 1
diff --git a/src/buildtools/fsyacc/fsyacc.fsproj b/src/buildtools/fsyacc/fsyacc.fsproj
index 32a1d6f3317..286c7a4eb12 100644
--- a/src/buildtools/fsyacc/fsyacc.fsproj
+++ b/src/buildtools/fsyacc/fsyacc.fsproj
@@ -1,12 +1,22 @@
-
+
+ Exenetcoreapp2.0INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstant)
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/buildtools/fsyacc/fsyacc.fsx b/src/buildtools/fsyacc/fsyacc.fsx
deleted file mode 100644
index 65b608372f8..00000000000
--- a/src/buildtools/fsyacc/fsyacc.fsx
+++ /dev/null
@@ -1,3 +0,0 @@
-#load "Lexing.fsi" "Lexing.fs" "Parsing.fsi" "Parsing.fs" "Arg.fsi" "Arg.fs" "fsyaccast.fs" "fsyaccpars.fs" "fsyacclex.fs" "fsyacc.fs"
-
-let v = FsLexYacc.FsYacc.Driver.result
diff --git a/src/fsharp-proto-build.proj b/src/fsharp-proto-build.proj
deleted file mode 100644
index 5dc178032ef..00000000000
--- a/src/fsharp-proto-build.proj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/fsharp/AccessibilityLogic.fs b/src/fsharp/AccessibilityLogic.fs
index 7e2e2ef5d9c..dcd8d5d801e 100644
--- a/src/fsharp/AccessibilityLogic.fs
+++ b/src/fsharp/AccessibilityLogic.fs
@@ -194,9 +194,10 @@ let CheckTyconReprAccessible amap m ad tcref =
/// Indicates if a type is accessible (both definition and instantiation)
let rec IsTypeAccessible g amap m ad ty =
- not (isAppTy g ty) ||
- let tcref, tinst = destAppTy g ty
- IsEntityAccessible amap m ad tcref && IsTypeInstAccessible g amap m ad tinst
+ match tryAppTy g ty with
+ | ValueNone -> true
+ | ValueSome(tcref, tinst) ->
+ IsEntityAccessible amap m ad tcref && IsTypeInstAccessible g amap m ad tinst
and IsTypeInstAccessible g amap m ad tinst =
match tinst with
@@ -210,7 +211,7 @@ let IsProvidedMemberAccessible (amap:Import.ImportMap) m ad ty access =
if not isTyAccessible then false
else
not (isAppTy g ty) ||
- let tcrefOfViewedItem, _ = destAppTy g ty
+ let tcrefOfViewedItem = tcrefOfAppTy g ty
IsILMemberAccessible g amap m tcrefOfViewedItem ad access
/// Compute the accessibility of a provided member
diff --git a/src/fsharp/AttributeChecking.fs b/src/fsharp/AttributeChecking.fs
index 3be4a3a0705..a28598d9708 100644
--- a/src/fsharp/AttributeChecking.fs
+++ b/src/fsharp/AttributeChecking.fs
@@ -449,8 +449,8 @@ let MethInfoIsUnseen g m ty minfo =
// We are only interested in filtering out the method on System.Object, so it is sufficient
// just to look at the attributes on IL methods.
if tcref.IsILTycon then
- tcref.ILTyconRawMetadata.CustomAttrs.AsList
- |> List.exists (fun attr -> attr.Method.DeclaringType.TypeSpec.Name = typeof.FullName)
+ tcref.ILTyconRawMetadata.CustomAttrs.AsArray
+ |> Array.exists (fun attr -> attr.Method.DeclaringType.TypeSpec.Name = typeof.FullName)
else
false
#else
diff --git a/src/fsharp/CheckFormatStrings.fs b/src/fsharp/CheckFormatStrings.fs
index 4d532904a16..9d7fd72d7a0 100644
--- a/src/fsharp/CheckFormatStrings.fs
+++ b/src/fsharp/CheckFormatStrings.fs
@@ -54,15 +54,15 @@ let parseFormatStringInternal (m:range) (g: TcGlobals) (context: FormatStringChe
let (offset, fmt) =
match context with
| Some context ->
- let length = context.NormalizedSource.Length
- if m.EndLine < context.LineEndPositions.Length then
- let startIndex = context.LineEndPositions.[m.StartLine-1] + m.StartColumn
- let endIndex = context.LineEndPositions.[m.EndLine-1] + m.EndColumn - 1
- if startIndex < length-3 && context.NormalizedSource.[startIndex..startIndex+2] = "\"\"\"" then
- (3, context.NormalizedSource.[startIndex+3..endIndex-3])
- elif startIndex < length-2 && context.NormalizedSource.[startIndex..startIndex+1] = "@\"" then
- (2, context.NormalizedSource.[startIndex+2..endIndex-1])
- else (1, context.NormalizedSource.[startIndex+1..endIndex-1])
+ let length = context.Source.Length
+ if m.EndLine < context.LineStartPositions.Length then
+ let startIndex = context.LineStartPositions.[m.StartLine-1] + m.StartColumn
+ let endIndex = context.LineStartPositions.[m.EndLine-1] + m.EndColumn - 1
+ if startIndex < length-3 && context.Source.[startIndex..startIndex+2] = "\"\"\"" then
+ (3, context.Source.[startIndex+3..endIndex-3])
+ elif startIndex < length-2 && context.Source.[startIndex..startIndex+1] = "@\"" then
+ (2, context.Source.[startIndex+2..endIndex-1])
+ else (1, context.Source.[startIndex+1..endIndex-1])
else (1, fmt)
| None -> (1, fmt)
diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs
index d54373c5548..830a08bf2f4 100644
--- a/src/fsharp/CompileOps.fs
+++ b/src/fsharp/CompileOps.fs
@@ -960,12 +960,12 @@ let OutputPhasedErrorR (os:StringBuilder) (err:PhasedDiagnostic) =
| Parser.TOKEN_RPAREN | Parser.TOKEN_RPAREN_COMING_SOON | Parser.TOKEN_RPAREN_IS_HERE -> getErrorString("Parser.TOKEN.RPAREN")
| Parser.TOKEN_LQUOTE -> getErrorString("Parser.TOKEN.LQUOTE")
| Parser.TOKEN_LBRACK -> getErrorString("Parser.TOKEN.LBRACK")
+ | Parser.TOKEN_LBRACE_BAR -> getErrorString("Parser.TOKEN.LBRACE.BAR")
| Parser.TOKEN_LBRACK_BAR -> getErrorString("Parser.TOKEN.LBRACK.BAR")
| Parser.TOKEN_LBRACK_LESS -> getErrorString("Parser.TOKEN.LBRACK.LESS")
| Parser.TOKEN_LBRACE -> getErrorString("Parser.TOKEN.LBRACE")
- | Parser.TOKEN_LBRACE_LESS-> getErrorString("Parser.TOKEN.LBRACE.LESS")
| Parser.TOKEN_BAR_RBRACK -> getErrorString("Parser.TOKEN.BAR.RBRACK")
- | Parser.TOKEN_GREATER_RBRACE -> getErrorString("Parser.TOKEN.GREATER.RBRACE")
+ | Parser.TOKEN_BAR_RBRACE -> getErrorString("Parser.TOKEN.BAR.RBRACE")
| Parser.TOKEN_GREATER_RBRACK -> getErrorString("Parser.TOKEN.GREATER.RBRACK")
| Parser.TOKEN_RQUOTE_DOT _
| Parser.TOKEN_RQUOTE -> getErrorString("Parser.TOKEN.RQUOTE")
@@ -1096,7 +1096,7 @@ let OutputPhasedErrorR (os:StringBuilder) (err:PhasedDiagnostic) =
(* Merge a bunch of expression non terminals *)
let (|NONTERM_Category_Expr|_|) = function
| Parser.NONTERM_argExpr|Parser.NONTERM_minusExpr|Parser.NONTERM_parenExpr|Parser.NONTERM_atomicExpr
- | Parser.NONTERM_appExpr|Parser.NONTERM_tupleExpr|Parser.NONTERM_declExpr|Parser.NONTERM_braceExpr
+ | Parser.NONTERM_appExpr|Parser.NONTERM_tupleExpr|Parser.NONTERM_declExpr|Parser.NONTERM_braceExpr|Parser.NONTERM_braceBarExpr
| Parser.NONTERM_typedSeqExprBlock
| Parser.NONTERM_interactiveExpr -> Some()
| _ -> None
@@ -1825,6 +1825,7 @@ let DefaultReferencesForScriptsAndOutOfProjectSources(assumeDotNetFramework) =
yield "System.Data"
yield "System.Drawing"
yield "System.Core"
+
// These are the Portable-profile and .NET Standard 1.6 dependencies of FSharp.Core.dll. These are needed
// when an F# sript references an F# profile 7, 78, 259 or .NET Standard 1.6 component which in turn refers
// to FSharp.Core for profile 7, 78, 259 or .NET Standard.
@@ -1850,17 +1851,24 @@ let DefaultReferencesForScriptsAndOutOfProjectSources(assumeDotNetFramework) =
yield "System.Windows.Forms"
yield "System.Numerics"
else
- yield Path.Combine(Path.GetDirectoryName(typeof.Assembly.Location), "mscorlib.dll"); // mscorlib
- yield typeof.Assembly.Location; // System.Console
- yield typeof.Assembly.Location; // System.Runtime
- yield typeof.Assembly.Location; // System.ObjectModel
- yield typeof.Assembly.Location; // System.IO
- yield typeof.Assembly.Location; // System.Linq
- //yield typeof.Assembly.Location; // System.Xml.Linq
- yield typeof.Assembly.Location; // System.Net.Requests
- yield typeof.Assembly.Location; // System.Runtime.Numerics
- yield typeof.Assembly.Location; // System.Threading.Tasks
- yield typeof.Assembly.Location; // FSharp.Core
+ yield Path.Combine(Path.GetDirectoryName(typeof.Assembly.Location), "mscorlib.dll") // mscorlib
+ yield typeof.Assembly.Location // System.Console
+ yield typeof.Assembly.Location // System.Collections
+ yield typeof.Assembly.Location // System.Data.SqlClient
+ yield typeof.Assembly.Location // System.ObjectModel
+ yield typeof.Assembly.Location // System.IO.FileSystem
+ yield typeof.Assembly.Location // System.IO
+ yield typeof.Assembly.Location // System.Linq
+ yield typeof.Assembly.Location // System.Xml
+ yield typeof.Assembly.Location // System.Xml.Linq
+ yield typeof.Assembly.Location // System.Net.Requests
+ yield typeof.Assembly.Location // System.Runtime.Numerics
+ yield typeof.Assembly.Location // System.Net.Security
+ yield typeof.Assembly.Location // System.Security.Claims
+ yield typeof.Assembly.Location // System.Text.RegularExpressions.Regex
+ yield typeof.Assembly.Location // System.Threading.Tasks
+ yield typeof.Assembly.Location // System.Threading
+ yield typeof.Assembly.Location // FSharp.Core
]
@@ -2348,6 +2356,8 @@ type TcConfigBuilder =
mutable tryGetMetadataSnapshot : ILReaderTryGetMetadataSnapshot
mutable internalTestSpanStackReferring : bool
+
+ mutable noConditionalErasure : bool
}
static member Initial =
@@ -2485,6 +2495,7 @@ type TcConfigBuilder =
shadowCopyReferences = false
tryGetMetadataSnapshot = (fun _ -> None)
internalTestSpanStackReferring = false
+ noConditionalErasure = false
}
static member CreateNew(legacyReferenceResolver, defaultFSharpBinariesDir, reduceMemoryUsage, implicitIncludeDir,
@@ -2609,13 +2620,13 @@ type TcConfigBuilder =
member tcConfigB.RemoveReferencedAssemblyByPath (m, path) =
tcConfigB.referencedDLLs <- tcConfigB.referencedDLLs |> List.filter (fun ar-> ar.Range <> m || ar.Text <> path)
- static member SplitCommandLineResourceInfo ri =
- if String.contains ri ',' then
- let p = String.index ri ','
+ static member SplitCommandLineResourceInfo (ri:string) =
+ let p = ri.IndexOf ','
+ if p <> -1 then
let file = String.sub ri 0 p
let rest = String.sub ri (p+1) (String.length ri - p - 1)
- if String.contains rest ',' then
- let p = String.index rest ','
+ let p = rest.IndexOf ','
+ if p <> -1 then
let name = String.sub rest 0 p+".resources"
let pubpri = String.sub rest (p+1) (rest.Length - p - 1)
if pubpri = "public" then file, name, ILResourceAccess.Public
@@ -2674,9 +2685,9 @@ type AssemblyResolution =
member this.GetILAssemblyRef(ctok, reduceMemoryUsage, tryGetMetadataSnapshot) =
cancellable {
match !this.ilAssemblyRef with
- | Some(assref) -> return assref
+ | Some(assemblyRef) -> return assemblyRef
| None ->
- let! assRefOpt =
+ let! assemblyRefOpt =
cancellable {
match this.ProjectReference with
| Some r ->
@@ -2689,8 +2700,8 @@ type AssemblyResolution =
| _ -> return None
| None -> return None
}
- let assRef =
- match assRefOpt with
+ let assemblyRef =
+ match assemblyRefOpt with
| Some aref -> aref
| None ->
let readerSettings : ILReaderOptions =
@@ -2701,8 +2712,8 @@ type AssemblyResolution =
tryGetMetadataSnapshot = tryGetMetadataSnapshot }
use reader = OpenILModuleReader this.resolvedPath readerSettings
mkRefToILAssembly reader.ILModuleDef.ManifestOfAssembly
- this.ilAssemblyRef := Some(assRef)
- return assRef
+ this.ilAssemblyRef := Some(assemblyRef)
+ return assemblyRef
}
//----------------------------------------------------------------------------
@@ -2946,6 +2957,8 @@ type TcConfig private (data : TcConfigBuilder, validate:bool) =
member x.shadowCopyReferences = data.shadowCopyReferences
member x.tryGetMetadataSnapshot = data.tryGetMetadataSnapshot
member x.internalTestSpanStackReferring = data.internalTestSpanStackReferring
+ member x.noConditionalErasure = data.noConditionalErasure
+
static member Create(builder, validate) =
use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parameter
TcConfig(builder, validate)
@@ -3376,14 +3389,14 @@ let ComputeQualifiedNameOfFileFromUniquePath (m, p: string list) = QualifiedName
let QualFileNameOfSpecs filename specs =
match specs with
- | [SynModuleOrNamespaceSig(modname, _, true, _, _, _, _, m)] -> QualFileNameOfModuleName m filename modname
- | [SynModuleOrNamespaceSig(_, _, false, _, _, _, _, m)] -> QualFileNameOfFilename m filename
+ | [SynModuleOrNamespaceSig(modname, _, kind, _, _, _, _, m)] when kind.IsModule -> QualFileNameOfModuleName m filename modname
+ | [SynModuleOrNamespaceSig(_, _, kind, _, _, _, _, m)] when not kind.IsModule -> QualFileNameOfFilename m filename
| _ -> QualFileNameOfFilename (mkRange filename pos0 pos0) filename
let QualFileNameOfImpls filename specs =
match specs with
- | [SynModuleOrNamespace(modname, _, true, _, _, _, _, m)] -> QualFileNameOfModuleName m filename modname
- | [SynModuleOrNamespace(_, _, false, _, _, _, _, m)] -> QualFileNameOfFilename m filename
+ | [SynModuleOrNamespace(modname, _, kind, _, _, _, _, m)] when kind.IsModule -> QualFileNameOfModuleName m filename modname
+ | [SynModuleOrNamespace(_, _, kind, _, _, _, _, m)] when not kind.IsModule -> QualFileNameOfFilename m filename
| _ -> QualFileNameOfFilename (mkRange filename pos0 pos0) filename
let PrepandPathToQualFileName x (QualifiedNameOfFile(q)) = ComputeQualifiedNameOfFileFromUniquePath (q.idRange, pathOfLid x@[q.idText])
@@ -3412,13 +3425,14 @@ let ComputeAnonModuleName check defaultNamespace filename (m: range) =
let PostParseModuleImpl (_i, defaultNamespace, isLastCompiland, filename, impl) =
match impl with
- | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid, isRec, isModule, decls, xmlDoc, attribs, access, m)) ->
+ | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid, isRec, kind, decls, xmlDoc, attribs, access, m)) ->
let lid =
match lid with
- | [id] when isModule && id.idText = MangledGlobalName -> error(Error(FSComp.SR.buildInvalidModuleOrNamespaceName(), id.idRange))
+ | [id] when kind.IsModule && id.idText = MangledGlobalName ->
+ error(Error(FSComp.SR.buildInvalidModuleOrNamespaceName(), id.idRange))
| id :: rest when id.idText = MangledGlobalName -> rest
| _ -> lid
- SynModuleOrNamespace(lid, isRec, isModule, decls, xmlDoc, attribs, access, m)
+ SynModuleOrNamespace(lid, isRec, kind, decls, xmlDoc, attribs, access, m)
| ParsedImplFileFragment.AnonModule (defs, m)->
let isLast, isExe = isLastCompiland
@@ -3429,24 +3443,26 @@ let PostParseModuleImpl (_i, defaultNamespace, isLastCompiland, filename, impl)
| _ -> errorR(Error(FSComp.SR.buildMultiFileRequiresNamespaceOrModule(), trimRangeToLine m))
let modname = ComputeAnonModuleName (not (isNil defs)) defaultNamespace filename (trimRangeToLine m)
- SynModuleOrNamespace(modname, false, true, defs, PreXmlDoc.Empty, [], None, m)
+ SynModuleOrNamespace(modname, false, AnonModule, defs, PreXmlDoc.Empty, [], None, m)
- | ParsedImplFileFragment.NamespaceFragment (lid, a, b, c, d, e, m)->
- let lid =
+ | ParsedImplFileFragment.NamespaceFragment (lid, a, kind, c, d, e, m)->
+ let lid, kind =
match lid with
- | id :: rest when id.idText = MangledGlobalName -> rest
- | _ -> lid
- SynModuleOrNamespace(lid, a, b, c, d, e, None, m)
+ | id :: rest when id.idText = MangledGlobalName ->
+ rest, if List.isEmpty rest then GlobalNamespace else kind
+ | _ -> lid, kind
+ SynModuleOrNamespace(lid, a, kind, c, d, e, None, m)
let PostParseModuleSpec (_i, defaultNamespace, isLastCompiland, filename, intf) =
match intf with
- | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid, isRec, isModule, decls, xmlDoc, attribs, access, m)) ->
+ | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid, isRec, kind, decls, xmlDoc, attribs, access, m)) ->
let lid =
match lid with
- | [id] when isModule && id.idText = MangledGlobalName -> error(Error(FSComp.SR.buildInvalidModuleOrNamespaceName(), id.idRange))
+ | [id] when kind.IsModule && id.idText = MangledGlobalName ->
+ error(Error(FSComp.SR.buildInvalidModuleOrNamespaceName(), id.idRange))
| id :: rest when id.idText = MangledGlobalName -> rest
| _ -> lid
- SynModuleOrNamespaceSig(lid, isRec, isModule, decls, xmlDoc, attribs, access, m)
+ SynModuleOrNamespaceSig(lid, isRec, NamedModule, decls, xmlDoc, attribs, access, m)
| ParsedSigFileFragment.AnonModule (defs, m) ->
let isLast, isExe = isLastCompiland
@@ -3457,14 +3473,15 @@ let PostParseModuleSpec (_i, defaultNamespace, isLastCompiland, filename, intf)
| _ -> errorR(Error(FSComp.SR.buildMultiFileRequiresNamespaceOrModule(), m))
let modname = ComputeAnonModuleName (not (isNil defs)) defaultNamespace filename (trimRangeToLine m)
- SynModuleOrNamespaceSig(modname, false, true, defs, PreXmlDoc.Empty, [], None, m)
+ SynModuleOrNamespaceSig(modname, false, AnonModule, defs, PreXmlDoc.Empty, [], None, m)
- | ParsedSigFileFragment.NamespaceFragment (lid, a, b, c, d, e, m)->
- let lid =
+ | ParsedSigFileFragment.NamespaceFragment (lid, a, kind, c, d, e, m)->
+ let lid, kind =
match lid with
- | id :: rest when id.idText = MangledGlobalName -> rest
- | _ -> lid
- SynModuleOrNamespaceSig(lid, a, b, c, d, e, None, m)
+ | id :: rest when id.idText = MangledGlobalName ->
+ rest, if List.isEmpty rest then GlobalNamespace else kind
+ | _ -> lid, kind
+ SynModuleOrNamespaceSig(lid, a, kind, c, d, e, None, m)
@@ -3508,34 +3525,37 @@ let PostParseModuleSpecs (defaultNamespace, filename, isLastCompiland, ParsedSig
ParsedInput.SigFile(ParsedSigFileInput(filename, qualName, scopedPragmas, hashDirectives, specs))
+type ModuleNamesDict = Map>
+
/// Checks if a module name is already given and deduplicates the name if needed.
-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))
+let DeduplicateModuleName (moduleNamesDict:ModuleNamesDict) fileName (qualNameOfFile: QualifiedNameOfFile) =
+ let path = Path.GetDirectoryName fileName
+ let path = if FileSystem.IsPathRootedShim path then try FileSystem.GetFullPathShim path with _ -> path else path
+ match moduleNamesDict.TryGetValue qualNameOfFile.Text with
+ | true, paths ->
+ if paths.ContainsKey path then
+ paths.[path], moduleNamesDict
+ else
+ let count = paths.Count + 1
+ let id = qualNameOfFile.Id
+ let qualNameOfFileT = if count = 1 then qualNameOfFile else QualifiedNameOfFile(Ident(id.idText + "___" + count.ToString(), id.idRange))
+ let moduleNamesDictT = moduleNamesDict.Add(qualNameOfFile.Text, paths.Add(path, qualNameOfFileT))
+ qualNameOfFileT, moduleNamesDictT
+ | _ ->
+ let moduleNamesDictT = moduleNamesDict.Add(qualNameOfFile.Text, Map.empty.Add(path, qualNameOfFile))
+ qualNameOfFile, moduleNamesDictT
/// Checks if a ParsedInput is using a module name that was already given and deduplicates the name if needed.
-let DeduplicateParsedInputModuleName (moduleNamesDict:IDictionary>) input =
+let DeduplicateParsedInputModuleName (moduleNamesDict: ModuleNamesDict) input =
match input with
- | ParsedInput.ImplFile (ParsedImplFileInput.ParsedImplFileInput(fileName, isScript, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules, (isLastCompiland, isExe))) ->
- let path = Path.GetDirectoryName fileName
- match moduleNamesDict.TryGetValue qualifiedNameOfFile.Text with
- | true, paths ->
- let qualifiedNameOfFile = DeduplicateModuleName moduleNamesDict paths path qualifiedNameOfFile
- ParsedInput.ImplFile(ParsedImplFileInput.ParsedImplFileInput(fileName, isScript, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules, (isLastCompiland, isExe)))
- | _ ->
- moduleNamesDict.[qualifiedNameOfFile.Text] <- Set.singleton path
- input
- | ParsedInput.SigFile (ParsedSigFileInput.ParsedSigFileInput(fileName, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules)) ->
- let path = Path.GetDirectoryName fileName
- match moduleNamesDict.TryGetValue qualifiedNameOfFile.Text with
- | true, paths ->
- let qualifiedNameOfFile = DeduplicateModuleName moduleNamesDict paths path qualifiedNameOfFile
- ParsedInput.SigFile (ParsedSigFileInput.ParsedSigFileInput(fileName, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules))
- | _ ->
- moduleNamesDict.[qualifiedNameOfFile.Text] <- Set.singleton path
- input
+ | ParsedInput.ImplFile (ParsedImplFileInput.ParsedImplFileInput(fileName, isScript, qualNameOfFile, scopedPragmas, hashDirectives, modules, (isLastCompiland, isExe))) ->
+ let qualNameOfFileT, moduleNamesDictT = DeduplicateModuleName moduleNamesDict fileName qualNameOfFile
+ let inputT = ParsedInput.ImplFile(ParsedImplFileInput.ParsedImplFileInput(fileName, isScript, qualNameOfFileT, scopedPragmas, hashDirectives, modules, (isLastCompiland, isExe)))
+ inputT, moduleNamesDictT
+ | ParsedInput.SigFile (ParsedSigFileInput.ParsedSigFileInput(fileName, qualNameOfFile, scopedPragmas, hashDirectives, modules)) ->
+ let qualNameOfFileT, moduleNamesDictT = DeduplicateModuleName moduleNamesDict fileName qualNameOfFile
+ let inputT = ParsedInput.SigFile (ParsedSigFileInput.ParsedSigFileInput(fileName, qualNameOfFileT, scopedPragmas, hashDirectives, modules))
+ inputT, moduleNamesDictT
let ParseInput (lexer, errorLogger:ErrorLogger, lexbuf:UnicodeLexing.Lexbuf, defaultNamespace, filename, isLastCompiland) =
// The assert below is almost ok, but it fires in two cases:
@@ -3655,10 +3675,10 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list,
member tcResolutions.TryFindByOriginalReference(assemblyReference:AssemblyReference) = originalReferenceToResolution.TryFind assemblyReference.Text
/// This doesn't need to be cancellable, it is only used by F# Interactive
- member tcResolution.TryFindByExactILAssemblyRef (ctok, assref) =
+ member tcResolution.TryFindByExactILAssemblyRef (ctok, assemblyRef) =
results |> List.tryFind (fun ar->
let r = ar.GetILAssemblyRef(ctok, tcConfig.reduceMemoryUsage, tcConfig.tryGetMetadataSnapshot) |> Cancellable.runWithoutCancellation
- r = assref)
+ r = assemblyRef)
/// This doesn't need to be cancellable, it is only used by F# Interactive
member tcResolution.TryFindBySimpleAssemblyName (ctok, simpleAssemName) =
@@ -4026,11 +4046,11 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
| ResolvedImportedAssembly(importedAssembly) -> ResolvedCcu(importedAssembly.FSharpViewOfMetadata)
| UnresolvedImportedAssembly(assemblyName) -> UnresolvedCcu(assemblyName)
- member tcImports.FindCcuFromAssemblyRef(ctok, m, assref:ILAssemblyRef) =
+ member tcImports.FindCcuFromAssemblyRef(ctok, m, assemblyRef:ILAssemblyRef) =
CheckDisposed()
- match tcImports.FindCcuInfo(ctok, m, assref.Name, lookupOnly=false) with
+ match tcImports.FindCcuInfo(ctok, m, assemblyRef.Name, lookupOnly=false) with
| ResolvedImportedAssembly(importedAssembly) -> ResolvedCcu(importedAssembly.FSharpViewOfMetadata)
- | UnresolvedImportedAssembly _ -> UnresolvedCcu(assref.QualifiedName)
+ | UnresolvedImportedAssembly _ -> UnresolvedCcu(assemblyRef.QualifiedName)
#if !NO_EXTENSIONTYPING
@@ -4641,8 +4661,8 @@ type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResoluti
resolutions.TryFindBySimpleAssemblyName (ctok, simpleAssemName) |> Option.map (fun r -> r.resolvedPath)
/// This doesn't need to be cancellable, it is only used by F# Interactive
- member tcImports.TryFindExistingFullyQualifiedPathByExactAssemblyRef(ctok, assref:ILAssemblyRef) : string option =
- resolutions.TryFindByExactILAssemblyRef (ctok, assref) |> Option.map (fun r -> r.resolvedPath)
+ member tcImports.TryFindExistingFullyQualifiedPathByExactAssemblyRef(ctok, assemblyRef:ILAssemblyRef) : string option =
+ resolutions.TryFindByExactILAssemblyRef (ctok, assemblyRef) |> Option.map (fun r -> r.resolvedPath)
member tcImports.TryResolveAssemblyReference(ctok, assemblyReference:AssemblyReference, mode:ResolveAssemblyReferenceMode) : OperationResult =
let tcConfig = tcConfigP.Get(ctok)
@@ -5432,9 +5452,12 @@ let TypeCheckOneInputEventually (checkForErrors, tcConfig:TcConfig, tcImports:Tc
if Zset.contains qualNameOfFile tcState.tcsRootImpls then
errorR(Error(FSComp.SR.buildImplementationAlreadyGivenDetail(qualNameOfFile.Text), m))
+ let conditionalDefines =
+ if tcConfig.noConditionalErasure then None else Some (tcConfig.conditionalCompilationDefines)
+
// Typecheck the signature file
let! (tcEnv, sigFileType, createsGeneratedProvidedTypes) =
- TypeCheckOneSigFile (tcGlobals, tcState.tcsNiceNameGen, amap, tcState.tcsCcu, checkForErrors, tcConfig.conditionalCompilationDefines, tcSink, tcConfig.internalTestSpanStackReferring) tcState.tcsTcSigEnv file
+ TypeCheckOneSigFile (tcGlobals, tcState.tcsNiceNameGen, amap, tcState.tcsCcu, checkForErrors, conditionalDefines, tcSink, tcConfig.internalTestSpanStackReferring) tcState.tcsTcSigEnv file
let rootSigs = Zmap.add qualNameOfFile sigFileType tcState.tcsRootSigs
@@ -5469,9 +5492,12 @@ let TypeCheckOneInputEventually (checkForErrors, tcConfig:TcConfig, tcImports:Tc
let tcImplEnv = tcState.tcsTcImplEnv
+ let conditionalDefines =
+ if tcConfig.noConditionalErasure then None else Some (tcConfig.conditionalCompilationDefines)
+
// Typecheck the implementation file
let! topAttrs, implFile, _implFileHiddenType, tcEnvAtEnd, createsGeneratedProvidedTypes =
- TypeCheckOneImplFile (tcGlobals, tcState.tcsNiceNameGen, amap, tcState.tcsCcu, checkForErrors, tcConfig.conditionalCompilationDefines, tcSink, tcConfig.internalTestSpanStackReferring) tcImplEnv rootSigOpt file
+ TypeCheckOneImplFile (tcGlobals, tcState.tcsNiceNameGen, amap, tcState.tcsCcu, checkForErrors, conditionalDefines, tcSink, tcConfig.internalTestSpanStackReferring) tcImplEnv rootSigOpt file
let hadSig = rootSigOpt.IsSome
let implFileSigType = SigTypeOfImplFile implFile
diff --git a/src/fsharp/CompileOps.fsi b/src/fsharp/CompileOps.fsi
index eb371fa5927..9ee74ee9930 100755
--- a/src/fsharp/CompileOps.fsi
+++ b/src/fsharp/CompileOps.fsi
@@ -59,12 +59,13 @@ 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: IDictionary> -> Set -> string -> Ast.QualifiedNameOfFile -> Ast.QualifiedNameOfFile
+/// State used to de-deuplicate module names along a list of file names
+type ModuleNamesDict = Map>
/// Checks if a ParsedInput is using a module name that was already given and deduplicates the name if needed.
-val DeduplicateParsedInputModuleName: IDictionary> -> Ast.ParsedInput -> Ast.ParsedInput
+val DeduplicateParsedInputModuleName: ModuleNamesDict -> Ast.ParsedInput -> Ast.ParsedInput * ModuleNamesDict
+/// Parse a single input (A signature file or implementation file)
val ParseInput: (UnicodeLexing.Lexbuf -> Parser.token) * ErrorLogger * UnicodeLexing.Lexbuf * string option * string * isLastCompiland:(bool * bool) -> Ast.ParsedInput
//----------------------------------------------------------------------------
@@ -366,6 +367,9 @@ type TcConfigBuilder =
/// if true - 'let mutable x = Span.Empty', the value 'x' is a stack referring span. Used for internal testing purposes only until we get true stack spans.
mutable internalTestSpanStackReferring : bool
+
+ /// Prevent erasure of conditional attributes and methods so tooling is able analyse them.
+ mutable noConditionalErasure: bool
}
static member Initial: TcConfigBuilder
diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs
index 6ae18644dea..344c0e1412a 100644
--- a/src/fsharp/CompileOptions.fs
+++ b/src/fsharp/CompileOptions.fs
@@ -848,8 +848,8 @@ let testFlag tcConfigB =
| str -> warning(Error(FSComp.SR.optsUnknownArgumentToTheTestSwitch(str),rangeCmdArgs))), None,
None)
-// not shown in fsc.exe help, no warning on use, motivation is for use from VS
-let vsSpecificFlags (tcConfigB: TcConfigBuilder) =
+// Not shown in fsc.exe help, no warning on use, motivation is for use from tooling.
+let editorSpecificFlags (tcConfigB: TcConfigBuilder) =
[ CompilerOption("vserrors", tagNone, OptionUnit (fun () -> tcConfigB.errorStyle <- ErrorStyle.VSErrors), None, None)
CompilerOption("validate-type-providers", tagNone, OptionUnit (id), None, None) // preserved for compatibility's sake, no longer has any effect
CompilerOption("LCID", tagInt, OptionInt ignore, None, None)
@@ -857,7 +857,8 @@ let vsSpecificFlags (tcConfigB: TcConfigBuilder) =
CompilerOption("sqmsessionguid", tagNone, OptionString ignore, None, None)
CompilerOption("gccerrors", tagNone, OptionUnit (fun () -> tcConfigB.errorStyle <- ErrorStyle.GccErrors), None, None)
CompilerOption("exename", tagNone, OptionString (fun s -> tcConfigB.exename <- Some(s)), None, None)
- CompilerOption("maxerrors", tagInt, OptionInt (fun n -> tcConfigB.maxErrors <- n), None, None) ]
+ CompilerOption("maxerrors", tagInt, OptionInt (fun n -> tcConfigB.maxErrors <- n), None, None)
+ CompilerOption("noconditionalerasure", tagNone, OptionUnit (fun () -> tcConfigB.noConditionalErasure <- true), None, None) ]
let internalFlags (tcConfigB:TcConfigBuilder) =
[
@@ -896,7 +897,7 @@ let internalFlags (tcConfigB:TcConfigBuilder) =
CompilerOption("alwayscallvirt",tagNone,OptionSwitch(callVirtSwitch tcConfigB),Some(InternalCommandLineOption("alwayscallvirt",rangeCmdArgs)), None)
CompilerOption("nodebugdata",tagNone, OptionUnit (fun () -> tcConfigB.noDebugData<-true),Some(InternalCommandLineOption("--nodebugdata",rangeCmdArgs)), None)
testFlag tcConfigB ] @
- vsSpecificFlags tcConfigB @
+ editorSpecificFlags tcConfigB @
[ CompilerOption("jit", tagNone, OptionSwitch (jitoptimizeSwitch tcConfigB), Some(InternalCommandLineOption("jit", rangeCmdArgs)), None)
CompilerOption("localoptimize", tagNone, OptionSwitch(localoptimizeSwitch tcConfigB),Some(InternalCommandLineOption("localoptimize", rangeCmdArgs)), None)
CompilerOption("splitting", tagNone, OptionSwitch(splittingSwitch tcConfigB),Some(InternalCommandLineOption("splitting", rangeCmdArgs)), None)
diff --git a/src/fsharp/ConstraintSolver.fs b/src/fsharp/ConstraintSolver.fs
index 869d0dc31a3..1cd69a223fa 100644
--- a/src/fsharp/ConstraintSolver.fs
+++ b/src/fsharp/ConstraintSolver.fs
@@ -227,6 +227,7 @@ let rec occursCheck g un ty =
match stripTyEqns g ty with
| TType_ucase(_, l)
| TType_app (_, l)
+ | TType_anon(_, l)
| TType_tuple (_, l) -> List.exists (occursCheck g un) l
| TType_fun (d, r) -> occursCheck g un d || occursCheck g un r
| TType_var r -> typarEq un r
@@ -301,6 +302,7 @@ type TraitConstraintSolution =
| TTraitBuiltIn
| TTraitSolved of MethInfo * TypeInst
| TTraitSolvedRecdProp of RecdFieldInfo * bool
+ | TTraitSolvedAnonRecdProp of AnonRecdTypeInfo * TypeInst * int
let BakedInTraitConstraintNames =
[ "op_Division" ; "op_Multiply"; "op_Addition"
@@ -471,11 +473,14 @@ and SolveTypStaticReq (csenv:ConstraintSolverEnv) trace req ty =
match stripTyparEqns ty with
| TType_measure ms ->
let vs = ListMeasureVarOccsWithNonZeroExponents ms
- IterateD (fun ((tpr:Typar), _) -> SolveTypStaticReqTypar csenv trace req tpr) vs
+ trackErrors {
+ for (tpr, _) in vs do
+ return! SolveTypStaticReqTypar csenv trace req tpr
+ }
| _ ->
match tryAnyParTy csenv.g ty with
- | Some tpr -> SolveTypStaticReqTypar csenv trace req tpr
- | None -> CompleteD
+ | ValueSome tpr -> SolveTypStaticReqTypar csenv trace req tpr
+ | ValueNone -> CompleteD
let TransactDynamicReq (trace:OptionalTrace) (tpr:Typar) req =
let orig = tpr.DynamicReq
@@ -487,7 +492,7 @@ let SolveTypDynamicReq (csenv:ConstraintSolverEnv) trace req ty =
| TyparDynamicReq.No -> CompleteD
| TyparDynamicReq.Yes ->
match tryAnyParTy csenv.g ty with
- | Some tpr when tpr.DynamicReq <> TyparDynamicReq.Yes ->
+ | ValueSome tpr when tpr.DynamicReq <> TyparDynamicReq.Yes ->
TransactDynamicReq trace tpr TyparDynamicReq.Yes
| _ -> CompleteD
@@ -499,25 +504,27 @@ let TransactIsCompatFlex (trace:OptionalTrace) (tpr:Typar) req =
let SolveTypIsCompatFlex (csenv:ConstraintSolverEnv) trace req ty =
if req then
match tryAnyParTy csenv.g ty with
- | Some tpr when not tpr.IsCompatFlex -> TransactIsCompatFlex trace tpr req
+ | ValueSome tpr when not tpr.IsCompatFlex -> TransactIsCompatFlex trace tpr req
| _ -> CompleteD
else
CompleteD
-let SubstMeasureWarnIfRigid (csenv:ConstraintSolverEnv) trace (v:Typar) ms =
+let SubstMeasureWarnIfRigid (csenv:ConstraintSolverEnv) trace (v:Typar) ms = trackErrors {
if v.Rigidity.WarnIfUnified && not (isAnyParTy csenv.g (TType_measure ms)) then
// NOTE: we grab the name eagerly to make sure the type variable prints as a type variable
- let tpnmOpt = if v.IsCompilerGenerated then None else Some v.Name
- SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms) ++ (fun () ->
+ let tpnmOpt = if v.IsCompilerGenerated then None else Some v.Name
+ do! SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms)
SubstMeasure v ms
- WarnD(NonRigidTypar(csenv.DisplayEnv, tpnmOpt, v.Range, TType_measure (Measure.Var v), TType_measure ms, csenv.m)))
+ return! WarnD(NonRigidTypar(csenv.DisplayEnv, tpnmOpt, v.Range, TType_measure (Measure.Var v), TType_measure ms, csenv.m))
else
// Propagate static requirements from 'tp' to 'ty'
- SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms) ++ (fun () ->
+ do! SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms)
SubstMeasure v ms
if v.Rigidity = TyparRigidity.Anon && measureEquiv csenv.g ms Measure.One then
- WarnD(Error(FSComp.SR.csCodeLessGeneric(), v.Range))
- else CompleteD)
+ return! WarnD(Error(FSComp.SR.csCodeLessGeneric(), v.Range))
+ else
+ ()
+ }
/// Imperatively unify the unit-of-measure expression ms against 1.
/// There are three cases
@@ -576,6 +583,7 @@ let rec SimplifyMeasuresInType g resultFirst ((generalizable, generalized) as pa
match stripTyparEqns ty with
| TType_ucase(_, l)
| TType_app (_, l)
+ | TType_anon (_,l)
| TType_tuple (_, l) -> SimplifyMeasuresInTypes g param l
| TType_fun (d, r) -> if resultFirst then SimplifyMeasuresInTypes g param [r;d] else SimplifyMeasuresInTypes g param [d;r]
@@ -613,6 +621,7 @@ let rec GetMeasureVarGcdInType v ty =
match stripTyparEqns ty with
| TType_ucase(_, l)
| TType_app (_, l)
+ | TType_anon (_,l)
| TType_tuple (_, l) -> GetMeasureVarGcdInTypes v l
| TType_fun (d, r) -> GcdRational (GetMeasureVarGcdInType v d) (GetMeasureVarGcdInType v r)
@@ -687,8 +696,8 @@ let CheckWarnIfRigid (csenv:ConstraintSolverEnv) ty1 (r:Typar) ty =
if not r.Rigidity.WarnIfUnified then CompleteD else
let needsWarning =
match tryAnyParTy g ty with
- | None -> true
- | Some tp2 ->
+ | ValueNone -> true
+ | ValueSome tp2 ->
not tp2.IsCompilerGenerated &&
(r.IsCompilerGenerated ||
// exclude this warning for two identically named user-specified type parameters, e.g. from different mutually recursive functions or types
@@ -703,21 +712,17 @@ let CheckWarnIfRigid (csenv:ConstraintSolverEnv) ty1 (r:Typar) ty =
/// Add the constraint "ty1 = ty" to the constraint problem, where ty1 is a type variable.
/// Propagate all effects of adding this constraint, e.g. to solve other variables
-let rec SolveTyparEqualsType (csenv:ConstraintSolverEnv) ndeep m2 (trace:OptionalTrace) ty1 ty =
+let rec SolveTyparEqualsType (csenv:ConstraintSolverEnv) ndeep m2 (trace:OptionalTrace) ty1 ty = trackErrors {
let m = csenv.m
-
- DepthCheck ndeep m ++ (fun () ->
+ do! DepthCheck ndeep m
match ty1 with
| TType_var r | TType_measure (Measure.Var r) ->
// The types may still be equivalent due to abbreviations, which we are trying not to eliminate
- if typeEquiv csenv.g ty1 ty then CompleteD else
-
+ if typeEquiv csenv.g ty1 ty then () else
// The famous 'occursCheck' check to catch "infinite types" like 'a = list<'a> - see also https://github.com/Microsoft/visualfsharp/issues/1170
- if occursCheck csenv.g r ty then ErrorD (ConstraintSolverInfiniteTypes(csenv.eContextInfo, csenv.DisplayEnv, ty1, ty, m, m2)) else
-
+ if occursCheck csenv.g r ty then return! ErrorD (ConstraintSolverInfiniteTypes(csenv.eContextInfo, csenv.DisplayEnv, ty1, ty, m, m2)) else
// Note: warn _and_ continue!
- CheckWarnIfRigid csenv ty1 r ty ++ (fun () ->
-
+ do! CheckWarnIfRigid csenv ty1 r ty
// Record the solution before we solve the constraints, since
// We may need to make use of the equation when solving the constraints.
// Record a entry in the undo trace if one is provided
@@ -726,40 +731,39 @@ let rec SolveTyparEqualsType (csenv:ConstraintSolverEnv) ndeep m2 (trace:Optiona
(* dprintf "setting typar %d to type %s at %a\n" r.Stamp ((DebugPrint.showType ty)) outputRange m; *)
// Only solve constraints if this is not an error var
- if r.IsFromError then CompleteD else
-
+ if r.IsFromError then () else
// Check to see if this type variable is relevant to any trait constraints.
// If so, re-solve the relevant constraints.
- (if csenv.SolverState.ExtraCxs.ContainsKey r.Stamp then
- RepeatWhileD ndeep (fun ndeep -> SolveRelevantMemberConstraintsForTypar csenv ndeep false trace r)
- else
- CompleteD) ++ (fun _ ->
-
+ if csenv.SolverState.ExtraCxs.ContainsKey r.Stamp then
+ do! RepeatWhileD ndeep (fun ndeep -> SolveRelevantMemberConstraintsForTypar csenv ndeep false trace r)
// Re-solve the other constraints associated with this type variable
- solveTypMeetsTyparConstraints csenv ndeep m2 trace ty r))
+ return! solveTypMeetsTyparConstraints csenv ndeep m2 trace ty r
- | _ -> failwith "SolveTyparEqualsType")
+ | _ -> failwith "SolveTyparEqualsType"
+ }
/// Apply the constraints on 'typar' to the type 'ty'
-and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty (r: Typar) =
+and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty (r: Typar) = trackErrors {
let g = csenv.g
// Propagate compat flex requirements from 'tp' to 'ty'
- SolveTypIsCompatFlex csenv trace r.IsCompatFlex ty ++ (fun () ->
+ do! SolveTypIsCompatFlex csenv trace r.IsCompatFlex ty
// Propagate dynamic requirements from 'tp' to 'ty'
- SolveTypDynamicReq csenv trace r.DynamicReq ty ++ (fun () ->
+ do! SolveTypDynamicReq csenv trace r.DynamicReq ty
// Propagate static requirements from 'tp' to 'ty'
- SolveTypStaticReq csenv trace r.StaticReq ty ++ (fun () ->
+ do! SolveTypStaticReq csenv trace r.StaticReq ty
// Solve constraints on 'tp' w.r.t. 'ty'
- r.Constraints |> IterateD (function
+ for e in r.Constraints do
+ do!
+ match e with
| TyparConstraint.DefaultsTo (priority, dty, m) ->
if typeEquiv g ty dty then
CompleteD
else
match tryDestTyparTy g ty with
- | None -> CompleteD
- | Some destTypar ->
+ | ValueNone -> CompleteD
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.DefaultsTo(priority, dty, m))
| TyparConstraint.SupportsNull m2 -> SolveTypeSupportsNull csenv ndeep m2 trace ty
@@ -774,10 +778,18 @@ and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty
| TyparConstraint.SimpleChoice(tys, m2) -> SolveTypeChoice csenv ndeep m2 trace ty tys
| TyparConstraint.CoercesTo(ty2, m2) -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m2 trace None ty2 ty
| TyparConstraint.MayResolveMember(traitInfo, m2) ->
- SolveMemberConstraint csenv false false ndeep m2 trace traitInfo ++ (fun _ -> CompleteD)
- ))))
+ SolveMemberConstraint csenv false false ndeep m2 trace traitInfo |> OperationResult.ignore
+ }
+and SolveAnonInfoEqualsAnonInfo (csenv:ConstraintSolverEnv) m2 (anonInfo1: AnonRecdTypeInfo) (anonInfo2: AnonRecdTypeInfo) =
+ if evalTupInfoIsStruct anonInfo1.TupInfo <> evalTupInfoIsStruct anonInfo2.TupInfo then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m,m2)) else
+ (match anonInfo1.Assembly, anonInfo2.Assembly with
+ | ccu1, ccu2 -> if not (ccuEq ccu1 ccu2) then ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdCcuMismatch(ccu1.AssemblyName, ccu2.AssemblyName), csenv.m,m2)) else ResultD ()
+ ) ++ (fun () ->
+ if not (anonInfo1.SortedNames = anonInfo2.SortedNames) then ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdFieldNameMismatch(sprintf "%A" (Array.toList anonInfo1.SortedNames), sprintf "%A" (Array.toList anonInfo2.SortedNames)), csenv.m,m2)) else
+ ResultD ())
+
/// Add the constraint "ty1 = ty2" to the constraint problem.
/// Propagate all effects of adding this constraint, e.g. to solve type variables
and SolveTypeEqualsType (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) (cxsln:(TraitConstraintInfo * TraitConstraintSln) option) ty1 ty2 =
@@ -818,6 +830,9 @@ and SolveTypeEqualsType (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalTra
| TType_tuple (tupInfo1, l1) , TType_tuple (tupInfo2, l2) ->
if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2)) else
SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2
+ | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) ->
+ SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2 ++ (fun () ->
+ SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2)
| TType_fun (d1, r1) , TType_fun (d2, r2) -> SolveFunTypeEqn csenv ndeep m2 trace None d1 d2 r1 r2
| TType_measure ms1 , TType_measure ms2 -> UnifyMeasures csenv trace ms1 ms2
| TType_forall(tps1, rty1), TType_forall(tps2, rty2) ->
@@ -854,9 +869,10 @@ and SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln origl1 origl2 =
ErrorD(ConstraintSolverTupleDiffLengths(csenv.DisplayEnv, origl1, origl2, csenv.m, m2))
loop origl1 origl2
-and SolveFunTypeEqn csenv ndeep m2 trace cxsln d1 d2 r1 r2 =
- SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln d1 d2 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln r1 r2)
+and SolveFunTypeEqn csenv ndeep m2 trace cxsln d1 d2 r1 r2 = trackErrors {
+ do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln d1 d2
+ return! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln r1 r2
+ }
// ty1: expected
// ty2: actual
@@ -890,6 +906,9 @@ and SolveTypeSubsumesType (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalT
| TType_tuple (tupInfo1, l1) , TType_tuple (tupInfo2, l2) ->
if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2)) else
SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2 (* nb. can unify since no variance *)
+ | TType_anon (anonInfo1, l1), TType_anon (anonInfo2, l2) ->
+ SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2 ++ (fun () ->
+ SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2) (* nb. can unify since no variance *)
| TType_fun (d1, r1) , TType_fun (d2, r2) -> SolveFunTypeEqn csenv ndeep m2 trace cxsln d1 d2 r1 r2 (* nb. can unify since no variance *)
| TType_measure ms1, TType_measure ms2 -> UnifyMeasures csenv trace ms1 ms2
@@ -902,13 +921,14 @@ and SolveTypeSubsumesType (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalT
// Special subsumption rule for byref tags
| TType_app (tc1, l1) , TType_app (tc2, l2) when tyconRefEq g tc1 tc2 && g.byref2_tcr.CanDeref && tyconRefEq g g.byref2_tcr tc1 ->
match l1, l2 with
- | [ h1; tag1 ], [ h2; tag2 ] ->
- SolveTypeEqualsType csenv ndeep m2 trace None h1 h2 ++ (fun () ->
+ | [ h1; tag1 ], [ h2; tag2 ] -> trackErrors {
+ do! SolveTypeEqualsType csenv ndeep m2 trace None h1 h2
match stripTyEqnsA csenv.g canShortcut tag1, stripTyEqnsA csenv.g canShortcut tag2 with
| TType_app(tagc1, []), TType_app(tagc2, [])
when (tyconRefEq g tagc2 g.byrefkind_InOut_tcr &&
- (tyconRefEq g tagc1 g.byrefkind_In_tcr || tyconRefEq g tagc1 g.byrefkind_Out_tcr) ) -> CompleteD
- | _ -> SolveTypeEqualsType csenv ndeep m2 trace cxsln tag1 tag2)
+ (tyconRefEq g tagc1 g.byrefkind_In_tcr || tyconRefEq g tagc1 g.byrefkind_Out_tcr) ) -> ()
+ | _ -> return! SolveTypeEqualsType csenv ndeep m2 trace cxsln tag1 tag2
+ }
| _ -> SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2
| TType_app (tc1, l1) , TType_app (tc2, l2) when tyconRefEq g tc1 tc2 ->
@@ -988,16 +1008,16 @@ and SolveDimensionlessNumericType (csenv:ConstraintSolverEnv) ndeep m2 trace ty
/// We pretend int and other types support a number of operators. In the actual IL for mscorlib they
/// don't, however the type-directed static optimization rules in the library code that makes use of this
/// will deal with the problem.
-and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload permitWeakResolution ndeep m2 trace (TTrait(tys, nm, memFlags, argtys, rty, sln)): OperationResult =
+and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload permitWeakResolution ndeep m2 trace (TTrait(tys, nm, memFlags, argtys, rty, sln)): OperationResult = trackErrors {
// Do not re-solve if already solved
- if sln.Value.IsSome then ResultD true else
+ if sln.Value.IsSome then return true else
let g = csenv.g
let m = csenv.m
let amap = csenv.amap
let aenv = csenv.EquivEnv
let denv = csenv.DisplayEnv
let ndeep = ndeep + 1
- DepthCheck ndeep m ++ (fun () ->
+ do! DepthCheck ndeep m
// Remove duplicates from the set of types in the support
let tys = ListSet.setify (typeAEquiv g aenv) tys
@@ -1008,19 +1028,19 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
// Assert the object type if the constraint is for an instance member
if memFlags.IsInstance then
match tys, argtys with
- | [ty], (h :: _) -> SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace h ty
- | _ -> ErrorD (ConstraintSolverError(FSComp.SR.csExpectedArguments(), m, m2))
- else CompleteD
- ++ (fun () ->
-
+ | [ty], (h :: _) -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace h ty
+ | _ -> do! ErrorD (ConstraintSolverError(FSComp.SR.csExpectedArguments(), m, m2))
// Trait calls are only supported on pseudo type (variables)
- tys |> IterateD (SolveTypStaticReq csenv trace HeadTypeStaticReq)) ++ (fun () ->
+ for e in tys do
+ do! SolveTypStaticReq csenv trace HeadTypeStaticReq e
let argtys = if memFlags.IsInstance then List.tail argtys else argtys
let minfos = GetRelevantMethodsForTrait csenv permitWeakResolution nm traitInfo
- match minfos, tys, memFlags.IsInstance, nm, argtys with
+ let! res =
+ trackErrors {
+ match minfos, tys, memFlags.IsInstance, nm, argtys with
| _, _, false, ("op_Division" | "op_Multiply"), [argty1;argty2]
when
// This simulates the existence of
@@ -1063,153 +1083,155 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
checkRuleAppliesInPreferenceToMethods argty2 argty1) ->
match GetMeasureOfType g argty1 with
- | Some (tcref, ms1) ->
+ | Some (tcref, ms1) ->
let ms2 = freshMeasure ()
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 (mkAppTy tcref [TType_measure ms2]) ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))]) ++ (fun () ->
- ResultD TTraitBuiltIn))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 (mkAppTy tcref [TType_measure ms2])
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))])
+ return TTraitBuiltIn
| _ ->
match GetMeasureOfType g argty2 with
- | Some (tcref, ms2) ->
+ | Some (tcref, ms2) ->
let ms1 = freshMeasure ()
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty1 (mkAppTy tcref [TType_measure ms1]) ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))]) ++ (fun () ->
- ResultD TTraitBuiltIn))
- | _ ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- ResultD TTraitBuiltIn))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty1 (mkAppTy tcref [TType_measure ms1])
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure (Measure.Prod(ms1, if nm = "op_Multiply" then ms2 else Measure.Inv ms2))])
+ return TTraitBuiltIn
+ | _ ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ return TTraitBuiltIn
| _, _, false, ("op_Addition" | "op_Subtraction" | "op_Modulus"), [argty1;argty2]
when // Ignore any explicit +/- overloads from any basic integral types
(minfos |> List.forall (fun minfo -> isIntegerTy g minfo.ApparentEnclosingType ) &&
( (IsNumericOrIntegralEnumType g argty1 || (nm = "op_Addition" && (isCharTy g argty1 || isStringTy g argty1))) && (permitWeakResolution || not (isTyparTy g argty2))
- || (IsNumericOrIntegralEnumType g argty2 || (nm = "op_Addition" && (isCharTy g argty2 || isStringTy g argty2))) && (permitWeakResolution || not (isTyparTy g argty1)))) ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- ResultD TTraitBuiltIn))
+ || (IsNumericOrIntegralEnumType g argty2 || (nm = "op_Addition" && (isCharTy g argty2 || isStringTy g argty2))) && (permitWeakResolution || not (isTyparTy g argty1)))) ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ return TTraitBuiltIn
| _, _, false, ("op_LessThan" | "op_LessThanOrEqual" | "op_GreaterThan" | "op_GreaterThanOrEqual" | "op_Equality" | "op_Inequality" ), [argty1;argty2]
when // Ignore any explicit overloads from any basic integral types
(minfos |> List.forall (fun minfo -> isIntegerTy g minfo.ApparentEnclosingType ) &&
( (IsRelationalType g argty1 && (permitWeakResolution || not (isTyparTy g argty2)))
- || (IsRelationalType g argty2 && (permitWeakResolution || not (isTyparTy g argty1))))) ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty g.bool_ty ++ (fun () ->
- ResultD TTraitBuiltIn))
+ || (IsRelationalType g argty2 && (permitWeakResolution || not (isTyparTy g argty1))))) ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty g.bool_ty
+ return TTraitBuiltIn
// We pretend for uniformity that the numeric types have a static property called Zero and One
// As with constants, only zero is polymorphic in its units
| [], [ty], false, "get_Zero", []
- when IsNumericType g ty ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty ty ++ (fun () ->
- ResultD TTraitBuiltIn)
+ when IsNumericType g ty ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty ty
+ return TTraitBuiltIn
| [], [ty], false, "get_One", []
- when IsNumericType g ty || isCharTy g ty ->
- SolveDimensionlessNumericType csenv ndeep m2 trace ty ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty ty ++ (fun () ->
- ResultD TTraitBuiltIn))
+ when IsNumericType g ty || isCharTy g ty ->
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty ty
+ return TTraitBuiltIn
| [], _, false, ("DivideByInt"), [argty1;argty2]
- when isFpTy g argty1 || isDecimalTy g argty1 ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 g.int_ty ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- ResultD TTraitBuiltIn))
+ when isFpTy g argty1 || isDecimalTy g argty1 ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 g.int_ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ return TTraitBuiltIn
// We pretend for uniformity that the 'string' and 'array' types have an indexer property called 'Item'
| [], [ty], true, ("get_Item"), [argty1]
- when isStringTy g ty ->
+ when isStringTy g ty ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty1 g.int_ty ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty g.char_ty ++ (fun () ->
- ResultD TTraitBuiltIn))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty1 g.int_ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty g.char_ty
+ return TTraitBuiltIn
| [], [ty], true, ("get_Item"), argtys
- when isArrayTy g ty ->
+ when isArrayTy g ty ->
- (if rankOfArrayTy g ty <> argtys.Length then ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argtys.Length), m, m2)) else CompleteD) ++ (fun () ->
- (argtys |> IterateD (fun argty -> SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty g.int_ty)) ++ (fun () ->
+ if rankOfArrayTy g ty <> argtys.Length then do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argtys.Length), m, m2))
+ for argty in argtys do
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty g.int_ty
let ety = destArrayTy g ty
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty ety ++ (fun () ->
- ResultD TTraitBuiltIn)))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty ety
+ return TTraitBuiltIn
| [], [ty], true, ("set_Item"), argtys
- when isArrayTy g ty ->
+ when isArrayTy g ty ->
- (if rankOfArrayTy g ty <> argtys.Length - 1 then ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argtys.Length - 1)), m, m2)) else CompleteD) ++ (fun () ->
+ if rankOfArrayTy g ty <> argtys.Length - 1 then do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argtys.Length - 1)), m, m2))
let argtys, ety = List.frontAndBack argtys
- (argtys |> IterateD (fun argty -> SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty g.int_ty)) ++ (fun () ->
+ for argty in argtys do
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty g.int_ty
let etys = destArrayTy g ty
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ety etys ++ (fun () ->
- ResultD TTraitBuiltIn)))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ety etys
+ return TTraitBuiltIn
| [], _, false, ("op_BitwiseAnd" | "op_BitwiseOr" | "op_ExclusiveOr"), [argty1;argty2]
when (isIntegerOrIntegerEnumTy g argty1 || (isEnumTy g argty1)) && (permitWeakResolution || not (isTyparTy g argty2))
- || (isIntegerOrIntegerEnumTy g argty2 || (isEnumTy g argty2)) && (permitWeakResolution || not (isTyparTy g argty1)) ->
+ || (isIntegerOrIntegerEnumTy g argty2 || (isEnumTy g argty2)) && (permitWeakResolution || not (isTyparTy g argty1)) ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- SolveDimensionlessNumericType csenv ndeep m2 trace argty1 ++ (fun () ->
- ResultD TTraitBuiltIn)));
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argty1
+ return TTraitBuiltIn
| [], _, false, ("op_LeftShift" | "op_RightShift"), [argty1;argty2]
- when isIntegerOrIntegerEnumTy g argty1 ->
+ when isIntegerOrIntegerEnumTy g argty1 ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 g.int_ty ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- SolveDimensionlessNumericType csenv ndeep m2 trace argty1 ++ (fun () ->
- ResultD TTraitBuiltIn)))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 g.int_ty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argty1
+ return TTraitBuiltIn
| _, _, false, ("op_UnaryPlus"), [argty]
- when IsNumericOrIntegralEnumType g argty ->
+ when IsNumericOrIntegralEnumType g argty ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () ->
- ResultD TTraitBuiltIn)
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty
+ return TTraitBuiltIn
| _, _, false, ("op_UnaryNegation"), [argty]
- when isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty ->
+ when isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () ->
- ResultD TTraitBuiltIn)
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty
+ return TTraitBuiltIn
| _, _, true, ("get_Sign"), []
- when (let argty = tys.Head in isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty) ->
+ when (let argty = tys.Head in isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty) ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty g.int32_ty ++ (fun () ->
- ResultD TTraitBuiltIn)
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty g.int32_ty
+ return TTraitBuiltIn
| _, _, false, ("op_LogicalNot" | "op_OnesComplement"), [argty]
- when isIntegerOrIntegerEnumTy g argty ->
+ when isIntegerOrIntegerEnumTy g argty ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () ->
- SolveDimensionlessNumericType csenv ndeep m2 trace argty ++ (fun () ->
- ResultD TTraitBuiltIn))
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argty
+ return TTraitBuiltIn
| _, _, false, ("Abs"), [argty]
- when isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty ->
+ when isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () ->
- ResultD TTraitBuiltIn)
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty
+ return TTraitBuiltIn
| _, _, false, "Sqrt", [argty1]
when isFpTy g argty1 ->
match GetMeasureOfType g argty1 with
- | Some (tcref, _) ->
+ | Some (tcref, _) ->
let ms1 = freshMeasure ()
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty1 (mkAppTy tcref [TType_measure (Measure.Prod (ms1, ms1))]) ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure ms1]) ++ (fun () ->
- ResultD TTraitBuiltIn))
- | None ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- ResultD TTraitBuiltIn)
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty1 (mkAppTy tcref [TType_measure (Measure.Prod (ms1, ms1))])
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure ms1])
+ return TTraitBuiltIn
+ | None ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ return TTraitBuiltIn
| _, _, false, ("Sin" | "Cos" | "Tan" | "Sinh" | "Cosh" | "Tanh" | "Atan" | "Acos" | "Asin" | "Exp" | "Ceiling" | "Floor" | "Round" | "Truncate" | "Log10" | "Log" | "Sqrt"), [argty]
- when isFpTy g argty ->
+ when isFpTy g argty ->
- SolveDimensionlessNumericType csenv ndeep m2 trace argty ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () ->
- ResultD TTraitBuiltIn))
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argty
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty
+ return TTraitBuiltIn
| _, _, false, ("op_Explicit"), [argty]
when (// The input type.
@@ -1221,7 +1243,7 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
// Exclusion: No conversion from char to decimal
not (isCharTy g argty && isDecimalTy g rty)) ->
- ResultD TTraitBuiltIn
+ return TTraitBuiltIn
| _, _, false, ("op_Explicit"), [argty]
@@ -1230,23 +1252,23 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
// The output type
(isDecimalTy g rty)) ->
- ResultD TTraitBuiltIn
+ return TTraitBuiltIn
| [], _, false, "Pow", [argty1; argty2]
- when isFpTy g argty1 ->
+ when isFpTy g argty1 ->
- SolveDimensionlessNumericType csenv ndeep m2 trace argty1 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () ->
- ResultD TTraitBuiltIn)))
+ do! SolveDimensionlessNumericType csenv ndeep m2 trace argty1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ return TTraitBuiltIn
| _, _, false, ("Atan2"), [argty1; argty2]
- when isFpTy g argty1 ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () ->
+ when isFpTy g argty1 ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty2 argty1
match GetMeasureOfType g argty1 with
- | None -> SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
- | Some (tcref, _) -> SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure Measure.One])) ++ (fun () ->
- ResultD TTraitBuiltIn)
+ | None -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty argty1
+ | Some (tcref, _) -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure Measure.One])
+ return TTraitBuiltIn
| _ ->
// OK, this is not solved by a built-in constraint.
@@ -1275,16 +1297,31 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
else
None
+ let anonRecdPropSearch =
+ let isGetProp = nm.StartsWith "get_"
+ if isGetProp && memFlags.IsInstance then
+ let propName = nm.[4..]
+ let props =
+ tys |> List.choose (fun ty ->
+ match NameResolution.TryFindAnonRecdFieldOfType g ty propName with
+ | Some (NameResolution.Item.AnonRecdField(anonInfo, tinst, i, _)) -> Some (anonInfo, tinst, i)
+ | _ -> None)
+ match props with
+ | [ prop ] -> Some prop
+ | _ -> None
+ else
+ None
+
// Now check if there are no feasible solutions at all
- match minfos, recdPropSearch with
- | [], None when not (tys |> List.exists (isAnyParTy g)) ->
+ match minfos, recdPropSearch, anonRecdPropSearch with
+ | [], None, None when not (tys |> List.exists (isAnyParTy g)) ->
if tys |> List.exists (isFunTy g) then
- ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenFunction(DecompileOpName nm), m, m2))
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenFunction(DecompileOpName nm), m, m2))
elif tys |> List.exists (isAnyTupleTy g) then
- ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenTuple(DecompileOpName nm), m, m2))
+ return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenTuple(DecompileOpName nm), m, m2))
else
match nm, argtys with
- | "op_Explicit", [argty] -> ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion((NicePrint.prettyStringOfTy denv argty), (NicePrint.prettyStringOfTy denv rty)), m, m2))
+ | "op_Explicit", [argty] -> return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion((NicePrint.prettyStringOfTy denv argty), (NicePrint.prettyStringOfTy denv rty)), m, m2))
| _ ->
let tyString =
match tys with
@@ -1301,10 +1338,9 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
| _ ->
if tys.Length = 1 then FSComp.SR.csTypeDoesNotSupportOperator(tyString, opName)
else FSComp.SR.csTypesDoNotSupportOperator(tyString, opName)
- ErrorD(ConstraintSolverError(err, m, m2))
+ return! ErrorD(ConstraintSolverError(err, m, m2))
| _ ->
-
let dummyExpr = mkUnit g m
let calledMethGroup =
minfos
@@ -1319,42 +1355,49 @@ and SolveMemberConstraint (csenv:ConstraintSolverEnv) ignoreUnresolvedOverload p
let methOverloadResult, errors =
trace.CollectThenUndoOrCommit (fun (a, _) -> Option.isSome a) (fun trace -> ResolveOverloading csenv (WithTrace trace) nm ndeep (Some traitInfo) (0, 0) AccessibleFromEverywhere calledMethGroup false (Some rty))
- match recdPropSearch, methOverloadResult with
- | Some (rfinfo, isSetProp), None ->
+ match anonRecdPropSearch, recdPropSearch, methOverloadResult with
+ | Some (anonInfo, tinst, i), None, None ->
+ // OK, the constraint is solved by a record property. Assert that the return types match.
+ let rty2 = List.item i tinst
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty rty2
+ return TTraitSolvedAnonRecdProp(anonInfo, tinst, i)
+
+ | None, Some (rfinfo, isSetProp), None ->
// OK, the constraint is solved by a record property. Assert that the return types match.
let rty2 = if isSetProp then g.unit_ty else rfinfo.FieldType
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty rty2 ++ (fun () ->
- ResultD (TTraitSolvedRecdProp(rfinfo, isSetProp)))
- | None, Some (calledMeth:CalledMeth<_>) ->
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty rty2
+ return TTraitSolvedRecdProp(rfinfo, isSetProp)
+
+ | None, None, Some (calledMeth:CalledMeth<_>) ->
// OK, the constraint is solved.
let minfo = calledMeth.Method
- errors ++ (fun () ->
- let isInstance = minfo.IsInstance
- if isInstance <> memFlags.IsInstance then
+ do! errors
+ let isInstance = minfo.IsInstance
+ if isInstance <> memFlags.IsInstance then
+ return!
if isInstance then
ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsNotStatic((NicePrint.minimalStringOfType denv minfo.ApparentEnclosingType), (DecompileOpName nm), nm), m, m2 ))
else
ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsStatic((NicePrint.minimalStringOfType denv minfo.ApparentEnclosingType), (DecompileOpName nm), nm), m, m2 ))
- else
- CheckMethInfoAttributes g m None minfo ++ (fun () ->
- ResultD (TTraitSolved (minfo, calledMeth.CalledTyArgs))))
+ else
+ do! CheckMethInfoAttributes g m None minfo
+ return TTraitSolved (minfo, calledMeth.CalledTyArgs)
- | _ ->
+ | _ ->
let support = GetSupportOfMemberConstraint csenv traitInfo
let frees = GetFreeTyparsOfMemberConstraint csenv traitInfo
-
// If there's nothing left to learn then raise the errors
- (if (permitWeakResolution && isNil support) || isNil frees then errors
- // Otherwise re-record the trait waiting for canonicalization
- else AddMemberConstraint csenv ndeep m2 trace traitInfo support frees) ++ (fun () ->
+ if (permitWeakResolution && isNil support) || isNil frees then do! errors
+ // Otherwise re-record the trait waiting for canonicalization
+ else do! AddMemberConstraint csenv ndeep m2 trace traitInfo support frees
+ return!
match errors with
| ErrorResult (_, UnresolvedOverloading _) when not ignoreUnresolvedOverload && (not (nm = "op_Explicit" || nm = "op_Implicit")) -> ErrorD LocallyAbortOperationThatFailsToResolveOverload
- | _ -> ResultD TTraitUnsolved)
- )
- ++
- (fun res -> RecordMemberConstraintSolution csenv.SolverState m trace traitInfo res))
-
+ | _ -> ResultD TTraitUnsolved
+ }
+ return! RecordMemberConstraintSolution csenv.SolverState m trace traitInfo res
+ }
/// Record the solution to a member constraint in the mutable reference cell attached to
/// each member constraint.
@@ -1372,8 +1415,13 @@ and RecordMemberConstraintSolution css m trace traitInfo res =
TransactMemberConstraintSolution traitInfo trace BuiltInSln;
ResultD true
- | TTraitSolvedRecdProp (rfinfo, isSetProp) ->
- let sln = MemberConstraintSolutionOfRecdFieldInfo rfinfo isSetProp
+ | TTraitSolvedRecdProp (rfinfo, isSet) ->
+ let sln = FSRecdFieldSln(rfinfo.TypeInst,rfinfo.RecdFieldRef,isSet)
+ TransactMemberConstraintSolution traitInfo trace sln;
+ ResultD true
+
+ | TTraitSolvedAnonRecdProp (anonInfo, tinst, i) ->
+ let sln = FSAnonRecdFieldSln(anonInfo, tinst, i)
TransactMemberConstraintSolution traitInfo trace sln;
ResultD true
@@ -1418,9 +1466,6 @@ and MemberConstraintSolutionOfMethInfo css m minfo minst =
#endif
-and MemberConstraintSolutionOfRecdFieldInfo rfinfo isSet =
- FSRecdFieldSln(rfinfo.TypeInst, rfinfo.RecdFieldRef, isSet)
-
/// Write into the reference cell stored in the TAST and add to the undo trace if necessary
and TransactMemberConstraintSolution traitInfo (trace:OptionalTrace) sln =
let prev = traitInfo.Solution
@@ -1446,7 +1491,14 @@ and GetRelevantMethodsForTrait (csenv:ConstraintSolverEnv) permitWeakResolution
/// to a generic instantiation for an operator based on the right hand type.
let minfos = List.reduce (ListSet.unionFavourLeft MethInfo.MethInfosUseIdenticalDefinitions) minfos
+
+ /// Check that the available members aren't hiding a member from the parent (depth 1 only)
+ let relevantMinfos = minfos |> List.filter(fun minfo -> not minfo.IsDispatchSlot && not minfo.IsVirtual && minfo.IsInstance)
minfos
+ |> List.filter(fun minfo1 ->
+ not(minfo1.IsDispatchSlot &&
+ relevantMinfos
+ |> List.exists (fun minfo2 -> MethInfosEquivByNameAndSig EraseAll true csenv.g csenv.amap m minfo2 minfo1)))
else
[]
// The trait name "op_Explicit" also covers "op_Implicit", so look for that one too.
@@ -1458,7 +1510,7 @@ and GetRelevantMethodsForTrait (csenv:ConstraintSolverEnv) permitWeakResolution
/// The nominal support of the member constraint
and GetSupportOfMemberConstraint (csenv:ConstraintSolverEnv) (TTrait(tys, _, _, _, _, _)) =
- tys |> List.choose (tryAnyParTy csenv.g)
+ tys |> List.choose (tryAnyParTyOption csenv.g)
/// All the typars relevant to the member constraint *)
and GetFreeTyparsOfMemberConstraint (csenv:ConstraintSolverEnv) (TTrait(tys, _, _, argtys, rty, _)) =
@@ -1475,9 +1527,9 @@ and SolveRelevantMemberConstraints (csenv:ConstraintSolverEnv) ndeep permitWeakR
/// Normalize the typar
let ty = mkTyparTy tp
match tryAnyParTy csenv.g ty with
- | Some tp ->
+ | ValueSome tp ->
SolveRelevantMemberConstraintsForTypar csenv ndeep permitWeakResolution trace tp
- | None ->
+ | ValueNone ->
ResultD false))
and SolveRelevantMemberConstraintsForTypar (csenv:ConstraintSolverEnv) ndeep permitWeakResolution (trace:OptionalTrace) tp =
@@ -1518,7 +1570,10 @@ and AddMemberConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace traitInfo sup
// Associate the constraint with each type variable in the support, so if the type variable
// gets generalized then this constraint is attached at the binding site.
- support |> IterateD (fun tp -> AddConstraint csenv ndeep m2 trace tp (TyparConstraint.MayResolveMember(traitInfo, m2)))
+ trackErrors {
+ for tp in support do
+ do! AddConstraint csenv ndeep m2 trace tp (TyparConstraint.MayResolveMember(traitInfo, m2))
+ }
/// Record a constraint on an inference type variable.
@@ -1548,9 +1603,11 @@ and AddConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace tp newConstraint =
let rty1 = GetFSharpViewOfReturnType g rty1
let rty2 = GetFSharpViewOfReturnType g rty2
- Iterate2D (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace) argtys1 argtys2 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty1 rty2 ++ (fun () ->
- CompleteD))
+ trackErrors {
+ do! Iterate2D (SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace) argtys1 argtys2
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace rty1 rty2
+ ()
+ }
| (TyparConstraint.CoercesTo(ty1, _),
TyparConstraint.CoercesTo(ty2, _)) ->
@@ -1564,19 +1621,22 @@ and AddConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace tp newConstraint =
List.rev !res
let parents1 = collect ty1
let parents2 = collect ty2
- parents1 |> IterateD (fun ty1Parent ->
- parents2 |> IterateD (fun ty2Parent ->
- if not (HaveSameHeadType g ty1Parent ty2Parent) then CompleteD else
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1Parent ty2Parent))
+ trackErrors {
+ for ty1Parent in parents1 do
+ for ty2Parent in parents2 do
+ do! if not (HaveSameHeadType g ty1Parent ty2Parent) then CompleteD else
+ SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1Parent ty2Parent
+ }
| (TyparConstraint.IsEnum (u1, _),
TyparConstraint.IsEnum (u2, m2)) ->
SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace u1 u2
| (TyparConstraint.IsDelegate (aty1, bty1, _),
- TyparConstraint.IsDelegate (aty2, bty2, m2)) ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace aty1 aty2 ++ (fun () ->
- SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace bty1 bty2)
+ TyparConstraint.IsDelegate (aty2, bty2, m2)) -> trackErrors {
+ do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace aty1 aty2
+ return! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace bty1 bty2
+ }
| TyparConstraint.SupportsComparison _, TyparConstraint.IsDelegate _
| TyparConstraint.IsDelegate _ , TyparConstraint.SupportsComparison _
@@ -1635,36 +1695,34 @@ and AddConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace tp newConstraint =
let existingConstraints = tp.Constraints
let allCxs = newConstraint :: List.rev existingConstraints
- begin
+ trackErrors {
let rec enforceMutualConsistency i cxs =
match cxs with
| [] -> CompleteD
- | cx :: rest -> IterateIdxD (fun j cx2 -> if i = j then CompleteD else consistent cx cx2) allCxs ++ (fun () -> enforceMutualConsistency (i+1) rest)
-
- enforceMutualConsistency 0 allCxs
- end ++ (fun () ->
+ | cx :: rest ->
+ trackErrors {
+ do! IterateIdxD (fun j cx2 -> if i = j then CompleteD else consistent cx cx2) allCxs
+ return! enforceMutualConsistency (i+1) rest
+ }
+ do! enforceMutualConsistency 0 allCxs
- let impliedByExistingConstraints = existingConstraints |> List.exists (fun tpc2 -> implies tpc2 newConstraint)
+ let impliedByExistingConstraints = existingConstraints |> List.exists (fun tpc2 -> implies tpc2 newConstraint)
- if impliedByExistingConstraints then
- CompleteD
- // "Default" constraints propagate softly and can be omitted from explicit declarations of type parameters
- elif (match tp.Rigidity, newConstraint with
- | (TyparRigidity.Rigid | TyparRigidity.WillBeRigid), TyparConstraint.DefaultsTo _ -> true
- | _ -> false) then
- CompleteD
- elif tp.Rigidity = TyparRigidity.Rigid then
- ErrorD (ConstraintSolverMissingConstraint(denv, tp, newConstraint, m, m2))
- else
- (// It is important that we give a warning if a constraint is missing from a
+ if impliedByExistingConstraints then ()
+ // "Default" constraints propagate softly and can be omitted from explicit declarations of type parameters
+ elif (match tp.Rigidity, newConstraint with
+ | (TyparRigidity.Rigid | TyparRigidity.WillBeRigid), TyparConstraint.DefaultsTo _ -> true
+ | _ -> false) then
+ ()
+ elif tp.Rigidity = TyparRigidity.Rigid then
+ return! ErrorD (ConstraintSolverMissingConstraint(denv, tp, newConstraint, m, m2))
+ else
+ // It is important that we give a warning if a constraint is missing from a
// will-be-made-rigid type variable. This is because the existence of these warnings
// is relevant to the overload resolution rules (see 'candidateWarnCount' in the overload resolution
// implementation). See also FSharp 1.0 bug 5461
- (if tp.Rigidity.WarnIfMissingConstraint then
- WarnD (ConstraintSolverMissingConstraint(denv, tp, newConstraint, m, m2))
- else
- CompleteD) ++ (fun () ->
-
+ if tp.Rigidity.WarnIfMissingConstraint then
+ do! WarnD (ConstraintSolverMissingConstraint(denv, tp, newConstraint, m, m2))
let newConstraints =
// Eliminate any constraints where one constraint implies another
// Keep constraints in the left-to-right form according to the order they are asserted.
@@ -1676,23 +1734,23 @@ and AddConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace tp newConstraint =
eliminateRedundant rest (if List.exists (fun cx2 -> implies cx2 cx) acc then acc else (cx::acc))
eliminateRedundant allCxs []
-
// Write the constraint into the type variable
// Record a entry in the undo trace if one is provided
let orig = tp.Constraints
trace.Exec (fun () -> tp.SetConstraints newConstraints) (fun () -> tp.SetConstraints orig)
+ ()
+ }
- CompleteD)))
and SolveTypeSupportsNull (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
let g = csenv.g
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.SupportsNull m)
- | None ->
+ | ValueNone ->
if TypeSatisfiesNullConstraint g m ty then CompleteD else
match ty with
| NullableTy g _ ->
@@ -1706,12 +1764,12 @@ and SolveTypeSupportsComparison (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
let amap = csenv.amap
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.SupportsComparison m)
- | None ->
+ | ValueNone ->
// Check it isn't ruled out by the user
match tryDestAppTy g ty with
- | Some tcref when HasFSharpAttribute g g.attrib_NoComparisonAttribute tcref.Attribs ->
+ | ValueSome tcref when HasFSharpAttribute g g.attrib_NoComparisonAttribute tcref.Attribs ->
ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportComparison1(NicePrint.minimalStringOfType denv ty), m, m2))
| _ ->
match ty with
@@ -1750,11 +1808,11 @@ and SolveTypeSupportsEquality (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.SupportsEquality m)
- | None ->
+ | _ ->
match tryDestAppTy g ty with
- | Some tcref when HasFSharpAttribute g g.attrib_NoEqualityAttribute tcref.Attribs ->
+ | ValueSome tcref when HasFSharpAttribute g g.attrib_NoEqualityAttribute tcref.Attribs ->
ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportEquality1(NicePrint.minimalStringOfType denv ty), m, m2))
| _ ->
match ty with
@@ -1787,9 +1845,9 @@ and SolveTypeIsEnum (csenv:ConstraintSolverEnv) ndeep m2 trace ty underlying =
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
return! AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsEnum(underlying, m))
- | None ->
+ | _ ->
if isEnumTy g ty then
do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace underlying (underlyingTypeOfEnumTy g ty)
return! CompleteD
@@ -1803,9 +1861,9 @@ and SolveTypeIsDelegate (csenv:ConstraintSolverEnv) ndeep m2 trace ty aty bty =
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
return! AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsDelegate(aty, bty, m))
- | None ->
+ | _ ->
if isDelegateTy g ty then
match TryDestStandardDelegateType csenv.InfoReader m AccessibleFromSomewhere ty with
| Some (tupledArgTy, rty) ->
@@ -1823,9 +1881,9 @@ and SolveTypeIsNonNullableValueType (csenv:ConstraintSolverEnv) ndeep m2 trace t
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
return! AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsNonNullableStruct m)
- | None ->
+ | _ ->
let underlyingTy = stripTyEqnsAndMeasureEqns g ty
if isStructTy g underlyingTy then
if tyconRefEq g g.system_Nullable_tcref (tcrefOfAppTy g underlyingTy) then
@@ -1839,9 +1897,9 @@ and SolveTypeIsUnmanaged (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsUnmanaged m)
- | None ->
+ | _ ->
if isUnmanagedTy g ty then
CompleteD
else
@@ -1853,9 +1911,9 @@ and SolveTypeChoice (csenv:ConstraintSolverEnv) ndeep m2 trace ty tys =
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.SimpleChoice(tys, m))
- | None ->
+ | _ ->
if List.exists (typeEquivAux Erasure.EraseMeasures g ty) tys then CompleteD
else ErrorD (ConstraintSolverError(FSComp.SR.csTypeNotCompatibleBecauseOfPrintf((NicePrint.minimalStringOfType denv ty), (String.concat "," (List.map (NicePrint.prettyStringOfTy denv) tys))), m, m2))
@@ -1865,9 +1923,9 @@ and SolveTypeIsReferenceType (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
let m = csenv.m
let denv = csenv.DisplayEnv
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsReferenceType m)
- | None ->
+ | _ ->
if isRefTy g ty then CompleteD
else ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresReferenceSemantics(NicePrint.minimalStringOfType denv ty), m, m))
@@ -1878,9 +1936,9 @@ and SolveTypeRequiresDefaultConstructor (csenv:ConstraintSolverEnv) ndeep m2 tra
let denv = csenv.DisplayEnv
let ty = stripTyEqnsAndMeasureEqns g origTy
match tryDestTyparTy g ty with
- | Some destTypar ->
+ | ValueSome destTypar ->
AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.RequiresDefaultConstructor m)
- | None ->
+ | _ ->
if isStructTy g ty && TypeHasDefaultValue g m ty then
CompleteD
else
@@ -1888,13 +1946,13 @@ and SolveTypeRequiresDefaultConstructor (csenv:ConstraintSolverEnv) ndeep m2 tra
|> List.exists (fun x -> x.IsNullary && IsMethInfoAccessible amap m AccessibleFromEverywhere x)
then
match tryDestAppTy g ty with
- | Some tcref when HasFSharpAttribute g g.attrib_AbstractClassAttribute tcref.Attribs ->
+ | ValueSome tcref when HasFSharpAttribute g g.attrib_AbstractClassAttribute tcref.Attribs ->
ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresNonAbstract(NicePrint.minimalStringOfType denv origTy), m, m2))
| _ ->
CompleteD
else
match tryDestAppTy g ty with
- | Some tcref when
+ | ValueSome tcref when
tcref.PreEstablishedHasDefaultConstructor ||
// F# 3.1 feature: records with CLIMutable attribute should satisfy 'default constructor' constraint
(tcref.IsRecordTycon && HasFSharpAttribute g g.attrib_CLIMutableAttribute tcref.Attribs) ->
@@ -2029,17 +2087,16 @@ and ArgsMustSubsumeOrConvert
cxsln
isConstraint
(calledArg: CalledArg)
- (callerArg: CallerArg<'T>) =
+ (callerArg: CallerArg<'T>) = trackErrors {
let g = csenv.g
let m = callerArg.Range
let calledArgTy = AdjustCalledArgType csenv.InfoReader isConstraint calledArg callerArg
- SolveTypeSubsumesTypeWithReport csenv ndeep m trace cxsln calledArgTy callerArg.Type ++ (fun () ->
-
+ do! SolveTypeSubsumesTypeWithReport csenv ndeep m trace cxsln calledArgTy callerArg.Type
if calledArg.IsParamArray && isArray1DTy g calledArgTy && not (isArray1DTy g callerArg.Type) then
- ErrorD(Error(FSComp.SR.csMethodExpectsParams(), m))
- else
- CompleteD)
+ return! ErrorD(Error(FSComp.SR.csMethodExpectsParams(), m))
+ else ()
+ }
and MustUnify csenv ndeep trace cxsln ty1 ty2 =
SolveTypeEqualsTypeWithReport csenv ndeep csenv.m trace cxsln ty1 ty2
@@ -2324,7 +2381,7 @@ and ResolveOverloading
// Func<_> is always considered better than any other delegate type
match tryDestAppTy csenv.g ty1 with
- | Some tcref1 when
+ | ValueSome tcref1 when
tcref1.DisplayName = "Func" &&
(match tcref1.PublicPath with Some p -> p.EnclosingPath = [| "System" |] | _ -> false) &&
isDelegateTy g ty1 &&
@@ -2462,11 +2519,12 @@ and ResolveOverloading
match calledMethOpt with
| Some calledMeth ->
calledMethOpt,
- errors ++ (fun () ->
+ trackErrors {
+ do! errors
let cxsln = Option.map (fun traitInfo -> (traitInfo, MemberConstraintSolutionOfMethInfo csenv.SolverState m calledMeth.Method calledMeth.CalledTyArgs)) cx
match calledMethTrace with
| NoTrace ->
-
+ return!
// No trace available for CanMemberSigsMatchUpToCheck with ArgsMustSubsumeOrConvert
CanMemberSigsMatchUpToCheck
csenv
@@ -2484,14 +2542,15 @@ and ResolveOverloading
// Unify return type
match reqdRetTyOpt with
- | None -> CompleteD
- | Some _ when calledMeth.Method.IsConstructor -> CompleteD
+ | None -> ()
+ | Some _ when calledMeth.Method.IsConstructor -> ()
| Some reqdRetTy ->
let actualRetTy = calledMeth.CalledReturnTypeAfterOutArgTupling
if isByrefTy g reqdRetTy then
- ErrorD(Error(FSComp.SR.tcByrefReturnImplicitlyDereferenced(), m))
+ return! ErrorD(Error(FSComp.SR.tcByrefReturnImplicitlyDereferenced(), m))
else
- MustUnify csenv ndeep trace cxsln reqdRetTy actualRetTy)
+ return! MustUnify csenv ndeep trace cxsln reqdRetTy actualRetTy
+ }
| None ->
None, errors
@@ -2511,7 +2570,8 @@ let UnifyUniqueOverloading
let candidates = calledMethGroup |> List.filter (fun cmeth -> cmeth.IsCandidate(m, ad))
let ndeep = 0
match calledMethGroup, candidates with
- | _, [calledMeth] ->
+ | _, [calledMeth] -> trackErrors {
+ do!
// Only one candidate found - we thus know the types we expect of arguments
CanMemberSigsMatchUpToCheck
csenv
@@ -2522,13 +2582,15 @@ let UnifyUniqueOverloading
(ArgsMustSubsumeOrConvert csenv ndeep NoTrace None false) // UnifyUniqueOverloading is not called in case of trait call - pass isConstraint=false
(Some reqdRetTy)
calledMeth
- ++ (fun () -> ResultD true)
+ return true
+ }
| [], _ ->
ErrorD (Error (FSComp.SR.csMethodNotFound(methodName), m))
- | _, [] ->
- ReportNoCandidatesErrorSynExpr csenv callerArgCounts methodName ad calledMethGroup
- ++ (fun () -> ResultD false)
+ | _, [] -> trackErrors {
+ do! ReportNoCandidatesErrorSynExpr csenv callerArgCounts methodName ad calledMethGroup
+ return false
+ }
| _ ->
ResultD false
@@ -2591,7 +2653,12 @@ let AddCxTypeMustSubsumeType contextInfo denv css m trace ty1 ty2 =
|> RaiseOperationResult
let AddCxMethodConstraint denv css m trace traitInfo =
- TryD (fun () -> SolveMemberConstraint (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) true false 0 m trace traitInfo ++ (fun _ -> CompleteD))
+ TryD (fun () ->
+ trackErrors {
+ do!
+ SolveMemberConstraint (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) true false 0 m trace traitInfo
+ |> OperationResult.ignore
+ })
(fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m)))
|> RaiseOperationResult
@@ -2640,7 +2707,7 @@ let AddCxTypeIsDelegate denv css m trace ty aty bty =
(fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m)))
|> RaiseOperationResult
-let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:TraitConstraintInfo) argExprs =
+let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:TraitConstraintInfo) argExprs = trackErrors {
let css =
{ g = g
amap = amap
@@ -2649,15 +2716,15 @@ let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:Trai
InfoReader = new InfoReader(g, amap) }
let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m (DisplayEnv.Empty g)
- SolveMemberConstraint csenv true true 0 m NoTrace traitInfo ++ (fun _res ->
- let sln =
+ let! _res = SolveMemberConstraint csenv true true 0 m NoTrace traitInfo
+ let sln =
match traitInfo.Solution with
- | None -> Choice4Of4()
+ | None -> Choice5Of5()
| Some sln ->
match sln with
| ILMethSln(origTy, extOpt, mref, minst) ->
let metadataTy = convertToTypeWithMetadataIfPossible g origTy
- let tcref, _tinst = destAppTy g metadataTy
+ let tcref = tcrefOfAppTy g metadataTy
let mdef = IL.resolveILMethodRef tcref.ILTyconRawMetadata mref
let ilMethInfo =
match extOpt with
@@ -2665,17 +2732,20 @@ let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:Trai
| Some ilActualTypeRef ->
let actualTyconRef = Import.ImportILTypeRef amap m ilActualTypeRef
MethInfo.CreateILExtensionMeth(amap, m, origTy, actualTyconRef, None, mdef)
- Choice1Of4 (ilMethInfo, minst)
+ Choice1Of5 (ilMethInfo, minst)
| FSMethSln(ty, vref, minst) ->
- Choice1Of4 (FSMeth(g, ty, vref, None), minst)
+ Choice1Of5 (FSMeth(g, ty, vref, None), minst)
| FSRecdFieldSln(tinst, rfref, isSetProp) ->
- Choice2Of4 (tinst, rfref, isSetProp)
+ Choice2Of5 (tinst, rfref, isSetProp)
+ | FSAnonRecdFieldSln(anonInfo, tinst, i) ->
+ Choice3Of5 (anonInfo, tinst, i)
| BuiltInSln ->
- Choice4Of4 ()
+ Choice5Of5 ()
| ClosedExprSln expr ->
- Choice3Of4 expr
+ Choice4Of5 expr
+ return!
match sln with
- | Choice1Of4(minfo, methArgTys) ->
+ | Choice1Of5(minfo, methArgTys) ->
let argExprs =
// FIX for #421894 - typechecker assumes that coercion can be applied for the trait calls arguments but codegen doesn't emit coercion operations
// result - generation of non-verifyable code
@@ -2706,7 +2776,7 @@ let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:Trai
else
ResultD (Some (MakeMethInfoCall amap m minfo methArgTys argExprs ))
- | Choice2Of4 (tinst, rfref, isSet) ->
+ | Choice2Of5 (tinst, rfref, isSet) ->
let res =
match isSet, rfref.RecdField.IsStatic, argExprs.Length with
| true, true, 1 ->
@@ -2729,8 +2799,19 @@ let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:Trai
Some (mkRecdFieldGet g (argExprs.[0], rfref, tinst, m))
| _ -> None
ResultD res
- | Choice3Of4 expr -> ResultD (Some (MakeApplicationAndBetaReduce g (expr, tyOfExpr g expr, [], argExprs, m)))
- | Choice4Of4 () -> ResultD None)
+ | Choice3Of5 (anonInfo, tinst, i) ->
+ let res =
+ let tupInfo = anonInfo.TupInfo
+ if evalTupInfoIsStruct tupInfo && isByrefTy g (tyOfExpr g argExprs.[0]) then
+ Some (mkAnonRecdFieldGetViaExprAddr (anonInfo, argExprs.[0], tinst, i, m))
+ else
+ Some (mkAnonRecdFieldGet g (anonInfo, argExprs.[0], tinst, i, m))
+ ResultD res
+
+ | Choice4Of5 expr -> ResultD (Some (MakeApplicationAndBetaReduce g (expr, tyOfExpr g expr, [], argExprs, m)))
+
+ | Choice5Of5 () -> ResultD None
+ }
let ChooseTyparSolutionAndSolve css denv tp =
@@ -2769,6 +2850,7 @@ let IsApplicableMethApprox g amap m (minfo:MethInfo) availObjTy =
let minst = FreshenMethInfo m minfo
match minfo.GetObjArgTypes(amap, m, minst) with
| [reqdObjTy] ->
+ let reqdObjTy = if isByrefTy g reqdObjTy then destByrefTy g reqdObjTy else reqdObjTy // This is to support byref extension methods.
TryD (fun () -> SolveTypeSubsumesType csenv 0 m NoTrace None reqdObjTy availObjTy ++ (fun () -> ResultD true))
(fun _err -> ResultD false)
|> CommitOperationResult
diff --git a/src/fsharp/DetupleArgs.fs b/src/fsharp/DetupleArgs.fs
index bf56deeeb7f..9a7f99e63a6 100644
--- a/src/fsharp/DetupleArgs.fs
+++ b/src/fsharp/DetupleArgs.fs
@@ -850,11 +850,11 @@ let postTransformExpr (penv:penv) expr =
| _ -> None
-let passImplFile penv ass =
- ass |> RewriteImplFile {PreIntercept =None
- PreInterceptBinding=None
- PostTransform= postTransformExpr penv
- IsUnderQuotations=false }
+let passImplFile penv assembly =
+ assembly |> RewriteImplFile {PreIntercept =None
+ PreInterceptBinding=None
+ PostTransform= postTransformExpr penv
+ IsUnderQuotations=false }
//-------------------------------------------------------------------------
diff --git a/src/fsharp/Directory.Build.props b/src/fsharp/Directory.Build.props
new file mode 100644
index 00000000000..151415117e4
--- /dev/null
+++ b/src/fsharp/Directory.Build.props
@@ -0,0 +1,12 @@
+
+
+
+
+
+ true
+ true
+ false
+ $(ArtifactsPackagesDir)\$(Configuration)
+
+
+
diff --git a/src/fsharp/Directory.Build.targets b/src/fsharp/Directory.Build.targets
new file mode 100644
index 00000000000..068f4dc3c51
--- /dev/null
+++ b/src/fsharp/Directory.Build.targets
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/fsharp/Directory.Nuget.props b/src/fsharp/Directory.Nuget.props
new file mode 100644
index 00000000000..6521936cfe3
--- /dev/null
+++ b/src/fsharp/Directory.Nuget.props
@@ -0,0 +1,27 @@
+
+
+
+ https://github.com/Microsoft/visualfsharp/blob/master/License.txt
+ https://github.com/Microsoft/visualfsharp
+ Microsoft and F# Software Foundation
+ Microsoft and F# Software Foundation
+ Visual F# Compiler FSharp functional programming
+ (C) Microsoft Corporation. All rights reserved.
+
+ $(GitHeadSha)
+ [developer build]
+
+
+ licenseUrl=$(PackageLicenceUrl);
+ authors=$(PackageAuthors);
+ owners=$(PackageOwners);
+ projectUrl=$(PackageProjectUrl);
+ copyright=$(PackageCopyright);
+ tags=$(PackageTags);
+ githeadsha=$(NormalizedGitHeadSha);
+ configuration=$(Configuration);
+ artifactsbindir=$(ArtifactsBinDir);
+
+
+
+
diff --git a/src/fsharp/Directory.Nuget.targets b/src/fsharp/Directory.Nuget.targets
new file mode 100644
index 00000000000..e30b155faad
--- /dev/null
+++ b/src/fsharp/Directory.Nuget.targets
@@ -0,0 +1,11 @@
+
+
+
+
+ $(NuspecProperties);
+ packageId=$(PackageId);
+ version=$(PackageVersion);
+
+
+
+
diff --git a/src/fsharp/ErrorLogger.fs b/src/fsharp/ErrorLogger.fs
index d29874bb0d5..41be3768ed2 100755
--- a/src/fsharp/ErrorLogger.fs
+++ b/src/fsharp/ErrorLogger.fs
@@ -596,15 +596,27 @@ let rec Iterate2D f xs ys =
| h1 :: t1, h2::t2 -> f h1 h2 ++ (fun () -> Iterate2D f t1 t2)
| _ -> failwith "Iterate2D"
+/// Keep the warnings, propagate the error to the exception continuation.
let TryD f g =
match f() with
- | ErrorResult(warns, err) -> (OkResult(warns, ())) ++ (fun () -> g err)
+ | ErrorResult(warns, err) ->
+ trackErrors {
+ do! OkResult(warns, ())
+ return! g err
+ }
| res -> res
let rec RepeatWhileD ndeep body = body ndeep ++ (fun x -> if x then RepeatWhileD (ndeep+1) body else CompleteD)
let AtLeastOneD f l = MapD f l ++ (fun res -> ResultD (List.exists id res))
+[]
+module OperationResult =
+ let inline ignore (res: OperationResult<'a>) =
+ match res with
+ | OkResult(warnings, _) -> OkResult(warnings, ())
+ | ErrorResult(warnings, err) -> ErrorResult(warnings, err)
+
// Code below is for --flaterrors flag that is only used by the IDE
let stringThatIsAProxyForANewlineInFlatErrors = new System.String [|char 29 |]
diff --git a/src/fsharp/ErrorResolutionHints.fs b/src/fsharp/ErrorResolutionHints.fs
index e674adb6f46..20bcb13fd21 100644
--- a/src/fsharp/ErrorResolutionHints.fs
+++ b/src/fsharp/ErrorResolutionHints.fs
@@ -43,6 +43,7 @@ let FilterPredictions (idText:string) (suggestionF:ErrorLogger.Suggestions) =
name |> Seq.forall (fun c -> c <> ' ')
if allSuggestions.Contains idText then [] else // some other parsing error occurred
+ let dotIdText = "." + idText
allSuggestions
|> Seq.choose (fun suggestion ->
// Because beginning a name with _ is used both to indicate an unused
@@ -53,7 +54,7 @@ let FilterPredictions (idText:string) (suggestionF:ErrorLogger.Suggestions) =
let suggestion:string = demangle suggestion
let suggestedText = suggestion.ToUpperInvariant()
let similarity = EditDistance.JaroWinklerDistance uppercaseText suggestedText
- if similarity >= highConfidenceThreshold || suggestion.EndsWithOrdinal("." + idText) then
+ if similarity >= highConfidenceThreshold || suggestion.EndsWithOrdinal(dotIdText) then
Some(similarity, suggestion)
elif similarity < minThresholdForSuggestions && suggestedText.Length > minStringLengthForThreshold then
None
diff --git a/src/fsharp/FSComp.txt b/src/fsharp/FSComp.txt
index 86b76615525..cb5747f3c5d 100644
--- a/src/fsharp/FSComp.txt
+++ b/src/fsharp/FSComp.txt
@@ -440,6 +440,7 @@ parsParenFormIsForML,"In F# code you may use 'expr.[expr]'. A type annotation ma
602,parsUnmatched,"Unmatched '%s'"
603,parsUnmatchedBracketBar,"Unmatched '[|'"
604,parsUnmatchedBrace,"Unmatched '{{'"
+605,parsUnmatchedBraceBar,"Unmatched '{{|'"
609,parsFieldBinding,"Field bindings must have the form 'id = expr;'"
610,parsMemberIllegalInObjectImplementation,"This member is not permitted in an object implementation"
611,parsMissingFunctionBody,"Missing function body"
@@ -922,6 +923,7 @@ typeInfoProperty,"property"
typeInfoExtension,"extension"
typeInfoCustomOperation,"custom operation"
typeInfoArgument,"argument"
+typeInfoAnonRecdField,"anonymous record field"
typeInfoPatternVariable,"patvar"
typeInfoNamespace,"namespace"
typeInfoModule,"module"
@@ -1040,8 +1042,8 @@ lexHashBangMustBeFirstInFile,"#! may only appear as the first line at the start
1186,parsInvalidProperty,"Invalid property getter or setter"
1187,parsIndexerPropertyRequiresAtLeastOneArgument,"An indexer property must be given at least one argument"
1188,tastInvalidAddressOfMutableAcrossAssemblyBoundary,"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"
-1189,parsNonAdjacentTypars,"Type parameters must be placed directly adjacent to the type name, e.g. \"type C<'T>\", not type \"C <'T>\""
-1190,parsNonAdjacentTyargs,"Type arguments must be placed directly adjacent to the type name, e.g. \"C<'T>\", not \"C <'T>\""
+1189,parsNonAdjacentTypars,"Remove spaces between the type name and type parameter, e.g. \"type C<'T>\", not type \"C <'T>\". Type parameters must be placed directly adjacent to the type name."
+1190,parsNonAdjacentTyargs,"Remove spaces between the type name and type parameter, e.g. \"C<'T>\", not \"C <'T>\". Type parameters must be placed directly adjacent to the type name."
parsNonAtomicType,"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'"
# 1191,tastUndefinedTyconItemField,"The type %s did not contain the field '%s'"
# 1192,tastUndefinedTyconItemUnionCase,"The type %s did not contain the union case '%s'"
@@ -1293,7 +1295,10 @@ descriptionUnavailable,"(description unavailable...)"
3171,tcGeneratedTypesShouldBeInternalOrPrivate,"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 = ...'."
3172,chkGetterAndSetterHaveSamePropertyType,"A property's getter and setter must have the same type. Property '%s' has getter of type '%s' but setter of type '%s'."
3173,tcRuntimeSuppliedMethodCannotBeUsedInUserCode,"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."
-3174,tcUnionCaseConstructorDoesNotHaveFieldWithGivenName,"Union case/exception '%s' does not have field named '%s'."
+3174,tcUnionCaseConstructorDoesNotHaveFieldWithGivenName,"The union case '%s' does not have a field named '%s'."
+3174,tcExceptionConstructorDoesNotHaveFieldWithGivenName,"The exception '%s' does not have a field named '%s'."
+3174,tcActivePatternsDoNotHaveFields,"Active patterns do not have fields. This syntax is invalid."
+3174,tcConstructorDoesNotHaveFieldWithGivenName,"The constructor does not have a field named '%s'."
3175,tcUnionCaseFieldCannotBeUsedMoreThanOnce,"Union case/exception field '%s' cannot be used more than once."
3176,tcFieldNameIsUsedModeThanOnce,"Named field '%s' is used more than once."
3176,tcFieldNameConflictsWithGeneratedNameForAnonymousField,"Named field '%s' conflicts with autogenerated name for anonymous field."
@@ -1338,6 +1343,8 @@ tcGlobalsSystemTypeNotFound,"The system type '%s' was required but no referenced
3213,typrelMemberHasMultiplePossibleDispatchSlots,"The member '%s' matches multiple overloads of the same method.\nPlease restrict it to one of the following:%s."
3214,methodIsNotStatic,"Method or object constructor '%s' is not static"
3215,parsUnexpectedSymbolEqualsInsteadOfIn,"Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?"
+tcAnonRecdCcuMismatch,"Two anonymous record types are from different assemblies '%s' and '%s'"
+tcAnonRecdFieldNameMismatch,"Two anonymous record types have mismatched sets of field names '%s' and '%s'"
keywordDescriptionAbstract,"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."
keyworkDescriptionAnd,"Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters."
keywordDescriptionAs,"Used to give the current class object an object name. Also used to give a name to a whole pattern within a pattern match."
@@ -1431,13 +1438,20 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl
3226,tcByrefReturnImplicitlyDereferenced,"A byref pointer returned by a function or method is implicitly dereferenced as of F# 4.5. To acquire the return value as a pointer, use the address-of operator, e.g. '&f(x)' or '&obj.Method(arg1, arg2)'."
3227,tcByRefLikeNotStruct,"A type annotated with IsByRefLike must also be a struct. Consider adding the [] attribute to the type."
3228,chkNoByrefAddressOfValueFromExpression,"The address of a value returned from the expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope."
-3229,chkNoReturnOfLimitedSpan,"The Span or IsByRefLike expression cannot be returned from this function or method, because it is composed using elements that may escape their scope."
-3230,chkNoWriteToLimitedSpan,"This value can't be assigned because the target '%s' may refer to non-stack-local memory, while the expression being assigned is assessed to potentially refer to stack-local memory. This is to help prevent pointers to stack-bound memory escaping their scope."
-3231,tastValueMustBeLocal,"A value defined in a module must be mutable in order to take its address, e.g. 'let mutable x = ...'"
-3232,tcIsReadOnlyNotStruct,"A type annotated with IsReadOnly must also be a struct. Consider adding the [] attribute to the type."
-3233,chkStructsMayNotReturnAddressesOfContents,"Struct members cannot return the address of fields of the struct by reference"
-3234,chkNoByrefLikeFunctionCall,"The function or method call cannot be used at this point, because one argument that is a byref of a non-stack-local Span or IsByRefLike type is used with another argument that is a stack-local Span or IsByRefLike type. This is to ensure the address of the local value does not escape its scope."
-3235,chkNoSpanLikeVariable,"The Span or IsByRefLike variable '%s' cannot be used at this point. This is to ensure the address of the local value does not escape its scope."
-3236,chkNoSpanLikeValueFromExpression,"A Span or IsByRefLike value returned from the expression cannot be used at ths point. This is to ensure the address of the local value does not escape its scope."
-3237,tastCantTakeAddressOfExpression,"Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address."
+3229,chkNoWriteToLimitedSpan,"This value can't be assigned because the target '%s' may refer to non-stack-local memory, while the expression being assigned is assessed to potentially refer to stack-local memory. This is to help prevent pointers to stack-bound memory escaping their scope."
+3230,tastValueMustBeLocal,"A value defined in a module must be mutable in order to take its address, e.g. 'let mutable x = ...'"
+3231,tcIsReadOnlyNotStruct,"A type annotated with IsReadOnly must also be a struct. Consider adding the [] attribute to the type."
+3232,chkStructsMayNotReturnAddressesOfContents,"Struct members cannot return the address of fields of the struct by reference"
+3233,chkNoByrefLikeFunctionCall,"The function or method call cannot be used at this point, because one argument that is a byref of a non-stack-local Span or IsByRefLike type is used with another argument that is a stack-local Span or IsByRefLike type. This is to ensure the address of the local value does not escape its scope."
+3234,chkNoSpanLikeVariable,"The Span or IsByRefLike variable '%s' cannot be used at this point. This is to ensure the address of the local value does not escape its scope."
+3235,chkNoSpanLikeValueFromExpression,"A Span or IsByRefLike value returned from the expression cannot be used at ths point. This is to ensure the address of the local value does not escape its scope."
+3236,tastCantTakeAddressOfExpression,"Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address."
+3237,tcCannotCallExtensionMethodInrefToByref,"Cannot call the byref extension method '%s. The first parameter requires the value to be mutable or a non-readonly byref type."
+3238,tcByrefsMayNotHaveTypeExtensions,"Byref types are not allowed to have optional type extensions."
+3239,tcCannotPartiallyApplyExtensionMethodForByref,"Cannot partially apply the extension method '%s' because the first parameter is a byref type."
3242,tcTypeDoesNotInheritAttribute,"This type does not inherit Attribute, it will not work correctly with other .NET languages."
+3243,parsInvalidAnonRecdExpr,"Invalid anonymous record expression"
+3244,parsInvalidAnonRecdType,"Invalid anonymous record type"
+3245,tcCopyAndUpdateNeedsRecordType,"The input to a copy-and-update expression that creates an anonymous record must be either an anonymous record or a record"
+3300,chkInvalidFunctionParameterType,"The parameter '%s' has an invalid type '%s'. This is not permitted by the rules of Common IL."
+3301,chkInvalidFunctionReturnType,"The function or method has an invalid return type '%s'. This is not permitted by the rules of Common IL."
diff --git a/src/fsharp/FSStrings.resx b/src/fsharp/FSStrings.resx
index 5a99d5e9e74..05cd75cc669 100644
--- a/src/fsharp/FSStrings.resx
+++ b/src/fsharp/FSStrings.resx
@@ -396,6 +396,9 @@
symbol '['
+
+ symbol '{|'
+
symbol '[|'
@@ -411,6 +414,9 @@
symbol '|]'
+
+ symbol '|}'
+
symbol '>}'
diff --git a/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj b/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
deleted file mode 100644
index 1bae3eda985..00000000000
--- a/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
- $(MSBuildProjectDirectory)\..\..
- Proto
- AnyCPU
-
-
-
-
-
- Library
- FSharp.Build
- true
- LKG
- {D8BC791F-C1A9-49DC-9432-0F3090537555}
-
-
-
- FSBuild.txt
-
-
- CompilerLocationUtils.fs
-
-
- CreateFSharpManifestResourceName.fs
-
-
- FSharpCommandLineBuilder.fs
-
-
- Fsc.fs
-
-
- FSharpEmbedResourceText.fs
-
-
- FSharpEmbedResXSource.fs
-
-
- WriteCodeFragment.fs
-
-
- Microsoft.FSharp.Targets
-
-
- Microsoft.Portable.FSharp.Targets
-
-
- Microsoft.FSharp.NetSdk.props
-
-
- Microsoft.FSharp.NetSdk.targets
-
-
- Microsoft.FSharp.Overrides.NetSdk.targets
-
-
- Microsoft.VisualFSharp.Type.Providers.Redist
-
-
-
-
-
-
-
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Framework.$(MicrosoftBuildFrameworkPackageVersion)\lib\net46\Microsoft.Build.Framework.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.$(MicrosoftBuildPackageVersion)\lib\net46\Microsoft.Build.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Utilities.Core.$(MicrosoftBuildUtilitiesCorePackageVersion)\lib\net46\Microsoft.Build.Utilities.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Tasks.Core.$(MicrosoftBuildTasksCorePackageVersion)\lib\net46\Microsoft.Build.Tasks.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Tasks.Core.$(MicrosoftBuildTasksCorePackageVersion)\lib\net46\Microsoft.Build.Tasks.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\System.IO.Compression.$(SystemIoCompressionPackageVersion)\lib\net46\System.IO.Compression.dll
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Framework.14.3.0\lib\net45\Microsoft.Build.Framework.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.14.3.0\lib\net45\Microsoft.Build.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Utilities.Core.14.3.0\lib\net45\Microsoft.Build.Utilities.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Tasks.Core.14.3.0\lib\net45\Microsoft.Build.Tasks.Core.dll
-
-
-
-
- {DED3BBD7-53F4-428A-8C9F-27968E768605}
- FSharp.Core
-
-
-
-
diff --git a/src/fsharp/FSharp.Build/FSBuild.txt b/src/fsharp/FSharp.Build/FSBuild.txt
index 89840c0d725..10fdedb2151 100644
--- a/src/fsharp/FSharp.Build/FSBuild.txt
+++ b/src/fsharp/FSharp.Build/FSBuild.txt
@@ -1,2 +1,2 @@
# FSharp.Build resource strings
-toolpathUnknown,"ToolPath is unknown; specify the path to fsc.exe as the ToolPath property."
\ No newline at end of file
+toolpathUnknown,"ToolPath is unknown; specify the path to the tool."
\ 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 0046e733380..162c6bf3d31 100644
--- a/src/fsharp/FSharp.Build/FSharp.Build.fsproj
+++ b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
@@ -1,36 +1,25 @@
-
-
- $(MSBuildProjectDirectory)\..\..
- FSharp
- true
-
-
-
+
- Debug
- AnyCPULibrary
+ net46;netstandard2.0FSharp.Build
+ $(NoWarn);45;55;62;75;1204true
- {702A7979-BCF9-4C41-853E-3ADFC9897890}
+ $(OtherFlags) --maxerrors:20 --extraoptimizationloops:1
+ true
-
- $(FSharpSourcesRoot)\..\loc\lcl\{Lang}\$(AssemblyName).dll.lcl
- $(FSharpSourcesRoot)\..\loc\lci\$(AssemblyName).dll.lci
- false
- false
-
+
@@ -42,54 +31,20 @@
-
-
-
-
-
-
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Framework.$(MicrosoftBuildFrameworkPackageVersion)\lib\net46\Microsoft.Build.Framework.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.$(MicrosoftBuildPackageVersion)\lib\net46\Microsoft.Build.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Utilities.Core.$(MicrosoftBuildUtilitiesCorePackageVersion)\lib\net46\Microsoft.Build.Utilities.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Tasks.Core.$(MicrosoftBuildTasksCorePackageVersion)\lib\net46\Microsoft.Build.Tasks.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Tasks.Core.$(MicrosoftBuildTasksCorePackageVersion)\lib\net46\Microsoft.Build.Tasks.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\System.IO.Compression.$(SystemIoCompressionPackageVersion)\lib\net46\System.IO.Compression.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Type.Providers.Redist.$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll
-
+
+
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Framework.14.3.0\lib\net45\Microsoft.Build.Framework.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.14.3.0\lib\net45\Microsoft.Build.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Utilities.Core.14.3.0\lib\net45\Microsoft.Build.Utilities.Core.dll
-
-
- $(FSharpSourcesRoot)\..\packages\Microsoft.Build.Tasks.Core.14.3.0\lib\net45\Microsoft.Build.Tasks.Core.dll
-
+
+
+
+
-
- {DED3BBD7-53F4-428A-8C9F-27968E768605}
- FSharp.Core
-
+
+
+
+
+
-
+
diff --git a/src/fsharp/FSharp.Build/Fsc.fs b/src/fsharp/FSharp.Build/Fsc.fs
index 95f3ec2f98c..307261b3a21 100644
--- a/src/fsharp/FSharp.Build/Fsc.fs
+++ b/src/fsharp/FSharp.Build/Fsc.fs
@@ -121,6 +121,7 @@ type public Fsc () as this =
builder.AppendSwitchIfNotNull("--define:", item.ItemSpec)
// DocumentationFile
builder.AppendSwitchIfNotNull("--doc:", documentationFile)
+
// GenerateInterfaceFile
builder.AppendSwitchIfNotNull("--sig:", generateInterfaceFile)
// KeyFile
@@ -235,6 +236,8 @@ type public Fsc () as this =
builder.AppendSwitchIfNotNull("--targetprofile:", targetProfile)
+ builder.AppendSwitch("--nocopyfsharpcore")
+
// OtherFlags - must be second-to-last
builder.AppendSwitchUnquotedIfNotNull("", otherFlags)
capturedArguments <- builder.CapturedArguments()
@@ -485,7 +488,7 @@ type public Fsc () as this =
override fsc.ToolName = "fsc.exe"
override fsc.StandardErrorEncoding = if utf8output then System.Text.Encoding.UTF8 else base.StandardErrorEncoding
override fsc.StandardOutputEncoding = if utf8output then System.Text.Encoding.UTF8 else base.StandardOutputEncoding
- override fsc.GenerateFullPathToTool() =
+ override fsc.GenerateFullPathToTool() =
if toolPath = "" then raise (new System.InvalidOperationException(FSBuild.SR.toolpathUnknown()))
System.IO.Path.Combine(toolPath, fsc.ToolExe)
override fsc.LogToolCommand (message:string) =
@@ -524,24 +527,11 @@ type public Fsc () as this =
-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 ->
-#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()
@@ -565,8 +555,7 @@ type public Fsc () as this =
member internal fsc.InternalExecuteTool(pathToTool, responseFileCommands, commandLineCommands) =
fsc.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands)
- member internal fsc.GetCapturedArguments() =
- [|
+ member internal fsc.GetCapturedArguments() = [|
yield! capturedArguments
yield! capturedFilenames
|]
diff --git a/src/fsharp/FSharp.Build/Fsi.fs b/src/fsharp/FSharp.Build/Fsi.fs
new file mode 100644
index 00000000000..f30a5bb2fb3
--- /dev/null
+++ b/src/fsharp/FSharp.Build/Fsi.fs
@@ -0,0 +1,339 @@
+// 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.Diagnostics
+open System.Globalization
+open System.IO
+open System.Reflection
+open Microsoft.Build.Framework
+open Microsoft.Build.Utilities
+open Internal.Utilities
+
+#if FX_RESHAPED_REFLECTION
+open Microsoft.FSharp.Core.ReflectionAdapters
+#endif
+
+//There are a lot of flags on fsi.exe.
+//For now, not all of them are represented in the "Fsi class" object model.
+//The goal is to have the most common/important flags available via the Fsi class, and the
+//rest can be "backdoored" through the .OtherFlags property.
+
+[]
+type public Fsi () as this =
+
+ inherit ToolTask ()
+
+ 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()
+ let mutable codePage : string = null
+ let mutable commandLineArgs : ITaskItem list = []
+ let mutable defineConstants : ITaskItem[] = [||]
+ let mutable disabledWarnings : string = null
+ let mutable dotnetFsiCompilerPath : string = null
+ let mutable fsiExec = false
+ let mutable noFramework = false
+ let mutable optimize = true
+ let mutable otherFlags : string = null
+ let mutable preferredUILang = null
+ let mutable provideCommandLineArgs = false
+ let mutable references : ITaskItem[] = [||]
+ let mutable referencePath : string = null
+ let mutable resources : ITaskItem[] = [||]
+ let mutable skipCompilerExecution = false
+ let mutable sources : ITaskItem[] = [||]
+ let mutable loadSources : ITaskItem[] = [||]
+ let mutable useSources : ITaskItem[] = [||]
+ let mutable tailcalls : bool = true
+ let mutable targetProfile : string = null
+ let mutable targetType : string = null
+ let mutable toolExe : string = "fsi.exe"
+ let mutable toolPath : string =
+ let locationOfThisDll =
+ try Some(Path.GetDirectoryName(typeof.Assembly.Location))
+ with _ -> None
+ match FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(locationOfThisDll) with
+ | Some s -> s
+ | None -> ""
+ let mutable treatWarningsAsErrors : bool = false
+ let mutable warningsAsErrors : string = null
+ let mutable warningsNotAsErrors : string = null
+ let mutable warningLevel : string = null
+ let mutable vslcid : string = null
+ let mutable utf8output : bool = false
+
+ // See bug 6483; this makes parallel build faster, and is fine to set unconditionally
+ do this.YieldDuringToolExecution <- true
+
+ let generateCommandLineBuilder () =
+ let builder = new FSharpCommandLineBuilder()
+
+ builder.AppendSwitchIfNotNull("--codepage:", codePage)
+
+ if noFramework then builder.AppendSwitch("--noframework")
+
+ if defineConstants <> null then
+ for item in defineConstants do
+ builder.AppendSwitchIfNotNull("--define:", item.ItemSpec)
+
+ if optimize then builder.AppendSwitch("--optimize+")
+ else builder.AppendSwitch("--optimize-")
+
+ if not tailcalls then
+ builder.AppendSwitch("--tailcalls-")
+
+ if references <> null then
+ for item in references do
+ builder.AppendSwitchIfNotNull("-r:", item.ItemSpec)
+
+ let referencePathArray = // create a array of strings
+ match referencePath with
+ | null -> null
+ | _ -> referencePath.Split([|';'; ','|], StringSplitOptions.RemoveEmptyEntries)
+
+ // NoWarn
+ match disabledWarnings with
+ | null -> ()
+ | _ -> builder.AppendSwitchIfNotNull("--nowarn:", disabledWarnings.Split([|' '; ';'; ','; '\r'; '\n'|], StringSplitOptions.RemoveEmptyEntries), ",")
+
+ builder.AppendSwitchIfNotNull("--warn:", warningLevel)
+
+ if treatWarningsAsErrors then builder.AppendSwitch("--warnaserror")
+
+ // Change warning 76, HashReferenceNotAllowedInNonScript/HashDirectiveNotAllowedInNonScript/HashIncludeNotAllowedInNonScript, into an error
+ let warningsAsErrorsArray =
+ match warningsAsErrors with
+ | null -> [| "76" |]
+ | _ -> (warningsAsErrors + " 76 ").Split([|' '; ';'; ','|], StringSplitOptions.RemoveEmptyEntries)
+
+ builder.AppendSwitchIfNotNull("--warnaserror:", warningsAsErrorsArray, ",")
+
+ match warningsNotAsErrors with
+ | null -> ()
+ | _ -> builder.AppendSwitchIfNotNull("--warnaserror-:", warningsNotAsErrors.Split([|' '; ';'; ','|], StringSplitOptions.RemoveEmptyEntries), ",")
+
+ builder.AppendSwitchIfNotNull("--LCID:", vslcid)
+
+ builder.AppendSwitchIfNotNull("--preferreduilang:", preferredUILang)
+
+ if utf8output then builder.AppendSwitch("--utf8output")
+
+ builder.AppendSwitch("--fullpaths")
+ builder.AppendSwitch("--flaterrors")
+
+ builder.AppendSwitchIfNotNull("--targetprofile:", targetProfile)
+
+ if loadSources <> null then
+ for item in loadSources do
+ builder.AppendSwitchIfNotNull("--load:", item.ItemSpec)
+
+ if useSources <> null then
+ for item in useSources do
+ builder.AppendSwitchIfNotNull("--use:", item.ItemSpec)
+
+ // OtherFlags - must be second-to-last
+ builder.AppendSwitchUnquotedIfNotNull("", otherFlags)
+ capturedArguments <- builder.CapturedArguments()
+
+ if fsiExec then builder.AppendSwitch("--exec")
+
+ // Sources - these have to go last
+ builder.AppendFileNamesIfNotNull(sources, " ")
+ capturedFilenames <- builder.CapturedFilenames()
+
+ builder
+
+ // --codepage : Specify the codepage to use when opening source files
+ member fsc.CodePage
+ with get() = codePage
+ and set(s) = codePage <- s
+
+ // --nowarn : Do not report the given specific warning.
+ member fsi.DisabledWarnings
+ with get() = disabledWarnings
+ and set(a) = disabledWarnings <- a
+
+ // --define : Define the given conditional compilation symbol.
+ member fsi.DefineConstants
+ with get() = defineConstants
+ and set(a) = defineConstants <- a
+
+ member fsi.DotnetFsiCompilerPath
+ with get() = dotnetFsiCompilerPath
+ and set(p) = dotnetFsiCompilerPath <- p
+
+ member fsi.FsiExec
+ with get() = fsiExec
+ and set(p) = fsiExec <- p
+
+ member fsi.LCID
+ with get() = vslcid
+ and set(p) = vslcid <- p
+
+ // --noframework
+ member fsi.NoFramework
+ with get() = noFramework
+ and set(b) = noFramework <- b
+
+ // --optimize
+ member fsi.Optimize
+ with get() = optimize
+ and set(p) = optimize <- p
+
+ // --tailcalls
+ member fsi.Tailcalls
+ with get() = tailcalls
+ and set(p) = tailcalls <- p
+
+ member fsi.OtherFlags
+ with get() = otherFlags
+ and set(s) = otherFlags <- s
+
+ member fsi.PreferredUILang
+ with get() = preferredUILang
+ and set(s) = preferredUILang <- s
+
+ member fsi.ProvideCommandLineArgs
+ with get() = provideCommandLineArgs
+ and set(p) = provideCommandLineArgs <- p
+
+ // -r : Reference an F# or .NET assembly.
+ member fsi.References
+ with get() = references
+ and set(a) = references <- a
+
+ // --lib
+ member fsi.ReferencePath
+ with get() = referencePath
+ and set(s) = referencePath <- s
+
+ // -load:: load an F# source file
+ member fsi.LoadSources
+ with get() = loadSources
+ and set(a) = loadSources <- a
+
+ member fsi.SkipCompilerExecution
+ with get() = skipCompilerExecution
+ and set(p) = skipCompilerExecution <- p
+
+ // source files
+ member fsi.Sources
+ with get() = sources
+ and set(a) = sources <- a
+
+ member fsi.TargetProfile
+ with get() = targetProfile
+ and set(p) = targetProfile <- p
+
+ member fsi.TreatWarningsAsErrors
+ with get() = treatWarningsAsErrors
+ and set(p) = treatWarningsAsErrors <- p
+
+ // For targeting other folders for "fsi.exe" (or ToolExe if different)
+ member fsi.ToolPath
+ with get() = toolPath
+ and set(s) = toolPath <- s
+
+ // --use:: execute an F# source file on startup
+ member fsi.UseSources
+ with get() = useSources
+ and set(a) = useSources <- a
+
+ // For specifying the warning level (0-4)
+ member fsi.WarningLevel
+ with get() = warningLevel
+ and set(s) = warningLevel <- s
+
+ member fsi.WarningsAsErrors
+ with get() = warningsAsErrors
+ and set(s) = warningsAsErrors <- s
+
+ member fsi.WarningsNotAsErrors
+ with get() = warningsNotAsErrors
+ and set(s) = warningsNotAsErrors <- s
+
+ member fsi.Utf8Output
+ with get() = utf8output
+ and set(p) = utf8output <- p
+
+ [