Skip to content

Commit af79c3e

Browse files
authored
Merge branch 'feature/lsp' into extension-config
2 parents 6d4877c + 7ac0a54 commit af79c3e

File tree

320 files changed

+6989
-4606
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

320 files changed

+6989
-4606
lines changed

.config/dotnet-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"rollForward": true
4646
},
4747
"fantomas": {
48-
"version": "6.2.3",
48+
"version": "7.0.1",
4949
"commands": [
5050
"fantomas"
5151
],

.config/service-branch-merge.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
"MergeToBranch": "main",
66
"ExtraSwitches": "-QuietComments"
77
},
8+
"release/dev17.14": {
9+
"MergeToBranch": "release/dev18.0",
10+
"ExtraSwitches": "-QuietComments"
11+
},
812
"main": {
9-
"MergeToBranch": "release/dev17.14",
13+
"MergeToBranch": "release/dev18.0",
1014
"ExtraSwitches": "-QuietComments"
1115
}
1216
}
13-
}
17+
}

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
22
{
33
"name": "F#",
4-
"image": "mcr.microsoft.com/dotnet/sdk:9.0.200",
4+
"image": "mcr.microsoft.com/dotnet/sdk:9.0.202",
55
"features": {
66
"ghcr.io/devcontainers/features/common-utils:2.5.2": {},
77
"ghcr.io/devcontainers/features/git:1.3.2": {},

.fantomasignore

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,6 @@ src/Compiler/Checking/SignatureConformance.fs
4040
src/Compiler/Checking/TypeHierarchy.fs
4141
src/Compiler/Checking/TypeRelations.fs
4242

43-
# nullness-related problems
44-
src/Compiler/Utilities/lib.fsi
45-
src/Compiler/Utilities/Cancellable.fsi
46-
src/FSharp.Core/tasks.fsi
47-
src/FSharp.Core/tasks.fs
48-
src/FSharp.Core/resumable.fs
49-
src/Compiler/DependencyManager/DependencyProvider.fs
50-
src/FSharp.Core/fslib-extra-pervasives.fs
51-
src/FSharp.Core/fslib-extra-pervasives.fsi
52-
53-
# Incorrectly formatted: https://github.com/dotnet/fsharp/pull/14645/commits/49443a67ea8a17670c8a7c80c8bdf91f82231e91 or https://github.com/fsprojects/fantomas/issues/2733
54-
# This CompilerImports.fs behavior is not fixed yet, following up in https://github.com/fsprojects/fantomas/issues/2733
55-
src/Compiler/Driver/CompilerImports.fs
5643
# The following files were formatted, but the "format, --check" loop is not stable.
5744
# Fantomas formats them, but still thinks they need formatting
5845
src/Compiler/Optimize/DetupleArgs.fs
@@ -96,45 +83,6 @@ src/FSharp.Core/printf.fs
9683
src/FSharp.Core/Query.fs
9784
src/FSharp.Core/seqcore.fs
9885

99-
100-
# fsharp (to investigate)
101-
102-
**/TypeProviders.fsi
103-
**/tainted.fsi
104-
105-
# uses nullness features
106-
107-
**/DependencyProvider.fsi
108-
src/FSharp.Core/array.fs
109-
src/FSharp.Core/option.fsi
110-
src/FSharp.Core/option.fs
111-
src/fsi/console.fs
112-
src/FSharp.Build/FSharpCommandLineBuilder.fs
113-
114-
src/Compiler/Utilities/Activity.fs
115-
src/Compiler/Utilities/sformat.fs
116-
src/Compiler/Utilities/illib.fsi
117-
src/Compiler/Utilities/illib.fs
118-
119-
120-
src/Compiler/Utilities/NullnessShims.fs
121-
src/Compiler/Utilities/DependencyGraph.fs
122-
src/Compiler/Utilities/LruCache.fsi
123-
src/Compiler/Utilities/LruCache.fs
124-
src/Compiler/Utilities/HashMultiMap.fsi
125-
src/Compiler/Utilities/HashMultiMap.fs
126-
src/Compiler/Facilities/AsyncMemoize.fsi
127-
src/Compiler/Facilities/AsyncMemoize.fs
128-
src/Compiler/AbstractIL/il.fs
129-
src/Compiler/SyntaxTree/LexerStore.fs
130-
131-
src/Compiler/Driver/GraphChecking/Graph.fsi
132-
src/Compiler/Driver/GraphChecking/Graph.fs
133-
134-
src/FSharp.Compiler.LanguageServer/Common/LifecycleManager.fs
135-
src/Compiler/DependencyManager/NativeDllResolveHandler.fsi
136-
src/Compiler/DependencyManager/AssemblyResolveHandler.fsi
137-
13886
# Fantomas limitations on implementation files (to investigate)
13987

14088
src/Compiler/AbstractIL/ilwrite.fs

.github/copilot-instructions.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# GitHub Copilot Instructions for F# Compiler
2+
3+
## Language and Environment
4+
- Use modern F# with functional-first approach
5+
- Target .NET Standard 2.0 for compatibility
6+
- Avoid external dependencies - the codebase is self-contained
7+
8+
## Code Style and Standards
9+
- Follow [coding standards](docs/coding-standards.md), especially:
10+
- Prefer immutability and pure functions
11+
- Use consistent naming (see abbreviation guide)
12+
- Process complex types recursively with pattern matching
13+
- Avoid single-character identifiers except in established patterns
14+
- This project uses .fsi signature files. When adding a new public API to a namespace/module which will be consumed from other file, add it to the respective .fsi signature file as well
15+
- Follow [overview](docs/overview.md) for key compiler data formats and representations
16+
17+
## Type System Handling
18+
- When working with `TType` instances, use appropriate stripping functions:
19+
- `stripTyparEqns` - Removes inference equations from type parameters
20+
- `stripTyEqns` - Removes type equations and type abbreviations
21+
- `stripTyEqnsAndErase` - Also erases compilation representations
22+
- Match the appropriate stripper to the context (e.g., display vs compilation)
23+
- Check equality with `typeEquiv` after stripping rather than direct comparison
24+
25+
## Core Data Structures
26+
- Use F# discriminated unions for type representations
27+
- Respect representation hiding through access control
28+
- Use `remapX` functions when transforming types across boundaries
29+
- Be aware of performance implications for recursive type operations
30+
31+
## Documentation and Naming
32+
- Document public APIs with XML comments
33+
- Use descriptive function names that indicate transformation direction
34+
- Follow established naming conventions in error messages
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
id:
2+
name: GitOps.PullRequestIssueManagement
3+
description: GitOps.PullRequestIssueManagement primitive
4+
owner:
5+
resource: repository
6+
disabled: false
7+
where:
8+
configuration:
9+
resourceManagementConfiguration:
10+
eventResponderTasks:
11+
- if:
12+
- payloadType: Issues
13+
- labelAdded:
14+
label: Breaking-change
15+
then:
16+
- addReply:
17+
reply: >-
18+
Refer to the [.NET SDK breaking change guidelines](https://github.com/dotnet/sdk/blob/main/documentation/project-docs/breaking-change-guidelines.md#required-process-for-all-net-sdk-breaking-changes)
19+
description: Add breaking change doc instructions to issue
20+
- if:
21+
- payloadType: Pull_Request
22+
- labelAdded:
23+
label: Breaking-change
24+
then:
25+
- addLabel:
26+
label: needs-breaking-change-doc-created
27+
- addReply:
28+
reply: >-
29+
Added `needs-breaking-change-doc-created` label because this PR has the `breaking-change` label.
30+
31+
32+
When you commit this breaking change:
33+
34+
35+
1. [ ] Create and link to this PR and the issue a matching issue in the dotnet/docs repo using the [breaking change documentation template](https://aka.ms/dotnet/docs/new-breaking-change-issue), then remove this `needs-breaking-change-doc-created` label.
36+
37+
2. [ ] Ask a committer to mail the `.NET SDK Breaking Change Notification` email list.
38+
39+
40+
You can refer to the [.NET SDK breaking change guidelines](https://github.com/dotnet/sdk/blob/main/documentation/project-docs/breaking-change-guidelines.md)
41+
description: Add breaking change instructions to PR.
42+
onFailure:
43+
onSuccess:

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,6 @@ positive.exe
134134
/tests/FSharp.Compiler.ComponentTests/FSharpChecker/StandardOutput.txt
135135

136136
# ilverify baseline result files
137-
*.bsl.actual
137+
*.bsl.actual
138+
/src/FSharp.DependencyManager.Nuget/StandardError.txt
139+
/src/FSharp.DependencyManager.Nuget/StandardOutput.txt

DEVGUIDE.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,15 @@ For example:
252252
module TimeCritical =
253253
```
254254

255+
For stress testing async code you can use a custom `FSharp.Test.StressAttribute`.
256+
For example, applied to a single xUnit test case:
257+
```fsharp
258+
[<Theory; Stress(Count = 1000)>]
259+
```
260+
it will start it many times at the same time, and execute in parallel.
261+
262+
263+
255264

256265
### Updating FCS surface area baselines
257266

Directory.Build.props

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@
1010
<IgnoreMibc Condition="'$(IgnoreMibc)' == ''">$(DotNetBuildSourceOnly)</IgnoreMibc>
1111
</PropertyGroup>
1212

13-
<PropertyGroup>
14-
<!-- TODO: These need to be removed once we merge/release the new SDK with noward and line fixes. -->
15-
<NoWarn>$(NoWarn);FS0064;FS1182</NoWarn>
16-
</PropertyGroup>
17-
1813
<!--
1914
When developers load the FSharp.Compiler.Service solution we set FSHARPCORE_USE_PACKAGE to true if it hasn't already been set to a value.
2015
This option ensures that building and testing uses the specified FSharp.Core nuget package instead of the local FSharp.Core project.
@@ -62,7 +57,7 @@
6257
since it's a non-arcade and non-sourcebuild scenario -->
6358
<FsLexPath>$(ArtifactsDir)/bin/fslex/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/$(RuntimeIdentifier)/fslex.dll</FsLexPath>
6459
<FsYaccPath>$(ArtifactsDir)/bin/fsyacc/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/$(RuntimeIdentifier)/fsyacc.dll</FsYaccPath>
65-
<DefineConstants>NO_CHECKNULLS;BUILDING_WITH_LKG;NO_NULLCHECKING_LIB_SUPPORT;$(DefineConstants)</DefineConstants>
60+
<DefineConstants>BUILDING_WITH_LKG;$(DefineConstants)</DefineConstants>
6661
</PropertyGroup>
6762

6863
<Import Project="$(MSBuildThisFileDirectory)/eng/Versions.props" Condition="'$(DISABLE_ARCADE)' == 'true'" />

FSharp.Profiles.props

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,23 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. -->
33
<Project>
4-
<PropertyGroup>
5-
<!-- This turns on/off the use of the feature within the codebase -->
6-
<!-- The default is off - it is selectively enabled -->
7-
<CheckNulls Condition="'$(CheckNulls)' == ''">false</CheckNulls>
8-
</PropertyGroup>
9-
10-
<PropertyGroup Condition="'$(FSHARPCORE_USE_PACKAGE)' == 'true'">
11-
<!-- nullness checking isn't possible when using shipped FSharp.Core package until it's updated -->
12-
<CheckNulls>false</CheckNulls>
13-
</PropertyGroup>
144

155
<PropertyGroup Condition="'$(Configuration)' == 'Proto'">
16-
<CheckNulls>false</CheckNulls>
17-
<DefineConstants>NO_CHECKNULLS;BUILDING_WITH_LKG;NO_NULLCHECKING_LIB_SUPPORT;$(DefineConstants)</DefineConstants>
18-
<NullCheckingSupportInLibrary>false</NullCheckingSupportInLibrary>
19-
</PropertyGroup>
20-
21-
<PropertyGroup Condition="'$(Configuration)' != 'Proto' and '$(BUILDING_USING_DOTNET)' != 'true' and '$(MSBuildProjectExtension)' == '.fsproj'"> <!-- VB.NET does not understand "preview". It only knows "old","older" and "boomer" :-)) (jk)-->
22-
<LangVersion>preview</LangVersion>
6+
<DefineConstants>BUILDING_WITH_LKG;$(DefineConstants)</DefineConstants>
237
</PropertyGroup>
248

25-
<PropertyGroup Condition="'$(BUILDING_USING_DOTNET)' == 'true'">
26-
<CheckNulls>false</CheckNulls>
9+
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.fsproj' and $(TolerateUnusedBindings) != 'true'">
10+
<WarningsAsErrors>1182;$(WarningsAsErrors)</WarningsAsErrors>
11+
<WarnOn>1182;$(WarnOn)</WarnOn>
2712
</PropertyGroup>
2813

29-
<PropertyGroup Condition="'$(CheckNulls)' == 'true'">
30-
<Nullable>enable</Nullable>
14+
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.fsproj' and $(TolerateUnusedBindings) == 'true'">
15+
<WarningsNotAsErrors>1182;$(WarningsNotAsErrors)</WarningsNotAsErrors>
16+
<NoWarn>1182;$(NoWarn)</NoWarn>
3117
</PropertyGroup>
3218

33-
<PropertyGroup Condition="'$(CheckNulls)' == 'false'">
34-
<!-- 3271: warning nullness annotations being ignored -->
35-
<NoWarn>$(NoWarn);3271</NoWarn>
36-
<DefineConstants>NO_CHECKNULLS;$(DefineConstants)</DefineConstants>
19+
<PropertyGroup Condition="'$(Configuration)' != 'Proto' and '$(BUILDING_USING_DOTNET)' != 'true' and '$(MSBuildProjectExtension)' == '.fsproj'"> <!-- VB.NET does not understand "preview". It only knows "old","older" and "boomer" :-)) (jk)-->
20+
<LangVersion>preview</LangVersion>
3721
</PropertyGroup>
3822

3923
<Choose>

FSharp.sln

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Benchmarks"
106106
EndProject
107107
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D58BFE8B-7C85-4D3B-B5F3-9A7BB90FF1EE}"
108108
ProjectSection(SolutionItems) = preProject
109+
src\Compiler\default.win32manifest = src\Compiler\default.win32manifest
109110
src\Compiler\FSComp.txt = src\Compiler\FSComp.txt
110111
src\Compiler\FSCompCheck.fsx = src\Compiler\FSCompCheck.fsx
111112
EndProjectSection

FSharpBuild.Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<SymStoreDirectory>$(ArtifactsDir)\SymStore</SymStoreDirectory>
2828
<ProtoOutputPath>$(ArtifactsDir)\Bootstrap</ProtoOutputPath>
2929
<ValueTupleImplicitPackageVersion>4.4.0</ValueTupleImplicitPackageVersion>
30-
<WarningsAsErrors>1182;0025;$(WarningsAsErrors)</WarningsAsErrors>
30+
<WarningsAsErrors>0025;$(WarningsAsErrors)</WarningsAsErrors>
3131
<OtherFlags>$(OtherFlags) --nowarn:3384</OtherFlags>
3232
<OtherFlags>$(OtherFlags) --times --nowarn:75</OtherFlags>
3333
<OtherFlags Condition="$(AdditionalFscCmdFlags) != ''">$(OtherFlags) $(AdditionalFscCmdFlags)</OtherFlags>

NuGet.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<clear />
99
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
1010
<!-- Begin: Package sources from DotNet-msbuild-Trusted -->
11-
<add key="darc-pub-DotNet-msbuild-Trusted-a4ef1e9" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-DotNet-msbuild-Trusted-a4ef1e90/nuget/v3/index.json" />
11+
<add key="darc-pub-DotNet-msbuild-Trusted-7ad4e1c" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-DotNet-msbuild-Trusted-7ad4e1c7/nuget/v3/index.json" />
1212
<!-- End: Package sources from DotNet-msbuild-Trusted -->
1313
<!--End: Package sources managed by Dependency Flow automation. Do not edit the sources above.-->
1414
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />

azure-pipelines-PR.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ stages:
208208
enablePublishBuildAssets: true
209209
enablePublishUsingPipelines: $(_PublishUsingPipelines)
210210
enableSourceBuild: true
211+
sourceBuildParameters:
212+
platforms:
213+
- name: 'Managed'
214+
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9'
215+
buildArguments: '--source-build'
211216
enableTelemetry: true
212217
helixRepo: dotnet/fsharp
213218
jobs:

azure-pipelines.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ extends:
103103
enablePublishBuildAssets: true
104104
enablePublishUsingPipelines: $(_PublishUsingPipelines)
105105
enableSourceBuild: true
106+
sourceBuildParameters:
107+
platforms:
108+
- name: 'Managed'
109+
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9'
110+
buildArguments: '--source-build'
106111
enableTelemetry: true
107112
helixRepo: dotnet/fsharp
108113
jobs:

buildtools/fslex/fslex.fsproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
<TargetFramework>$(FSharpNetCoreProductTargetFramework)</TargetFramework>
66
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
77
<RollForward Condition="'$(BUILDING_USING_DOTNET)' == 'true'">LatestMajor</RollForward>
8-
<NoWarn>$(NoWarn);64;1182;1204</NoWarn> <!--Temporary fix for sourcebuild -->
8+
<NoWarn>$(NoWarn);64;1204</NoWarn> <!--Temporary fix for sourcebuild -->
9+
<TolerateUnusedBindings>true</TolerateUnusedBindings>
910
</PropertyGroup>
1011

1112
<PropertyGroup>

buildtools/fsyacc/fsyacc.fsproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
<TargetFramework>$(FSharpNetCoreProductTargetFramework)</TargetFramework>
66
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
77
<RollForward Condition="'$(BUILDING_USING_DOTNET)' == 'true'">LatestMajor</RollForward>
8-
<NoWarn>$(NoWarn);64;1182;1204</NoWarn> <!--Temporary fix for sourcebuild -->
8+
<NoWarn>$(NoWarn);64;1204</NoWarn> <!--Temporary fix for sourcebuild -->
9+
<TolerateUnusedBindings>true</TolerateUnusedBindings>
910
</PropertyGroup>
1011

1112
<PropertyGroup>

docs/release-notes/.FSharp.Compiler.Service/9.0.300.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
### Fixed
2+
* Fix missing TailCall warning in TOp.IntegerForLoop ([PR #18399](https://github.com/dotnet/fsharp/pull/18399))
23
* Fix classification of `nameof` in `nameof<'T>`, `match … with nameof ident -> …`. ([Issue #10026](https://github.com/dotnet/fsharp/issues/10026), [PR #18300](https://github.com/dotnet/fsharp/pull/18300))
34
* Fix Realsig+ generates nested closures with incorrect Generic ([Issue #17797](https://github.com/dotnet/fsharp/issues/17797), [PR #17877](https://github.com/dotnet/fsharp/pull/17877))
45
* Fix optimizer internal error for records with static fields ([Issue #18165](https://github.com/dotnet/fsharp/issues/18165), [PR #18280](https://github.com/dotnet/fsharp/pull/18280))
@@ -18,19 +19,27 @@
1819
* Miscellanous parentheses analyzer fixes. ([PR #18350](https://github.com/dotnet/fsharp/pull/18350))
1920
* Fix duplicate parse error reporting for GetBackgroundCheckResultsForFileInProject ([Issue #18379](https://github.com/dotnet/fsharp/issues/18379) [PR #18380](https://github.com/dotnet/fsharp/pull/18380))
2021
* Fix MethodDefNotFound when compiling code invoking delegate with option parameter ([Issue #5171](https://github.com/dotnet/fsharp/issues/5171), [PR #18385](https://github.com/dotnet/fsharp/pull/18385))
22+
* Fix #r nuget ..." downloads unneeded packages ([Issue #18231](https://github.com/dotnet/fsharp/issues/18231), [PR #18393](https://github.com/dotnet/fsharp/pull/18393))
23+
* Fix checking bug in unpickling [PR #18430](https://github.com/dotnet/fsharp/pull/18430)
24+
* Reenable β-reduction and subsequent reoptimization of immediately-invoked F#-defined generic delegates. ([PR #18401](https://github.com/dotnet/fsharp/pull/18401))
25+
* Fixed [#18433](https://github.com/dotnet/fsharp/issues/18433), a rare case of an internal error in xml comment processing. ([PR #18436](https://github.com/dotnet/fsharp/pull/18436))
26+
* Fix confusing type inference error in task expression ([Issue #13789](https://github.com/dotnet/fsharp/issues/13789), [PR #18450](https://github.com/dotnet/fsharp/pull/18450))
27+
* Fix missing `null` highlighting in tooltips ([PR #18457](https://github.com/dotnet/fsharp/pull/18457))
28+
* Make `[<CallerMemberName; Struct>]` combination work([PR #18444](https://github.com/dotnet/fsharp/pull/18444/))
2129

2230
### Added
2331
* Added missing type constraints in FCS. ([PR #18241](https://github.com/dotnet/fsharp/pull/18241))
2432
* The 'use' keyword can be used on IDisposable|null without nullness warnings ([PR #18262](https://github.com/dotnet/fsharp/pull/18262))
2533
* Add support for C# `Experimental` attribute. ([PR #18253](https://github.com/dotnet/fsharp/pull/18253))
2634
* Nullness warnings are issued for signature<>implementation conformance ([PR #18186](https://github.com/dotnet/fsharp/pull/18186))
2735
* Symbols: Add FSharpAssembly.IsFSharp ([PR #18290](https://github.com/dotnet/fsharp/pull/18290))
36+
* Type checker: don't suppress errors while checking expressions ([PR #18311](https://github.com/dotnet/fsharp/pull/18311))
2837
* Type parameter constraint `null` in generic code will now automatically imply `not struct` ([Issue #18320](https://github.com/dotnet/fsharp/issues/18320), [PR #18323](https://github.com/dotnet/fsharp/pull/18323))
2938
* Add a switch to determine whether to generate a default implementation body for overridden method when completing. [PR #18341](https://github.com/dotnet/fsharp/pull/18341)
39+
* Use a more accurate range for CE Combine methods. [PR #18394](https://github.com/dotnet/fsharp/pull/18394)
3040

3141

3242
### Changed
33-
3443
* FSharpCheckFileResults.ProjectContext.ProjectOptions will not be available when using the experimental Transparent Compiler feature. ([PR #18205](https://github.com/dotnet/fsharp/pull/18205))
3544
* Update `Obsolete` attribute checking to account for `DiagnosticId` and `UrlFormat` properties. ([PR #18224](https://github.com/dotnet/fsharp/pull/18224))
3645
* Remove `Cancellable.UsingToken` from tests ([PR #18276](https://github.com/dotnet/fsharp/pull/18276))

docs/release-notes/.FSharp.Core/9.0.300.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
### Added
55
* Added nullability annotations to `.Using` builder method for `async` and `task` builders ([PR #18292](https://github.com/dotnet/fsharp/pull/18292))
6+
* Support for `and!` in `TaskBuilder` ([LanguageSuggestion #1363](https://github.com/fsharp/fslang-suggestions/issues/1363), [PR #18451](https://github.com/dotnet/fsharp/pull/18451))
67

78
### Changed
89

docs/release-notes/.VisualStudio/17.14.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
### Fixed
2+
* Fix #r nuget ..." downloads unneeded packages ([Issue #18231](https://github.com/dotnet/fsharp/issues/18231), [PR #18393](https://github.com/dotnet/fsharp/pull/18393))
23

34
### Added
45
* Add a switch to determine whether to generate a default implementation body for overridden method when completing. [PR #18341](https://github.com/dotnet/fsharp/pull/18341)

0 commit comments

Comments
 (0)