Skip to content

Commit 1868368

Browse files
author
kokobd
committed
Merge remote-tracking branch 'origin/master' into kokobd/os-path
2 parents fc3d8f7 + 5b229b6 commit 1868368

File tree

222 files changed

+6246
-4127
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

222 files changed

+6246
-4127
lines changed

.github/actions/setup-build/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ inputs:
77
cabal:
88
description: "Cabal version"
99
required: false
10-
default: "3.6"
10+
default: "3.8.1.0"
1111
os:
1212
description: "Operating system: Linux, Windows or macOS"
1313
required: true

.github/workflows/test.yml

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ jobs:
5757
strategy:
5858
fail-fast: true
5959
matrix:
60-
ghc: [ "9.2.4"
60+
ghc: [ "9.4.2"
61+
, "9.4.1"
62+
, "9.2.4"
6163
, "9.2.3"
6264
, "9.0.2"
6365
, "8.10.7"
@@ -69,6 +71,9 @@ jobs:
6971
]
7072
include:
7173
# only test supported ghc major versions
74+
- os: ubuntu-latest
75+
ghc: '9.4.2'
76+
test: true
7277
- os: ubuntu-latest
7378
ghc: '9.2.4'
7479
test: true
@@ -84,6 +89,9 @@ jobs:
8489
- os: ubuntu-latest
8590
ghc: '8.6.5'
8691
test: true
92+
- os: windows-latest
93+
ghc: '9.4.2'
94+
test: true
8795
- os: windows-latest
8896
ghc: '9.2.4'
8997
test: true
@@ -156,99 +164,103 @@ jobs:
156164
HLS_WRAPPER_TEST_EXE: hls-wrapper
157165
run: cabal test wrapper-test --test-options="$TEST_OPTS --rerun-log-file .tasty-rerun-log-wrapper" || cabal test wrapper-test --test-options="$TEST_OPTS --rerun-log-file .tasty-rerun-log-wrapper" || cabal test wrapper-test --test-options="$TEST_OPTS --rerun-log-file .tasty-rerun-log-wrapper"
158166

159-
- if: matrix.test && matrix.ghc != '9.2.4'
167+
- if: matrix.test && matrix.ghc != '9.2.4' && matrix.ghc != '9.4.2'
160168
name: Test hls-brittany-plugin
161169
run: cabal test hls-brittany-plugin --test-options="$TEST_OPTS" || cabal test hls-brittany-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-brittany-plugin --test-options="$TEST_OPTS"
162170

163-
- if: matrix.test
171+
- if: matrix.test && matrix.ghc != '9.4.2'
172+
name: Test hls-refactor-plugin
173+
run: cabal test hls-refactor-plugin --test-options="$TEST_OPTS" || cabal test hls-refactor-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-refactor-plugin --test-options="$TEST_OPTS"
174+
175+
- if: matrix.test && matrix.ghc != '9.4.2'
164176
name: Test hls-floskell-plugin
165177
run: cabal test hls-floskell-plugin --test-options="$TEST_OPTS" || cabal test hls-floskell-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-floskell-plugin --test-options="$TEST_OPTS"
166178

167-
- if: matrix.test
179+
- if: matrix.test && matrix.ghc != '9.4.2'
168180
name: Test hls-class-plugin
169181
run: cabal test hls-class-plugin --test-options="$TEST_OPTS" || cabal test hls-class-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-class-plugin --test-options="$TEST_OPTS"
170182

171-
- if: matrix.test
183+
- if: matrix.test && matrix.ghc != '9.4.2'
172184
name: Test hls-pragmas-plugin
173185
run: cabal test hls-pragmas-plugin --test-options="$TEST_OPTS" || cabal test hls-pragmas-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-pragmas-plugin --test-options="$TEST_OPTS"
174186

175-
- if: matrix.test
187+
- if: matrix.test && matrix.ghc != '9.4.2'
176188
name: Test hls-eval-plugin
177189
run: cabal test hls-eval-plugin --test-options="$TEST_OPTS" || cabal test hls-eval-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-eval-plugin --test-options="$TEST_OPTS"
178190

179-
- if: matrix.test && matrix.ghc != '9.2.4'
191+
- if: matrix.test && matrix.ghc != '9.2.4' && matrix.ghc != '9.4.2'
180192
name: Test hls-haddock-comments-plugin
181193
run: cabal test hls-haddock-comments-plugin --test-options="$TEST_OPTS" || cabal test hls-haddock-comments-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-haddock-comments-plugin --test-options="$TEST_OPTS"
182194

183-
- if: matrix.test && matrix.ghc != '9.2.4'
195+
- if: matrix.test && matrix.ghc != '9.2.4' && matrix.ghc != '9.4.2'
184196
name: Test hls-splice-plugin
185197
run: cabal test hls-splice-plugin --test-options="$TEST_OPTS" || cabal test hls-splice-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-splice-plugin --test-options="$TEST_OPTS"
186198

187-
- if: matrix.test
199+
- if: matrix.test && matrix.ghc != '9.4.2'
188200
name: Test hls-stylish-haskell-plugin
189201
run: cabal test hls-stylish-haskell-plugin --test-options="$TEST_OPTS" || cabal test hls-stylish-haskell-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-stylish-haskell-plugin --test-options="$TEST_OPTS"
190202

191-
- if: matrix.test
203+
- if: matrix.test && matrix.ghc != '9.4.2'
192204
name: Test hls-ormolu-plugin
193205
run: cabal test hls-ormolu-plugin --test-options="$TEST_OPTS" || cabal test hls-ormolu-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-ormolu-plugin --test-options="$TEST_OPTS"
194206

195-
- if: matrix.test
207+
- if: matrix.test && matrix.ghc != '9.4.2'
196208
name: Test hls-fourmolu-plugin
197209
run: cabal test hls-fourmolu-plugin --test-options="$TEST_OPTS" || cabal test hls-fourmolu-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-fourmolu-plugin --test-options="$TEST_OPTS"
198210

199-
- if: matrix.test && matrix.ghc != '9.2.4'
211+
- if: matrix.test && matrix.ghc != '9.2.4' && matrix.ghc != '9.4.2'
200212
name: Test hls-tactics-plugin test suite
201213
run: cabal test hls-tactics-plugin --test-options="$TEST_OPTS" || cabal test hls-tactics-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-tactics-plugin --test-options="$TEST_OPTS"
202214

203-
- if: matrix.test
215+
- if: matrix.test && matrix.ghc != '9.4.2'
204216
name: Test hls-refine-imports-plugin test suite
205217
run: cabal test hls-refine-imports-plugin --test-options="$TEST_OPTS" || cabal test hls-refine-imports-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-refine-imports-plugin --test-options="$TEST_OPTS"
206218

207-
- if: matrix.test
219+
- if: matrix.test && matrix.ghc != '9.4.2'
208220
name: Test hls-explicit-imports-plugin test suite
209221
run: cabal test hls-explicit-imports-plugin --test-options="$TEST_OPTS" || cabal test hls-explicit-imports-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-explicit-imports-plugin --test-options="$TEST_OPTS"
210222

211-
- if: matrix.test
223+
- if: matrix.test && matrix.ghc != '9.4.2'
212224
name: Test hls-call-hierarchy-plugin test suite
213225
run: cabal test hls-call-hierarchy-plugin --test-options="$TEST_OPTS" || cabal test hls-call-hierarchy-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-call-hierarchy-plugin --test-options="$TEST_OPTS"
214226

215-
- if: matrix.test && matrix.os != 'windows-latest'
227+
- if: matrix.test && matrix.os != 'windows-latest' && matrix.ghc != '9.4.2'
216228
name: Test hls-rename-plugin test suite
217229
run: cabal test hls-rename-plugin --test-options="$TEST_OPTS" || cabal test hls-rename-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-rename-plugin --test-options="$TEST_OPTS"
218230

219-
- if: matrix.test
231+
- if: matrix.test && matrix.ghc != '9.4.2'
220232
name: Test hls-hlint-plugin test suite
221233
run: cabal test hls-hlint-plugin --test-options="$TEST_OPTS" || cabal test hls-hlint-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-hlint-plugin --test-options="$TEST_OPTS"
222234

223-
- if: matrix.test && matrix.ghc != '9.0.1' && matrix.ghc != '9.0.2' && matrix.ghc != '9.2.4'
235+
- if: matrix.test && matrix.ghc != '9.0.1' && matrix.ghc != '9.0.2' && matrix.ghc != '9.2.4' && matrix.ghc != '9.4.2'
224236
name: Test hls-stan-plugin test suite
225237
run: cabal test hls-stan-plugin --test-options="$TEST_OPTS" || cabal test hls-hlint-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-stan-plugin --test-options="$TEST_OPTS"
226238

227-
- if: matrix.test
239+
- if: matrix.test && matrix.ghc != '9.4.2'
228240
name: Test hls-module-name-plugin test suite
229241
run: cabal test hls-module-name-plugin --test-options="$TEST_OPTS" || cabal test hls-module-name-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-module-name-plugin --test-options="$TEST_OPTS"
230242

231-
- if: matrix.test
243+
- if: matrix.test && matrix.ghc != '9.4.2'
232244
name: Test hls-alternate-number-format-plugin test suite
233245
run: cabal test hls-alternate-number-format-plugin --test-options="$TEST_OPTS" || cabal test hls-alternate-number-format-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-alternate-number-format-plugin --test-options="$TEST_OPTS"
234246

235-
- if: matrix.test
247+
- if: matrix.test && matrix.ghc != '9.4.2'
236248
name: Test hls-qualify-imported-names-plugin test suite
237249
run: cabal test hls-qualify-imported-names-plugin --test-options="$TEST_OPTS" || cabal test hls-qualify-imported-names-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-qualify-imported-names-plugin --test-options="$TEST_OPTS"
238250

239-
- if: matrix.test
251+
- if: matrix.test && matrix.ghc != '9.4.2'
240252
name: Test hls-code-range-plugin test suite
241253
run: cabal test hls-code-range-plugin --test-options="$TEST_OPTS" || cabal test hls-code-range-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-code-range-plugin --test-options="$TEST_OPTS"
242254

243-
- if: matrix.test
255+
- if: matrix.test && matrix.ghc != '9.4.2'
244256
name: Test hls-change-type-signature test suite
245257
run: cabal test hls-change-type-signature-plugin --test-options="$TEST_OPTS" || cabal test hls-change-type-signature-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-change-type-signature-plugin --test-options="$TEST_OPTS"
246258

247-
- if: matrix.test
259+
- if: matrix.test && matrix.ghc != '9.4.2'
248260
name: Test hls-gadt-plugin test suit
249261
run: cabal test hls-gadt-plugin --test-options="$TEST_OPTS" || cabal test hls-gadt-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-gadt-plugin --test-options="$TEST_OPTS"
250262

251-
- if: matrix.test
263+
- if: matrix.test && matrix.ghc != '9.4.2'
252264
name: Test hls-explicit-fixity-plugin test suite
253265
run: cabal test hls-explicit-fixity-plugin --test-options="$TEST_OPTS" || cabal test hls-explicit-fixity-plugin --test-options="$TEST_OPTS" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-explicit-fixity-plugin --test-options="$TEST_OPTS"
254266

.gitlab-ci.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ variables:
99
# Commit of ghc/ci-images repository from which to pull Docker images
1010
DOCKER_REV: "4ed1a4f27828ba96a34662dc954335e29b470cd2"
1111

12-
CABAL_INSTALL_VERSION: 3.6.2.0
12+
CABAL_INSTALL_VERSION: 3.8.1.0
1313

1414
.windows_matrix: &windows_matrix
1515
matrix:
@@ -21,6 +21,10 @@ variables:
2121
CABAL_PROJECT: cabal.project
2222
- GHC_VERSION: 9.2.4
2323
CABAL_PROJECT: cabal.project
24+
- GHC_VERSION: 9.4.1
25+
CABAL_PROJECT: cabal.project
26+
- GHC_VERSION: 9.4.2
27+
CABAL_PROJECT: cabal.project
2428

2529
workflow:
2630
rules:

.hlint.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
within:
5555
- Development.IDE.Core.Shake
5656
- Development.IDE.GHC.Util
57+
- Development.IDE.Plugin.CodeAction.Util
5758
- Development.IDE.Graph.Internal.Database
5859
- Development.IDE.Graph.Internal.Paths
5960
- Development.IDE.Graph.Internal.Profile
@@ -184,6 +185,7 @@
184185
- Development.IDE.Core.Shake
185186
- Development.IDE.Plugin.Completions
186187
- Development.IDE.Plugin.CodeAction.ExactPrint
188+
- Development.IDE.Plugin.CodeAction
187189
- Development.IDE.Test
188190
- Development.IDE.Graph.Internal.Profile
189191
- Development.IDE.Graph.Internal.Rules
@@ -221,6 +223,7 @@
221223
- Development.IDE.Core.Compile
222224
- Development.IDE.Graph.Internal.Database
223225
- Development.IDE.GHC.Util
226+
- Development.IDE.Plugin.CodeAction.Util
224227
- Wingman.Debug
225228

226229
# We really do not want novel usages of restricted functions, and mere

bench/config.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,13 @@ configurations:
111111
# - ghcide-type-lenses
112112
# - pragmas
113113
# - Ghcide:
114+
# - ghcide-completions
115+
# - ghcide-type-lenses
116+
# - Refactor:
114117
# - ghcide-code-actions-bindings
115118
# - ghcide-code-actions-fill-holes
116119
# - ghcide-code-actions-imports-exports
117120
# - ghcide-code-actions-type-signatures
118-
# - ghcide-completions
119-
# - ghcide-type-lenses
120121
- All:
121122
- alternateNumberFormat
122123
- callHierarchy

bindist/ghcs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
9.0.2,cabal.project
55
9.2.3,cabal.project
66
9.2.4,cabal.project
7+
9.4.1,cabal.project
8+
9.4.2,cabal.project

bindist/ghcs-Msys

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
9.0.2,cabal.project
33
9.2.3,cabal.project
44
9.2.4,cabal.project
5+
9.4.1,cabal.project
6+
9.4.2,cabal.project

cabal.project

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ packages:
55
./hls-graph
66
./ghcide
77
./ghcide-bench
8+
./ghcide/test
89
./hls-plugin-api
910
./hls-test-utils
1011
./plugins/hls-tactics-plugin
@@ -32,6 +33,7 @@ packages:
3233
./plugins/hls-stan-plugin
3334
./plugins/hls-gadt-plugin
3435
./plugins/hls-explicit-fixity-plugin
36+
./plugins/hls-refactor-plugin
3537

3638
-- Standard location for temporary packages needed for particular environments
3739
-- For example it is used in the project gitlab mirror to help in the MAcOS M1 build script
@@ -46,9 +48,13 @@ package *
4648

4749
write-ghc-environment-files: never
4850

49-
index-state: 2022-08-15T06:53:13Z
51+
index-state: 2022-08-29T06:53:13Z
5052

5153
constraints:
54+
-- For GHC 9.4, older versions of entropy fail to build on Windows
55+
entropy >= 0.4.1.10,
56+
-- For GHC 9.4
57+
basement >= 0.0.15,
5258
hyphenation +embed,
5359
-- remove this when hlint sets ghc-lib to true by default
5460
-- https://github.com/ndmitchell/hlint/issues/1376
@@ -65,6 +71,16 @@ source-repository-package
6571
tag: 7a0af7a8fd38045fd15fb13445bdcc7085325460
6672
-- https://github.com/tibbe/ekg-json/pull/12
6773

74+
source-repository-package
75+
type:git
76+
location: https://github.com/wz1000/hiedb
77+
tag: 67b92df2359558091df9102db5b701327308b930
78+
79+
source-repository-package
80+
type:git
81+
location: https://github.com/wz1000/hie-bios
82+
tag: aa73d3d2eb89df0003d2468a105e326d71b62cc7
83+
6884
-- Remove me when a new version of lsp is released
6985
source-repository-package
7086
type:git
@@ -85,6 +101,30 @@ source-repository-package
85101
tag: 77a434087b1f39ae6fd4bc6d88fddbcd1d23e185
86102

87103
allow-newer:
104+
-- ghc-9.4
105+
Chart-diagrams:lens,
106+
Chart:lens,
107+
co-log-core:base,
108+
constraints-extras:base,
109+
constraints-extras:template-haskell,
110+
dependent-sum:some,
111+
diagrams-contrib:base,
112+
diagrams-contrib:lens,
113+
diagrams-postscript:base,
114+
diagrams-postscript:lens,
115+
diagrams-svg:base,
116+
diagrams-svg:lens,
117+
ekg-json:base,
118+
ghc-paths:Cabal,
119+
haddock-library:base,
120+
hie-bios:aeson,
121+
hie-bios:ghc,
122+
monoid-extras:base,
123+
monoid-subclasses:vector,
124+
svg-builder:base,
125+
uuid:time,
126+
vector-space:base,
127+
88128
-- ghc-9.2
89129
----------
90130
hiedb:base,

configuration-ghc-94.nix

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{ pkgs, inputs }:
2+
3+
let
4+
disabledPlugins = [
5+
"hls-hlint-plugin"
6+
# That one is not technically a plugin, but by putting it in this list, we
7+
# get it removed from the top level list of requirement and it is not pull
8+
# in the nix shell.
9+
"shake-bench"
10+
];
11+
12+
hpkgsOverride = hself: hsuper:
13+
with pkgs.haskell.lib;
14+
{
15+
hlsDisabledPlugins = disabledPlugins;
16+
# YOLO
17+
mkDerivation = args:
18+
hsuper.mkDerivation (args // {
19+
jailbreak = true;
20+
doCheck = false;
21+
});
22+
} // (builtins.mapAttrs (_: drv: disableLibraryProfiling drv) {
23+
# ptr-poker breaks on MacOS without SSE2 optimizations
24+
# https://github.com/nikita-volkov/ptr-poker/issues/11
25+
ptr-poker = hself.callCabal2nix "ptr-poker" inputs.ptr-poker { };
26+
27+
ghc-exactprint =
28+
hself.callCabal2nix "ghc-exactprint" inputs.ghc-exactprint-150 { };
29+
# Hlint is still broken
30+
hlint = doJailbreak (hself.callCabal2nix "hlint" inputs.hlint { });
31+
32+
stylish-haskell = appendConfigureFlag hsuper.stylish-haskell "-fghc-lib";
33+
34+
# Re-generate HLS drv excluding some plugins
35+
haskell-language-server =
36+
hself.callCabal2nixWithOptions "haskell-language-server" ./.
37+
(pkgs.lib.concatStringsSep " " [ "-fpedantic" "-f-hlint" ]) { };
38+
});
39+
in {
40+
inherit disabledPlugins;
41+
tweakHpkgs = hpkgs: hpkgs.extend hpkgsOverride;
42+
}

0 commit comments

Comments
 (0)