Skip to content

Commit c5c3ca4

Browse files
committed
Enable fourmolu and ormolu for GHC 9.12
1 parent a941fb7 commit c5c3ca4

File tree

6 files changed

+50
-23
lines changed

6 files changed

+50
-23
lines changed

.github/workflows/test.yml

+2-2
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

+7-9
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,13 @@ 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+
-- Some of the formatters need the latest Cabal-syntax version,
48+
-- but 'cabal-install-parsers-0.6.2' only has Cabal-syntax (>=3.12.0.0 && <3.13).
49+
-- So, we relax the upper bounds here.
50+
-- fourmolu-0.18.0 and ormolu-0.8 depend on Cabal-syntax == 3.14.*, while
51+
-- cabal-add depends on cabal-install-parsers.
52+
allow-newer:
53+
cabal-install-parsers:Cabal-syntax,
5654

5755
if impl(ghc >= 9.11)
5856
benchmarks: False

docs/support/plugin-support.md

+2-2
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

+10-10
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

test/testdata/schema/ghc912/default-config.golden.json

+11
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@
5252
"explicit-fixity": {
5353
"globalOn": true
5454
},
55+
"fourmolu": {
56+
"config": {
57+
"external": false,
58+
"path": "fourmolu"
59+
}
60+
},
5561
"ghcide-code-actions-bindings": {
5662
"globalOn": true
5763
},
@@ -89,6 +95,11 @@
8995
"moduleName": {
9096
"globalOn": true
9197
},
98+
"ormolu": {
99+
"config": {
100+
"external": false
101+
}
102+
},
92103
"overloaded-record-dot": {
93104
"globalOn": true
94105
},

test/testdata/schema/ghc912/vscode-extension-schema.golden.json

+18
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@
113113
"scope": "resource",
114114
"type": "boolean"
115115
},
116+
"haskell.plugin.fourmolu.config.external": {
117+
"default": false,
118+
"markdownDescription": "Call out to an external \"fourmolu\" executable, rather than using the bundled library.",
119+
"scope": "resource",
120+
"type": "boolean"
121+
},
122+
"haskell.plugin.fourmolu.config.path": {
123+
"default": "fourmolu",
124+
"markdownDescription": "Set path to executable (for \"external\" mode).",
125+
"scope": "resource",
126+
"type": "string"
127+
},
116128
"haskell.plugin.ghcide-code-actions-bindings.globalOn": {
117129
"default": true,
118130
"description": "Enables ghcide-code-actions-bindings plugin",
@@ -213,6 +225,12 @@
213225
"scope": "resource",
214226
"type": "boolean"
215227
},
228+
"haskell.plugin.ormolu.config.external": {
229+
"default": false,
230+
"markdownDescription": "Call out to an external \"ormolu\" executable, rather than using the bundled library",
231+
"scope": "resource",
232+
"type": "boolean"
233+
},
216234
"haskell.plugin.overloaded-record-dot.globalOn": {
217235
"default": true,
218236
"description": "Enables overloaded-record-dot plugin",

0 commit comments

Comments
 (0)