From 29f82b4354b84e7cc03003ccd0c17cdb8575331c Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Thu, 5 Jun 2025 14:59:02 +0000 Subject: [PATCH 1/3] Mark Range.Zero as obsolete in favor of Range.range0 --- src/Compiler/Checking/CheckIncrementalClasses.fs | 3 ++- src/Compiler/Checking/Expressions/CheckExpressions.fs | 6 +++--- src/Compiler/Checking/import.fs | 4 ++-- src/Compiler/CodeGen/IlxGenSupport.fs | 6 ++---- src/Compiler/Driver/CompilerDiagnostics.fs | 2 +- src/Compiler/Service/FSharpCheckerResults.fs | 2 +- src/Compiler/Service/ServiceDeclarationLists.fs | 3 ++- src/Compiler/Service/ServiceNavigation.fs | 10 +++++----- src/Compiler/Symbols/FSharpDiagnostic.fs | 2 +- src/Compiler/Symbols/Symbols.fs | 2 +- src/Compiler/SyntaxTree/ParseHelpers.fs | 4 ++-- src/Compiler/SyntaxTree/SyntaxTrivia.fs | 11 ++++++----- src/Compiler/SyntaxTree/XmlDoc.fs | 2 +- src/Compiler/TypedTree/TypedTreePickle.fs | 4 ++-- src/Compiler/Utilities/range.fs | 1 + src/Compiler/Utilities/range.fsi | 2 ++ .../CompilerOptions/fsc/codepage/codepage.fs | 2 +- tests/FSharp.Compiler.Service.Tests/RangeTests.fs | 10 +++++----- .../FSharp.Compiler.Service.Tests/SourceTextTests.fs | 3 ++- tests/FSharp.Compiler.Service.Tests/TestDoubles.fs | 4 ++-- 20 files changed, 44 insertions(+), 39 deletions(-) diff --git a/src/Compiler/Checking/CheckIncrementalClasses.fs b/src/Compiler/Checking/CheckIncrementalClasses.fs index 5630fc2d4cc..fbaa148c6ad 100644 --- a/src/Compiler/Checking/CheckIncrementalClasses.fs +++ b/src/Compiler/Checking/CheckIncrementalClasses.fs @@ -18,6 +18,7 @@ open FSharp.Compiler.NameResolution open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text +open FSharp.Compiler.Text.Range open FSharp.Compiler.Xml open FSharp.Compiler.TcGlobals open FSharp.Compiler.TypedTree @@ -111,7 +112,7 @@ let TcStaticImplicitCtorInfo_Phase2A(cenv: cenv, env, tcref: TyconRef, m, copyOf let prelimValReprInfo = TranslateSynValInfo cenv m (TcAttributes cenv env) valSynData let prelimTyschemeG = GeneralizedType(copyOfTyconTypars, cctorTy) let valReprInfo = InferGenericArityFromTyScheme prelimTyschemeG prelimValReprInfo - let cctorValScheme = ValScheme(id, prelimTyschemeG, Some valReprInfo, None, Some memberInfo, false, ValInline.Never, NormalVal, Some (SynAccess.Private Range.Zero), false, true, false, false) + let cctorValScheme = ValScheme(id, prelimTyschemeG, Some valReprInfo, None, Some memberInfo, false, ValInline.Never, NormalVal, Some (SynAccess.Private range0), false, true, false, false) let cctorVal = MakeAndPublishVal cenv env (Parent tcref, false, ModuleOrMemberBinding, ValNotInRecScope, cctorValScheme, [(* no attributes*)], XmlDoc.Empty, None, false) cctorArgs, cctorVal, cctorValScheme diff --git a/src/Compiler/Checking/Expressions/CheckExpressions.fs b/src/Compiler/Checking/Expressions/CheckExpressions.fs index e1410e8c595..e4e30519ea5 100644 --- a/src/Compiler/Checking/Expressions/CheckExpressions.fs +++ b/src/Compiler/Checking/Expressions/CheckExpressions.fs @@ -811,10 +811,10 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst = Measure.Prod(tcMeasure ms1, tcMeasure ms2, m) | SynMeasure.Divide(ms1, _, (SynMeasure.Seq (_ :: _ :: _, _) as ms2), m) -> warning(Error(FSComp.SR.tcImplicitMeasureFollowingSlash(), m)) - let factor1 = ms1 |> Option.defaultValue (SynMeasure.One Range.Zero) + let factor1 = ms1 |> Option.defaultValue (SynMeasure.One range0) Measure.Prod(tcMeasure factor1, Measure.Inv (tcMeasure ms2), ms.Range) | SynMeasure.Divide(measure1 = ms1; measure2 = ms2) -> - let factor1 = ms1 |> Option.defaultValue (SynMeasure.One Range.Zero) + let factor1 = ms1 |> Option.defaultValue (SynMeasure.One range0) Measure.Prod(tcMeasure factor1, Measure.Inv (tcMeasure ms2), ms.Range) | SynMeasure.Seq(mss, _) -> ProdMeasures (List.map tcMeasure mss) | SynMeasure.Anon _ -> error(Error(FSComp.SR.tcUnexpectedMeasureAnon(), m)) @@ -2307,7 +2307,7 @@ module GeneralizationHelpers = declaredTypars |> List.map(fun typar -> typar.Range) - let m = declaredTyparsRange |> List.fold (fun r a -> unionRanges r a) range.Zero + let m = declaredTyparsRange |> List.fold (fun r a -> unionRanges r a) range0 errorR(Error(FSComp.SR.tcPropertyRequiresExplicitTypeParameters(), m)) | SynMemberKind.Constructor -> diff --git a/src/Compiler/Checking/import.fs b/src/Compiler/Checking/import.fs index f1f44090f19..fe5e63b2899 100644 --- a/src/Compiler/Checking/import.fs +++ b/src/Compiler/Checking/import.fs @@ -565,10 +565,10 @@ let rec ImportProvidedType (env: ImportMap) (m: range) (* (tinst: TypeInst) *) ( | TType_app (tcref, [], _) when tcref.TypeOrMeasureKind = TyparKind.Measure -> Measure.Const(tcref, tcref.Range) | TType_app (tcref, _, _) -> errorR(Error(FSComp.SR.impInvalidMeasureArgument1(tcref.CompiledName, tp.Name), m)) - Measure.One(tcref.Range) + Measure.One tcref.Range | _ -> errorR(Error(FSComp.SR.impInvalidMeasureArgument2(tp.Name), m)) - Measure.One(Range.Zero) + Measure.One range0 TType_measure (conv genericArg) else diff --git a/src/Compiler/CodeGen/IlxGenSupport.fs b/src/Compiler/CodeGen/IlxGenSupport.fs index 0799dbde60a..14a594912ae 100644 --- a/src/Compiler/CodeGen/IlxGenSupport.fs +++ b/src/Compiler/CodeGen/IlxGenSupport.fs @@ -7,6 +7,7 @@ open System.Reflection open Internal.Utilities.Library open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.TcGlobals +open FSharp.Compiler.Text.Range open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.TypedTree @@ -404,10 +405,7 @@ let rec GetNullnessFromTType (g: TcGlobals) ty = else if isValueType then // Generic value type: 0, followed by the representation of the type arguments in order including containing types yield NullnessInfo.AmbivalentToNull - else if - IsUnionTypeWithNullAsTrueValue g tcref.Deref - || TypeHasAllowNull tcref g FSharp.Compiler.Text.Range.Zero - then + else if IsUnionTypeWithNullAsTrueValue g tcref.Deref || TypeHasAllowNull tcref g range0 then yield NullnessInfo.WithNull else // Reference type: the nullability (0, 1, or 2), followed by the representation of the type arguments in order including containing types diff --git a/src/Compiler/Driver/CompilerDiagnostics.fs b/src/Compiler/Driver/CompilerDiagnostics.fs index 9fa8bc73f30..1845c2e00a6 100644 --- a/src/Compiler/Driver/CompilerDiagnostics.fs +++ b/src/Compiler/Driver/CompilerDiagnostics.fs @@ -889,7 +889,7 @@ type Exception with |> List.map (fun (name, tTy) -> tTy, { - ArgReprInfo.Name = name |> Option.map (fun name -> Ident(name, range.Zero)) + ArgReprInfo.Name = name |> Option.map (fun name -> Ident(name, range0)) ArgReprInfo.Attribs = [] ArgReprInfo.OtherRange = None }) diff --git a/src/Compiler/Service/FSharpCheckerResults.fs b/src/Compiler/Service/FSharpCheckerResults.fs index 72527b8cfc9..aa23d1534ab 100644 --- a/src/Compiler/Service/FSharpCheckerResults.fs +++ b/src/Compiler/Service/FSharpCheckerResults.fs @@ -3388,7 +3388,7 @@ type FSharpCheckFileResults | None -> () | Some kwDescription -> let kwText = kw |> TaggedText.tagKeyword |> wordL |> LayoutRender.toArray - yield ToolTipElement.Single(kwText, FSharpXmlDoc.FromXmlText(Xml.XmlDoc([| kwDescription |], range.Zero))) + yield ToolTipElement.Single(kwText, FSharpXmlDoc.FromXmlText(Xml.XmlDoc([| kwDescription |], range0))) ] /// Resolve the names at the given location to give a data tip diff --git a/src/Compiler/Service/ServiceDeclarationLists.fs b/src/Compiler/Service/ServiceDeclarationLists.fs index e0bce073607..4c3fa338b60 100644 --- a/src/Compiler/Service/ServiceDeclarationLists.fs +++ b/src/Compiler/Service/ServiceDeclarationLists.fs @@ -24,6 +24,7 @@ open FSharp.Compiler.Symbols.SymbolHelpers open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text +open FSharp.Compiler.Text.Range open FSharp.Compiler.Text.Layout open FSharp.Compiler.Text.LayoutRender open FSharp.Compiler.Text.TaggedText @@ -100,7 +101,7 @@ module DeclarationListHelpers = /// Generate the structured tooltip for a method info let FormatOverloadsToList (infoReader: InfoReader) m denv (item: ItemWithInst) minfos symbol (width: int option) : ToolTipElement = ToolTipFault |> Option.iter (fun msg -> - let exn = Error((0, msg), range.Zero) + let exn = Error((0, msg), range0) let ph = PhasedDiagnostic.Create(exn, BuildPhase.TypeCheck) simulateError ph) diff --git a/src/Compiler/Service/ServiceNavigation.fs b/src/Compiler/Service/ServiceNavigation.fs index 48f7d6dc01c..acd98980268 100755 --- a/src/Compiler/Service/ServiceNavigation.fs +++ b/src/Compiler/Service/ServiceNavigation.fs @@ -100,14 +100,14 @@ type NavigationItems(declarations: NavigationTopLevelDeclaration[]) = module NavigationImpl = let unionRangesChecked r1 r2 = - if equals r1 range.Zero then r2 - elif equals r2 range.Zero then r1 + if equals r1 range0 then r2 + elif equals r2 range0 then r1 else unionRanges r1 r2 let rangeOfDecls2 f decls = match decls |> List.map (f >> (fun (d: NavigationItem) -> d.bodyRange)) with | hd :: tl -> tl |> List.fold unionRangesChecked hd - | [] -> range.Zero + | [] -> range0 let rangeOfDecls = rangeOfDecls2 fst @@ -118,7 +118,7 @@ module NavigationImpl = match fldspec with | SynUnionCaseKind.Fields(flds) -> flds - |> List.fold (fun st (SynField(range = m)) -> unionRangesChecked m st) range.Zero + |> List.fold (fun st (SynField(range = m)) -> unionRangesChecked m st) range0 | SynUnionCaseKind.FullType(ty, _) -> ty.Range let bodyRange mBody decls = @@ -357,7 +357,7 @@ module NavigationImpl = ] | _ -> [])) - let m2 = members |> Seq.map fst |> Seq.fold unionRangesChecked range.Zero + let m2 = members |> Seq.map fst |> Seq.fold unionRangesChecked range0 let items = members |> List.collect snd m2, items diff --git a/src/Compiler/Symbols/FSharpDiagnostic.fs b/src/Compiler/Symbols/FSharpDiagnostic.fs index 991c3b87bf8..4dcc6305630 100644 --- a/src/Compiler/Symbols/FSharpDiagnostic.fs +++ b/src/Compiler/Symbols/FSharpDiagnostic.fs @@ -235,7 +235,7 @@ type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: str | _ -> diagnostic.FormatCore(flatErrors, suggestNames) let errorNum = diagnostic.Number - let m = match diagnostic.Range with Some m -> m | None -> range.Zero + let m = match diagnostic.Range with Some m -> m | None -> range0 FSharpDiagnostic(m, severity, msg, diagnostic.Subcategory(), errorNum, "FS", extendedData) static member NewlineifyErrorString(message) = NewlineifyErrorString(message) diff --git a/src/Compiler/Symbols/Symbols.fs b/src/Compiler/Symbols/Symbols.fs index 5e20f00b48b..a2407b7fad5 100644 --- a/src/Compiler/Symbols/Symbols.fs +++ b/src/Compiler/Symbols/Symbols.fs @@ -742,7 +742,7 @@ type FSharpEntity(cenv: SymbolEnv, entity: EntityRef, tyargs: TType list) = if entity.IsILEnumTycon then let (TILObjectReprData(_scoref, _enc, tdef)) = entity.ILTyconInfo - let formalTypars = entity.Typars(range.Zero) + let formalTypars = entity.Typars range0 let formalTypeInst = generalizeTypars formalTypars let ty = TType_app(entity, formalTypeInst, cenv.g.knownWithoutNull) let formalTypeInfo = ILTypeInfo.FromType cenv.g ty diff --git a/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/Compiler/SyntaxTree/ParseHelpers.fs index ea791527851..17d2c998012 100644 --- a/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -677,7 +677,7 @@ let adjustHatPrefixToTyparLookup mFull rightExpr = let mkSynTypeTuple (elementTypes: SynTupleTypeSegment list) : SynType = let range = match elementTypes with - | [] -> Range.Zero + | [] -> range0 | head :: tail -> (head.Range, tail) @@ -889,7 +889,7 @@ let mkLocalBindings (mWhole, BindingSetPreAttrs(_, isRec, isUse, declsPreAttrs, let mLetOrUse = match decls with | SynBinding(trivia = trivia) :: _ -> trivia.LeadingKeyword.Range - | _ -> Range.Zero + | _ -> range0 SynExpr.LetOrUse( isRec, diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 4b5e04d64c4..39e17f676dc 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -3,6 +3,7 @@ namespace FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Text +open FSharp.Compiler.Text.Range [] type IdentTrivia = @@ -98,7 +99,7 @@ type SynExprLetOrUseTrivia = static member Zero: SynExprLetOrUseTrivia = { InKeyword = None - LetOrUseKeyword = Range.Zero + LetOrUseKeyword = range0 } [] @@ -110,7 +111,7 @@ type SynExprLetOrUseBangTrivia = static member Zero: SynExprLetOrUseBangTrivia = { - LetOrUseBangKeyword = Range.Zero + LetOrUseBangKeyword = range0 EqualsRange = None } @@ -134,7 +135,7 @@ type SynExprYieldOrReturnTrivia = YieldOrReturnKeyword: range } - static member Zero: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = Range.Zero } + static member Zero: SynExprYieldOrReturnTrivia = { YieldOrReturnKeyword = range0 } [] type SynExprYieldOrReturnFromTrivia = @@ -144,7 +145,7 @@ type SynExprYieldOrReturnFromTrivia = static member Zero: SynExprYieldOrReturnFromTrivia = { - YieldOrReturnFromKeyword = Range.Zero + YieldOrReturnFromKeyword = range0 } [] @@ -288,7 +289,7 @@ type SynLeadingKeyword = | MemberVal(m1, m2) | OverrideVal(m1, m2) | StaticMemberVal(m1, _, m2) -> Range.unionRanges m1 m2 - | Synthetic -> Range.Zero + | Synthetic -> range0 [] type SynBindingTrivia = diff --git a/src/Compiler/SyntaxTree/XmlDoc.fs b/src/Compiler/SyntaxTree/XmlDoc.fs index d4c4cada576..c4ae54822c0 100644 --- a/src/Compiler/SyntaxTree/XmlDoc.fs +++ b/src/Compiler/SyntaxTree/XmlDoc.fs @@ -238,7 +238,7 @@ type PreXmlDoc = if part1.IsEmpty then part2.Range elif part2.IsEmpty then part1.Range else unionRanges part1.Range part2.Range - | PreXmlDocEmpty -> Range.Zero + | PreXmlDocEmpty -> range0 | PreXmlDoc(pos, collector) -> collector.LinesRange pos member x.IsEmpty = diff --git a/src/Compiler/TypedTree/TypedTreePickle.fs b/src/Compiler/TypedTree/TypedTreePickle.fs index 4d38bd5462a..2ac62b02787 100644 --- a/src/Compiler/TypedTree/TypedTreePickle.fs +++ b/src/Compiler/TypedTree/TypedTreePickle.fs @@ -2906,12 +2906,12 @@ and p_tycon_objmodel_kind x st = | TFSharpEnum -> p_byte 4 st | TFSharpUnion -> if st.oglobals.compilingFSharpCore then - raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible ("union as FSharpTyconKind ", st.ofile), range.Zero)) + raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible ("union as FSharpTyconKind ", st.ofile), range0)) p_byte 5 st | TFSharpRecord -> if st.oglobals.compilingFSharpCore then - raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible ("record as FSharpTyconKind ", st.ofile), range.Zero)) + raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible ("record as FSharpTyconKind ", st.ofile), range0)) p_byte 6 st diff --git a/src/Compiler/Utilities/range.fs b/src/Compiler/Utilities/range.fs index 0857d7c4d7c..ae35bc4f137 100755 --- a/src/Compiler/Utilities/range.fs +++ b/src/Compiler/Utilities/range.fs @@ -264,6 +264,7 @@ module FileIndex = [] [ {DebugCode}")>] type Range(code1: int64, code2: int64) = + [] static member Zero = range (0L, 0L) new(fIdx, bl, bc, el, ec) = diff --git a/src/Compiler/Utilities/range.fsi b/src/Compiler/Utilities/range.fsi index 90deb76d976..ce6709697b0 100755 --- a/src/Compiler/Utilities/range.fsi +++ b/src/Compiler/Utilities/range.fsi @@ -3,6 +3,7 @@ // The Range and Pos types form part of the public API of FSharp.Compiler.Service namespace FSharp.Compiler.Text +open System open System.Collections.Generic /// An index into a global tables of filenames @@ -121,6 +122,7 @@ type Range = member internal IsAdjacentTo: otherRange: Range -> bool /// The range where all values are zero + [] static member Zero: range /// Represents a range within a file diff --git a/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/codepage/codepage.fs b/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/codepage/codepage.fs index 17e2f83b3c5..6321b99fd07 100644 --- a/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/codepage/codepage.fs +++ b/tests/FSharp.Compiler.ComponentTests/CompilerOptions/fsc/codepage/codepage.fs @@ -64,7 +64,7 @@ module Codepage = |> compile |> shouldFail |> withDiagnostics [ - (Error 193, Line 0, Col 1, Line 0, Col 1, "No data is available for encoding 65535. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.") + (Error 193, Line 1, Col 1, Line 1, Col 1, "No data is available for encoding 65535. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.") ] //# Boundary case diff --git a/tests/FSharp.Compiler.Service.Tests/RangeTests.fs b/tests/FSharp.Compiler.Service.Tests/RangeTests.fs index 9bf0564e437..3f844f21ca5 100644 --- a/tests/FSharp.Compiler.Service.Tests/RangeTests.fs +++ b/tests/FSharp.Compiler.Service.Tests/RangeTests.fs @@ -8,7 +8,7 @@ open Xunit [] let ``withStartEnd Test`` () = - let z = Range.Zero + let z = range0 let newStart = mkPos 2 4 let newEnd = mkPos 7 23 let r = withStartEnd newStart newEnd z @@ -17,21 +17,21 @@ let ``withStartEnd Test`` () = [] let ``withStart Test`` () = - let z = Range.Zero + let z = range0 let newStart = mkPos 2 4 let r = withStart newStart z r.Start |> shouldEqual newStart [] let ``withEnd Test`` () = - let z = Range.Zero + let z = range0 let newEnd = mkPos 2 4 let r = withEnd newEnd z r.End |> shouldEqual newEnd [] let ``shiftStart Test`` () = - let z = Range.Zero + let z = range0 let lineDelta = 10 let columnDelta = 20 let r = shiftStart lineDelta columnDelta z @@ -40,7 +40,7 @@ let ``shiftStart Test`` () = [] let ``shiftEnd Test`` () = - let z = Range.Zero + let z = range0 let lineDelta = 10 let columnDelta = 20 let r = shiftEnd lineDelta columnDelta z diff --git a/tests/FSharp.Compiler.Service.Tests/SourceTextTests.fs b/tests/FSharp.Compiler.Service.Tests/SourceTextTests.fs index 0a7d6bb6276..50ade7ba035 100644 --- a/tests/FSharp.Compiler.Service.Tests/SourceTextTests.fs +++ b/tests/FSharp.Compiler.Service.Tests/SourceTextTests.fs @@ -2,6 +2,7 @@ open System open FSharp.Compiler.Text +open FSharp.Compiler.Text.Range open Xunit [] @@ -36,7 +37,7 @@ let ``Inconsistent return carriage return correct text`` () = [] let ``Zero range should return empty string`` () = let sourceText = SourceText.ofString "a" - let v = sourceText.GetSubTextFromRange Range.Zero + let v = sourceText.GetSubTextFromRange range0 Assert.Equal(String.Empty, v) [] diff --git a/tests/FSharp.Compiler.Service.Tests/TestDoubles.fs b/tests/FSharp.Compiler.Service.Tests/TestDoubles.fs index 7af70f94c83..7a8a72bf046 100644 --- a/tests/FSharp.Compiler.Service.Tests/TestDoubles.fs +++ b/tests/FSharp.Compiler.Service.Tests/TestDoubles.fs @@ -3,7 +3,7 @@ module FSharp.Compiler.Service.Tests.TestDoubles open System.IO -open FSharp.Compiler.Text +open FSharp.Compiler.Text.Range open FSharp.Compiler.AbstractIL.ILBinaryReader open FSharp.Compiler.CompilerConfig open Internal.Utilities @@ -20,4 +20,4 @@ let internal getArbitraryTcConfigBuilder() = CopyFSharpCoreFlag.No, (fun _ -> None), None, - Range.Zero) + range0) From ba2ed0940bb41ed31384b45455beef2fcf0ad202 Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Thu, 5 Jun 2025 15:12:07 +0000 Subject: [PATCH 2/3] Fantomas, release notes --- docs/release-notes/.FSharp.Compiler.Service/10.0.100.md | 1 + src/Compiler/SyntaxTree/SyntaxTrivia.fs | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md b/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md index 6ea4c6a7944..78318123041 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md +++ b/docs/release-notes/.FSharp.Compiler.Service/10.0.100.md @@ -21,3 +21,4 @@ * Scoped Nowarn: Add the #warnon compiler directive ([Language suggestion #278](https://github.com/fsharp/fslang-suggestions/issues/278), [RFC FS-1146 PR](https://github.com/fsharp/fslang-design/pull/782), [PR #18049](https://github.com/dotnet/fsharp/pull/18049) and [PR #18637](https://github.com/dotnet/fsharp/pull/18637)) * Simplify creation of `FSharpDiagnostics`. In a few cases, errors without ranges were assigned to the currently checked file, while in other cases they carried an empty range. The latter is now true in all cases. In a few cases, ranges at eof were corrected, while in others they were not. They are now always left uncorrected. This is a prerequisit for [#18553](https://github.com/dotnet/fsharp/issues/18553). ([PR #18610](https://github.com/dotnet/fsharp/pull/18610)). * `SynExprRecordField` now includes a `range` field ([PR #18617](https://github.com/dotnet/fsharp/pull/18617)) +* Mark `Range.Zero` as obsolete in favor of `Range.range0` ([PR #18664](https://github.com/dotnet/fsharp/pull/18664)) diff --git a/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 39e17f676dc..56002949b5c 100644 --- a/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -143,10 +143,7 @@ type SynExprYieldOrReturnFromTrivia = YieldOrReturnFromKeyword: range } - static member Zero: SynExprYieldOrReturnFromTrivia = - { - YieldOrReturnFromKeyword = range0 - } + static member Zero: SynExprYieldOrReturnFromTrivia = { YieldOrReturnFromKeyword = range0 } [] type SynExprDoBangTrivia = { DoBangKeyword: range } From 94cdd949c78fb5fb78d6281729916c7e2a389b7c Mon Sep 17 00:00:00 2001 From: Martin521 <29605222+Martin521@users.noreply.github.com> Date: Thu, 5 Jun 2025 16:28:09 +0000 Subject: [PATCH 3/3] ilverify baselines --- .../ILVerify/ilverify_FSharp.Compiler.Service_Debug_net9.0.bsl | 2 +- .../ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl | 2 +- .../ilverify_FSharp.Compiler.Service_Release_net9.0.bsl | 2 +- .../ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net9.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net9.0.bsl index da08a645140..1fe2a105da1 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net9.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_net9.0.bsl @@ -59,7 +59,7 @@ [IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x0000000B][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x00000021][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000CD][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@558::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@559::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000037][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000043][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl index 92de58c4615..7743838331b 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Debug_netstandard2.0.bsl @@ -84,7 +84,7 @@ [IL]: Error [StackUnexpected]: : Internal.Utilities.FSharpEnvironment+probePathForDotnetHost@317::Invoke([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x00000028][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver+Pipe #6 input at line 68@68::FSharp.Compiler.CodeAnalysis.ILegacyReferenceResolver.Resolve([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment, [S.P.CoreLib]System.Tuple`2[], string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>)][offset 0x0000034D][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000CD][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@558::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@559::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000037][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000043][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net9.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net9.0.bsl index 7126edcff60..badd302fb1c 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net9.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_net9.0.bsl @@ -85,7 +85,7 @@ [IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x0000000B][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.AbstractIL.IL::parseILVersion(string)][offset 0x00000021][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000B6][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@558::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@559::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000035][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000041][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack. diff --git a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl index 60128c71130..997afcf6532 100644 --- a/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl +++ b/tests/ILVerify/ilverify_FSharp.Compiler.Service_Release_netstandard2.0.bsl @@ -111,7 +111,7 @@ [IL]: Error [StackUnexpected]: : Internal.Utilities.FSharpEnvironment::probePathForDotnetHost@316([FSharp.Core]Microsoft.FSharp.Core.Unit)][offset 0x0000002A][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver+SimulatedMSBuildResolver@68::FSharp.Compiler.CodeAnalysis.ILegacyReferenceResolver.Resolve([FSharp.Compiler.Service]FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment, [S.P.CoreLib]System.Tuple`2[], string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, string, [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, string, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>)][offset 0x000002F5][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$FSharp.Compiler.DiagnosticsLogger::.cctor()][offset 0x000000B6][found Char] Unexpected type on the stack. -[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@558::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. +[IL]: Error [CallVirtOnValueType]: : FSharp.Compiler.Text.RangeModule+comparer@559::System.Collections.Generic.IEqualityComparer.GetHashCode([FSharp.Compiler.Service]FSharp.Compiler.Text.Range)][offset 0x00000002] Callvirt on a value type method. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000035][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : Internal.Utilities.PathMapModule::applyDir([FSharp.Compiler.Service]Internal.Utilities.PathMap, string)][offset 0x00000041][found Char] Unexpected type on the stack. [IL]: Error [StackUnexpected]: : .$Internal.Utilities.XmlAdapters::.cctor()][offset 0x0000000A][found Char] Unexpected type on the stack.