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

Commit c2812f8

Browse files
committed
Fix up the generators.
1 parent a1ee196 commit c2812f8

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

semantic-core/test/Generators.hs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,40 @@ import qualified Hedgehog.Range as Range
1818

1919
import Data.Core
2020
import Data.Name
21+
import Data.Term
2122

2223
-- The 'prune' call here ensures that we don't spend all our time just generating
2324
-- fresh names for variables, since the length of variable names is not an
2425
-- interesting property as they parse regardless.
25-
name :: MonadGen m => m Name
26-
name = Gen.prune (User <$> names) where
26+
name :: MonadGen m => m (Named Name)
27+
name = Gen.prune ((Named . Ignored <*> User) <$> names) where
2728
names = Gen.text (Range.linear 1 10) Gen.lower
2829

29-
boolean :: MonadGen m => m Core
30-
boolean = Bool <$> Gen.bool
30+
boolean :: MonadGen m => m (Term Core Name)
31+
boolean = bool <$> Gen.bool
3132

32-
variable :: MonadGen m => m Core
33-
variable = Var <$> name
33+
variable :: MonadGen m => m (Term Core Name)
34+
variable = pure . namedValue <$> name
3435

35-
ifthenelse :: MonadGen m => m Core -> m Core
36-
ifthenelse bod = Gen.subterm3 boolean bod bod If
36+
ifthenelse :: MonadGen m => m (Term Core Name) -> m (Term Core Name)
37+
ifthenelse bod = Gen.subterm3 boolean bod bod if'
3738

38-
apply :: MonadGen m => m Core -> m Core
39+
apply :: MonadGen m => m (Term Core Name) -> m (Term Core Name)
3940
apply gen = go where
4041
go = Gen.recursive
4142
Gen.choice
42-
[ Gen.subterm2 gen gen (:$)]
43-
[ Gen.subterm2 go go (:$) -- balanced
44-
, Gen.subtermM go (\x -> Lam <$> name <*> pure x)
43+
[ Gen.subterm2 gen gen ($$)]
44+
[ Gen.subterm2 go go ($$) -- balanced
45+
, Gen.subtermM go (\x -> lam <$> name <*> pure x)
4546
]
4647

47-
lambda :: MonadGen m => m Core -> m Core
48+
lambda :: MonadGen m => m (Term Core Name) -> m (Term Core Name)
4849
lambda bod = do
4950
arg <- name
50-
Gen.subterm bod (Lam arg)
51+
Gen.subterm bod (lam arg)
5152

52-
atoms :: MonadGen m => [m Core]
53-
atoms = [boolean, variable, pure Unit, pure Frame]
53+
atoms :: MonadGen m => [m (Term Core Name)]
54+
atoms = [boolean, variable, pure unit, pure frame]
5455

55-
literal :: MonadGen m => m Core
56+
literal :: MonadGen m => m (Term Core Name)
5657
literal = Gen.recursive Gen.choice atoms [lambda literal]

0 commit comments

Comments
 (0)