1-- |
2-- Metadata annotations for core functional representation
3--
4module Language.PureScript.CoreFn.Meta where
5
6import Prelude.Compat
7
8import Language.PureScript.Names
9
10-- |
11-- Metadata annotations
12--
13data Meta
14  -- |
15  -- The contained value is a data constructor
16  --
17  = IsConstructor ConstructorType [Ident]
18  -- |
19  -- The contained value is a newtype
20  --
21  | IsNewtype
22  -- |
23  -- The contained value is a typeclass dictionary constructor
24  --
25  | IsTypeClassConstructor
26  -- |
27  -- The contained reference is for a foreign member
28  --
29  | IsForeign
30  -- |
31  -- The contained value is a where clause
32  --
33  | IsWhere
34  deriving (Show, Eq, Ord)
35
36-- |
37-- Data constructor metadata
38--
39data ConstructorType
40  -- |
41  -- The constructor is for a type with a single constructor
42  --
43  = ProductType
44  -- |
45  -- The constructor is for a type with multiple constructors
46  --
47  | SumType deriving (Show, Eq, Ord)
48