Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[RFC FS-1060] Nullness checking (#15181)
* 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 <[email protected]> * Add MutableKeyword to SynFieldTrivia. (#11) * Simplify * Fantomas --------- Co-authored-by: Edgar Gonzalez <[email protected]> Co-authored-by: Florian Verdonck <[email protected]> --------- Co-authored-by: Kevin Ransom (msft) <[email protected]> Co-authored-by: Eugene Auduchinok <[email protected]> Co-authored-by: Edgar Gonzalez <[email protected]> Co-authored-by: Florian Verdonck <[email protected]> Co-authored-by: Tomas Grosup <[email protected]> * 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 <[email protected]> Co-authored-by: Tomas Grosup <[email protected]> * 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 <[email protected]> Co-authored-by: Tomas Grosup <[email protected]> Co-authored-by: Eugene Auduchinok <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Co-authored-by: Tomas Grosup <[email protected]> Co-authored-by: dotnet bot <[email protected]> Co-authored-by: Kevin Ransom (msft) <[email protected]> Co-authored-by: Eugene Auduchinok <[email protected]> Co-authored-by: Edgar Gonzalez <[email protected]> Co-authored-by: Florian Verdonck <[email protected]> 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 <[email protected]>
- Loading branch information