@@ -14,7 +14,7 @@ import qualified AST.Type as T
14import qualified AST.Variable as V
14import qualified AST.Variable as V
16instance Arbitrary V.Raw where
16instance Arbitrary V.Raw where
17− arbitrary = V.Raw <$> arbitrary
17+ arbitrary = V.Raw <$> capVar
18 shrink (V.Raw v) = V.Raw <$> shrink v
18 shrink (V.Raw v) = V.Raw <$> shrink v
20instance Arbitrary L.Literal where
20instance Arbitrary L.Literal where
@@ -85,12 +85,13 @@ instance Arbitrary v => Arbitrary (T.Type v) where
85 field = (,) <$> lowVar <*> depthTipe
85 field = (,) <$> lowVar <*> depthTipe
86 fields = genVector n (\m -> (,) <$> lowVar <*> tipe m)
86 fields = genVector n (\m -> (,) <$> lowVar <*> tipe m)
87 fields1 = (:) <$> field <*> fields
87 fields1 = (:) <$> field <*> fields
88+ depthTipes = (:) <$> depthTipe <*> genVector n tipe
90 [ T.Lambda <$> depthTipe <*> depthTipe
91 [ T.Lambda <$> depthTipe <*> depthTipe
91 , T.Var <$> lowVar
92 , T.Var <$> lowVar
92 , T.Type <$> arbitrary
93 , T.Type <$> arbitrary
93− , T.App <$> arbitrary <*> genVector n tipe
94+ , T.App <$> (T.Type <$> arbitrary) <*> depthTipes
94 , T.Record <$> fields <*> pure Nothing
95 , T.Record <$> fields <*> pure Nothing
95 , T.Record <$> fields1 <*> (Just . T.Var <$> lowVar)
96 , T.Record <$> fields1 <*> (Just . T.Var <$> lowVar)
@@ -99,8 +100,8 @@ instance Arbitrary v => Arbitrary (T.Type v) where
99 case tipe of
100 case tipe of
100 T.Lambda s t -> s : t : (T.Lambda <$> shrink s <*> shrink t)
101 T.Lambda s t -> s : t : (T.Lambda <$> shrink s <*> shrink t)
101 T.Var _ -> []
102 T.Var _ -> []
102− T.Aliased _ t -> [t]
103+ T.Aliased v t -> t : (T.Aliased v <$> shrink t)
103− T.Type _ -> []
104+ T.Type v -> T.Type <$> shrink v
104 T.App t ts -> t : ts ++ (T.App <$> shrink t <*> shrink ts)
105 T.App t ts -> t : ts ++ (T.App <$> shrink t <*> shrink ts)
105 T.Record fs t -> map snd fs ++ record
106 T.Record fs t -> map snd fs ++ record