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()