on master help sign in
Make separate structure for PCtor args
commita794af52b64e796b9b87c8ec33eaa47e5035935f authorEvan Czaplicki <evancz@users.noreply.github.com> dateWed 8 Nov 2017, 17:26 (9 years ago) parent800c03f
2 files changed+12−2
src/AST/Expression/Canonical.hs+10−1 src/Canonicalize/Pattern.hs+2−1
src/AST/Expression/Canonical.hs+10−1
@@ -7,6 +7,7 @@ module AST.Expression.Canonical
77 , Args(..), Arg(..)
88 , Match(..)
99 , Pattern, Pattern_(..)
10+ , PatternCtorArg(..)
1011 , Destructors
1112 , Destructor(..)
1213 -- decls
@@ -122,10 +123,18 @@ data Pattern_
122123 , _p_type :: N.Name
123124 , _p_vars :: [N.Name]
124125 , _p_name :: N.Name
125− , _p_args :: [(Index.ZeroBased, Type.Canonical, Pattern)]
126+ , _p_args :: [PatternCtorArg]
126127 }
127128
128129
130+data PatternCtorArg =
131+ PatternCtorArg
132+ { _index :: Index.ZeroBased
133+ , _type :: Type.Canonical
134+ , _arg :: Pattern
135+ }
136+
137+
129138type Destructors = Map.Map N.Name (A.Located Destructor)
130139
131140data Destructor
src/Canonicalize/Pattern.hs+2−1
@@ -172,7 +172,8 @@ canonicalize env destructor (A.A region pattern) =
172172 Src.PCtor nameRegion maybePrefix name patterns ->
173173 let
174174 toCanonicalArg index ptrn tipe =
175− (,,) index tipe <$> canonicalize env (Can.DIndex index destructor) ptrn
175+ Can.PatternCtorArg index tipe
176+ <$> canonicalize env (Can.DIndex index destructor) ptrn
176177 in
177178 do (Env.Pattern home tipe vars args) <- Env.findPattern nameRegion env maybePrefix name
178179 verifiedList <- Index.indexedZipWithA toCanonicalArg patterns args