Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit e2db378

Browse files
committed
Fix the tests.
1 parent e9b21f6 commit e2db378

File tree

3 files changed

+22
-19
lines changed

3 files changed

+22
-19
lines changed

semantic-core/semantic-core.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ test-suite spec
8484
other-modules: Generators
8585
build-depends: base
8686
, semantic-core
87+
, fused-effects
8788
, hedgehog ^>= 1
8889
, tasty >= 1.2 && <2
8990
, tasty-hedgehog ^>= 1.0.0.1

semantic-core/test/Generators.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{-# LANGUAGE ScopedTypeVariables #-}
1+
{-# LANGUAGE ScopedTypeVariables, TypeOperators #-}
22

33
module Generators
44
( literal
@@ -18,6 +18,7 @@ import Hedgehog hiding (Var)
1818
import qualified Hedgehog.Gen as Gen
1919
import qualified Hedgehog.Range as Range
2020

21+
import Control.Effect.Sum ((:+:))
2122
import qualified Data.Core as Core
2223
import Data.Name
2324
import Data.Term
@@ -29,16 +30,16 @@ name :: MonadGen m => m (Named User)
2930
name = Gen.prune (named' <$> names) where
3031
names = Gen.text (Range.linear 1 10) Gen.lower
3132

32-
boolean :: MonadGen m => m (Term Core.Core User)
33+
boolean :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
3334
boolean = Core.bool <$> Gen.bool
3435

35-
variable :: MonadGen m => m (Term Core.Core User)
36+
variable :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
3637
variable = pure . namedValue <$> name
3738

38-
ifthenelse :: MonadGen m => m (Term Core.Core User) -> m (Term Core.Core User)
39+
ifthenelse :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
3940
ifthenelse bod = Gen.subterm3 boolean bod bod Core.if'
4041

41-
apply :: MonadGen m => m (Term Core.Core User) -> m (Term Core.Core User)
42+
apply :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
4243
apply gen = go where
4344
go = Gen.recursive
4445
Gen.choice
@@ -47,21 +48,21 @@ apply gen = go where
4748
, Gen.subtermM go (\x -> Core.lam <$> name <*> pure x)
4849
]
4950

50-
lambda :: MonadGen m => m (Term Core.Core User) -> m (Term Core.Core User)
51+
lambda :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
5152
lambda bod = do
5253
arg <- name
5354
Gen.subterm bod (Core.lam arg)
5455

55-
record :: MonadGen m => m (Term Core.Core User) -> m (Term Core.Core User)
56+
record :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
5657
record bod = Core.record <$> Gen.list (Range.linear 0 5) ((,) . namedValue <$> name <*> bod)
5758

58-
atoms :: MonadGen m => [m (Term Core.Core User)]
59+
atoms :: MonadGen m => [m (Term (Core.Ann :+: Core.Core) User)]
5960
atoms = [variable, pure Core.unit, boolean, Core.string <$> Gen.text (Range.linear 1 10) Gen.lower]
6061

61-
literal :: MonadGen m => m (Term Core.Core User)
62+
literal :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
6263
literal = Gen.recursive Gen.choice atoms [lambda literal, record literal]
6364

64-
expr :: MonadGen m => m (Term Core.Core User)
65+
expr :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
6566
expr = Gen.recursive Gen.choice atoms
6667
[ Gen.subtermM expr (\x -> flip Core.rec x <$> name)
6768
, Gen.subterm2 expr expr (Core.>>>)

semantic-core/test/Spec.hs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{-# LANGUAGE OverloadedStrings #-}
1+
{-# LANGUAGE OverloadedStrings, TypeOperators #-}
22
module Main (main) where
33

44
import Data.String
@@ -9,6 +9,7 @@ import Test.Tasty
99
import Test.Tasty.Hedgehog
1010
import Test.Tasty.HUnit
1111

12+
import Control.Effect.Sum
1213
import Data.File
1314
import qualified Generators as Gen
1415
import qualified Analysis.Eval as Eval
@@ -20,7 +21,7 @@ import Data.Term
2021

2122
-- * Helpers
2223

23-
true, false :: Term Core User
24+
true, false :: Term (Ann :+: Core) User
2425
true = bool True
2526
false = bool False
2627

@@ -30,10 +31,10 @@ parseEither p = Trifecta.foldResult (Left . show . Trifecta._errDoc) Right . Tri
3031
-- * Parser roundtripping properties. Note that parsing and prettyprinting is generally
3132
-- not a roundtrip, because the parser inserts 'Ann' nodes itself.
3233

33-
prop_roundtrips :: Gen (Term Core User) -> Property
34+
prop_roundtrips :: Gen (Term (Ann :+: Core) User) -> Property
3435
prop_roundtrips gen = property $ do
3536
input <- forAll gen
36-
tripping input showCore (parseEither (Parse.core <* Trifecta.eof))
37+
tripping input (showCore . stripAnnotations) (parseEither (Parse.core <* Trifecta.eof))
3738

3839
parserProps :: TestTree
3940
parserProps = testGroup "Parsing: roundtripping"
@@ -46,7 +47,7 @@ parserProps = testGroup "Parsing: roundtripping"
4647

4748
-- * Parser specs
4849

49-
parsesInto :: String -> Term Core User -> Assertion
50+
parsesInto :: String -> Term (Ann :+: Core) User -> Assertion
5051
parsesInto str res = case parseEither Parse.core str of
5152
Right x -> x @?= res
5253
Left m -> assertFailure m
@@ -56,7 +57,7 @@ assert_booleans_parse = do
5657
parseEither Parse.core "#true" @?= Right true
5758
parseEither Parse.core "#false" @?= Right false
5859

59-
a, f, g, h :: Term Core User
60+
a, f, g, h :: Term (Ann :+: Core) User
6061
(a, f, g, h) = (pure "a", pure "f", pure "g", pure "h")
6162

6263
assert_ifthen_parse :: Assertion
@@ -92,9 +93,9 @@ parserSpecs = testGroup "Parsing: simple specs"
9293
, testCase "quoted names" assert_quoted_name_parse
9394
]
9495

95-
assert_roundtrips :: File (Term Core User) -> Assertion
96-
assert_roundtrips (File _ core) = case parseEither Parse.core (showCore core) of
97-
Right v -> v @?= stripAnnotations core
96+
assert_roundtrips :: File (Term (Ann :+: Core) User) -> Assertion
97+
assert_roundtrips (File _ core) = case parseEither Parse.core (showCore (stripAnnotations core)) of
98+
Right v -> stripAnnotations v @?= stripAnnotations core
9899
Left e -> assertFailure e
99100

100101
parserExamples :: TestTree

0 commit comments

Comments
 (0)