on master help sign in
Define NOINLINE versions of Int, Float, etc. in Elm.Name
07f61dcEvan Czaplicki
src/Canonicalize/Effects.hs+6−11
@@ -137,34 +137,29 @@ checkPayload tipe =
137
137
138isPrim :: ModuleName.Canonical -> N.Name -> Bool
138isPrim :: ModuleName.Canonical -> N.Name -> Bool
139isPrim home name =
139isPrim home name =
140− home == ModuleName.basics
141− && Set.member name primitives
140+ home == ModuleName.basics && Set.member name primitives
142
141
143
142
144primitives :: Set.Set Text
143primitives :: Set.Set Text
145primitives =
144primitives =
146− Set.fromList [ "Int", "Float", "String", "Bool" ]
145+ Set.fromList [ N.int, N.float, N.string, N.bool ]
147
146
148
147
149isJson :: ModuleName.Canonical -> N.Name -> Bool
148isJson :: ModuleName.Canonical -> N.Name -> Bool
150isJson home name =
149isJson home name =
151− home == ModuleName.jsonEncode
150+ home == ModuleName.jsonEncode && name == "Value"
152− && name == "Value"
153
151
154
152
155isList :: ModuleName.Canonical -> N.Name -> Bool
153isList :: ModuleName.Canonical -> N.Name -> Bool
156isList home name =
154isList home name =
157− home == ModuleName.list
155+ home == ModuleName.list && name == N.list
158− && name == "List"
159
156
160
157
161isMaybe :: ModuleName.Canonical -> N.Name -> Bool
158isMaybe :: ModuleName.Canonical -> N.Name -> Bool
162isMaybe home name =
159isMaybe home name =
163− home == ModuleName.maybe
160+ home == ModuleName.maybe && name == N.maybe
164− && name == "Maybe"
165
161
166
162
167isArray :: ModuleName.Canonical -> N.Name -> Bool
163isArray :: ModuleName.Canonical -> N.Name -> Bool
168isArray home name =
164isArray home name =
169− home == ModuleName.array
165+ home == ModuleName.array && name == N.array
170− && name == "Array"
src/Elm/Name.hsnew file+65
@@ -0,0 +1,65 @@
1+{-# OPTIONS_GHC -Wall #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+module Elm.Name
4+ ( Name
5+ , toString
6+ , int, float, bool, char, string
7+ , maybe, list, array
8+ )
9+ where
10+
11+
12+import Prelude hiding (maybe)
13+import qualified Data.Text as Text
14+
15+
16+type Name = Text.Text
17+
18+
19+toString :: Name -> String
20+toString =
21+ Text.unpack
22+
23+
24+
25+-- COMMON NAMES
26+
27+
28+{-# NOINLINE int #-}
29+int :: Name
30+int = "Int"
31+
32+
33+{-# NOINLINE float #-}
34+float :: Name
35+float = "Float"
36+
37+
38+{-# NOINLINE bool #-}
39+bool :: Name
40+bool = "Bool"
41+
42+
43+{-# NOINLINE char #-}
44+char :: Name
45+char = "Char"
46+
47+
48+{-# NOINLINE string #-}
49+string :: Name
50+string = "String"
51+
52+
53+{-# NOINLINE maybe #-}
54+maybe :: Name
55+maybe = "Maybe"
56+
57+
58+{-# NOINLINE list #-}
59+list :: Name
60+list = "List"
61+
62+
63+{-# NOINLINE array #-}
64+array :: Name
65+array = "Array"