Skip to content

Commit

Permalink
Don't put a space before a prefix operator, unless we have to. (#3134)
Browse files Browse the repository at this point in the history
* Don't put a space before a prefix operator, unless we have to.

* Add feedback from code review

* Only add space to measure when constant has sign.

* Remove unnecessary open
  • Loading branch information
nojaf authored Nov 2, 2024
1 parent 0dc03a2 commit 75e8474
Show file tree
Hide file tree
Showing 11 changed files with 244 additions and 156 deletions.
2 changes: 1 addition & 1 deletion src/Fantomas.Core.Tests/ControlStructureTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,7 @@ let genPropertyWithGetSet astContext (b1, b2) rangeOfMember =
genPreXmlDoc px
+> genAttributes astContext ats
+> genMemberFlags astContext mf1
+> ifElse isInline (!- "inline ") sepNone
+> ifElse isInline (!-"inline ") sepNone
+> opt sepSpace ao genAccess
assert (ps1 |> Seq.map fst |> Seq.forall Option.isNone)
Expand Down
1 change: 1 addition & 0 deletions src/Fantomas.Core.Tests/Fantomas.Core.Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@
<Compile Include="BeginEndTests.fs" />
<Compile Include="NullnessTests.fs" />
<Compile Include="AutoPropertiesTests.fs" />
<Compile Include="PrefixTests.fs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Fantomas.Core\Fantomas.Core.fsproj" />
Expand Down
14 changes: 0 additions & 14 deletions src/Fantomas.Core.Tests/InterpolatedStringTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -165,20 +165,6 @@ $\"\"\"one: {1}<
>two: {2}\"\"\"
"

[<Test>]
let ``prefix application, 1414`` () =
formatSourceString
"""
!- $".{s}"
"""
config
|> prepend newline
|> should
equal
"""
!- $".{s}"
"""

[<Test>]
let ``format in FillExpr, 1549`` () =
formatSourceString
Expand Down
2 changes: 1 addition & 1 deletion src/Fantomas.Core.Tests/LambdaTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ let genMemberFlagsForMemberBinding astContext (mf: MemberFlags) (rangeOfBindingA
| Token { TokenInfo = { TokenName = "MEMBER" } } -> r.StartLine = rangeOfBindingAndRhs.StartLine
| _ -> false)
|> Option.defaultValue (!- "override ")
|> Option.defaultValue (!-"override ")
<| ctx)
<| ctx
"""
Expand Down
2 changes: 1 addition & 1 deletion src/Fantomas.Core.Tests/LetBindingTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1342,7 +1342,7 @@ let internal sepSpace =
then
ctx
else
(!- " ") ctx
(!-" ") ctx
"""

[<Test>]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ let expr =
es
(fun e ->
match e with
| Paren(_, Lambda _, _) -> !- "lambda"
| Paren(_, Lambda _, _) -> !-"lambda"
| _ -> genExpr astContext e
)
"""
Expand Down
117 changes: 0 additions & 117 deletions src/Fantomas.Core.Tests/OperatorTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,6 @@ open FsUnit
open Fantomas.Core.Tests.TestHelpers
open Fantomas.Core

[<Test>]
let ``should format prefix operators`` () =
formatSourceString
"""let x = -y
let z = !!x
"""
config
|> should
equal
"""let x = -y
let z = !!x
"""

[<Test>]
let ``should keep triple ~~~ operator`` () =
formatSourceString
"""x ~~~FileAttributes.ReadOnly
"""
config
|> should
equal
"""x ~~~FileAttributes.ReadOnly
"""

[<Test>]
let ``should keep single triple ~~~ operator`` () =
formatSourceString
"""~~~FileAttributes.ReadOnly
"""
config
|> should
equal
"""~~~FileAttributes.ReadOnly
"""

[<Test>]
let ``should keep parens around ? operator definition`` () =
formatSourceString
Expand All @@ -62,17 +27,6 @@ let ``should keep parens around ?<- operator definition`` () =
"""let (?<-) f s = f s
"""

[<Test>]
let ``should keep parens around !+ prefix operator definition`` () =
formatSourceString
"""let (!+) x = Include x
"""
config
|> should
equal
"""let (!+) x = Include x
"""

[<Test>]
let ``should keep parens around ++ infix operator definition`` () =
formatSourceString
Expand Down Expand Up @@ -474,19 +428,6 @@ let result =
(typ.GetInterface(typeof<System.Collections.IEnumerable>.FullName) = null)
"""

[<Test>]
let ``operator before verbatim string add extra space, 736`` () =
formatSourceString
"""Target M.Tools (fun _ -> !! @"Tools\Tools.sln" |> rebuild)
"""
config
|> prepend newline
|> should
equal
"""
Target M.Tools (fun _ -> !! @"Tools\Tools.sln" |> rebuild)
"""

[<Test>]
let ``function call before pipe operator, 754`` () =
formatSourceString
Expand Down Expand Up @@ -1178,42 +1119,6 @@ module Foo =
| false -> id)
"""

let operator_application_literal_values =
[ "-86y"
"86uy"
"-86s"
"86us"
"-86"
"-86l"
"86u"
"86ul"
"-123n"
"0x00002D3Fun"
"-86L"
"86UL"
"-4.41F"
"-4.14"
"-12456I"
"-0.7833M"
"'a'"
"\"text\""
"'a'B"
"\"text\"B" ]

[<TestCaseSource("operator_application_literal_values")>]
let ``operators maintain spacing from literal values`` (literalValue: string) =
formatSourceString
$"""
let subtractTwo = + %s{literalValue}
"""
config
|> prepend newline
|> should
equal
$"""
let subtractTwo = + %s{literalValue}
"""

[<Test>]
let ``qualified name to active pattern, 1937`` () =
formatSourceString
Expand Down Expand Up @@ -1515,25 +1420,3 @@ let allDecls =
@+ iimplsLs
@+ ctorLs
"""

[<Test>]
let ``adding space after prefix operator breaks code, 2796`` () =
formatSourceString
"""
let inline (~%%) id = int id
let f a b = a + b
let foo () = f %%"17" %%"42"
"""
config
|> prepend newline
|> should
equal
"""
let inline (~%%) id = int id
let f a b = a + b
let foo () = f %%"17" %%"42"
"""
Loading

0 comments on commit 75e8474

Please sign in to comment.