FSharp.Compiler.Service
43.8.400 - Unreleased
Fixed
- Improve error reporting for abstract members when used in classes. (PR #17063)
- Make typechecking of indexed setters with tuples on the right more consistent. (Issue #16987, PR #17017)
- Static abstract method on classes no longer yields internal error. (Issue #17044, PR #17055)
- Disallow calling abstract methods directly on interfaces. (Issue #14012, Issue #16299, PR #17021)
- Various parenthesization API fixes. (PR #16977)
- Files passed with -embed:relative/path/to/file are not embedded. (Issue #16768)
- Fix bug in optimization of for-loops over integral ranges with steps and units of measure. (Issue #17025, PR #17040, PR #17048)
- Fix calling an overridden virtual static method via the interface (PR #17013)
- Fix state machines compilation, when big decision trees are involved, by removing code split when resumable code is detected (PR #17076)
Added
- Generate new
Equals
overload to avoid boxing for structural comparison (PR #16857)
43.8.300 - Unreleased
Fixed
- Fix a false positive of the
[<TailCall>]
analysis in combination withyield!
. (PR #16933) - Improve error reporting: ambiguous override method in object expression. (PR #16985)
- Don't blow the stack when traversing deeply nested sequential expressions. (PR #16882)
- Fix wrong range start of INTERP_STRING_END. (PR #16774, PR #16785)
- Fix missing warning for recursive calls in list comprehensions. (PR #16652)
- Code generated files with > 64K methods and generated symbols crash when loaded. Use infered sequence points for debugging. (Issue #16399, #PR 16514)
nameof Module
expressions and patterns are processed to link files in--test:GraphBasedChecking
. (PR #16550, PR #16743)- Graph Based Checking doesn't throw on invalid parsed input so it can be used for IDE scenarios (PR #16575, PR #16588, PR #16643)
- Various parenthesization API fixes. (PR #16578, PR #16666, PR #16901, PR #16973, PR #17012)
- Keep parens for problematic exprs (
if
,match
, etc.) in$"{(…):N0}"
,$"{(…),-3}"
, etc. (PR #16578) - Fix crash in DOTNET_SYSTEM_GLOBALIZATION_INVARIANT mode #PR 16471)
- Fix16572 - Fixed the preview feature enabling Is properties for union case did not work correctly with let .rec and .fsi files (PR #16657)
[<CliEvent>]
member should not produce property symbol. (Issue #16640, PR #16658)- Fix discriminated union initialization. (#PR 16661)
- Allow calling method with both Optional and ParamArray. (#PR 16688, suggestions #1120)
- Return diagnostics that got suppressed by errors in previous files. (PR #16719)
- Fix release inline optimization, which leads to MethodAccessException if used with `assembly:InternalsVisibleTo`` attribute. (Issue #16105, (PR #16737)
- Enforce AttributeTargets on let values and functions. (PR #16692)
- Enforce AttributeTargets on union case declarations. (PR #16764)
- Disallow using base to invoke an abstract base method. (Issue #13926, PR #16773)
- Parser: more unfinished member recovery (PR #16835)
- Enforce AttributeTargets on implicit constructors. (PR #16845)
- Enforce AttributeTargets on structs and classes (PR #16790)
- Parser: fix pattern range for idents with trivia (PR #16824)
- Fix broken code completion after a record type declaration (PR #16813)
- Enforce AttributeTargets on enums (PR #16887)
- Completion: fix for unfinished record field decl (PR #16893)
- Enforce AttributeTargets on delegates (PR #16891)
- Obsolete attribute is ignored in constructor property assignment (PR #16900)
- Completion: fix completion in empty dot lambda prefix (#16829)
- Fix StackOverflow when checking non-recursive bindings in module or namespace in
fscAnyCpu
/fsiAnyCpu
. (PR #16908) - Removes signature file adjacency check in Transparent Compiler Issue #17082 PR #17085
Added
- The stackguard depth for ILPdbWriter.unshadowScopes can be modified via the environment variable
FSHARP_ILPdb_UnshadowScopes_StackGuardDepth
(PR #16583) - Parser recovers on complex primary constructor patterns, better tree representation for primary constructor patterns. (PR #16425)
- Name resolution: keep type vars in subsequent checks (PR #16456)
- Higher-order-function-based API for working with the untyped abstract syntax tree. (PR #16462)
- PrettyNaming: make
DoesIdentifierNeedBackticks
public (PR #16613) - Add switch to generate types and members with IL visibility that accurately represents their F# visibility. (PR #15484
- Allow returning bool instead of unit option for partial active patterns. (Language suggestion #1041, PR #16473)
- Symbols: Add GenericArguments to FSharpEntity (PR #16470)
- Parser: more 'as' pattern recovery (PR #16837)
- Add extended data for
DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer
(FS0318). (PR #16811)) - Checker/patterns: recover on unresolved long identifiers (PR #16842)
- SynExprSequentialTrivia (Issue #16914, PR #16981)
Changed
- Autogenerated .Is* members for unions skipped for single-case unions. (PR 16571)
implicitCtorSynPats
inSynTypeDefnSimpleRepr.General
is nowSynPat option
instead ofSynSimplePats option
. (PR #16425)SyntaxVisitorBase<'T>.VisitSimplePats
now takesSynPat
instead ofSynSimplePat list
. (PR #16425)- Reduce allocations in compiler checking via
ValueOption
usage (PR #16323, PR #16567) - Reverted #16348
ThreadStatic
CancellationToken
changes to improve test stability and prevent potential unwanted cancellations. (PR #16536) - Refactored parenthesization API. ([PR #16461])(https://github.com/dotnet/fsharp/pull/16461))
- Optimize some interpolated strings by lowering to string concatenation. (PR #16556)
- Speed up
for x in xs -> …
in list & array comprehensions in certain scenarios. (PR #16948) - Integral range optimizations. (PR #16650, PR #16832, PR #16947)
43.8.202 - Unreleased
Fixed
nameof Module
expressions and patterns are processed to link files in --test:GraphBasedChecking
. (PR #16570, PR #16747)
43.8.200 - 2024-02-13
Fixed
- Correctly handle assembly imports with public key token of 0 length. (Issue #16359, PR #16363)
- Range of SynField (PR #16357)
- Limit a type to 65K methods, introduce a compile-time error if any class has over approx 64K methods in generated IL. (Issue #16398, #PR 16427)
Added
- Raise a new error when interfaces with auto properties are implemented on constructor-less types. (PR #16352)
- Allow usage of
[<TailCall>]
with olderFSharp.Core
package versions. (PR #16373) - Parser recovers on unfinished
as
patterns. (PR #16404) - Allow type-checking of unfinished object expressions. (PR #16413)
- Parser recovers on unfinished enum case declarations. (PR #16401)
- Parser recovers on unfinished record declarations. (PR #16357)
MutableKeyword
to SynFieldTrivia (PR #16357)- Added support for a new parameterless constructor for
CustomOperationAttribute
, which, when applied, will use method name as keyword for custom operation in computation expression builder. (PR #16475, part of implementation for fslang-suggestions/1250) - Compiler service API for getting ranges of unnecessary parentheses. (PR #16079 et seq.)
Changed
- Speed up unused opens handling for empty results. (PR #16502)
43.8.100 - 2023-11-14
Fixed
- Include the
get,set
keywords in the range ofSynMemberDefn.AutoProperty
. (PR #15835)
namespace System
namespace System.IO
namespace System.Xml
namespace System.Xml.XPath
namespace Markdig
module Common
val path: string
type Path =
static member ChangeExtension: path: string * extension: string -> string
static member Combine: path1: string * path2: string -> string + 3 overloads
static member EndsInDirectorySeparator: path: ReadOnlySpan<char> -> bool + 1 overload
static member Exists: path: string -> bool
static member GetDirectoryName: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetExtension: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetFileName: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetFileNameWithoutExtension: path: ReadOnlySpan<char> -> ReadOnlySpan<char> + 1 overload
static member GetFullPath: path: string -> string + 1 overload
static member GetInvalidFileNameChars: unit -> char array
...
<summary>Performs operations on <see cref="T:System.String" /> instances that contain file or directory path information. These operations are performed in a cross-platform manner.</summary>
<summary>Performs operations on <see cref="T:System.String" /> instances that contain file or directory path information. These operations are performed in a cross-platform manner.</summary>
Path.Combine([<System.ParamArray>] paths: string array) : string
Path.Combine(path1: string, path2: string) : string
Path.Combine(path1: string, path2: string, path3: string) : string
Path.Combine(path1: string, path2: string, path3: string, path4: string) : string
Path.Combine(path1: string, path2: string) : string
Path.Combine(path1: string, path2: string, path3: string) : string
Path.Combine(path1: string, path2: string, path3: string, path4: string) : string
val fcsMajorVersion: string
val versionPropsDoc: System.Xml.Linq.XDocument
(extension) System.Xml.Linq.XNode.XPathSelectElement(expression: string) : System.Xml.Linq.XElement
(extension) System.Xml.Linq.XNode.XPathSelectElement(expression: string, resolver: System.Xml.IXmlNamespaceResolver) : System.Xml.Linq.XElement
(extension) System.Xml.Linq.XNode.XPathSelectElement(expression: string, resolver: System.Xml.IXmlNamespaceResolver) : System.Xml.Linq.XElement
val nugetPackage: string
val availableNuGetVersions: Set<string>
val getAvailableNuGetVersions: packageName: string -> Set<string>
Find all published versions of a package on NuGet
Find all published versions of a package on NuGet
val processFolder: path: string -> processFile: (string -> string) -> string
Process all MarkDown files from the given release folder
Process all MarkDown files from the given release folder
val file: string
val versionInFileName: string
Path.GetFileNameWithoutExtension(path: string) : string
Path.GetFileNameWithoutExtension(path: System.ReadOnlySpan<char>) : System.ReadOnlySpan<char>
Path.GetFileNameWithoutExtension(path: System.ReadOnlySpan<char>) : System.ReadOnlySpan<char>
val versionParts: string array
System.String.Split([<System.ParamArray>] separator: char array) : string array
System.String.Split(separator: string array, options: System.StringSplitOptions) : string array
System.String.Split(separator: string, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: char array, options: System.StringSplitOptions) : string array
System.String.Split(separator: char array, count: int) : string array
System.String.Split(separator: char, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: string array, count: int, options: System.StringSplitOptions) : string array
System.String.Split(separator: string, count: int, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: char array, count: int, options: System.StringSplitOptions) : string array
System.String.Split(separator: char, count: int, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: string array, options: System.StringSplitOptions) : string array
System.String.Split(separator: string, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: char array, options: System.StringSplitOptions) : string array
System.String.Split(separator: char array, count: int) : string array
System.String.Split(separator: char, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: string array, count: int, options: System.StringSplitOptions) : string array
System.String.Split(separator: string, count: int, ?options: System.StringSplitOptions) : string array
System.String.Split(separator: char array, count: int, options: System.StringSplitOptions) : string array
System.String.Split(separator: char, count: int, ?options: System.StringSplitOptions) : string array
val version: string
val title: string
member Set.Contains: value: 'T -> bool
val tryGetReleaseDate: packageName: string -> version: string -> string option
Try and find the publish date on NuGet
Try and find the publish date on NuGet
union case Option.None: Option<'T>
union case Option.Some: Value: 'T -> Option<'T>
val d: string
val nugetBadge: string
Multiple items
type String = interface IEnumerable<char> interface IEnumerable interface ICloneable interface IComparable interface IComparable<string> interface IConvertible interface IEquatable<string> interface IParsable<string> interface ISpanParsable<string> new: value: nativeptr<char> -> unit + 8 overloads ...
<summary>Represents text as a sequence of UTF-16 code units.</summary>
--------------------
System.String(value: nativeptr<char>) : System.String
System.String(value: char array) : System.String
System.String(value: System.ReadOnlySpan<char>) : System.String
System.String(value: nativeptr<sbyte>) : System.String
System.String(c: char, count: int) : System.String
System.String(value: nativeptr<char>, startIndex: int, length: int) : System.String
System.String(value: char array, startIndex: int, length: int) : System.String
System.String(value: nativeptr<sbyte>, startIndex: int, length: int) : System.String
System.String(value: nativeptr<sbyte>, startIndex: int, length: int, enc: System.Text.Encoding) : System.String
type String = interface IEnumerable<char> interface IEnumerable interface ICloneable interface IComparable interface IComparable<string> interface IConvertible interface IEquatable<string> interface IParsable<string> interface ISpanParsable<string> new: value: nativeptr<char> -> unit + 8 overloads ...
<summary>Represents text as a sequence of UTF-16 code units.</summary>
--------------------
System.String(value: nativeptr<char>) : System.String
System.String(value: char array) : System.String
System.String(value: System.ReadOnlySpan<char>) : System.String
System.String(value: nativeptr<sbyte>) : System.String
System.String(c: char, count: int) : System.String
System.String(value: nativeptr<char>, startIndex: int, length: int) : System.String
System.String(value: char array, startIndex: int, length: int) : System.String
System.String(value: nativeptr<sbyte>, startIndex: int, length: int) : System.String
System.String(value: nativeptr<sbyte>, startIndex: int, length: int, enc: System.Text.Encoding) : System.String
field string.Empty: string
val content: string
type File =
static member AppendAllBytes: path: string * bytes: byte array -> unit
static member AppendAllBytesAsync: path: string * bytes: byte array * ?cancellationToken: CancellationToken -> Task
static member AppendAllLines: path: string * contents: IEnumerable<string> -> unit + 1 overload
static member AppendAllLinesAsync: path: string * contents: IEnumerable<string> * encoding: Encoding * ?cancellationToken: CancellationToken -> Task + 1 overload
static member AppendAllText: path: string * contents: string -> unit + 1 overload
static member AppendAllTextAsync: path: string * contents: string * encoding: Encoding * ?cancellationToken: CancellationToken -> Task + 1 overload
static member AppendText: path: string -> StreamWriter
static member Copy: sourceFileName: string * destFileName: string -> unit + 1 overload
static member Create: path: string -> FileStream + 2 overloads
static member CreateSymbolicLink: path: string * pathToTarget: string -> FileSystemInfo
...
<summary>Provides static methods for the creation, copying, deletion, moving, and opening of a single file, and aids in the creation of <see cref="T:System.IO.FileStream" /> objects.</summary>
<summary>Provides static methods for the creation, copying, deletion, moving, and opening of a single file, and aids in the creation of <see cref="T:System.IO.FileStream" /> objects.</summary>
File.ReadAllText(path: string) : string
File.ReadAllText(path: string, encoding: System.Text.Encoding) : string
File.ReadAllText(path: string, encoding: System.Text.Encoding) : string
type Markdown =
static member Convert: markdown: string * renderer: IMarkdownRenderer * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> obj
static member Normalize: markdown: string * ?options: NormalizeOptions * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> string + 1 overload
static member Parse: markdown: string * ?trackTrivia: bool -> MarkdownDocument + 1 overload
static member ToHtml: markdown: string * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> string + 3 overloads
static member ToPlainText: markdown: string * writer: TextWriter * ?pipeline: MarkdownPipeline * ?context: MarkdownParserContext -> MarkdownDocument + 1 overload
static member Version: string
<summary> Provides methods for parsing a Markdown string to a syntax tree and converting it to other formats. </summary>
<summary> Provides methods for parsing a Markdown string to a syntax tree and converting it to other formats. </summary>
Markdown.ToHtml(document: Syntax.MarkdownDocument, ?pipeline: MarkdownPipeline) : string
Markdown.ToHtml(document: Syntax.MarkdownDocument, writer: TextWriter, ?pipeline: MarkdownPipeline) : unit
Markdown.ToHtml(markdown: string, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : string
Markdown.ToHtml(markdown: string, writer: TextWriter, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : Syntax.MarkdownDocument
Markdown.ToHtml(document: Syntax.MarkdownDocument, writer: TextWriter, ?pipeline: MarkdownPipeline) : unit
Markdown.ToHtml(markdown: string, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : string
Markdown.ToHtml(markdown: string, writer: TextWriter, ?pipeline: MarkdownPipeline, ?context: MarkdownParserContext) : Syntax.MarkdownDocument
val transformH3: version: string -> input: string -> string
In order for the heading to appear in the page content menu in fsdocs,
they need to follow a specific HTML structure.
In order for the heading to appear in the page content menu in fsdocs,
they need to follow a specific HTML structure.