diff --git a/VisualFSharp.sln b/VisualFSharp.sln index c9bb5ddc220..821fb3e510a 100644 --- a/VisualFSharp.sln +++ b/VisualFSharp.sln @@ -193,7 +193,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FCSBenchmarks", "FCSBenchma EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Fsharp.ProfilingStartpointProject", "tests\benchmarks\Fsharp.ProfilingStartpointProject\Fsharp.ProfilingStartpointProject.fsproj", "{FE23BB65-276A-4E41-8CC7-F7752241DEBA}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Editor.Tests", "vsintegration\tests\FSharp.Editor.Tests\FSharp.Editor.Tests.fsproj", "{CBC96CC7-65AB-46EA-A82E-F6A788DABF80}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Editor.Tests", "vsintegration\tests\FSharp.Editor.Tests\FSharp.Editor.Tests.fsproj", "{CBC96CC7-65AB-46EA-A82E-F6A788DABF80}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e09a48547e4..209c6d580e1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -8,14 +8,14 @@ - + https://github.com/dotnet/arcade - 3817f2b38a05c37c950715f84c95d452bcacfe52 + 80b6be47e1425ea90c5febffac119250043a0c92 - + https://github.com/dotnet/arcade - 3817f2b38a05c37c950715f84c95d452bcacfe52 + 80b6be47e1425ea90c5febffac119250043a0c92 diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 96461052476..561576be97c 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -1,12 +1,5 @@ set(CROSS_ROOTFS $ENV{ROOTFS_DIR}) -# reset platform variables (e.g. cmake 3.25 sets LINUX=1) -unset(LINUX) -unset(FREEBSD) -unset(ILLUMOS) -unset(ANDROID) -unset(TIZEN) - set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH}) if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version) set(CMAKE_SYSTEM_NAME FreeBSD) diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh index 292ebb65358..41a26d802a9 100644 --- a/eng/common/native/init-compiler.sh +++ b/eng/common/native/init-compiler.sh @@ -132,8 +132,8 @@ if [[ -z "$CC" ]]; then exit 1 fi -# Only lld version >= 9 can be considered stable. lld doesn't support s390x. -if [[ "$compiler" == "clang" && "$majorVersion" -ge 9 && "$build_arch" != "s390x" ]]; then +# Only lld version >= 9 can be considered stable +if [[ "$compiler" == "clang" && "$majorVersion" -ge 9 ]]; then if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then LDFLAGS="-fuse-ld=lld" fi diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index e10a5968797..39be08d4b16 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -64,7 +64,7 @@ try { $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty } if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { - $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.4.1" -MemberType NoteProperty + $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.3.1" -MemberType NoteProperty } if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 42017109f37..1f1b78f2d45 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -34,7 +34,6 @@ jobs: - job: Asset_Registry_Publish dependsOn: ${{ parameters.dependsOn }} - timeoutInMinutes: 150 ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: displayName: Publish Assets @@ -74,6 +73,12 @@ jobs: - task: NuGetAuthenticate@0 + - task: PowerShell@2 + displayName: Enable cross-org NuGet feed authentication + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/enable-cross-org-publishing.ps1 + arguments: -token $(dn-bot-all-orgs-artifact-feeds-rw) + - task: PowerShell@2 displayName: Publish Build Assets inputs: diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml index c24193acfc9..1ac7f49a43c 100644 --- a/eng/common/templates/post-build/common-variables.yml +++ b/eng/common/templates/post-build/common-variables.yml @@ -1,4 +1,8 @@ variables: + - group: AzureDevOps-Artifact-Feeds-Pats + - group: DotNet-Blob-Feed + - group: DotNet-DotNetCli-Storage + - group: DotNet-MSRC-Storage - group: Publish-Build-Assets # Whether the build is internal or not diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index ef720f9d781..91251d08973 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -172,6 +172,12 @@ stages: - task: NuGetAuthenticate@0 displayName: 'Authenticate to AzDO Feeds' + - task: PowerShell@2 + displayName: Enable cross-org publishing + inputs: + filePath: eng\common\enable-cross-org-publishing.ps1 + arguments: -token $(dn-bot-dnceng-artifact-feeds-rw) + # Signing validation will optionally work with the buildmanifest file which is downloaded from # Azure DevOps above. - task: PowerShell@2 diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index fc56f63f6f2..44912694329 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -365,8 +365,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=17.4.1&view=overview - $defaultXCopyMSBuildVersion = '17.4.1' + # https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=17.3.1view=overview + $defaultXCopyMSBuildVersion = '17.3.1' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { @@ -413,7 +413,6 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = if($vsMinVersion -lt $vsMinVersionReqd){ Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible" $xcopyMSBuildVersion = $defaultXCopyMSBuildVersion - $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] } else{ # If the VS version IS compatible, look for an xcopy msbuild package diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 6586eab458e..e7d1e3897e0 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -521,7 +521,7 @@ global_json_file="${repo_root}global.json" # determine if global.json contains a "runtimes" entry global_json_has_runtimes=false if command -v jq &> /dev/null; then - if jq -er '. | select(has("runtimes"))' "$global_json_file" &> /dev/null; then + if jq -e '.tools | has("runtimes")' "$global_json_file" &> /dev/null; then global_json_has_runtimes=true fi elif [[ "$(cat "$global_json_file")" =~ \"runtimes\"[[:space:]\:]*\{ ]]; then diff --git a/global.json b/global.json index 8e2794cd320..7e6c01c2efc 100644 --- a/global.json +++ b/global.json @@ -1,24 +1,24 @@ { "sdk": { - "version": "7.0.100", + "version": "7.0.100-rc.2.22477.23", "allowPrerelease": true, "rollForward": "latestPatch" }, "tools": { - "dotnet": "7.0.100", + "dotnet": "7.0.100-rc.2.22477.23", "vs": { "version": "17.2", "components": [ "Microsoft.VisualStudio.Component.FSharp" ] }, - "xcopy-msbuild": "17.4.1" + "xcopy-msbuild": "17.3.1" }, "native-tools": { "perl": "5.32.1.1" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.22578.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.22578.1" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.22554.2", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.22554.2" } } \ No newline at end of file diff --git a/src/Compiler/Interactive/fsi.fs b/src/Compiler/Interactive/fsi.fs index 6a1c4b77c04..0485d4e06e5 100644 --- a/src/Compiler/Interactive/fsi.fs +++ b/src/Compiler/Interactive/fsi.fs @@ -1127,15 +1127,38 @@ type internal FsiConsolePrompt(fsiOptions: FsiCommandLineOptions, fsiConsoleOutp // A prompt gets "printed ahead" at start up. Tells users to start type while initialisation completes. // A prompt can be skipped by "silent directives", e.g. ones sent to FSI by VS. let mutable dropPrompt = 0 + let mutable showPrompt = true + // NOTE: SERVER-PROMPT is not user displayed, rather it's a prefix that code elsewhere // uses to identify the prompt, see service\FsPkgs\FSharp.VS.FSI\fsiSessionToolWindow.fs - let prompt = if fsiOptions.UseServerPrompt then "SERVER-PROMPT>\n" else "> " - member _.Print() = if dropPrompt = 0 then fsiConsoleOutput.uprintf "%s" prompt else dropPrompt <- dropPrompt - 1 + let prompt = + if fsiOptions.UseServerPrompt then + "SERVER-PROMPT>" + Environment.NewLine + else + "> " + + member _.Print() = + if showPrompt then + if dropPrompt = 0 then + fsiConsoleOutput.uprintf "%s" prompt + else + dropPrompt <- dropPrompt - 1 + + member _.PrintAhead() = + if showPrompt then + dropPrompt <- dropPrompt + 1 + fsiConsoleOutput.uprintf "%s" prompt - member _.PrintAhead() = dropPrompt <- dropPrompt + 1; fsiConsoleOutput.uprintf "%s" prompt + // Can be turned off when executing blocks of code using: + // # silentPrompt + member _.ShowPrompt + with get () = showPrompt + and set (value) = showPrompt <- value - member _.SkipNext() = dropPrompt <- dropPrompt + 1 + member _.SkipNext() = + if showPrompt then + dropPrompt <- dropPrompt + 1 member _.FsiOptions = fsiOptions @@ -2772,6 +2795,15 @@ type FsiInteractionProcessor fsiConsolePrompt.SkipNext() (* "silent" directive *) istate, Completed None + | ParsedHashDirective("interactiveprompt", ParsedHashDirectiveArguments ["show" | "hide" | "skip" as showPrompt], m) -> + match showPrompt with + | "show" -> fsiConsolePrompt.ShowPrompt <- true + | "hide" -> fsiConsolePrompt.ShowPrompt <- false + | "skip" -> fsiConsolePrompt.SkipNext() + | _ -> error(Error((FSComp.SR.fsiInvalidDirective("prompt", String.concat " " [showPrompt])), m)) + + istate, Completed None + | ParsedHashDirective("dbgbreak", [], _) -> let istate = {istate with debugBreak = true} istate, Completed None @@ -3072,7 +3104,7 @@ type FsiInteractionProcessor // After we've unblocked and got something to run we switch // over to the run-thread (e.g. the GUI thread) - let res = istate |> runCodeOnMainThread (fun ctok istate -> ExecuteParsedInteractionOnMainThread (ctok, diagnosticsLogger, action, istate, cancellationToken)) + let res = istate |> runCodeOnMainThread (fun ctok istate -> ExecuteParsedInteractionOnMainThread (ctok, diagnosticsLogger, action, istate, cancellationToken)) if progress then fprintfn fsiConsoleOutput.Out "Just called runCodeOnMainThread, res = %O..." res res) diff --git a/src/Compiler/Service/ServiceLexing.fs b/src/Compiler/Service/ServiceLexing.fs index a772cd707aa..c39546e975d 100644 --- a/src/Compiler/Service/ServiceLexing.fs +++ b/src/Compiler/Service/ServiceLexing.fs @@ -1126,6 +1126,7 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi | true, "savedll" | true, "nosavedll" #endif + | true, "interactiveprompt" | true, "silentCd" | true, "q" | true, "quit" diff --git a/tests/FSharp.Compiler.ComponentTests/FSharpChecker/SymbolUse.fs b/tests/FSharp.Compiler.ComponentTests/FSharpChecker/SymbolUse.fs index 80b5a1371a2..8549f8beaa9 100644 --- a/tests/FSharp.Compiler.ComponentTests/FSharpChecker/SymbolUse.fs +++ b/tests/FSharp.Compiler.ComponentTests/FSharpChecker/SymbolUse.fs @@ -67,3 +67,13 @@ val f: x: 'a -> TFirstV_1<'a> // This should be false, because it's also in the signature file Assert.True(symbolUse.IsPrivateToFile)) } + + [] + let ``Private function, with signature file`` () = + SyntheticProject.Create( + { sourceFile "First" [] with ExtraSource = "let private f3 x = x + 1" } + |> addSignatureFile).Workflow { + checkFile "First" (fun (typeCheckResult: FSharpCheckFileResults) -> + let symbolUse = typeCheckResult.GetSymbolUseAtLocation(6, 14, "let private f3 x = x + 1", ["f3"]) |> Option.defaultWith (fun () -> failwith "no symbol use found") + Assert.False(symbolUse.IsPrivateToFile)) + } \ No newline at end of file diff --git a/vsintegration/src/FSharp.VS.FSI/fsiSessionToolWindow.fs b/vsintegration/src/FSharp.VS.FSI/fsiSessionToolWindow.fs index b4a7397b868..2b876ade121 100644 --- a/vsintegration/src/FSharp.VS.FSI/fsiSessionToolWindow.fs +++ b/vsintegration/src/FSharp.VS.FSI/fsiSessionToolWindow.fs @@ -534,17 +534,16 @@ type internal FsiToolWindow() as this = executeTextNoHistory null text with _ -> () - let executeInteraction dbgBreak dir (filename: string) topLine text = - // Preserving previous functionality, including the #directives... - let interaction = - "\n" - + (sprintf "# silentCd @\"%s\" ;; " dir) + "\n" - + (if dbgBreak then "# dbgbreak\n" else "") - + (sprintf "# %d @\"%s\" " topLine filename) + "\n" - + text + "\n" - + "# 1 \"stdin\"" + "\n" (* stdin line number reset code *) - + ";;" + "\n" - + let executeInteraction dbgBreak dir filename topLine (text:string) = + let interaction = $""" +#interactiveprompt "hide" +#silentCd @"{dir}";; +{if dbgBreak then "#dbgbreak" else ""} +#{topLine} @"{filename}" +{text.ToString()} +#1 "stdin" +#interactiveprompt "show";; +""" executeTextNoHistory filename interaction let sendSelectionToFSI action = @@ -555,8 +554,8 @@ type internal FsiToolWindow() as this = | DebugSelection -> true, false try - let dte = provider.GetService(typeof) :?> DTE - let activeD = dte.ActiveDocument + let dte = provider.GetService(typeof) :?> DTE + let activeD = dte.ActiveDocument match activeD.Selection with | :? TextSelection as selection when selectLine || selection.Text = "" -> selection.SelectLine()