@@ -11,11 +11,13 @@ module Elm.Interface
1111 , public
1212 , private
1313 , privatize
14+ , extractUnion
15+ , extractAlias
1416 )
1517 where
1618
1719
18−import Control.Monad (liftM, liftM2, liftM4, liftM5)
20+import Control.Monad (liftM, liftM3, liftM4, liftM5)
1921import Data.Binary
2022import Data.Map.Strict ((!))
2123import qualified Data.Map.Strict as Map
@@ -153,7 +155,10 @@ toPublicAlias iAlias =
153155
154156data DependencyInterface
155157 = Public Interface
156− | Private (Map.Map Name.Name Can.Union) (Map.Map Name.Name Can.Alias)
158+ | Private
159+ Pkg.Name
160+ (Map.Map Name.Name Can.Union)
161+ (Map.Map Name.Name Can.Alias)
157162
158163
159164public :: Interface -> DependencyInterface
@@ -162,10 +167,8 @@ public =
162167
163168
164169private :: Interface -> DependencyInterface
165−private (Interface _ _ unions aliases _) =
166− Private
167− (Map.map extractUnion unions)
168− (Map.map extractAlias aliases)
170+private (Interface pkg _ unions aliases _) =
171+ Private pkg (Map.map extractUnion unions) (Map.map extractAlias aliases)
169172
170173
171174extractUnion :: Union -> Can.Union
@@ -187,7 +190,7 @@ privatize :: DependencyInterface -> DependencyInterface
187190privatize di =
188191 case di of
189192 Public i -> private i
190− Private _ _ -> di
193+ Private _ _ _ -> di
191194
192195
193196
@@ -240,12 +243,12 @@ instance Binary Binop where
240243instance Binary DependencyInterface where
241244 put union =
242245 case union of
243− Public a -> putWord8 0 >> put a
244− Private a b -> putWord8 1 >> put a >> put b
246+ Public a -> putWord8 0 >> put a
247+ Private a b c -> putWord8 1 >> put a >> put b >> put c
245248
246249 get =
247250 do n <- getWord8
248251 case n of
249252 0 -> liftM Public get
250− 1 -> liftM2 Private get get
253+ 1 -> liftM3 Private get get get
251254 _ -> error "binary encoding of DependencyInterface was corrupted"