@@ -33,9 +33,10 @@ import qualified Data.Map as Map
33import Data.Text (Text)
33import Data.Text (Text)
35import qualified AST.Binop as Binop
35import qualified AST.Binop as Binop
36−import qualified AST.Literal as Literal
37import qualified AST.Module.Name as ModuleName
36import qualified AST.Module.Name as ModuleName
37+import qualified AST.Shader as Shader
38import qualified AST.Type as Type
38import qualified AST.Type as Type
39+import qualified Data.Index as Index
39import qualified Elm.Name as N
40import qualified Elm.Name as N
40import Elm.Name (Name)
41import Elm.Name (Name)
41import qualified Reporting.Annotation as A
42import qualified Reporting.Annotation as A
@@ -56,7 +57,10 @@ data Expr_
56 | VarKernel Name Name
57 | VarKernel Name Name
57 | VarForeign ModuleName.Canonical Name
58 | VarForeign ModuleName.Canonical Name
58 | VarOperator Name ModuleName.Canonical Name
59 | VarOperator Name ModuleName.Canonical Name
59− | Literal Literal.Literal
60+ | Chr Text
60 | List [Expr]
64 | List [Expr]
61 | Negate Expr
65 | Negate Expr
62 | Binop Name ModuleName.Canonical Name Expr Expr
66 | Binop Name ModuleName.Canonical Name Expr Expr
@@ -67,14 +71,13 @@ data Expr_
67 | LetRec [Def] Expr
71 | LetRec [Def] Expr
68 | LetDestruct Match Expr Expr
72 | LetDestruct Match Expr Expr
69 | Case Expr [(Match, Expr)]
73 | Case Expr [(Match, Expr)]
70− | CtorAccess Expr Int
71 | Accessor Name
74 | Accessor Name
72 | Access Expr Name
75 | Access Expr Name
73 | Update Expr (Map.Map Name Expr)
76 | Update Expr (Map.Map Name Expr)
74 | Record (Map.Map Name Expr)
77 | Record (Map.Map Name Expr)
76 | Tuple Expr Expr (Maybe Expr)
79 | Tuple Expr Expr (Maybe Expr)
77− | GLShader Name Name Literal.Shader
80+ | Shader Name Name Shader.Shader
@@ -95,7 +98,7 @@ data Def =
97data Args = Args [Arg] Destructors
100data Args = Args [Arg] Destructors
98−data Arg = Arg Int Pattern
101+data Arg = Arg Index.ZeroBased Pattern
100data Match = Match Pattern Destructors
103data Match = Match Pattern Destructors
@@ -111,22 +114,24 @@ data Pattern_
111 | PTuple Pattern Pattern (Maybe Pattern)
114 | PTuple Pattern Pattern (Maybe Pattern)
112 | PList [Pattern]
115 | PList [Pattern]
113 | PCons Pattern Pattern
116 | PCons Pattern Pattern
114− | PLiteral Literal.Literal
117+ | PChr Text
116 { _p_home :: ModuleName.Canonical
121 { _p_home :: ModuleName.Canonical
117 , _p_type :: N.Name
122 , _p_type :: N.Name
118 , _p_vars :: [N.Name]
123 , _p_vars :: [N.Name]
119 , _p_name :: N.Name
124 , _p_name :: N.Name
120− , _p_args :: [(Int, Type.Canonical, Pattern)] -- zero indexed
125+ , _p_args :: [(Index.ZeroBased, Type.Canonical, Pattern)]
124type Destructors = Map.Map N.Name (A.Located Destructor)
129type Destructors = Map.Map N.Name (A.Located Destructor)
126data Destructor
131data Destructor
127− = DIndex Int Destructor
132+ = DIndex Index.ZeroBased Destructor
128 | DField N.Name Destructor
133 | DField N.Name Destructor
129− | DRoot Int
134+ | DRoot Index.ZeroBased