Skip to content

Commit

Permalink
Add support for GHC 9.10
Browse files Browse the repository at this point in the history
Fixes #79
  • Loading branch information
martijnbastiaan committed Apr 14, 2024
1 parent d73df0a commit a259d96
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 18 deletions.
15 changes: 8 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ jobs:
- os: windows-latest
ghc: 8.8.4

# # Uncomment if testing with an unreleased GHC. Make sure to edit the
# # "Setup Haskell (head)" step too.
# include:
# - os: ubuntu-22.04
# ghc: head
# Uncomment if testing with an unreleased GHC. Make sure to edit the
# "Setup Haskell (head)" step too.
include:
- os: ubuntu-22.04
ghc: head
fail-fast: false
steps:
- name: Checkout
Expand All @@ -93,8 +93,9 @@ jobs:
sudo apt-get update
sudo apt-get install -y build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
ghcup install -u https://downloads.haskell.org/ghc/9.6.1/ghc-9.6.1-x86_64-deb9-linux.tar.xz ghc-head
ghcup set ghc ghc-head
ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml
ghcup install ghc 9.10.0.20240328
ghcup set ghc 9.10.0.20240328
echo "cabal-store=$HOME/.cabal/store" >> $GITHUB_OUTPUT
- name: Setup CI
Expand Down
7 changes: 5 additions & 2 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ packages:

write-ghc-environment-files: always

source-repository-package
type: git
location: https://github.com/haskell-unordered-containers/unordered-containers.git
tag: d52a0fd10bfa701cbbc9d7ac06bd7eb7664b3972

allow-newer:
*:base
, *:ghc-bignum
unordered-containers:template-haskell
3 changes: 2 additions & 1 deletion doctest-parallel.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ tested-with:
, GHC == 9.4.7
, GHC == 9.6.3
, GHC == 9.8.1
, GHC == 9.10.1

extra-source-files:
example/example.cabal
Expand Down Expand Up @@ -102,7 +103,7 @@ library
, directory
, exceptions
, filepath
, ghc >=8.2 && <9.9
, ghc >=8.2 && <9.11
, ghc-paths >=0.1.0.9
, process
, random >= 1.2
Expand Down
4 changes: 3 additions & 1 deletion src/Test/DocTest/Internal/Extract.hs
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,10 @@ extractLit loc = \case
#else
#if __GLASGOW_HASKELL__ < 904
HsPar _ (L l e) -> extractLit (locA l) e
#else
#elif __GLASGOW_HASKELL__ < 909
HsPar _ _ (L l e) _ -> extractLit (locA l) e
#else
HsPar _ (L l e) -> extractLit (locA l) e
#endif
#if __GLASGOW_HASKELL__ < 807
ExprWithTySig _ (L l e) -> extractLit l e
Expand Down
28 changes: 22 additions & 6 deletions src/Test/DocTest/Internal/Interpreter.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ import System.Directory (getPermissions, executable)
import Control.Monad
import Control.Exception hiding (handle)
import Data.Char
#if __GLASGOW_HASKELL__ > 906
import Data.List (unsnoc)
#endif
import GHC.Paths (ghc)

import Test.DocTest.Internal.GhciWrapper
Expand All @@ -27,6 +30,19 @@ import Test.DocTest.Internal.Logging (DebugLogger)
-- >>> import Test.DocTest.Internal.GhciWrapper (eval)
-- >>> import Test.DocTest.Internal.Logging (noLogger)

#if __GLASGOW_HASKELL__ <= 906
-- | If the list is empty returns 'Nothing', otherwise returns the 'init' and the 'last'.
--
-- > unsnoc "test" == Just ("tes",'t')
-- > unsnoc "" == Nothing
-- > \xs -> unsnoc xs == if null xs then Nothing else Just (init xs, last xs)
unsnoc :: [a] -> Maybe ([a], a)
unsnoc [] = Nothing
unsnoc [x] = Just ([], x)
unsnoc (x:xs) = Just (x:a, b)
where Just (a,b) = unsnoc xs

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Cabal / GHC 9.2.8

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Cabal / GHC 9.2.8

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Cabal / GHC 9.6.3

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Cabal / GHC 9.6.3

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Cabal / GHC 9.4.7

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Cabal / GHC 9.4.7

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Stack / lts-20.17

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / ubuntu-22.04 / Stack / lts-20.17

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / windows-latest / Stack / lts-20.17

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / windows-latest / Stack / lts-20.17

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / macOS-latest / Stack / lts-20.17

Pattern match(es) are non-exhaustive

Check warning on line 43 in src/Test/DocTest/Internal/Interpreter.hs

View workflow job for this annotation

GitHub Actions / macOS-latest / Stack / lts-20.17

Pattern match(es) are non-exhaustive
#endif

haveInterpreterKey :: String
haveInterpreterKey = "Have interpreter"

Expand Down Expand Up @@ -76,13 +92,13 @@ safeEvalIt repl = either (return . Left) (fmap Right . evalIt repl) . filterExpr

filterExpression :: String -> Either String String
filterExpression e =
case lines e of
case map strip (lines e) of
[] -> Right e
l -> if firstLine == ":{" && lastLine /= ":}" then fail_ else Right e
where
firstLine = strip $ head l
lastLine = strip $ last l
fail_ = Left "unterminated multiline command"
(firstLine:ls) ->
let lastLine = maybe firstLine snd (unsnoc ls) in
if firstLine == ":{" && lastLine /= ":}" then fail_ else Right e
where
fail_ = Left "unterminated multiline command"

strip :: String -> String
strip = dropWhile isSpace . reverse . dropWhile isSpace . reverse
2 changes: 1 addition & 1 deletion src/Test/DocTest/Internal/Runner/Example.hs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ mkResult expected_ actual_ =
-- use show to escape special characters in output lines if any output line
-- contains any unsafe character
escapeOutput
| any (not . isSafe) $ concat (expectedAsString ++ actual_) = init . tail . show . stripEnd
| any (not . isSafe) $ concat (expectedAsString ++ actual_) = init . drop 1 . show . stripEnd
| otherwise = id

actual :: [String]
Expand Down

0 comments on commit a259d96

Please sign in to comment.