Migrated to .NET 9.0.201 and F# compiler 43.9.201#722
Migrated to .NET 9.0.201 and F# compiler 43.9.201#722xperiandri merged 8 commits intofsprojects:masterfrom
9.0.201 and F# compiler 43.9.201#722Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR upgrades the solution to .NET 9.0.201 and F# compiler 43.9.201, updating project files and code to match new F# AST signatures and adjusting test infrastructure.
- Updated all
*.fsprojfiles to targetnet9.0and added centralized package references. - Adapted F# AST pattern matches and helper functions to the new compiler shapes (extra tuple fields).
- Refactored tests to use
fprintf TestContext.Outand made minor signature/type adjustments.
Reviewed Changes
Copilot reviewed 39 out of 41 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/.../TestConsoleApplication.fs | Updated error-extraction logic and TemporaryFile signature. |
| tests/.../TestApi.fs | Switched from Console.WriteLine to fprintf TestContext.Out. |
All *.fsproj (tests & src) |
Migrated target frameworks to net9.0 and added package refs. |
| src/.../HintMatcher.fs | Adapted SynSimplePats matching to new AST signature. |
| global.json | Removed pinned SDK version, leaving only rollForward. |
| @@ -1,6 +1,5 @@ | |||
| { | |||
| "sdk": { | |||
There was a problem hiding this comment.
The sdk section in global.json is missing the required version property, which can prevent .NET from selecting the correct SDK. Re-add a "version": "<sdk-version>" entry.
| "sdk": { | |
| "sdk": { | |
| "version": "7.0.100", |
| if splitOutput.[i].StartsWith "Error" then yield splitOutput.[i - 1] ] | ||
|
|
||
| type TemporaryFile(fileContent, extension) = | ||
| type TemporaryFile(fileContent : string, extension) = |
There was a problem hiding this comment.
[nitpick] For consistency and clarity, add an explicit type annotation to the extension parameter (e.g., extension: string).
| type TemporaryFile(fileContent : string, extension) = | |
| type TemporaryFile(fileContent : string, extension: string) = |
9.0.201 and F# compiler 43.9.201
| <PackageVersion Include="Ionide.ProjInfo.ProjectSystem" Version="0.70.2" /> | ||
| <PackageVersion Include="Ionide.ProjInfo.FCS" Version="0.70.2" /> | ||
| <PackageVersion Include="Ionide.ProjInfo" Version="0.70.2" /> | ||
| <PackageVersion Include="Ionide.ProjInfo.Sln" Version="0.68.0" /> |
There was a problem hiding this comment.
fwiw, ProjInfo 0.70 dropped Ionide.ProjInfo.Sln in favor of using theMicrosoft.VisualStudio.SolutionPersistence instead, so I don't know if this is used directly?
Querying because one of the reasons for the change was to get support for .slnx solutions, which could be useful here?
There was a problem hiding this comment.
Great suggestion. I've implemented that. It will come in another PR
## [0.25.0] - 2025-07-11 - Migrate from `Paket` to `Directory.Packages.props` #722 [@xperiandri] - Migrate to .NET `9.0.201` and FCS `43.9.201` #722 [@xperiandri] - Write test logs to test context output #722 [@xperiandri] - Use string interpolation instead of `+` concatenation #724 [@xperiandri] - Run tests in parallel #728 [@xperiandri] - Remove `NoPartialFunctions` compiler workaround (#698) [@webwarrior-ws] - Add `SLNX` and `SLNF` format support and migrate to SLNX solution #723 [@xperiandri] Remove `Ionide.ProjInfo.Sln` NuGet package dependency - Remove `Newtonsoft.Json` NuGet dependency #725 [@xperiandri] - Add missing rule checks for FL0079-FL0081 #713 [@BennieCopeland] - Modify `.gitignore` to the Visual Studio standard one #735 [@xperiandri] - Add basic Copilot instructions and GitHub MCP #726 [@xperiandri] - Migrate `Fornax` to `0.16.0-beta002` and `FSharp.Formatting` to `20.0.1` #736 [@xperiandri, @Numpsy] - Update the build instructions to use `dotnet fsi` instead of `fake-cli` #734 [@Numpsy]
Paket9.0.201and F# compiler43.9.201