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 (InvalidTCArg n t) = do putWord8 38
139 put (ElabScriptStuck x1) = do putWord8 39
141 put (UnknownImplicit n f) = do putWord8 40
144 put (NoValidAlts ns) = do putWord8 41
146 put (RunningElabScript e) = do putWord8 42
148 put (ElabScriptStaging n) = do putWord8 43
150 put (FancyMsg xs) = do putWord8 44
152 get = do i <- getWord8
155 1 -> fmap InternalMsg get
156 2 -> do x <- get ; y <- get ; z <- get ; e <- get ; ctxt <- get ; i <- get
157 return $ CantUnify x y z e ctxt i
158 3 -> do x <- get ; y <- get ; z <- get
159 return $ InfiniteUnify x y z
160 4 -> do x <- get ; y <- get ; z <- get
161 return $ CantConvert x y z
162 5 -> do x <- get ; y <- get
163 return $ CantSolveGoal x y
164 6 -> do w <- get ; x <- get ; y <- get ; z <- get
165 return $ UnifyScope w x y z
166 7 -> fmap CantInferType get
167 8 -> do x <- get ; y <- get
168 return $ NonFunctionType x y
169 9 -> do x <- get ; y <- get
170 return $ NotEquality x y
171 10 -> fmap TooManyArguments get
172 11 -> fmap CantIntroduce get
173 12 -> fmap NoSuchVariable get
174 13 -> fmap NoTypeDecl get
175 14 -> do x <- get ; y <- get ; z <- get
176 return $ NotInjective x y z
177 15 -> CantResolve False <$> get <*> get
178 16 -> fmap CantResolveAlts get
179 17 -> fmap IncompleteTerm get
180 18 -> UniverseError <$> get <*> get <*> get <*> get <*> get
181 19 -> do x <- get ; y <- get
182 return $ UniqueError x y
183 20 -> do x <- get ; y <- get
184 return $ UniqueKindError x y
185 21 -> return ProgramLineComment
186 22 -> fmap Inaccessible get
187 23 -> fmap NonCollapsiblePostulate get
188 24 -> fmap AlreadyDefined get
189 25 -> fmap ProofSearchFail get
190 26 -> do l <- get; r <- get; t <- get
191 return $ NoRewriting l r t
192 27 -> do x <- get ; y <- get
194 28 -> do w <- get; x <- get ; y <- get ; z <- get
195 return $ Elaborating w x y z
196 29 -> do w <- get ; x <- get ; y <- get ; z <- get
197 return $ ElaboratingArg w x y z
198 30 -> fmap ProviderError get
199 31 -> do x <- get ; y <- get
200 return $ LoadingFailed x y
201 32 -> do x <- get ; y <- get
202 return $ ReflectionError x y
203 33 -> do x <- get ; y <- get
204 return $ ReflectionFailed x y
205 34 -> fmap WithFnType get
206 35 -> fmap CantMatch get
210 return (ElabScriptDebug x1 x2 x3)
213 return (InvalidTCArg x1 x2)
215 return (ElabScriptStuck x1)
216 40 -> do x <- get ; y <- get
217 return $ UnknownImplicit x y
218 41 -> fmap NoValidAlts get
219 42 -> fmap RunningElabScript get
220 43 -> fmap ElabScriptStaging get
221 44 -> fmap FancyMsg get
222 _ -> error "Corrupted binary data for Err'"
223----- Generated by 'derive'
228instance Binary SpecialName
229instance Binary Const where
232 I x1 -> do putWord8 0
234 BI x1 -> do putWord8 1
236 Fl x1 -> do putWord8 2
238 Ch x1 -> do putWord8 3
240 Str x1 -> do putWord8 4
242 B8 x1 -> putWord8 5 >> put x1
243 B16 x1 -> putWord8 6 >> put x1
244 B32 x1 -> putWord8 7 >> put x1
245 B64 x1 -> putWord8 8 >> put x1
247 (AType (ATInt ITNative)) -> putWord8 9
248 (AType (ATInt ITBig)) -> putWord8 10
249 (AType ATFloat) -> putWord8 11
250 (AType (ATInt ITChar)) -> putWord8 12
251 StrType -> putWord8 13
252 Forgot -> putWord8 15
253 (AType (ATInt (ITFixed ity))) -> putWord8 (fromIntegral (16 + fromEnum ity)) -- 16-19 inclusive
254 VoidType -> putWord8 27
255 WorldType -> putWord8 28
256 TheWorld -> putWord8 29
264 2 -> do x1 <- getDoublele
275 9 -> return (AType (ATInt ITNative))
276 10 -> return (AType (ATInt ITBig))
277 11 -> return (AType ATFloat)
278 12 -> return (AType (ATInt ITChar))
282 16 -> return (AType (ATInt (ITFixed IT8)))
283 17 -> return (AType (ATInt (ITFixed IT16)))
284 18 -> return (AType (ATInt (ITFixed IT32)))
285 19 -> return (AType (ATInt (ITFixed IT64)))
287 27 -> return VoidType
288 28 -> return WorldType
289 29 -> return TheWorld
290 _ -> error "Corrupted binary data for Const"
293instance Binary RigCount
294instance Binary ImplicitInfo where
297 Impl x1 x2 x3 -> do put x1; put x2
301 return (Impl x1 x2 False)
303instance (Binary b) => Binary (Binder b)
304instance Binary Universe
305instance Binary NameType
307instance Binary (TT Name) where
309 = {-# SCC "putTT" #-}
311 P x1 x2 x3 -> do putWord8 0
315 V x1 -> if (x1 >= 0 && x1 < 256)
317 putWord8 (toEnum (x1 + 1))
320 Bind x1 x2 x3 -> do putWord8 2
324 App _ x1 x2 -> do putWord8 3
327 Constant x1 -> do putWord8 4
329 Proj x1 x2 -> do putWord8 5
331 putWord8 (toEnum (x2 + 1))
333 TType x1 -> do putWord8 7
335 Impossible -> putWord8 8
336 Inferred x1 -> put x1 -- drop the 'Inferred'
337 UType x1 -> do putWord8 10
345 return (P x1 x2 Erased)
346 1 -> do x1 <- getWord8
347 return (V ((fromEnum x1) - 1))
351 return (Bind x1 x2 x3)
354 return (App Complete x1 x2)
359 return (Proj x1 ((fromEnum x2)-1))
363 8 -> return Impossible
368 _ -> 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