Skip to content

Feature nullness :: warn also for 'obj' type (since it can be infered for null literal) - #16962

Merged
T-Gro merged 24 commits into
dotnet:feature/nullnessfrom
T-Gro:feature-nullness-objty
Apr 19, 2024
Merged

Feature nullness :: warn also for 'obj' type (since it can be infered for null literal)#16962
T-Gro merged 24 commits into
dotnet:feature/nullnessfrom
T-Gro:feature-nullness-objty

Conversation

@T-Gro

@T-GroT-Gro commented Mar 28, 2024

Copy link
Copy Markdown
Member

Lift the special-casing for "obj_ty" in nullness checking diagnostics.

This also meant going trough the compiler and changing each usage of obj_ty to the respectful null-annotated version of it.
Among others, this affects compiler generated code for printing, equality and comparison.

@T-Gro
T-Gro changed the base branch from main to feature/nullnessMarch 28, 2024 09:50
@github-actions

Copy link
Copy Markdown
Contributor

❗ Release notes required


✅ Found changes and release notes in following paths:

Warning

No PR link found in some release notes, please consider adding it.

Change pathRelease notes pathDescription
src/FSharp.Coredocs/release-notes/.FSharp.Core/8.0.300.mdNo current pull request URL (#16962) found, please consider adding it
src/Compilerdocs/release-notes/.FSharp.Compiler.Service/8.0.300.mdNo current pull request URL (#16962) found, please consider adding it

@T-Gro
T-Gro marked this pull request as ready for review April 2, 2024 15:29
@T-Gro
T-Gro requested a review from a team as a code ownerApril 2, 2024 15:29
@T-Gro
T-Gro requested review from dsyme and vzarytovskiiApril 2, 2024 15:29
@T-GroT-Gro added the NO_RELEASE_NOTES Label for pull requests which signals, that user opted-out of providing release notes label Apr 2, 2024
Comment threadsrc/Compiler/Checking/AugmentWithHashCompare.fs
@T-Gro
T-Gro merged commit d78f5aa into dotnet:feature/nullnessApr 19, 2024
@T-Gro
T-Gro deleted the feature-nullness-objty branch April 19, 2024 10:58
vzarytovskii added a commit that referenced this pull request Jul 17, 2024
* squash
* squash
* move adhoc tests and clean errors
* fix up constraint solving and adhoc testing
* remove tests
* fantomas
* skip fails
* fix tests
* fix up test baselines for change in order in checking
* update tests
* don't overwrite baselines
* fix some test failures
* skip warnings
* skip warnings
* fix warning logic
* fix tests
* fix sizes
* fix build
* fantomas and validation update
* corrections to self-use
* [WIP] [RFC FS-1060] Nullness checking (applied to codebase) (#15265)
* enablement
* enablement
* fix build
* fix build
* fantomas
* selective adoption
* Revert "[WIP] [RFC FS-1060] Nullness checking (applied to codebase) (#15265)" (#15309)
This reverts commit 559c058.
* Fixes
* Feature/nullness - parsing of constraints (#15753)
* Feature/nullness - parsing of constraints for:
'T: not null .... syntax in Type argument specification
appType | NULL ... for specifying types
* applying changed syntax
* positive.fs updated
* positive.fs paranthesis
* fixing "parse warning Remove spaces between the type name and type parameter, e.g. "C<'T>", not "C <'T>". Type parameters must be placed directly adjacent to the type name."
* positive .bsl updated
* Please mighty fantomas
* Feature nullness metadata export (#15981)
* fix merge mistake
* fix build
* fantomas
* bsl fix
* il tests update
* fix test
* tests fixed
* fantomas
* fix tests
* trim test
* trimming test
* trim check
* now?
* IL tests
* il tests
* trim test
* trim
* one more time
* Merge main to feature/nullness (#16366)
* Fixes#16359 - correctly handle imports with 0 length public key tokens (#16363)
* Parser: recover on unfinished record decls, fix field ranges (#16357)
* Parser: recover on unfinished record decls, fix field ranges
* Fantomas
* Better diagnostic ranges for fields
* More parser tests
* Update surface area
* Fix xml doc test
* Update baselines
* Update src/Compiler/SyntaxTree/SyntaxTree.fsi
Co-authored-by: Edgar Gonzalez <edgargonzalez.info@gmail.com>
* Add MutableKeyword to SynFieldTrivia. (#11)
* Simplify
* Fantomas
---------
Co-authored-by: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Co-authored-by: Florian Verdonck <florian.verdonck@outlook.com>
---------
Co-authored-by: Kevin Ransom (msft) <codecutter@hotmail.com>
Co-authored-by: Eugene Auduchinok <eugene.auduchinok@jetbrains.com>
Co-authored-by: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Co-authored-by: Florian Verdonck <florian.verdonck@outlook.com>
Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
* syntax tree layout
* Nullness-related aggressive trimming of FSharp.Core (#16387)
* Merge main to feature/nullness (#16397)
* [main] Update dependencies from dnceng/internal/dotnet-optimization (#16150)
* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20231019.5
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime
From Version 1.0.0-prerelease.23515.2 -> To Version 1.0.0-prerelease.23519.5
* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20231019.5
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime
From Version 1.0.0-prerelease.23515.2 -> To Version 1.0.0-prerelease.23519.5
* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20231021.3
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime
From Version 1.0.0-prerelease.23515.2 -> To Version 1.0.0-prerelease.23521.3
* Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-optimization build 20231021.3
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime
From Version 1.0.0-prerelease.23515.2 -> To Version 1.0.0-prerelease.23521.3
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
* [main] Update dependencies from dotnet/arcade (#16241)
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231106.5
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23556.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231114.4
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23564.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231130.1
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23580.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231130.1
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23580.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231130.1
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23580.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231130.1
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23580.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/arcade build 20231130.1
Microsoft.DotNet.Arcade.Sdk
From Version 8.0.0-beta.23463.1 -> To Version 8.0.0-beta.23580.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23426.1 -> To Version 1.0.0-beta.23475.1 (parent: Microsoft.DotNet.Arcade.Sdk
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com>
Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
* Name resolution: don't search extension members in type abbreviations (#16390)
* Name resolution: don't search extension members in type abbreviations
* Add test
* Revert "[main] Update dependencies from dotnet/arcade (#16241)" (#16396)
This reverts commit f219a99.
* trimmed size updated
---------
Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com>
Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
Co-authored-by: Eugene Auduchinok <eugene.auduchinok@jetbrains.com>
* Nullness interop - import of C#-emitted metadata (#16423)
* Nullness - include in QuickInfo and in general in "typeEnc" (string representation of a type) (#16555)
* failing test
* todo for IL import
* explanation added
* il meta parsing
* flags evaluation
* you shall passs
* evaluateFirstOrderNullnessAndAdvance
* import il type with nullness
* type import
* IL nullness import
fields, props, events, method args, method return types - nullness imported from IL
* test rename
* fantomas
* get stack trace on error
* split ilmethod's type
* fix crashes for Csharp style extensions
* solve coexistance of nullness and Is* properties of DUs
* updating tests
* clean tests
* fantomas
* fantomas one more time
* importing nullness for generic typars
* print failing ivals, let's see
* write even more!
* isolated failing test - combo of module rec, signature file, IVT
* another attempt
* format
* test
* hide tests
* Remove 'specialname' for DU case tester
* format
* warning as error
* update baseline netcore
* nullable errors not in desktop framework
* surface area, trimming
* surface area
* cosmetic cleanup & annotations
* Rename to ILMethParentTypeInfo
* making vMapFold tail recursive
* physical nullnessEquiv
* format
* Commenting SkipNullness usages
* Nullness work - activity module
* Remove strict generic 'T:null' import
* Null|NonNull pattern also for regular compilation
* Backported Null|NonNull active pattern
* one more time
* revert
* Show nullness in quickinfo and in general in type representations
* Merge main to feature/nullness (#16539)
Merge of main + syntax conflict resolution + semantic conflict resolution
* release notes
* Fix ILType.Array import (#16585)
* Nullness - reading+writing metadata for 'inherits' and interface implementations (#16597)
* ILGenerator test case
* Nullness :: Format string %s should allow nullable string (#16656)
* Nullness:: Unchecked.nonNull for FSharp.Core (#16654)
* Nullness :: Pattern matching with null should mark input for subsequent clauses as without null + support for matching nulls in tuples (#16659)
* Feature nullness - support overrides of nullness annotation in the imported object hierarchy (#16711)
* Improve type inference w.r.t. nullness in printing (#16681)
* Update tests/AheadOfTime/Trimming/check.ps1
* Fix merge errors
* il tests reflecting visibility change
* Nullness feature :: New warning for functions insisting on a (WithNull) argument + typar equality fix (#16853)
Null-handling functions now have the option to raise a warning when they are called with a known-to-be-withoutNull argument.
That way, API authors (incl. Fsharp.Core) can help with cleaning code from superflous null checks.
While doing it, a strange error kept coming when using Option.ofObj and other functions with a (T | null) typar.
It turned out that nullness info had been striped from nullable typars on stripTyparEqnsAux calls in some occasions, leading to treating all typars as 'KnownWithoutNull' even when that was not true.
* Feature nullness - propper guards against ` | null ` on unsupported types (#16907)
TODOs resolved:
* mkAppTy resolved
* mkFunTyWithNullness
* delayed checks of post-infered values for nullness-carrying capabilities
* Feature nullness :: warn also for 'obj' type (since it can be infered for null literal) (#16962)
* Nullness feature :: various bugfixes (#17080)
* Bugfix - matching aliased nullable should strip nullness
Eliminating nullness after pattern matching null (that is , for subsequent patterns) must visit contents of abbreviations as well. Otherwise it does not work with the Maybe<T> type whcih we use in the compiler.
* Making 'obj' work with new 'not null' constraints in fslib functions
Bugfix: obj cannot be passed to generic typars which require T: not null, such as the NonNull active pattern.
This commit fixes it.
* Bugfix - false 'useless null' warning in nested applications
Error fixed:
Error on useless null checkwith nullness constraint propagation in code like this:let meTry = Option.ofObj (Path.GetDirectoryName "")`. The warning about 'useless Option.ofObj' points to the string literal, ignoring the string literal is first passed to an API which may return null
* Fix import for C# extension methods
Bugfix for:
C# extension methods which put "?" on the this argument are wrongly interpreted by moving the nullability elsewhere. See AsMemory<T> from System.Memory.dll , this treats byteArray.ToMemory() as resulting in a Memory<byte | null> which is clearly wrong.
Also, this now allows to call C# extension methods with ?this to be invoked on a nullable value.
* LinkedList First,Last bugfix
There was a bug of LinkedList .First and .Last properties not returning nullable nodes.
This was fixed by improved byte import in previous commit, adding a regression test for guarding this.
* Bugfix: Solve nullness for typars
This fixes a bug where `not null` generic constraint was incorrectly passed between two typars:`T1 | null` with not null constraint on T1, and T2 without constraints.
This occured when calling Option.ofObj(..) when the inner expression caused solving of generic type arguments, e.g. after (|>) or (id) function.
This uses additional inference variable to unify them.
* updating IL tests
* One more try
* surface area
* trimmed size
* trimmed size
* fix issues for plain 'dotnet build Fsharp.Compiler.Service.sln`
* update FSharpCoreShippedPackageVersionValue
* Wkraround attributetargets issue by using 'obj'. This removes 3x box and adds 1x unbox.
* Feature nullness :: Bugfixes (#17102)
* Ignore Nullness applied on structs (C# allows T? when when T is a struct)
* Bigfix: Working with CLI events in Fsharp
* Bugfix: Mutable binding initially assigned to null should not need type annotation
* Solving `let mutable cache = null` via type inference
* Enforcing TyparConstraint.IsReferenceType when WithNull type is used
* Nullness-related constraint consistency
* Bugfix for emitting Nullable attrs for C#
* Automated command ran: fantomas
Co-authored-by: T-Gro <46543583+T-Gro@users.noreply.github.com>
* Feature nullness :: Try infer without null even when function/method arg is marked as nullable (#17269)
* Feature nullness :: apply nullness annotations to usages of 'obj' in Fsharp.Core (#17284)
* resolve build error from auto-merge
* Feature nullness :: Cleanups, Test reorg, fix incrementalbuild cache behavior (#17309)
* Fix TransparentCompiler - it should report PostInference errors if it only encountered a warning (reported as an error due to confiig)
* fix build issues
* resolve semantic merge error
* Nullness subsumption when used for contravariant typars
* fix nullness plain build (#17404)
* Update docs/release-notes/.FSharp.Compiler.Service/8.0.300.md
* Update release notes
* Update check.ps1
* Update check.ps1
---------
Co-authored-by: Vlad Zarytovskii <vzaritovsky@hotmail.com>
Co-authored-by: Tomas Grosup <tomasgrosup@microsoft.com>
Co-authored-by: dotnet bot <dotnet-bot@dotnetfoundation.org>
Co-authored-by: Kevin Ransom (msft) <codecutter@hotmail.com>
Co-authored-by: Eugene Auduchinok <eugene.auduchinok@jetbrains.com>
Co-authored-by: Edgar Gonzalez <edgargonzalez.info@gmail.com>
Co-authored-by: Florian Verdonck <florian.verdonck@outlook.com>
Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: psfinaki <psfinaki@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

NO_RELEASE_NOTESLabel for pull requests which signals, that user opted-out of providing release notes

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants

@T-Gro@KevinRansom