Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
ca33bc3
Place the added open from the syntax tree, not from a line of text
xperiandri Sep 9, 2026
c2a2a2d
Run dotnet fantomas
xperiandri Sep 9, 2026
6b348db
Break the line when the declaration shares it with what precedes it
xperiandri Sep 10, 2026
8fd01af
Enter a nested module declared on one line at its first declaration
xperiandri Sep 30, 2026
d34a393
Take the line break from the line above when the last line has none
xperiandri Sep 30, 2026
5831886
Suggest open type where a plain open cannot reach
xperiandri Sep 9, 2026
1d5624a
Offer every open that resolves the name, not the first one found
xperiandri Sep 9, 2026
1cb29fc
Cover the qualification suggestions the fix offers alongside the opens
xperiandri Sep 9, 2026
6d2a0f6
Qualify from the first identifier written, not the unresolved one
xperiandri Sep 29, 2026
f2b90f3
Tell open from open type by the symbol, not by a new AssemblySymbol f…
xperiandri Sep 30, 2026
267cce3
Don't offer open type for a type inside a generic type
xperiandri Sep 30, 2026
da608ad
Put what System holds first among the qualifications too
xperiandri Sep 30, 2026
dc46686
Enter a one-line nested module only from its own line
xperiandri Oct 11, 2026
9d0b135
Merge branch 'fix/add-open-placement' into fix/add-open-type
xperiandri Oct 11, 2026
2d32167
Place the added open from the syntax tree, not from a line of text
xperiandri Sep 9, 2026
9d7c8dc
Run dotnet fantomas
xperiandri Sep 9, 2026
6182b92
Break the line when the declaration shares it with what precedes it
xperiandri Sep 10, 2026
9542a9b
Enter a nested module declared on one line at its first declaration
xperiandri Sep 30, 2026
bced991
Take the line break from the line above when the last line has none
xperiandri Sep 30, 2026
1eff620
Enter a one-line nested module only from its own line
xperiandri Oct 11, 2026
6682313
Merge remote-tracking branch 'origin/main' into fix/add-open-type
xperiandri Oct 15, 2026
64ee01b
Name the open placement instead of commenting it
xperiandri Oct 15, 2026
9e488ea
Run the open placement cases as theories
xperiandri Oct 15, 2026
529c3f7
Merge branch 'fix/add-open-placement' into fix/add-open-type
xperiandri Oct 15, 2026
bf968fd
Say in names what the open suggestions comment on
xperiandri Oct 15, 2026
db6709e
Run the open type and every-candidate cases as theories
xperiandri Oct 15, 2026
af8fc57
Merge remote-tracking branch 'origin/main' into fix/add-open-placement
xperiandri Oct 29, 2026
6a7a4f7
Keep the open out of a header comment and place it by the exact posit…
xperiandri Oct 29, 2026
a9e337d
Merge branch 'fix/add-open-placement' into fix/add-open-type
xperiandri Oct 29, 2026
88b3068
Update the active-pattern tests for the unified spacing of the added …
xperiandri Oct 29, 2026
80e5c8b
Keep the public records as they were and pass the namespace ident cou…
xperiandri Oct 29, 2026
4ade829
Merge branch 'fix/add-open-placement' into fix/add-open-type
xperiandri Oct 29, 2026
06d0fac
Qualify the attribute in the nested module test so only the use in th…
xperiandri Oct 29, 2026
2828606
Merge branch 'fix/add-open-placement' into fix/add-open-type
xperiandri Oct 29, 2026
2155ba0
Look up the open an applied-case test is about by its message
xperiandri Oct 29, 2026
e70c224
Keep one release note for #20500
xperiandri Oct 29, 2026
8946e51
Keep a block comment inside the first declaration out of the header
xperiandri Oct 30, 2026
784a213
Merge fix/add-open-placement into fix/add-open-type
xperiandri Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/release-notes/.FSharp.Compiler.Service/11.0.200.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* Checker: report Bind resolution failures at the bound expression ([PR #20747](https://github.com/dotnet/fsharp/pull/20747))
* A project reusing cached framework imports is checked with its own `--pathmap` instead of the map of the project that filled the cache, so the ranges of its in-memory reference data name its real files. ([Issue #20474](https://github.com/dotnet/fsharp/issues/20474), [PR #20476](https://github.com/dotnet/fsharp/pull/20476))
* Split Linux CoreCLR CI into two parallel test batches to reduce test turnaround time. ([PR #20587](https://github.com/dotnet/fsharp/pull/20587))
* `ParsedInput.FindNearestPointToInsertOpenDeclaration` reports where an `open` belongs from the syntax tree: `InsertionContext.Pos` is the first line inside the scope for every `ScopeKind`, so an `open` no longer lands above a header written as `[<AutoOpen>] module Ns.Name` or below the first declaration when no blank line follows the header, and it stays out of a block comment that runs on from the header. `ParsedInput.AdjustInsertionPoint` only skips the blank line under a header. ([PR #20500](https://github.com/dotnet/fsharp/pull/20500))
* Fix wrong results or non-terminating loops in optimized code when an integer `for` loop's start or end expression binds a local. ([Issue #20732](https://github.com/dotnet/fsharp/issues/20732), [PR #20733](https://github.com/dotnet/fsharp/pull/20733))
* Checker: resolve named arguments of failed and unfinished method calls ([PR #20749](https://github.com/dotnet/fsharp/pull/20749))
* Fix `NativePtr.stackalloc` used inside the `with` handler, filter or `finally` block of a `try` expression producing an assembly that throws `InvalidProgramException` at method load. Direct or mandatory-inline allocations are now reported at compile time as error FS3924; calls to non-inline allocation helpers, including handler-local helpers, remain legal and retain their method boundary during inlining and let-binding elimination. ([Issue #20295](https://github.com/dotnet/fsharp/issues/20295), [PR #20491](https://github.com/dotnet/fsharp/pull/20491))
Expand Down
3 changes: 3 additions & 0 deletions docs/release-notes/.VisualStudio/18.vNext.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
* Go To Definition no longer blocks the UI thread with a bare `Task.Wait`: the synchronous `IFSharpGoToDefinitionService` call now waits through the cancellable threaded-wait dialog, and the editor's `TaskCompletionSource` bridges run their continuations on the thread pool instead of inline on whichever thread finished the check, so repeated F12 on a large solution no longer starves semantic classification and other main-thread work. ([PR #20482](https://github.com/dotnet/fsharp/pull/20482))
* Peek Definition on an F# symbol whose definition lives in metadata no longer deadlocks Visual Studio. Peek holds the main thread in `JoinableTaskFactory.Run` without pumping messages while it asks the language service for the definition, and generating the metadata document needs that same thread; Peek now stops at definitions that already have a document, and Go To Definition, which owns the wait it makes, still opens the generated one. ([PR #20503](https://github.com/dotnet/fsharp/pull/20503))
* Improve Find All References performance by throttling parallel typechecks. ([PR #20128](https://github.com/dotnet/fsharp/pull/20128), [PR #20695](https://github.com/dotnet/fsharp/pull/20695))
* The "open namespace" code fix and the completion that adds an `open` place it from the syntax tree, so it no longer lands above the file's own module declaration (`[<AutoOpen>] module Ns.Name` on one line) or below the first declaration when no blank line follows the header, or inside a block comment that runs on from the header, and both follow the file's line endings. ([PR #20500](https://github.com/dotnet/fsharp/pull/20500))
* The "open namespace" code fix offers `open type System.Console` where it used to offer `open System.Console`, which does not compile: a plain `open` only reaches namespaces and F# modules. A type inside a generic type is not offered, since `open type` needs type arguments the name does not carry. ([PR #20501](https://github.com/dotnet/fsharp/pull/20501))
* The "open namespace" code fix lists every namespace and type a name can be resolved from instead of one arbitrary suggestion: an unresolved `File` was answered with `System.Net.WebRequestMethods` and `System.IO` was never offered. As in Roslyn's add-import fix, the list is capped at five opens and three qualifications and ordered with `System` first. ([PR #20501](https://github.com/dotnet/fsharp/pull/20501))
* Fix record-type Rename corrupting copy-and-update expressions, including from abstract signatures, while retaining Find All References results. ([Issue #20791](https://github.com/dotnet/fsharp/issues/20791), [PR #20797](https://github.com/dotnet/fsharp/pull/20797))
* Fixed Rename incorrectly renaming `get` and `set` keywords for properties with explicit accessors. ([Issue #18270](https://github.com/dotnet/fsharp/issues/18270), [PR #19252](https://github.com/dotnet/fsharp/pull/19252))
* Fixed Find All References crash when F# project contains non-F# files like `.cshtml`. ([Issue #16394](https://github.com/dotnet/fsharp/issues/16394), [PR #19252](https://github.com/dotnet/fsharp/pull/19252))
Expand Down
Loading
Loading