@@ -9,6 +9,7 @@ import qualified Data.Set as Set
10import qualified AST.Expression.General as E
10import qualified AST.Expression.General as E
11import qualified AST.Expression.Canonical as Canonical
11import qualified AST.Expression.Canonical as Canonical
12+import qualified AST.Helpers as Help
12import qualified AST.Literal as L
13import qualified AST.Literal as L
13import qualified AST.Module as Module
14import qualified AST.Module as Module
14import qualified AST.Pattern as P
15import qualified AST.Pattern as P
@@ -22,10 +23,16 @@ import qualified Reporting.Warning as Warning
23patternMatches
24patternMatches
24 :: Module.Interfaces
25 :: Module.Interfaces
25− -> Module.Body Canonical.Expr
26+ -> Module.CanonicalModule
26 -> Result.Result Warning.Warning e ()
27 -> Result.Result Warning.Warning e ()
27−patternMatches interfaces body =
28+patternMatches interfaces modul =
30+ name = Module.names modul
31+ body = Module.body modul
34+ (toTagDict interfaces name (Module.datatypes body))
28− checkExpression (toTagDict interfaces) (Module.program body)
35+ (Module.program body)
31-- PATTERN MATCH DATA STRUCTURE
38-- PATTERN MATCH DATA STRUCTURE
@@ -73,8 +80,8 @@ type TagDict =
73type Tag = String
80type Tag = String
76−toTagDict :: Module.Interfaces -> TagDict
83+toTagDict :: Module.Interfaces -> Module.Name -> Module.ADTs -> TagDict
77−toTagDict interfaces =
84+toTagDict interfaces localName localAdts =
79 listTags =
86 listTags =
80 [ ("::", 2), ("[]", 0) ]
87 [ ("::", 2), ("[]", 0) ]
@@ -90,6 +97,7 @@ toTagDict interfaces =
90 interfaces
97 interfaces
91 |> Map.map (toTagMapping . Module.iAdts)
98 |> Map.map (toTagMapping . Module.iAdts)
92 |> Map.mapKeysMonotonic Var.Module
99 |> Map.mapKeysMonotonic Var.Module
100+ |> Map.insert (Var.Module localName) (toTagMapping localAdts)
94 Map.union builtinDict interfaceDict
102 Map.union builtinDict interfaceDict
@@ -115,6 +123,9 @@ lookupOtherCtors (Var.Canonical home name) tagDict =
115 otherTags
123 otherTags
117 Nothing ->
125 Nothing ->
126+ if Help.isTuple name then
127+ [(name, read (drop 6 name))]
119 "Since the Nitpick phase happens after canonicalization and type \
130 "Since the Nitpick phase happens after canonicalization and type \
120 \inference, it is impossible that a pattern in a case cannot be \
131 \inference, it is impossible that a pattern in a case cannot be \