From 9703198b3ebd7b04fcb80396150c7e87891d3c69 Mon Sep 17 00:00:00 2001 From: Florian Verdonck Date: Mon, 16 May 2022 22:09:15 +0200 Subject: [PATCH] Preserve override keyword in read property. (#2261) Fixes #2221. --- CHANGELOG.md | 1 + src/Fantomas.Core.Tests/ClassTests.fs | 74 +++++++++++++++++++++++++++ src/Fantomas.Core/CodePrinter.fs | 5 +- 3 files changed, 76 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0005055f3..dbb4ffbdad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixed * Idempotency problem with ParsedHashDirective in signature file. [#2258](https://github.com/fsprojects/fantomas/issues/2258) +* Keyword 'override' gets changed to 'member'. [#2221](https://github.com/fsprojects/fantomas/issues/2221) ## [5.0.0-alpha-007] - 2022-05-16 diff --git a/src/Fantomas.Core.Tests/ClassTests.fs b/src/Fantomas.Core.Tests/ClassTests.fs index 0d566564d4..2954368543 100644 --- a/src/Fantomas.Core.Tests/ClassTests.fs +++ b/src/Fantomas.Core.Tests/ClassTests.fs @@ -1073,3 +1073,77 @@ type Foo() = and set (value) = // comment set myInternalValue <- value """ + +[] +let ``preserve override keyword in read property, 2221`` () = + formatSourceString + false + """ +type StreamHelper() = + inherit Stream() + + override x.ReadAsync (dst, offset, count, tok) = + () + override x.WriteAsync (dst, offset, count, tok) = + () + override x.Flush () = () + override x.Seek(offset:int64, origin:SeekOrigin) = + () + override x.SetLength(value:int64) = + () + override x.Read(dst, offset, count) = + () + override x.Write(src, offset, count) = + () + override x.ReadByte() = + () + override x.WriteByte item = + () + override x.CanRead + with get() = + true + override x.CanSeek + with get() = + false + override x.CanWrite + with get() = + true + override x.Length + with get() = + 1 + override x.Position + with get() = + 1 + and set value = + 1 + override x.Dispose disposing = + () +""" + config + |> prepend newline + |> should + equal + """ +type StreamHelper() = + inherit Stream() + + override x.ReadAsync(dst, offset, count, tok) = () + override x.WriteAsync(dst, offset, count, tok) = () + override x.Flush() = () + override x.Seek(offset: int64, origin: SeekOrigin) = () + override x.SetLength(value: int64) = () + override x.Read(dst, offset, count) = () + override x.Write(src, offset, count) = () + override x.ReadByte() = () + override x.WriteByte item = () + override x.CanRead = true + override x.CanSeek = false + override x.CanWrite = true + override x.Length = 1 + + override x.Position + with get () = 1 + and set value = 1 + + override x.Dispose disposing = () +""" diff --git a/src/Fantomas.Core/CodePrinter.fs b/src/Fantomas.Core/CodePrinter.fs index fae919bfe2..5afa44dccc 100644 --- a/src/Fantomas.Core/CodePrinter.fs +++ b/src/Fantomas.Core/CodePrinter.fs @@ -894,10 +894,7 @@ and genMemberBinding astContext b = ) | _ -> p - let prefix = - (onlyIfNot mf.IsInstance (!- "static ") - +> !- "member ") - + let prefix = genMemberFlags mf genMemberBindingImpl astContext prefix ats px ao isInline pat equalsRange e synValInfo | _ -> let ps = List.map snd ps