@@ -17,7 +17,6 @@ import qualified Elm.ModuleName as ModuleName
17import qualified Reporting.Annotation as A
17import qualified Reporting.Annotation as A
18import qualified Reporting.Error.Type as E
18import qualified Reporting.Error.Type as E
19import Reporting.Error.Type (Expected(..), Context(..), SubContext(..), MaybeName(..), Category(..), PExpected(..), PContext(..))
19import Reporting.Error.Type (Expected(..), Context(..), SubContext(..), MaybeName(..), Category(..), PExpected(..), PContext(..))
20−import qualified Reporting.Region as R
21import qualified Type.Constrain.Pattern as Pattern
20import qualified Type.Constrain.Pattern as Pattern
22import qualified Type.Instantiate as Instantiate
21import qualified Type.Instantiate as Instantiate
23import Type.Type as Type hiding (Descriptor(..))
22import Type.Type as Type hiding (Descriptor(..))
@@ -149,15 +148,15 @@ constrain rtv (A.At region expression) expected =
149 Can.Tuple a b maybeC ->
148 Can.Tuple a b maybeC ->
150 constrainTuple rtv region a b maybeC expected
149 constrainTuple rtv region a b maybeC expected
152− Can.Shader _uid _src glType ->
151+ Can.Shader _src types ->
153− constrainShader region glType expected
152+ constrainShader region types expected
157-- CONSTRAIN LAMBDA
156-- CONSTRAIN LAMBDA
160−constrainLambda :: RTV -> R.Region -> [Can.Pattern] -> Can.Expr -> Expected Type -> IO Constraint
159+constrainLambda :: RTV -> A.Region -> [Can.Pattern] -> Can.Expr -> Expected Type -> IO Constraint
161constrainLambda rtv region args body expected =
160constrainLambda rtv region args body expected =
162 do (Args vars tipe resultType (Pattern.State headers pvars revCons)) <-
161 do (Args vars tipe resultType (Pattern.State headers pvars revCons)) <-
163 constrainArgs args
162 constrainArgs args
@@ -182,7 +181,7 @@ constrainLambda rtv region args body expected =
182-- CONSTRAIN CALL
181-- CONSTRAIN CALL
185−constrainCall :: RTV -> R.Region -> Can.Expr -> [Can.Expr] -> Expected Type -> IO Constraint
184+constrainCall :: RTV -> A.Region -> Can.Expr -> [Can.Expr] -> Expected Type -> IO Constraint
186constrainCall rtv region func@(A.At funcRegion _) args expected =
185constrainCall rtv region func@(A.At funcRegion _) args expected =
187 do let maybeName = getName func
186 do let maybeName = getName func
@@ -208,7 +207,7 @@ constrainCall rtv region func@(A.At funcRegion _) args expected =
211−constrainArg :: RTV -> R.Region -> MaybeName -> Index.ZeroBased -> Can.Expr -> IO (Variable, Type, Constraint)
210+constrainArg :: RTV -> A.Region -> MaybeName -> Index.ZeroBased -> Can.Expr -> IO (Variable, Type, Constraint)
212constrainArg rtv region maybeName index arg =
211constrainArg rtv region maybeName index arg =
213 do argVar <- mkFlexVar
212 do argVar <- mkFlexVar
214 let argType = VarN argVar
213 let argType = VarN argVar
@@ -241,7 +240,7 @@ getAccessName (A.At _ expr) =
241-- CONSTRAIN BINOP
240-- CONSTRAIN BINOP
244−constrainBinop :: RTV -> R.Region -> Name.Name -> Can.Annotation -> Can.Expr -> Can.Expr -> Expected Type -> IO Constraint
243+constrainBinop :: RTV -> A.Region -> Name.Name -> Can.Annotation -> Can.Expr -> Can.Expr -> Expected Type -> IO Constraint
245constrainBinop rtv region op annotation leftExpr rightExpr expected =
244constrainBinop rtv region op annotation leftExpr rightExpr expected =
246 do leftVar <- mkFlexVar
245 do leftVar <- mkFlexVar
247 rightVar <- mkFlexVar
246 rightVar <- mkFlexVar
@@ -269,7 +268,7 @@ constrainBinop rtv region op annotation leftExpr rightExpr expected =
269-- CONSTRAIN LISTS
268-- CONSTRAIN LISTS
272−constrainList :: RTV -> R.Region -> [Can.Expr] -> Expected Type -> IO Constraint
271+constrainList :: RTV -> A.Region -> [Can.Expr] -> Expected Type -> IO Constraint
273constrainList rtv region entries expected =
272constrainList rtv region entries expected =
274 do entryVar <- mkFlexVar
273 do entryVar <- mkFlexVar
275 let entryType = VarN entryVar
274 let entryType = VarN entryVar
@@ -285,7 +284,7 @@ constrainList rtv region entries expected =
288−constrainListEntry :: RTV -> R.Region -> Type -> Index.ZeroBased -> Can.Expr -> IO Constraint
287+constrainListEntry :: RTV -> A.Region -> Type -> Index.ZeroBased -> Can.Expr -> IO Constraint
289constrainListEntry rtv region tipe index expr =
288constrainListEntry rtv region tipe index expr =
290 constrain rtv expr (FromContext region (ListEntry index) tipe)
289 constrain rtv expr (FromContext region (ListEntry index) tipe)
@@ -294,7 +293,7 @@ constrainListEntry rtv region tipe index expr =
294-- CONSTRAIN IF EXPRESSIONS
293-- CONSTRAIN IF EXPRESSIONS
297−constrainIf :: RTV -> R.Region -> [(Can.Expr, Can.Expr)] -> Can.Expr -> Expected Type -> IO Constraint
296+constrainIf :: RTV -> A.Region -> [(Can.Expr, Can.Expr)] -> Can.Expr -> Expected Type -> IO Constraint
298constrainIf rtv region branches final expected =
297constrainIf rtv region branches final expected =
299 do let boolExpect = FromContext region IfCondition Type.bool
298 do let boolExpect = FromContext region IfCondition Type.bool
300 let (conditions, exprs) = foldr (\(c,e) (cs,es) -> (c:cs,e:es)) ([],[final]) branches
299 let (conditions, exprs) = foldr (\(c,e) (cs,es) -> (c:cs,e:es)) ([],[final]) branches
@@ -331,7 +330,7 @@ constrainIf rtv region branches final expected =
331-- CONSTRAIN CASE EXPRESSIONS
330-- CONSTRAIN CASE EXPRESSIONS
334−constrainCase :: RTV -> R.Region -> Can.Expr -> [Can.CaseBranch] -> Expected Type -> IO Constraint
333+constrainCase :: RTV -> A.Region -> Can.Expr -> [Can.CaseBranch] -> Expected Type -> IO Constraint
335constrainCase rtv region expr branches expected =
334constrainCase rtv region expr branches expected =
336 do ptrnVar <- mkFlexVar
335 do ptrnVar <- mkFlexVar
337 let ptrnType = VarN ptrnVar
336 let ptrnType = VarN ptrnVar
@@ -376,7 +375,7 @@ constrainCaseBranch rtv (Can.CaseBranch pattern expr) pExpect bExpect =
376-- CONSTRAIN RECORD
375-- CONSTRAIN RECORD
379−constrainRecord :: RTV -> R.Region -> Map.Map Name.Name Can.Expr -> Expected Type -> IO Constraint
378+constrainRecord :: RTV -> A.Region -> Map.Map Name.Name Can.Expr -> Expected Type -> IO Constraint
380constrainRecord rtv region fields expected =
379constrainRecord rtv region fields expected =
381 do dict <- traverse (constrainField rtv) fields
380 do dict <- traverse (constrainField rtv) fields
@@ -402,7 +401,7 @@ constrainField rtv expr =
402-- CONSTRAIN RECORD UPDATE
401-- CONSTRAIN RECORD UPDATE
405−constrainUpdate :: RTV -> R.Region -> Name.Name -> Can.Expr -> Map.Map Name.Name Can.FieldUpdate -> Expected Type -> IO Constraint
404+constrainUpdate :: RTV -> A.Region -> Name.Name -> Can.Expr -> Map.Map Name.Name Can.FieldUpdate -> Expected Type -> IO Constraint
406constrainUpdate rtv region name expr fields expected =
405constrainUpdate rtv region name expr fields expected =
407 do extVar <- mkFlexVar
406 do extVar <- mkFlexVar
408 fieldDict <- Map.traverseWithKey (constrainUpdateField rtv region) fields
407 fieldDict <- Map.traverseWithKey (constrainUpdateField rtv region) fields
@@ -423,7 +422,7 @@ constrainUpdate rtv region name expr fields expected =
423 return $ exists vars $ CAnd (fieldsCon:con:cons)
422 return $ exists vars $ CAnd (fieldsCon:con:cons)
426−constrainUpdateField :: RTV -> R.Region -> Name.Name -> Can.FieldUpdate -> IO (Variable, Type, Constraint)
425+constrainUpdateField :: RTV -> A.Region -> Name.Name -> Can.FieldUpdate -> IO (Variable, Type, Constraint)
427constrainUpdateField rtv region field (Can.FieldUpdate _ expr) =
426constrainUpdateField rtv region field (Can.FieldUpdate _ expr) =
428 do var <- mkFlexVar
427 do var <- mkFlexVar
429 let tipe = VarN var
428 let tipe = VarN var
@@ -435,7 +434,7 @@ constrainUpdateField rtv region field (Can.FieldUpdate _ expr) =
435-- CONSTRAIN TUPLE
434-- CONSTRAIN TUPLE
438−constrainTuple :: RTV -> R.Region -> Can.Expr -> Can.Expr -> Maybe Can.Expr -> Expected Type -> IO Constraint
437+constrainTuple :: RTV -> A.Region -> Can.Expr -> Can.Expr -> Maybe Can.Expr -> Expected Type -> IO Constraint
439constrainTuple rtv region a b maybeC expected =
438constrainTuple rtv region a b maybeC expected =
440 do aVar <- mkFlexVar
439 do aVar <- mkFlexVar
441 bVar <- mkFlexVar
440 bVar <- mkFlexVar
@@ -467,8 +466,8 @@ constrainTuple rtv region a b maybeC expected =
467-- CONSTRAIN SHADER
466-- CONSTRAIN SHADER
470−constrainShader :: R.Region -> Shader.Shader -> Expected Type -> IO Constraint
469+constrainShader :: A.Region -> Shader.Types -> Expected Type -> IO Constraint
471−constrainShader region (Shader.Shader attributes uniforms varyings) expected =
470+constrainShader region (Shader.Types attributes uniforms varyings) expected =
472 do attrVar <- mkFlexVar
471 do attrVar <- mkFlexVar
473 unifVar <- mkFlexVar
472 unifVar <- mkFlexVar
474 let attrType = VarN attrVar
473 let attrType = VarN attrVar
@@ -509,7 +508,7 @@ glToType glType =
509-- CONSTRAIN DESTRUCTURES
508-- CONSTRAIN DESTRUCTURES
512−constrainDestruct :: RTV -> R.Region -> Can.Pattern -> Can.Expr -> Constraint -> IO Constraint
511+constrainDestruct :: RTV -> A.Region -> Can.Pattern -> Can.Expr -> Constraint -> IO Constraint
513constrainDestruct rtv region pattern expr bodyCon =
512constrainDestruct rtv region pattern expr bodyCon =
514 do patternVar <- mkFlexVar
513 do patternVar <- mkFlexVar
515 let patternType = VarN patternVar
514 let patternType = VarN patternVar