Skip to content

Latest commit

 

History

History
68 lines (62 loc) · 12.6 KB

File metadata and controls

68 lines (62 loc) · 12.6 KB

Fixed

  • Fix attributes on return type of unparenthesized tuple methods being silently dropped from IL. (Issue #462, PR #19714)
  • Fix internal error FS0073 "Undefined or unsolved type variable" in IlxGen when nested inline SRTP functions with multiple overloads leave unsolved typars in the non-witness codegen path. (Issue #19709, PR #19710)
  • Fix NRE when calling virtual Object methods on value types through inline SRTP functions. (Issue #8098, PR #19511)
  • Fix attributes not resolved from opened namespaces in namespace rec / module rec scopes. (Issue #7931, PR #19502)
  • Fix DU case names matching IWSAM member names no longer cause duplicate property entries. (Issue #14321, PR #19341)
  • Fix DefaultAugmentation(false) duplicate entry in method table. (Issue #16565, PR #19341)
  • Fix abstract event accessors now have SpecialName flag. (Issue #5834, PR #19341)
  • Fix warning 20 ("expression is implicitly ignored") pointing at the wrong range when the last expression in a sequential block (e.g. inside for, while loops) is non-unit. The squiggle now correctly highlights only the offending expression. (Issue #5735, PR #19504)
  • Fix missing "No implementation was given" error when F# class inherits from a C# class with abstract override members without providing an implementation. (Issue #7776, PR #19503)
  • Fix CLIEvent properties to be correctly recognized as events: IsEvent returns true and XmlDocSig uses E: prefix instead of P:. (Issue #10273, PR #18584)
  • Fix extra sequence point at the end of match expressions. (Issue #12052, PR #19278)
  • Fix wrong sequence point range for return/yield/return!/yield! inside computation expressions. (Issue #19248, PR #19278)
  • Fix extra out-of-order sequence point for use in task computation expressions. (Issue #19255, PR #19278)
  • Fix debug points failing to bind in body of [ for x in xs -> body ] comprehensions. (Issue #13504, PR #19278)
  • Fix outref parameter compiled as byref. (Issue #13468, PR #19340)
  • Fix static abstract interface members with byref params. (Issue #18135, PR #19340)
  • Fix codegen to produce IL passing ILVerify: specialized stelem/ldelem for primitives, callvirt→call on value types, castclass at interface join points, filter→catch inside finally handlers, witness field alignment in state machine structs. (PR #19372)
  • Fix object expressions in struct types no longer generate invalid IL with byref fields. (Issue #19068, PR #19339)
  • Avoid duplicate parameter names in closure constructors. (Issue #17692, PR #19339)
  • Improve let-rec codegen: reorder bindings to allocate lambda closures before non-lambda values that reference them. (PR #19339)
  • Fix YieldFromFinal/ReturnFromFinal being incorrectly called in non-tail positions (for, use, use!, try/with handler). (Issue #19402, PR #19403)
  • Fixed how the source ranges of warn directives are reported (as trivia) in the parser output (by not reporting leading spaces). (Issue #19405, PR #19408)
  • Fix UoM value type ToString() returning garbage values when --checknulls+ is enabled, caused by double address-taking in codegen. (Issue #19435, PR #19440)
  • Fix accessibility and type-matching for extension method lookups. (Issue #19349, PR #19536)
  • Fix completion inconsistently showing some obsolete members (fields and events) while hiding others (methods and properties). All obsolete members are now consistently hidden by default. (Issue #13512, PR #19506)
  • Fix O(n) TypeStructure.GetHashCode performance regression causing sustained high CPU in IDE mode with generative type providers. (Issue #18925, PR #19369)
  • Fix TypeLoadException when creating delegate with voidptr parameter. (Issue #11132, PR #19338)
  • Suppress tail calls when localloc (NativePtr.stackalloc) is used. (Issue #13447, PR #19338)
  • Fix TypeLoadException in Release builds with inline constraints. (Issue #14492, PR #19338)
  • Fix nativeptr in interfaces leads to TypeLoadException. (Issue #14508, PR #19338)
  • Fix box instruction for literal upcasts. (Issue #18319, PR #19338)
  • Fix Decimal Literal causes InvalidProgramException in Debug builds. (Issue #18956, PR #19338)
  • Fix AttributeUsage.AllowMultiple not being inherited for attributes subclassed in C#. (Issue #17107, PR #19315)
  • Fix signature generation: recursive module do binding leaking compiler-generated val. (Issue #13832, PR #19586)
  • Fix signature generation: literal values in attribute arguments now preserve literal identifier name. (Issue #13810, PR #19586)
  • Fix signature generation: struct types with non-comparable/non-equatable fields now include [<NoComparison>]/[<NoEquality>]. (Issue #15339, PR #19586)
  • Fix signature generation: backtick escaping for identifiers containing backticks. (Issue #15389, PR #19586)
  • Fix signature generation: private keyword placement for prefix-style type abbreviations. (Issue #15560, PR #19586)
  • Fix signature generation: missing [<Class>] attribute for types without visible constructors. (Issue #16531, PR #19586)
  • Fix F# exception serialization now preserves fields. (Issue #878, PR #19342)
  • Fix methods being tagged as Member instead of Method in tooltips. (Issue #10540, PR #19507)
  • Fix Debug-mode compilation when mixing resumable and standard computation expressions. (Issue #19625, PR #19630)
  • IlxGen: fix missing CompilationMapping attribute for generic values (PR #19643)
  • Fix internal error FS0192: encodeCustomAttrElemType when using arrays of user-defined types as custom attribute arguments. Empty arrays (e.g. [<DefaultValue([||] : A[])>]) now compile successfully; non-empty arrays of unencodable types report a proper diagnostic (FS3887) instead of an internal error. (Issue #12796, PR #19472)
  • Fix internal compiler error in use bindings when a C#-style Dispose extension method is in scope alongside IDisposable.Dispose. (Issue #19552, PR #19568)
  • Fix signature generation: single-case struct DU gets spurious bar causing FS0300. (Issue #19597, PR #19609)
  • Fix signature generation: backticked active pattern case names lose escaping. (Issue #19592, PR #19609)
  • Fix signature generation: namespace global header dropped from generated signature. (Issue #19593, PR #19609)
  • Fix signature generation: SRTP constraints use postfix syntax that fails conformance, now uses explicit type param declarations. (Issue #19594, PR #19609)
  • Fix signature generation: type params with special characters missing backtick escaping. (Issue #19595, PR #19609)
  • Fix internal error when using custom attribute with [<Optional>] value type parameter and no [<DefaultParameterValue>]. (Issue #8353, PR #19484)
  • Fix parallel compilation of scripts (PR #19649)
  • Fix parser recovery, name resolution, and code completion for unfinished enum patterns (PR #19708)
  • Parser: fix unexpected diagnostics in debug builds, improve error messages (PR #19730)
  • Fix overload resolution of static member extension on generic types when the call uses explicit type arguments and an intrinsic overload of the same name exists. (Issue #19664, PR #19736)

Added

  • Added warning FS3884 when a function or delegate value is used as an interpolated string argument. (PR #19289)
  • Add #version;; directive to F# Interactive to display version and environment information. (Issue #13307, PR #19332)

Changed

  • Improvements in error and warning messages: new error FS3885 when let!/use! is the final expression in a computation expression; new warning FS3886 when a list literal contains a single tuple element (likely missing ; separator); improved wording for FS0003, FS0025, FS0039, FS0072, FS0247, FS0597, FS0670, FS3082, and SRTP operator-not-in-scope hints. (PR #19398)

Breaking Changes