on master help sign in
Use more specific region for type application errors
3cd7b27Evan Czaplicki
src/Canonicalize/Type.hs+9−10
@@ -20,7 +20,7 @@ tipe
20 :: Env.Environment
20 :: Env.Environment
21 -> T.Raw
21 -> T.Raw
22 -> Result.ResultErr T.Canonical
22 -> Result.ResultErr T.Canonical
23−tipe env typ@(A.A region typ') =
23+tipe env annType@(A.A _ typ) =
24 let
24 let
25 go =
25 go =
26 tipe env
26 tipe env
@@ -28,15 +28,15 @@ tipe env typ@(A.A region typ') =
28 goSnd (name,t) =
28 goSnd (name,t) =
29 (,) name <$> go t
29 (,) name <$> go t
30 in
30 in
31− case typ' of
31+ case typ of
32 T.RVar x ->
32 T.RVar x ->
33 Result.ok (T.Var x)
33 Result.ok (T.Var x)
34
34
35 T.RType _ ->
35 T.RType _ ->
36− canonicalizeApp region env typ []
36+ canonicalizeApp env annType []
37
37
38 T.RApp t ts ->
38 T.RApp t ts ->
39− canonicalizeApp region env t ts
39+ canonicalizeApp env t ts
40
40
41 T.RLambda a b ->
41 T.RLambda a b ->
42 T.Lambda <$> go a <*> go b
42 T.Lambda <$> go a <*> go b
@@ -49,20 +49,19 @@ tipe env typ@(A.A region typ') =
49
49
50
50
51canonicalizeApp
51canonicalizeApp
52− :: R.Region
53− -> Env.Environment
52+ :: Env.Environment
54 -> T.Raw
53 -> T.Raw
55 -> [T.Raw]
54 -> [T.Raw]
56 -> Result.ResultErr T.Canonical
55 -> Result.ResultErr T.Canonical
57−canonicalizeApp region env f args =
56+canonicalizeApp env annFunc@(A.A region func) args =
58− case f of
57+ case func of
59− A.A _ (T.RType (Var.Raw rawName)) ->
58+ T.RType (Var.Raw rawName) ->
60 Canonicalize.tvar region env rawName
59 Canonicalize.tvar region env rawName
61 `Result.andThen` canonicalizeWithTvar
60 `Result.andThen` canonicalizeWithTvar
62
61
63 _ ->
62 _ ->
64 T.App
63 T.App
65− <$> tipe env f
64+ <$> tipe env annFunc
66 <*> Trav.traverse (tipe env) args
65 <*> Trav.traverse (tipe env) args
67
66
68 where
67 where