diff --git a/.vsts-pr.yaml b/.vsts-pr.yaml deleted file mode 100644 index eeebe57d085..00000000000 --- a/.vsts-pr.yaml +++ /dev/null @@ -1,172 +0,0 @@ -jobs: - -- job: Linux - pool: - vmImage: ubuntu-16.04 - timeoutInMinutes: 90 - strategy: - maxParallel: 3 - matrix: - coreclr_release: - _configuration: Release - _testKind: testcoreclr - steps: - - script: ./eng/cibuild.sh --configuration $(_configuration) --$(_testKind) - - task: PublishBuildArtifacts@1 - displayName: Publish Build Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_configuration)' - ArtifactName: 'Linux $(_configuration) $(_testKind) build log' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - - task: PublishBuildArtifacts@1 - displayName: Publish Test Results - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' - ArtifactName: 'Linux $(_configuration) $(_testKind)' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: Linux_FCS - pool: - vmImage: ubuntu-16.04 - timeoutInMinutes: 90 - steps: - - script: ./fcs/build.sh Build - - task: PublishBuildArtifacts@1 - displayName: Publish Test Results - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' - ArtifactName: 'Linux FCS test results' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: MacOS - pool: - vmImage: macOS-10.13 - timeoutInMinutes: 90 - strategy: - maxParallel: 3 - matrix: - coreclr_release: - _configuration: Release - _testKind: testcoreclr - steps: - - script: ./eng/cibuild.sh --configuration $(_configuration) --$(_testKind) - - task: PublishBuildArtifacts@1 - displayName: Publish Build Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_configuration)' - ArtifactName: 'MacOS $(_configuration) $(_testKind) build log' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - - task: PublishBuildArtifacts@1 - displayName: Publish Test Results - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' - ArtifactName: 'MacOS $(_configuration) $(_testKind)' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: MacOS_FCS - pool: - vmImage: macOS-10.13 - timeoutInMinutes: 90 - steps: - - script: ./fcs/build.sh Build - - task: PublishBuildArtifacts@1 - displayName: Publish Test Results - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults' - ArtifactName: 'MacOS FCS test results' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: Windows - pool: - vmImage: windows-2019 - timeoutInMinutes: 120 - strategy: - maxParallel: 4 - matrix: - desktop_release: - _configuration: Release - _testKind: testDesktop - coreclr_release: - _configuration: Release - _testKind: testCoreclr - fsharpqa_release: - _configuration: Release - _testKind: testFSharpQA - vs_release: - _configuration: Release - _testKind: testVs - steps: - - script: eng\CIBuild.cmd -configuration $(_configuration) -$(_testKind) - - task: PublishBuildArtifacts@1 - displayName: Publish Build Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(_configuration)' - ArtifactName: 'Windows $(_configuration) $(_testKind) build log' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - - task: PublishBuildArtifacts@1 - displayName: Publish Test Results - inputs: - PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults' - ArtifactName: 'Windows $(_configuration) $(_testKind) test results' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: Windows_FCS - pool: - vmImage: windows-2019 - timeoutInMinutes: 120 - steps: - - script: fcs\build.cmd TestAndNuget - - task: PublishBuildArtifacts@1 - displayName: Publish Test Results - inputs: - PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults' - ArtifactName: 'Windows FCS test results' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: SourceBuild_Linux - pool: - vmImage: ubuntu-16.04 - timeoutInMinutes: 90 - steps: - - script: ./eng/cibuild.sh --configuration Release /p:DotNetBuildFromSource=true /p:FSharpSourceBuild=true - - task: PublishBuildArtifacts@1 - displayName: Publish Build Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/Release' - ArtifactName: 'SourceBuild_Linux build log' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) - -- job: SourceBuild_Windows - pool: - vmImage: windows-2019 - timeoutInMinutes: 90 - steps: - - script: eng\CIBuild.cmd -configuration Release -noSign /p:DotNetBuildFromSource=true /p:FSharpSourceBuild=true - - task: PublishBuildArtifacts@1 - displayName: Publish Build Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\Release' - ArtifactName: 'SourceBuild_Windows build log' - publishLocation: Container - continueOnError: true - condition: not(succeeded()) diff --git a/README.md b/README.md index f1f56bba12e..2eaa73a983f 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,7 @@ Even if you find a single-character typo, we're happy to take the change! Althou | Branch | Status | |:------:|:------:| -|master|[![Build Status](https://dnceng.visualstudio.com/_apis/public/build/definitions/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/106/badge?branchname=master)](https://dnceng.visualstudio.com/public/public%20Team/_build?definitionId=106&_a=history)| -|dev15.9|[![Build Status](https://dnceng.visualstudio.com/_apis/public/build/definitions/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/106/badge?branchname=dev15.9)](https://dnceng.visualstudio.com/public/public%20Team/_build?definitionId=106&_a=history)| -|dev16.0|[![Build Status](https://dnceng.visualstudio.com/_apis/public/build/definitions/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/106/badge?branchname=dev16.0)](https://dnceng.visualstudio.com/public/public%20Team/_build?definitionId=106&_a=history)| +|master|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/fsharp/fsharp-ci?branchName=master)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=496&branchName=master)| ## Using nightly releases in Visual Studio diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000000..750cd0b5db0 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,210 @@ +# CI and PR triggers +trigger: +- master +- dev16.1 +- release/* +pr: +- master +- dev16.1 +- release/* + +variables: + - name: _TeamName + value: FSharp + - name: _BuildConfig + value: Release + - name: _PublishUsingPipelines + value: true + - name: _DotNetArtifactsCategory + value: .NETCore + - name: VisualStudioDropName + value: Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber) + +jobs: + +#---------------------------------------------------------------------------------------------------------------------# +# Signed build # +#---------------------------------------------------------------------------------------------------------------------# +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: /eng/common/templates/jobs/jobs.yml + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishTestResults: false + enablePublishBuildAssets: true + enablePublishUsingPipelines: $(_PublishUsingPipelines) + enableTelemetry: true + helixRepo: dotnet/fsharp + jobs: + - job: Full_Signed + pool: + name: NetCoreInternal-Pool + queue: buildpool.windows.10.amd64.vs2017 + variables: + - group: DotNet-Blob-Feed + - group: DotNet-Symbol-Server-Pats + - name: _SignType + value: Real + - name: _DotNetPublishToBlobFeed + value: true + steps: + - checkout: self + clean: true + - script: eng\CIBuild.cmd + -configuration $(_BuildConfig) + -prepareMachine + -testAll + -warnaserror:0 + /p:SignType=$(_SignType) + /p:DotNetSignType=$(_SignType) + /p:MicroBuild_SigningEnabled=true + /p:OverridePackageSource=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + /p:TeamName=$(_TeamName) + /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) + /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + /p:DotNetPublishToBlobFeed=true + /p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines) + /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) + /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) + /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) + /p:OfficialBuildId=$(BUILD.BUILDNUMBER) + /p:PublishToSymbolServer=true + /p:VisualStudioDropName=$(VisualStudioDropName) + +#---------------------------------------------------------------------------------------------------------------------# +# PR builds # +#---------------------------------------------------------------------------------------------------------------------# +- ${{ if eq(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/templates/jobs/jobs.yml + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishTestResults: false + enablePublishBuildAssets: true + enablePublishUsingPipelines: $(_PublishUsingPipelines) + enableTelemetry: true + helixRepo: dotnet/fsharp + jobs: + + # Windows + - job: Windows + pool: + vmImage: windows-2019 + timeoutInMinutes: 120 + strategy: + maxParallel: 4 + matrix: + desktop_release: + _configuration: Release + _testKind: testDesktop + coreclr_release: + _configuration: Release + _testKind: testCoreclr + fsharpqa_release: + _configuration: Release + _testKind: testFSharpQA + vs_release: + _configuration: Release + _testKind: testVs + steps: + - checkout: self + clean: true + - script: eng\CIBuild.cmd -configuration $(_configuration) -$(_testKind) + displayName: Build / Test + + # Linux + - job: Linux + pool: + vmImage: ubuntu-16.04 + variables: + - name: _SignType + value: Test + steps: + - checkout: self + clean: true + - script: ./eng/cibuild.sh --configuration $(_BuildConfig) --testcoreclr + displayName: Build / Test + + # MacOS + - job: MacOS + pool: + vmImage: macOS-10.13 + variables: + - name: _SignType + value: Test + steps: + - checkout: self + clean: true + - script: ./eng/cibuild.sh --configuration $(_BuildConfig) --testcoreclr + displayName: Build / Test + + # Source Build Linux + - job: SourceBuild_Linux + pool: + vmImage: ubuntu-16.04 + steps: + - checkout: self + clean: true + - script: ./eng/cibuild.sh --configuration Release /p:DotNetBuildFromSource=true /p:FSharpSourceBuild=true + displayName: Build + + # Source Build Windows + - job: SourceBuild_Windows + pool: + vmImage: windows-2019 + steps: + - checkout: self + clean: true + - script: eng\CIBuild.cmd -configuration Release -noSign /p:DotNetBuildFromSource=true /p:FSharpSourceBuild=true + displayName: Build + +#---------------------------------------------------------------------------------------------------------------------# +# FCS builds # +#---------------------------------------------------------------------------------------------------------------------# + +- ${{ if eq(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/templates/jobs/jobs.yml + parameters: + enableMicrobuild: true + enablePublishTestResults: false + enablePublishBuildAssets: true + enablePublishUsingPipelines: false + enableTelemetry: true + helixRepo: dotnet/fsharp + jobs: + + - job: Windows_FCS + pool: + vmImage: windows-2019 + variables: + - name: _SignType + value: Test + steps: + - checkout: self + clean: true + - script: fcs\build.cmd TestAndNuget + displayName: Build / Test + + - job: Linux_FCS + pool: + vmImage: ubuntu-16.04 + variables: + - name: _SignType + value: Test + steps: + - checkout: self + clean: true + - script: ./fcs/build.sh Build + displayName: Build + + - job: MacOS_FCS + pool: + vmImage: macOS-10.13 + variables: + - name: _SignType + value: Test + steps: + - checkout: self + clean: true + - script: ./fcs/build.sh Build + displayName: Build diff --git a/src/fsharp/PatternMatchCompilation.fs b/src/fsharp/PatternMatchCompilation.fs index 03718e8fe5a..ddd8fc129c7 100644 --- a/src/fsharp/PatternMatchCompilation.fs +++ b/src/fsharp/PatternMatchCompilation.fs @@ -589,7 +589,7 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m = // All these should also always have default cases | (TCase(DecisionTreeTest.Const ConstNeedsDefaultCase, _) :: _), None -> - error(InternalError("inexhaustive match - need a default cases!", m)) + error(InternalError("inexhaustive match - need a default case!", m)) // Split string, float, uint64, int64, unativeint, nativeint matches into serial equality tests | TCase((DecisionTreeTest.ArrayLength _ | DecisionTreeTest.Const (Const.Single _ | Const.Double _ | Const.String _ | Const.Decimal _ | Const.Int64 _ | Const.UInt64 _ | Const.IntPtr _ | Const.UIntPtr _)), _) :: _, Some dflt -> @@ -1063,7 +1063,7 @@ let CompilePatternBasic // Project a successful edge through the frontiers. let investigation = Investigation(i', discrim, path) - let frontiers = frontiers |> List.collect (GenerateNewFrontiersAfterSucccessfulInvestigation inpExprOpt resPostBindOpt investigation) + let frontiers = frontiers |> List.collect (GenerateNewFrontiersAfterSuccessfulInvestigation inpExprOpt resPostBindOpt investigation) let tree = InvestigateFrontiers refuted frontiers // Bind the resVar for the union case, if we have one let tree = @@ -1104,7 +1104,7 @@ let CompilePatternBasic // Build a new frontier that represents the result of a successful investigation // at rule point (i', discrim, path) - and GenerateNewFrontiersAfterSucccessfulInvestigation inpExprOpt resPostBindOpt (Investigation(i', discrim, path)) (Frontier (i, active, valMap) as frontier) = + and GenerateNewFrontiersAfterSuccessfulInvestigation inpExprOpt resPostBindOpt (Investigation(i', discrim, path)) (Frontier (i, active, valMap) as frontier) = if (isMemOfActives path active) then let (SubExpr(accessf, ve)), pat = lookupActive path active @@ -1238,7 +1238,7 @@ let CompilePatternBasic | _ -> [frontier] - | _ -> failwith "pattern compilation: GenerateNewFrontiersAfterSucccessfulInvestigation" + | _ -> failwith "pattern compilation: GenerateNewFrontiersAfterSuccessfulInvestigation" else [frontier] and BindProjectionPattern (Active(path, subExpr, p) as inp) ((accActive, accValMap) as s) =