Skip to content

Commit 216a9a5

Browse files
committed
Enable fourmolu and ormolu for GHC 9.12
1 parent 53bf92c commit 216a9a5

File tree

9 files changed

+70
-25
lines changed

9 files changed

+70
-25
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@ jobs:
169169
name: Test hls-stylish-haskell-plugin
170170
run: cabal test hls-stylish-haskell-plugin-tests || cabal test hls-stylish-haskell-plugin-tests
171171

172-
- if: matrix.test && matrix.ghc != '9.12'
172+
- if: matrix.test
173173
name: Test hls-ormolu-plugin
174174
run: cabal test hls-ormolu-plugin-tests || cabal test hls-ormolu-plugin-tests
175175

176-
- if: matrix.test && matrix.ghc != '9.12'
176+
- if: matrix.test
177177
name: Test hls-fourmolu-plugin
178178
run: cabal test hls-fourmolu-plugin-tests || cabal test hls-fourmolu-plugin-tests
179179

cabal.project

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,8 @@ constraints:
4444
bitvec -simd,
4545

4646

47-
if impl(ghc >= 9.8.4) && impl(ghc < 9.8.5)
48-
-- By depending on ghc-lib-parser and ghc, we are encountering
49-
-- a constraint conflict, ghc-9.8.4 comes with `filepath-1.4.301.0`,
50-
-- and `ghc-lib-parser-9.8.4.20241130` specifies `filepath >=1.5 && < 1.6.
51-
-- See https://github.com/digital-asset/ghc-lib/issues/572 for details.
52-
allow-older:
53-
ghc-lib-parser:filepath
54-
constraints:
55-
ghc-lib-parser==9.8.4.20241130
47+
allow-newer:
48+
cabal-install-parsers:Cabal-syntax,
5649

5750
if impl(ghc >= 9.11)
5851
benchmarks: False

docs/support/plugin-support.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ For example, a plugin to provide a formatter which has itself been abandoned has
5353
| `hls-eval-plugin` | 2 | |
5454
| `hls-explicit-fixity-plugin` | 2 | |
5555
| `hls-explicit-record-fields-plugin` | 2 | |
56-
| `hls-fourmolu-plugin` | 2 | 9.12.2 |
56+
| `hls-fourmolu-plugin` | 2 | |
5757
| `hls-gadt-plugin` | 2 | 9.12.2 |
5858
| `hls-hlint-plugin` | 2 | 9.10.1, 9.12.2 |
5959
| `hls-module-name-plugin` | 2 | |
6060
| `hls-notes-plugin` | 2 | |
6161
| `hls-qualify-imported-names-plugin` | 2 | |
62-
| `hls-ormolu-plugin` | 2 | 9.12.2 |
62+
| `hls-ormolu-plugin` | 2 | |
6363
| `hls-rename-plugin` | 2 | |
6464
| `hls-stylish-haskell-plugin` | 2 | 9.10.1, 9.12.2 |
6565
| `hls-overloaded-record-dot-plugin` | 2 | |

haskell-language-server.cabal

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,19 +1442,19 @@ flag fourmolu
14421442
manual: True
14431443

14441444
common fourmolu
1445-
if flag(fourmolu) && (impl(ghc < 9.11) || flag(ignore-plugins-ghc-bounds))
1445+
if flag(fourmolu)
14461446
build-depends: haskell-language-server:hls-fourmolu-plugin
14471447
cpp-options: -Dhls_fourmolu
14481448

14491449
library hls-fourmolu-plugin
14501450
import: defaults, pedantic, warnings
1451-
if !flag(fourmolu) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))
1451+
if !flag(fourmolu)
14521452
buildable: False
14531453
exposed-modules: Ide.Plugin.Fourmolu
14541454
hs-source-dirs: plugins/hls-fourmolu-plugin/src
14551455
build-depends:
14561456
, filepath
1457-
, fourmolu ^>= 0.14 || ^>= 0.15 || ^>= 0.16
1457+
, fourmolu ^>= 0.14 || ^>= 0.15 || ^>= 0.16 || ^>=0.17 || ^>=0.18
14581458
, ghc-boot-th
14591459
, ghcide == 2.10.0.0
14601460
, hls-plugin-api == 2.10.0.0
@@ -1468,7 +1468,7 @@ library hls-fourmolu-plugin
14681468

14691469
test-suite hls-fourmolu-plugin-tests
14701470
import: defaults, pedantic, test-defaults, warnings
1471-
if !flag(fourmolu) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))
1471+
if !flag(fourmolu)
14721472
buildable: False
14731473
type: exitcode-stdio-1.0
14741474
hs-source-dirs: plugins/hls-fourmolu-plugin/test
@@ -1496,13 +1496,13 @@ flag ormolu
14961496
manual: True
14971497

14981498
common ormolu
1499-
if flag(ormolu) && (impl(ghc < 9.11) || flag(ignore-plugins-ghc-bounds))
1499+
if flag(ormolu)
15001500
build-depends: haskell-language-server:hls-ormolu-plugin
15011501
cpp-options: -Dhls_ormolu
15021502

15031503
library hls-ormolu-plugin
15041504
import: defaults, pedantic, warnings
1505-
if !flag(ormolu) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))
1505+
if !flag(ormolu)
15061506
buildable: False
15071507
exposed-modules: Ide.Plugin.Ormolu
15081508
hs-source-dirs: plugins/hls-ormolu-plugin/src
@@ -1515,14 +1515,14 @@ library hls-ormolu-plugin
15151515
, lsp
15161516
, mtl
15171517
, process-extras >= 0.7.1
1518-
, ormolu ^>=0.1.2 || ^>= 0.2 || ^>= 0.3 || ^>= 0.5 || ^>= 0.6 || ^>= 0.7
1518+
, ormolu ^>=0.5.3 || ^>= 0.6 || ^>= 0.7 || ^>=0.8
15191519
, text
15201520
, transformers
15211521

15221522

15231523
test-suite hls-ormolu-plugin-tests
15241524
import: defaults, pedantic, test-defaults, warnings
1525-
if !flag(ormolu) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))
1525+
if !flag(ormolu)
15261526
buildable: False
15271527
type: exitcode-stdio-1.0
15281528
hs-source-dirs: plugins/hls-ormolu-plugin/test
@@ -2009,9 +2009,9 @@ test-suite func-test
20092009
-- formatters
20102010
if flag(floskell) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds))
20112011
cpp-options: -Dhls_floskell
2012-
if flag(fourmolu) && (impl(ghc < 9.11) || flag(ignore-plugins-ghc-bounds))
2012+
if flag(fourmolu)
20132013
cpp-options: -Dhls_fourmolu
2014-
if flag(ormolu) && (impl(ghc < 9.11) || flag(ignore-plugins-ghc-bounds))
2014+
if flag(ormolu)
20152015
cpp-options: -Dhls_ormolu
20162016

20172017
test-suite wrapper-test

plugins/hls-fourmolu-plugin/test/Main.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,20 @@ tests =
2525
[False, True] <&> \cli ->
2626
testGroup
2727
(if cli then "cli" else "lib")
28-
[ goldenWithFourmolu cli "formats correctly" "Fourmolu" "formatted" $ \doc -> do
28+
[ goldenWithFourmolu cli "formats correctly" "Fourmolu" goldenDescGhc910 $ \doc -> do
2929
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
3030
, goldenWithFourmolu cli "formats imports correctly" "Fourmolu2" "formatted" $ \doc -> do
3131
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
32-
, goldenWithFourmolu cli "uses correct operator fixities" "Fourmolu3" "formatted" $ \doc -> do
32+
, goldenWithFourmolu cli "uses correct operator fixities" "Fourmolu3" goldenDescGhc910 $ \doc -> do
3333
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
3434
]
3535

36+
goldenDescGhc910 :: FilePath
37+
goldenDescGhc910 = case ghcVersion of
38+
GHC912 -> "ghc912.formatted"
39+
GHC910 -> "ghc910.formatted"
40+
_ -> "formatted"
41+
3642
goldenWithFourmolu :: Bool -> TestName -> FilePath -> FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree
3743
goldenWithFourmolu cli title path desc = goldenWithHaskellDocFormatter def fourmoluPlugin "fourmolu" conf title testDataDir path desc "hs"
3844
where
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module Fourmolu where
2+
3+
import Data.List
4+
5+
import Data.Int
6+
import Prelude
7+
8+
foo :: Int -> Int
9+
foo 3 = 2
10+
foo x = x
11+
bar :: String -> IO String
12+
bar s = do
13+
x <- return "hello"
14+
return "asdf"
15+
16+
data Baz = Baz {a :: Int, b :: String}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module Fourmolu where
2+
3+
import Data.List
4+
5+
import Data.Int
6+
import Prelude
7+
8+
foo :: Int -> Int
9+
foo 3 = 2
10+
foo x = x
11+
bar :: String -> IO String
12+
bar s = do
13+
x <- return "hello"
14+
return "asdf"
15+
16+
data Baz = Baz {a :: Int, b :: String}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
b :: Bool
2+
b =
3+
id $
4+
id $
5+
case True && True of
6+
True -> True
7+
False -> False
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
b :: Bool
2+
b =
3+
id $
4+
id $
5+
case True && True of
6+
True -> True
7+
False -> False

0 commit comments

Comments
 (0)