2Module : Idris.Core.Binary
3Description : Binary instances for the core datatypes
6Maintainer : The Idris Community.
8{-# LANGUAGE FlexibleInstances #-}
10{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}
11module Idris.Core.Binary where
15import Control.Applicative ((<$>), (<*>))
20instance Binary ErrorReportPart
21instance Binary Provenance
22instance Binary UConstraint
23instance Binary ConstraintFC
24instance Binary a => Binary (Err' a) where
25 put (Msg str) = do putWord8 0
27 put (InternalMsg str) = do putWord8 1
29 put (CantUnify x y z e ctxt i) = do putWord8 2
36 put (InfiniteUnify n t ctxt) = do putWord8 3
40 put (CantConvert x y ctxt) = do putWord8 4
44 put (CantSolveGoal x ctxt) = do putWord8 5
47 put (UnifyScope n1 n2 x ctxt) = do putWord8 6
52 put (CantInferType str) = do putWord8 7
54 put (NonFunctionType t1 t2) = do putWord8 8
57 put (NotEquality t1 t2) = do putWord8 9
60 put (TooManyArguments n) = do putWord8 10
62 put (CantIntroduce t) = do putWord8 11
64 put (NoSuchVariable n) = do putWord8 12
66 put (NoTypeDecl n) = do putWord8 13
68 put (NotInjective x y z) = do putWord8 14
72 put (CantResolve _ t u) = do putWord8 15
75 put (CantResolveAlts ns) = do putWord8 16
77 put (IncompleteTerm t) = do putWord8 17
79 put (UniverseError x1 x2 x3 x4 x5) = do putWord8 18
85 put (UniqueError u n) = do putWord8 19
88 put (UniqueKindError u n) = do putWord8 20
91 put ProgramLineComment = putWord8 21
92 put (Inaccessible n) = do putWord8 22
94 put (NonCollapsiblePostulate n) = do putWord8 23
96 put (AlreadyDefined n) = do putWord8 24
98 put (ProofSearchFail e) = do putWord8 25
100 put (NoRewriting l r t) = do putWord8 26
104 put (At fc e) = do putWord8 27
107 put (Elaborating str n ty e) = do putWord8 28
112 put (ElaboratingArg n1 n2 ns e) = do putWord8 29
117 put (ProviderError str) = do putWord8 30
119 put (LoadingFailed str e) = do putWord8 31
122 put (ReflectionError parts e) = do putWord8 32
125 put (ReflectionFailed str e) = do putWord8 33
128 put (WithFnType t) = do putWord8 34
130 put (CantMatch t) = do putWord8 35
132 put (ElabScriptDebug x1 x2 x3) = do putWord8 36
136 put (NoEliminator s t) = do putWord8 37
139 put (InvalidTCArg n t) = do putWord8 38
142 put (ElabScriptStuck x1) = do putWord8 39
144 put (UnknownImplicit n f) = do putWord8 40
147 put (NoValidAlts ns) = do putWord8 41
149 put (RunningElabScript e) = do putWord8 42
151 put (ElabScriptStaging n) = do putWord8 43
153 put (FancyMsg xs) = do putWord8 44
155 get = do i <- getWord8
158 1 -> fmap InternalMsg get
159 2 -> do x <- get ; y <- get ; z <- get ; e <- get ; ctxt <- get ; i <- get
160 return $ CantUnify x y z e ctxt i
161 3 -> do x <- get ; y <- get ; z <- get
162 return $ InfiniteUnify x y z
163 4 -> do x <- get ; y <- get ; z <- get
164 return $ CantConvert x y z
165 5 -> do x <- get ; y <- get
166 return $ CantSolveGoal x y
167 6 -> do w <- get ; x <- get ; y <- get ; z <- get
168 return $ UnifyScope w x y z
169 7 -> fmap CantInferType get
170 8 -> do x <- get ; y <- get
171 return $ NonFunctionType x y
172 9 -> do x <- get ; y <- get
173 return $ NotEquality x y
174 10 -> fmap TooManyArguments get
175 11 -> fmap CantIntroduce get
176 12 -> fmap NoSuchVariable get
177 13 -> fmap NoTypeDecl get
178 14 -> do x <- get ; y <- get ; z <- get
179 return $ NotInjective x y z
180 15 -> CantResolve False <$> get <*> get
181 16 -> fmap CantResolveAlts get
182 17 -> fmap IncompleteTerm get
183 18 -> UniverseError <$> get <*> get <*> get <*> get <*> get
184 19 -> do x <- get ; y <- get
185 return $ UniqueError x y
186 20 -> do x <- get ; y <- get
187 return $ UniqueKindError x y
188 21 -> return ProgramLineComment
189 22 -> fmap Inaccessible get
190 23 -> fmap NonCollapsiblePostulate get
191 24 -> fmap AlreadyDefined get
192 25 -> fmap ProofSearchFail get
193 26 -> do l <- get; r <- get; t <- get
194 return $ NoRewriting l r t
195 27 -> do x <- get ; y <- get
197 28 -> do w <- get; x <- get ; y <- get ; z <- get
198 return $ Elaborating w x y z
199 29 -> do w <- get ; x <- get ; y <- get ; z <- get
200 return $ ElaboratingArg w x y z
201 30 -> fmap ProviderError get
202 31 -> do x <- get ; y <- get
203 return $ LoadingFailed x y
204 32 -> do x <- get ; y <- get
205 return $ ReflectionError x y
206 33 -> do x <- get ; y <- get
207 return $ ReflectionFailed x y
208 34 -> fmap WithFnType get
209 35 -> fmap CantMatch get
213 return (ElabScriptDebug x1 x2 x3)
216 return (NoEliminator x1 x2)
219 return (InvalidTCArg x1 x2)
221 return (ElabScriptStuck x1)
222 40 -> do x <- get ; y <- get
223 return $ UnknownImplicit x y
224 41 -> fmap NoValidAlts get
225 42 -> fmap RunningElabScript get
226 43 -> fmap ElabScriptStaging get
227 44 -> fmap FancyMsg get
228 _ -> error "Corrupted binary data for Err'"
229----- Generated by 'derive'
234instance Binary SpecialName
235instance Binary Const where
238 I x1 -> do putWord8 0
240 BI x1 -> do putWord8 1
242 Fl x1 -> do putWord8 2
244 Ch x1 -> do putWord8 3
246 Str x1 -> do putWord8 4
248 B8 x1 -> putWord8 5 >> put x1
249 B16 x1 -> putWord8 6 >> put x1
250 B32 x1 -> putWord8 7 >> put x1
251 B64 x1 -> putWord8 8 >> put x1
253 (AType (ATInt ITNative)) -> putWord8 9
254 (AType (ATInt ITBig)) -> putWord8 10
255 (AType ATFloat) -> putWord8 11
256 (AType (ATInt ITChar)) -> putWord8 12
257 StrType -> putWord8 13
258 Forgot -> putWord8 15
259 (AType (ATInt (ITFixed ity))) -> putWord8 (fromIntegral (16 + fromEnum ity)) -- 16-19 inclusive
260 VoidType -> putWord8 27
261 WorldType -> putWord8 28
262 TheWorld -> putWord8 29
270 2 -> do x1 <- getDoublele
281 9 -> return (AType (ATInt ITNative))
282 10 -> return (AType (ATInt ITBig))
283 11 -> return (AType ATFloat)
284 12 -> return (AType (ATInt ITChar))
288 16 -> return (AType (ATInt (ITFixed IT8)))
289 17 -> return (AType (ATInt (ITFixed IT16)))
290 18 -> return (AType (ATInt (ITFixed IT32)))
291 19 -> return (AType (ATInt (ITFixed IT64)))
293 27 -> return VoidType
294 28 -> return WorldType
295 29 -> return TheWorld
296 _ -> error "Corrupted binary data for Const"
299instance Binary RigCount
300instance Binary ImplicitInfo where
303 Impl x1 x2 x3 -> do put x1; put x2
307 return (Impl x1 x2 False)
309instance (Binary b) => Binary (Binder b)
310instance Binary Universe
311instance Binary NameType
313instance Binary (TT Name) where
315 = {-# SCC "putTT" #-}
317 P x1 x2 x3 -> do putWord8 0
321 V x1 -> if (x1 >= 0 && x1 < 256)
323 putWord8 (toEnum (x1 + 1))
326 Bind x1 x2 x3 -> do putWord8 2
330 App _ x1 x2 -> do putWord8 3
333 Constant x1 -> do putWord8 4
335 Proj x1 x2 -> do putWord8 5
337 putWord8 (toEnum (x2 + 1))
339 TType x1 -> do putWord8 7
341 Impossible -> putWord8 8
342 Inferred x1 -> put x1 -- drop the 'Inferred'
343 UType x1 -> do putWord8 10
351 return (P x1 x2 Erased)
352 1 -> do x1 <- getWord8
353 return (V ((fromEnum x1) - 1))
357 return (Bind x1 x2 x3)
360 return (App Complete x1 x2)
365 return (Proj x1 ((fromEnum x2)-1))
369 8 -> return Impossible
374 _ -> error "Corrupted binary data for TT"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list