Skip to content

Commit 878ef18

Browse files
authored
Merge pull request #734 from haskell-CI/quantified-constraints
Use quantified constraints in OptionsGrammar
2 parents 90e8ffe + 0b4b8f8 commit 878ef18

File tree

5 files changed

+50
-37
lines changed

5 files changed

+50
-37
lines changed

.github/workflows/haskell-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ jobs:
264264
run: |
265265
perl -i -e 'while (<ARGV>) { print unless /package-id\s+(base-compat-batteries|bs-cmpt-bttrs)-\d+(\.\d+)*/; }' .ghc.environment.*
266266
if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_haskell_ci} || false ; fi
267-
if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --fast -XHaskell2010 -XBangPatterns -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XNoImplicitPrelude -XScopedTypeVariables -XTypeOperators src ; fi
267+
if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --fast -XHaskell2010 -XBangPatterns -XConstraintKinds -XDataKinds -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XFlexibleContexts -XFlexibleInstances -XFunctionalDependencies -XGADTs -XGeneralizedNewtypeDeriving -XMultiWayIf -XNoImplicitPrelude -XQuantifiedConstraints -XRankNTypes -XScopedTypeVariables -XTypeApplications -XTypeOperators -XUndecidableInstances -XUndecidableSuperClasses -XViewPatterns src ; fi
268268
if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_cabal_install_parsers} || false ; fi
269269
if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --fast -XHaskell2010 src ; fi
270270
- name: docspec

haskell-ci.cabal

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,37 @@ flag ShellCheck
6767
default: True
6868
manual: True
6969

70-
library haskell-ci-internal
70+
common language
7171
default-language: Haskell2010
72-
hs-source-dirs: src
72+
default-extensions:
73+
BangPatterns
74+
ConstraintKinds
75+
DataKinds
76+
DeriveAnyClass
77+
DeriveFoldable
78+
DeriveFunctor
79+
DeriveGeneric
80+
DeriveTraversable
81+
DerivingStrategies
82+
FlexibleContexts
83+
FlexibleInstances
84+
FunctionalDependencies
85+
GADTs
86+
GeneralizedNewtypeDeriving
87+
MultiWayIf
88+
NoImplicitPrelude
89+
QuantifiedConstraints
90+
RankNTypes
91+
ScopedTypeVariables
92+
TypeApplications
93+
TypeOperators
94+
UndecidableInstances
95+
UndecidableSuperClasses
96+
ViewPatterns
97+
98+
library haskell-ci-internal
99+
import: language
100+
hs-source-dirs: src
73101
ghc-options:
74102
-Wall -Wincomplete-uni-patterns -Wincomplete-record-updates
75103
-Wcompat -Wnoncanonical-monad-instances
@@ -123,19 +151,6 @@ library haskell-ci-internal
123151
HaskellCI.VersionInfo
124152
HaskellCI.YamlSyntax
125153

126-
default-extensions:
127-
BangPatterns
128-
DeriveAnyClass
129-
DeriveFoldable
130-
DeriveFunctor
131-
DeriveGeneric
132-
DeriveTraversable
133-
DerivingStrategies
134-
GeneralizedNewtypeDeriving
135-
NoImplicitPrelude
136-
ScopedTypeVariables
137-
TypeOperators
138-
139154
other-extensions:
140155
CPP
141156
NamedFieldPuns
@@ -194,10 +209,10 @@ executable haskell-ci
194209
default-language: Haskell2010
195210

196211
test-suite golden
197-
default-language: Haskell2010
198-
type: exitcode-stdio-1.0
199-
main-is: Tests.hs
200-
hs-source-dirs: test
212+
import: language
213+
type: exitcode-stdio-1.0
214+
main-is: Tests.hs
215+
hs-source-dirs: test
201216

202217
-- inherited constraints via lib:haskell-ci
203218
build-depends:

haskell-ci.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ run_cmd $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-detai
525525
put_info "doctest"
526526
run_cmd perl -i -e 'while (<ARGV>) { print unless /package-id\s+(base-compat-batteries|bs-cmpt-bttrs)-\d+(\.\d+)*/; }' .ghc.environment.*
527527
change_dir_if $((HCNUMVER < 90000)) ${PKGDIR_haskell_ci}
528-
run_cmd_if $((HCNUMVER < 90000)) doctest --fast -XHaskell2010 -XBangPatterns -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XNoImplicitPrelude -XScopedTypeVariables -XTypeOperators src
528+
run_cmd_if $((HCNUMVER < 90000)) doctest --fast -XHaskell2010 -XBangPatterns -XConstraintKinds -XDataKinds -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XFlexibleContexts -XFlexibleInstances -XFunctionalDependencies -XGADTs -XGeneralizedNewtypeDeriving -XMultiWayIf -XNoImplicitPrelude -XQuantifiedConstraints -XRankNTypes -XScopedTypeVariables -XTypeApplications -XTypeOperators -XUndecidableInstances -XUndecidableSuperClasses -XViewPatterns src
529529
change_dir_if $((HCNUMVER < 90000)) ${PKGDIR_cabal_install_parsers}
530530
run_cmd_if $((HCNUMVER < 90000)) doctest --fast -XHaskell2010 src
531531

src/HaskellCI/Config.hs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,17 @@ emptyConfig = case runEG configGrammar of
114114

115115
configGrammar
116116
:: ( OptionsGrammar c g, Applicative (g Config)
117-
, c (Identity PackageScope)
118-
, c (Identity TestedWithJobs)
119-
, c (Identity Ubuntu)
120-
, c (Identity Jobs)
121-
, c (Identity CopyFields)
122-
, c (Identity Version)
123-
, c (Identity Natural)
124-
, c (Identity Components)
125-
, c Env, c CopyFields, c HeadVersion
117+
, c Components
118+
, c CopyFields
119+
, c CopyFields
120+
, c Env
121+
, c HeadVersion
122+
, c Jobs
123+
, c Natural
124+
, c PackageScope
125+
, c TestedWithJobs
126+
, c Ubuntu
127+
, c Version
126128
, c (C.List C.FSep (Identity Installed) Installed)
127129
, Applicative (g DoctestConfig)
128130
, Applicative (g DocspecConfig)

src/HaskellCI/OptionsGrammar.hs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
{-# LANGUAGE ConstraintKinds #-}
2-
{-# LANGUAGE FlexibleContexts #-}
3-
{-# LANGUAGE FlexibleInstances #-}
4-
{-# LANGUAGE FunctionalDependencies #-}
5-
{-# LANGUAGE UndecidableInstances #-}
6-
{-# LANGUAGE UndecidableSuperClasses #-}
71
module HaskellCI.OptionsGrammar (
82
OptionsGrammar (..),
93
(C.^^^),
@@ -40,7 +34,9 @@ type BashCompletionAction = String
4034

4135
class
4236
( C.FieldGrammar c p
43-
, c Range, c (Identity C.VersionRange)
37+
, forall s. Applicative (p s)
38+
, forall a. c a => c (Identity a)
39+
, c Range, c C.VersionRange
4440
, c (C.List C.NoCommaFSep C.Token' String)
4541
, c (C.List C.FSep C.Token' String)
4642
, c (AlaSet C.NoCommaFSep C.Token' String)

0 commit comments

Comments
 (0)