From 88bf5fc0f5264c73cd63edb1a0c4be99a35a5ecf Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 1 Jul 2024 14:40:38 +0300 Subject: [PATCH] Use quantified constraints in OptionsGrammar --- .github/workflows/haskell-ci.yml | 2 +- haskell-ci.cabal | 53 ++++++++++++++++++++------------ haskell-ci.sh | 2 +- src/HaskellCI/OptionsGrammar.hs | 10 ++---- 4 files changed, 39 insertions(+), 28 deletions(-) diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml index 712e4d63..4d2b2cca 100644 --- a/.github/workflows/haskell-ci.yml +++ b/.github/workflows/haskell-ci.yml @@ -264,7 +264,7 @@ jobs: run: | perl -i -e 'while () { print unless /package-id\s+(base-compat-batteries|bs-cmpt-bttrs)-\d+(\.\d+)*/; }' .ghc.environment.* if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_haskell_ci} || false ; fi - if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --fast -XHaskell2010 -XBangPatterns -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XNoImplicitPrelude -XScopedTypeVariables -XTypeOperators src ; fi + 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 if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_cabal_install_parsers} || false ; fi if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --fast -XHaskell2010 src ; fi - name: docspec diff --git a/haskell-ci.cabal b/haskell-ci.cabal index 99ce9d10..61e3b5e0 100644 --- a/haskell-ci.cabal +++ b/haskell-ci.cabal @@ -67,9 +67,37 @@ flag ShellCheck default: True manual: True -library haskell-ci-internal +common language default-language: Haskell2010 - hs-source-dirs: src + default-extensions: + BangPatterns + ConstraintKinds + DataKinds + DeriveAnyClass + DeriveFoldable + DeriveFunctor + DeriveGeneric + DeriveTraversable + DerivingStrategies + FlexibleContexts + FlexibleInstances + FunctionalDependencies + GADTs + GeneralizedNewtypeDeriving + MultiWayIf + NoImplicitPrelude + QuantifiedConstraints + RankNTypes + ScopedTypeVariables + TypeApplications + TypeOperators + UndecidableInstances + UndecidableSuperClasses + ViewPatterns + +library haskell-ci-internal + import: language + hs-source-dirs: src ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat -Wnoncanonical-monad-instances @@ -123,19 +151,6 @@ library haskell-ci-internal HaskellCI.VersionInfo HaskellCI.YamlSyntax - default-extensions: - BangPatterns - DeriveAnyClass - DeriveFoldable - DeriveFunctor - DeriveGeneric - DeriveTraversable - DerivingStrategies - GeneralizedNewtypeDeriving - NoImplicitPrelude - ScopedTypeVariables - TypeOperators - other-extensions: CPP NamedFieldPuns @@ -194,10 +209,10 @@ executable haskell-ci default-language: Haskell2010 test-suite golden - default-language: Haskell2010 - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test + import: language + type: exitcode-stdio-1.0 + main-is: Tests.hs + hs-source-dirs: test -- inherited constraints via lib:haskell-ci build-depends: diff --git a/haskell-ci.sh b/haskell-ci.sh index 70e3a572..8d4546df 100755 --- a/haskell-ci.sh +++ b/haskell-ci.sh @@ -525,7 +525,7 @@ run_cmd $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-detai put_info "doctest" run_cmd perl -i -e 'while () { print unless /package-id\s+(base-compat-batteries|bs-cmpt-bttrs)-\d+(\.\d+)*/; }' .ghc.environment.* change_dir_if $((HCNUMVER < 90000)) ${PKGDIR_haskell_ci} -run_cmd_if $((HCNUMVER < 90000)) doctest --fast -XHaskell2010 -XBangPatterns -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XNoImplicitPrelude -XScopedTypeVariables -XTypeOperators src +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 change_dir_if $((HCNUMVER < 90000)) ${PKGDIR_cabal_install_parsers} run_cmd_if $((HCNUMVER < 90000)) doctest --fast -XHaskell2010 src diff --git a/src/HaskellCI/OptionsGrammar.hs b/src/HaskellCI/OptionsGrammar.hs index beb44de3..0f08fa78 100644 --- a/src/HaskellCI/OptionsGrammar.hs +++ b/src/HaskellCI/OptionsGrammar.hs @@ -1,9 +1,3 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} module HaskellCI.OptionsGrammar ( OptionsGrammar (..), (C.^^^), @@ -40,7 +34,9 @@ type BashCompletionAction = String class ( C.FieldGrammar c p - , c Range, c (Identity C.VersionRange) + , forall s. Applicative (p s) + , forall a. c a => c (Identity a) + , c Range, c C.VersionRange , c (C.List C.NoCommaFSep C.Token' String) , c (C.List C.FSep C.Token' String) , c (AlaSet C.NoCommaFSep C.Token' String)