on master help sign in
Move all tuple name generation to AST.Helpers
commitbefb3dfb8c80599e090b2ac7fe83f586baa76139 authorEvan Czaplicki <evancz@users.noreply.github.com> dateThu 11 May 2017, 00:00 (9 years ago) parent10164be
10 files changed+40−20
src/AST/Expression/Source.hs+2−2 src/AST/Helpers.hs+18−1 src/AST/Pattern.hs+2−2 src/AST/Type.hs+2−2 src/Canonicalize/Environment.hs+2−1 src/Elm/Compiler/Type.hs+4−3 src/Nitpick/PatternMatches.hs+1−1 src/Optimize/Port.hs+3−2 src/Reporting/Render/Type.hs+1−1 src/Type/Environment.hs+5−5
src/AST/Expression/Source.hs+2−2
@@ -7,9 +7,9 @@ module AST.Expression.Source
77 )
88 where
99
10−import qualified Data.Text as Text
1110import Data.Text (Text)
1211
12+import qualified AST.Helpers as Help
1313import qualified AST.Literal as Literal
1414import qualified AST.Pattern as Ptrn
1515import qualified AST.Type as Type
@@ -80,7 +80,7 @@ var x =
8080
8181tuple :: [Expr def] -> Expr' def
8282tuple expressions =
83− Ctor (Text.pack ("_Tuple" ++ show (length expressions))) expressions
83+ Ctor (Help.makeTuple (length expressions)) expressions
8484
8585
8686zero :: Expr' def
src/AST/Helpers.hs+18−1
@@ -1,6 +1,13 @@
11{-# OPTIONS_GHC -Wall #-}
22{-# LANGUAGE OverloadedStrings #-}
3−module AST.Helpers (isTuple, isOp, isSymbol) where
3+module AST.Helpers
4+ ( zeroTuple
5+ , makeTuple
6+ , isTuple
7+ , isOp
8+ , isSymbol
9+ )
10+ where
411
512import qualified Data.Char as Char
613import qualified Data.Set as Set
@@ -12,6 +19,16 @@ import Data.Text (Text)
1219-- TUPLES
1320
1421
22+zeroTuple :: Text
23+zeroTuple =
24+ "_Tuple0"
25+
26+
27+makeTuple :: Int -> Text
28+makeTuple size =
29+ Text.pack ("_Tuple" ++ show size)
30+
31+
1532isTuple :: Text -> Bool
1633isTuple name =
1734 Text.isPrefixOf "_Tuple" name
src/AST/Pattern.hs+2−2
@@ -6,10 +6,10 @@ import qualified Data.List as List
66import Data.Monoid ((<>))
77import qualified Data.Set as Set
88import Data.Text (Text)
9−import qualified Data.Text as Text
109import qualified Data.Text.Lazy as LazyText
1110import Data.Text.Lazy.Builder (Builder, fromText, toLazyText)
1211
12+import qualified AST.Helpers as Help
1313import qualified AST.Literal as L
1414import qualified AST.Variable as Var
1515import qualified Reporting.Annotation as A
@@ -65,7 +65,7 @@ tuple :: [Raw] -> Raw'
6565tuple patterns =
6666 let
6767 name =
68− Text.append "_Tuple" (Text.pack (show (length patterns)))
68+ Help.makeTuple (length patterns)
6969 in
7070 Ctor (Var.Raw name) patterns
7171
src/AST/Type.hs+2−2
@@ -13,9 +13,9 @@ import Control.Arrow (second)
1313import Control.Monad (liftM, liftM2, liftM3)
1414import Data.Binary
1515import qualified Data.Map as Map
16−import qualified Data.Text as Text
1716import Data.Text (Text)
1817
18+import qualified AST.Helpers as Help
1919import qualified AST.Module.Name as ModuleName
2020import qualified AST.Variable as Var
2121import qualified Reporting.Annotation as A
@@ -62,7 +62,7 @@ tuple :: R.Region -> [Raw] -> Raw
6262tuple region types =
6363 let
6464 name =
65− Var.Raw (Text.append "_Tuple" (Text.pack (show (length types))))
65+ Var.Raw (Help.makeTuple (length types))
6666 in
6767 A.A region (RApp (A.A region (RType name)) types)
6868
src/Canonicalize/Environment.hs+2−1
@@ -17,6 +17,7 @@ import qualified Data.Set as Set
1717import qualified Data.Text as Text
1818import Data.Text (Text)
1919
20+import qualified AST.Helpers as Help
2021import qualified AST.Declaration as Decl
2122import qualified AST.Module.Name as ModuleName
2223import qualified AST.Pattern as P
@@ -134,7 +135,7 @@ builtinPatches =
134135
135136 toTuple :: Int -> (Text, Int)
136137 toTuple n =
137− ( Text.pack ("_Tuple" ++ show n), n )
138+ ( Help.makeTuple n, n )
138139
139140
140141
src/Elm/Compiler/Type.hs+4−3
@@ -14,7 +14,8 @@ module Elm.Compiler.Type
1414import Control.Arrow ((***))
1515import qualified Data.Text as Text
1616import Data.Text (Text)
17−import Text.PrettyPrint as P
17+import qualified Text.PrettyPrint as P
18+import Text.PrettyPrint ((<+>))
1819
1920import qualified AST.Helpers as Help
2021import qualified AST.Type as Type
@@ -88,10 +89,10 @@ toDoc context tipe =
8889 P.text (Text.unpack name)
8990
9091 Type name ->
91− P.text (Text.unpack (if name == "_Tuple0" then "()" else name))
92+ P.text (Text.unpack (if name == Help.zeroTuple then "()" else name))
9293
9394 App (Type name) args ->
94− if name == "_Tuple0" then
95+ if name == Help.zeroTuple then
9596 P.text "()"
9697
9798 else if Help.isTuple name then
src/Nitpick/PatternMatches.hs+1−1
@@ -423,7 +423,7 @@ makeTupleInfo :: Int -> ( Text, ArityInfo )
423423makeTupleInfo n =
424424 let
425425 name =
426− Text.pack ("_Tuple" ++ show n)
426+ Help.makeTuple n
427427 in
428428 ( name, ArityInfo 1 [ (Var.builtin name, n) ] )
429429
src/Optimize/Port.hs+3−2
@@ -13,6 +13,7 @@ import qualified Data.Text as Text
1313import Data.Text (Text)
1414
1515import qualified AST.Expression.Optimized as Opt
16+import qualified AST.Helpers as Help
1617import qualified AST.Literal as Literal
1718import qualified AST.Module.Name as ModuleName
1819import qualified AST.Type as T
@@ -224,7 +225,7 @@ decodeArray tipe =
224225decodeTuple0 :: Env.Optimizer Opt.Expr
225226decodeTuple0 =
226227 do null <- decode "null"
227− return (Opt.Call null [ Opt.Ctor "_Tuple0" [] ])
228+ return (Opt.Call null [ Opt.Ctor Help.zeroTuple [] ])
228229
229230
230231decodeTuple :: [T.Canonical] -> Env.Optimizer Opt.Expr
@@ -238,7 +239,7 @@ decodeTuple types =
238239
239240 tuple =
240241 Opt.Ctor
241− (Text.pack ("_Tuple" ++ show size))
242+ (Help.makeTuple size)
242243 (map (Opt.VarLocal . indexToName . fst) entries)
243244 in
244245 do succeed <- decode "succeed"
src/Reporting/Render/Type.hs+1−1
@@ -93,7 +93,7 @@ varToDoc localizer var =
9393 name =
9494 Var.toText var
9595 in
96− if name == "_Tuple0" then
96+ if name == Help.zeroTuple then
9797 text "()"
9898
9999 else
src/Type/Environment.hs+5−5
@@ -15,9 +15,9 @@ import qualified Control.Monad.State as State
1515import qualified Data.List as List
1616import qualified Data.Map as Map
1717import qualified Data.Set as Set
18−import qualified Data.Text as Text
1918import Data.Text (Text)
2019
20+import qualified AST.Helpers as Help
2121import qualified AST.Type as T
2222import qualified AST.Variable as Var
2323import qualified AST.Module as Module
@@ -86,7 +86,7 @@ builtinTypes =
8686 , kind 0 ["Int","Float","Char","String","Bool"]
8787 ]
8888 where
89− tuple n = ( Text.pack ("_Tuple" ++ show n), n )
89+ tuple size = ( Help.makeTuple size, size )
9090 kind n names = map (\name -> (name, n)) names
9191
9292
@@ -106,12 +106,12 @@ makeCtors env unions =
106106 let (args, result) = tipe (map (VarN) vars)
107107 return (length args, vars, args, result)
108108
109− tupleCtor n =
109+ tupleCtor size =
110110 let
111111 name =
112− Text.pack ("_Tuple" ++ show n)
112+ Help.makeTuple size
113113 in
114− (name, inst n $ \vs -> (vs, foldl (<|) (getType env name) vs))
114+ (name, inst size $ \vs -> (vs, foldl (<|) (getType env name) vs))
115115
116116 builtins :: Dict Instantiator
117117 builtins =