@@ -6,6 +6,10 @@ import Idris.Core.DeepSeq
6import Idris.Docstrings
6import Idris.Docstrings
7import Idris.Core.TT
7import Idris.Core.TT
8import Idris.AbsSyntaxTree
8import Idris.AbsSyntaxTree
10+import IRTS.Lang (PrimFn(..))
11+import IRTS.CodegenCommon (OutputType (..))
12+import Util.DynamicLinker
10import Control.DeepSeq
14import Control.DeepSeq
@@ -18,6 +22,281 @@ instance NFData a => NFData (D.Docstring a) where
18instance NFData CT.Options where
22instance NFData CT.Options where
19 rnf (CT.Options x1 x2 x3 x4) = rnf x1 `seq` rnf x2 `seq` rnf x3 `seq` rnf x4 `seq` ()
23 rnf (CT.Options x1 x2 x3 x4) = rnf x1 `seq` rnf x2 `seq` rnf x3 `seq` rnf x4 `seq` ()
25+instance NFData ConsoleWidth where
26+ rnf InfinitelyWide = ()
27+ rnf (ColsWide x) = rnf x `seq` ()
28+ rnf AutomaticWidth = ()
30+instance NFData PrimFn where
31+ rnf (LPlus x) = rnf x `seq` ()
32+ rnf (LMinus x) = rnf x `seq` ()
33+ rnf (LTimes x) = rnf x `seq` ()
34+ rnf (LUDiv x) = rnf x `seq` ()
35+ rnf (LSDiv x) = rnf x `seq` ()
36+ rnf (LURem x) = rnf x `seq` ()
37+ rnf (LSRem x) = rnf x `seq` ()
38+ rnf (LAnd x) = rnf x `seq` ()
39+ rnf (LOr x) = rnf x `seq` ()
40+ rnf (LXOr x) = rnf x `seq` ()
41+ rnf (LCompl x) = rnf x `seq` ()
42+ rnf (LSHL x) = rnf x `seq` ()
43+ rnf (LLSHR x) = rnf x `seq` ()
44+ rnf (LASHR x) = rnf x `seq` ()
45+ rnf (LEq x) = rnf x `seq` ()
46+ rnf (LLt x) = rnf x `seq` ()
47+ rnf (LLe x) = rnf x `seq` ()
48+ rnf (LGt x) = rnf x `seq` ()
49+ rnf (LGe x) = rnf x `seq` ()
50+ rnf (LSLt x) = rnf x `seq` ()
51+ rnf (LSLe x) = rnf x `seq` ()
52+ rnf (LSGt x) = rnf x `seq` ()
53+ rnf (LSGe x) = rnf x `seq` ()
54+ rnf (LSExt x1 x2) = rnf x1 `seq` rnf x2 `seq` ()
55+ rnf (LZExt x1 x2) = rnf x1 `seq` rnf x2 `seq` ()
56+ rnf (LTrunc x1 x2) = rnf x1 `seq` rnf x2 `seq` ()
57+ rnf (LStrConcat) = ()
61+ rnf (LIntFloat x) = rnf x `seq` ()
62+ rnf (LFloatInt x) = rnf x `seq` ()
63+ rnf (LIntStr x) = rnf x `seq` ()
64+ rnf (LStrInt x) = rnf x `seq` ()
67+ rnf (LChInt x) = rnf x `seq` ()
68+ rnf (LIntCh x) = rnf x `seq` ()
69+ rnf (LBitCast x1 x2) = rnf x1 `seq` rnf x2 `seq` ()
89+ rnf (LSystemInfo) = ()
92+ rnf (LExternal x) = rnf x `seq` ()
95+instance NFData SyntaxRules where
96+ rnf (SyntaxRules xs) = rnf xs `seq` ()
98+instance NFData DynamicLib where
99+ rnf (Lib x _) = rnf x `seq` ()
102+instance NFData Opt where
103+ rnf (Filename str) = rnf str `seq` ()
106+ rnf (ColourREPL bool) = rnf bool `seq` ()
108+ rnf (IdemodeSocket) = ()
110+ rnf (ShowLibdir) = ()
113+ rnf (NoBasePkgs) = ()
114+ rnf (NoPrelude) = ()
115+ rnf (NoBuiltins) = ()
117+ rnf (OLogging i) = rnf i `seq` ()
118+ rnf (Output str) = rnf str `seq` ()
119+ rnf (Interface) = ()
121+ rnf (TypeInType) = ()
122+ rnf (DefaultTotal) = ()
123+ rnf (DefaultPartial) = ()
124+ rnf (WarnPartial) = ()
125+ rnf (WarnReach) = ()
126+ rnf (EvalTypes) = ()
127+ rnf (NoCoverage) = ()
128+ rnf (ErrContext) = ()
131+ rnf (Port str) = rnf str `seq` ()
132+ rnf (IBCSubDir str) = rnf str `seq` ()
133+ rnf (ImportDir str) = rnf str `seq` ()
134+ rnf (PkgBuild str) = rnf str `seq` ()
135+ rnf (PkgInstall str) = rnf str `seq` ()
136+ rnf (PkgClean str) = rnf str `seq` ()
137+ rnf (PkgCheck str) = rnf str `seq` ()
138+ rnf (PkgREPL str) = rnf str `seq` ()
139+ rnf (PkgMkDoc str) = rnf str `seq` ()
140+ rnf (PkgTest str) = rnf str `seq` ()
141+ rnf (PkgIndex fp) = rnf fp `seq` ()
143+ rnf (Pkg str) = rnf str `seq` ()
144+ rnf (BCAsm str) = rnf str `seq` ()
145+ rnf (DumpDefun str) = rnf str `seq` ()
146+ rnf (DumpCases str) = rnf str `seq` ()
147+ rnf (UseCodegen cg) = rnf cg `seq` ()
148+ rnf (CodegenArgs str) = rnf str `seq` ()
149+ rnf (OutputTy ot) = rnf ot `seq` ()
150+ rnf (Extension le) = rnf le `seq` ()
151+ rnf (InterpretScript str) = rnf str `seq` ()
152+ rnf (EvalExpr str) = rnf str `seq` ()
153+ rnf (TargetTriple str) = rnf str `seq` ()
154+ rnf (TargetCPU str) = rnf str `seq` ()
155+ rnf (OptLevel i) = rnf i `seq` ()
156+ rnf (AddOpt o) = rnf o `seq` ()
157+ rnf (RemoveOpt o) = rnf o `seq` ()
158+ rnf (Client str) = rnf str `seq` ()
159+ rnf (ShowOrigErr) = ()
160+ rnf (AutoWidth) = ()
161+ rnf (AutoSolve) = ()
162+ rnf (UseConsoleWidth cw) = rnf cw `seq` ()
163+ rnf (DumpHighlights) = ()
166+instance NFData TIData where
168+ rnf (TISolution xs) = rnf xs `seq` ()
170+instance NFData IOption where
196+ `seq` rnf opt_typecase
197+ `seq` rnf opt_typeintype
198+ `seq` rnf opt_coverage
199+ `seq` rnf opt_showimp
200+ `seq` rnf opt_errContext
202+ `seq` rnf opt_verbose
203+ `seq` rnf opt_nobanner
205+ `seq` rnf opt_codegen
206+ `seq` rnf opt_outputTy
207+ `seq` rnf opt_ibcsubdir
208+ `seq` rnf opt_importdirs
209+ `seq` rnf opt_triple
211+ `seq` rnf opt_cmdline
212+ `seq` rnf opt_origerr
213+ `seq` rnf opt_autoSolve
214+ `seq` rnf opt_autoImport
215+ `seq` rnf opt_optimise
216+ `seq` rnf opt_printdepth
217+ `seq` rnf opt_evaltypes
220+instance NFData LanguageExt where
221+ rnf TypeProviders = ()
222+ rnf ErrorReflection = ()
224+instance NFData Optimisation where
225+ rnf PETransform = ()
227+instance NFData ColourTheme where
228+ rnf (ColourTheme keywordColour
237+ `seq` rnf boundVarColour
238+ `seq` rnf implicitColour
239+ `seq` rnf functionColour
240+ `seq` rnf typeColour
241+ `seq` rnf dataColour
242+ `seq` rnf promptColour
243+ `seq` rnf postulateColour
246+instance NFData IdrisColour where
247+ rnf (IdrisColour _ x2 x3 x4 x5) = rnf x2 `seq` rnf x3 `seq` rnf x4 `seq` rnf x5 `seq` ()
249+instance NFData OutputType where
253+ rnf MavenProject = ()
255+instance NFData IBCWrite where
256+ rnf (IBCFix fixDecl) = rnf fixDecl `seq` ()
257+ rnf (IBCImp name) = rnf name `seq` ()
258+ rnf (IBCStatic name) = rnf name `seq` ()
259+ rnf (IBCClass name) = rnf name `seq` ()
260+ rnf (IBCInstance b1 b2 n1 n2) = rnf b1 `seq` rnf b2 `seq` rnf n1 `seq` rnf n2 `seq` ()
261+ rnf (IBCDSL name) = rnf name `seq` ()
262+ rnf (IBCData name) = rnf name `seq` ()
263+ rnf (IBCOpt name) = rnf name `seq` ()
264+ rnf (IBCMetavar name) = rnf name `seq` ()
265+ rnf (IBCSyntax syntax) = rnf syntax `seq` ()
266+ rnf (IBCKeyword string) = rnf string `seq` ()
267+ rnf (IBCImport imp) = rnf imp `seq` ()
268+ rnf (IBCImportDir filePath) = rnf filePath `seq` ()
269+ rnf (IBCObj codegen filePath) = rnf codegen `seq` rnf filePath `seq` ()
270+ rnf (IBCLib codegen string) = rnf codegen `seq` rnf string `seq` ()
271+ rnf (IBCCGFlag codegen string) = rnf codegen `seq` rnf string `seq` ()
272+ rnf (IBCDyLib string) = rnf string `seq` ()
273+ rnf (IBCHeader codegen string) = rnf codegen `seq` rnf string `seq` ()
274+ rnf (IBCAccess name accessibility) = rnf name `seq` rnf accessibility `seq` ()
275+ rnf (IBCMetaInformation name metaInformation) = rnf name `seq` rnf metaInformation `seq` ()
276+ rnf (IBCTotal name totality) = rnf name `seq` rnf totality `seq` ()
277+ rnf (IBCFlags name fnOpts) = rnf name `seq` rnf fnOpts `seq` ()
278+ rnf (IBCFnInfo name fnInfo) = rnf name `seq` rnf fnInfo `seq` ()
279+ rnf (IBCTrans name terms) = rnf name `seq` rnf terms `seq` ()
280+ rnf (IBCErrRev terms) = rnf terms `seq` ()
281+ rnf (IBCCG name) = rnf name `seq` ()
282+ rnf (IBCDoc name) = rnf name `seq` ()
283+ rnf (IBCCoercion name) = rnf name `seq` ()
284+ rnf (IBCDef name) = rnf name `seq` ()
285+ rnf (IBCNameHint names) = rnf names `seq` ()
286+ rnf (IBCLineApp filePath int pTerm) = rnf filePath `seq` rnf int `seq` rnf pTerm `seq` ()
287+ rnf (IBCErrorHandler name) = rnf name `seq` ()
288+ rnf (IBCFunctionErrorHandler n1 n2 n3) = rnf n1 `seq` rnf n2 `seq` rnf n3 `seq` ()
289+ rnf (IBCPostulate name) = rnf name `seq` ()
290+ rnf (IBCExtern extern) = rnf extern `seq` ()
291+ rnf (IBCTotCheckErr fc string) = rnf fc `seq` rnf string `seq` ()
292+ rnf (IBCParsedRegion fc) = rnf fc `seq` ()
293+ rnf (IBCModDocs name) = rnf name `seq` ()
294+ rnf (IBCUsage usage) = rnf usage `seq` ()
295+ rnf (IBCExport name) = rnf name `seq` ()
296+ rnf (IBCAutoHint n1 n2) = rnf n1 `seq` rnf n2 `seq` ()
297+ rnf (IBCRecord x) = rnf x `seq` ()
21instance NFData a => NFData (D.Block a) where
300instance NFData a => NFData (D.Block a) where
22 rnf (D.Para lines) = rnf lines `seq` ()
301 rnf (D.Para lines) = rnf lines `seq` ()
23 rnf (D.Header i lines) = rnf i `seq` rnf lines `seq` ()
302 rnf (D.Header i lines) = rnf i `seq` rnf lines `seq` ()
@@ -394,3 +673,18 @@ instance NFData SyntaxInfo where
394 rnf x4 `seq`
673 rnf x4 `seq`
395 rnf x5 `seq`
674 rnf x5 `seq`
396 rnf x6 `seq` rnf x7 `seq` rnf x8 `seq` rnf x9 `seq` rnf x10 `seq` rnf x11 `seq` rnf x12 `seq` ()
675 rnf x6 `seq` rnf x7 `seq` rnf x8 `seq` rnf x9 `seq` rnf x10 `seq` rnf x11 `seq` rnf x12 `seq` ()
677+instance NFData OutputMode where
678+ rnf (RawOutput x) = () -- no instance for Handle, so this is a bit wrong
679+ rnf (IdeMode x y) = rnf x `seq` ()
682+instance NFData IState where
683+ rnf (IState x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20
684+ x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38 x39 x40
685+ x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 x51 x52 x53 x54 x55 x56 x57 x58 x59 x60
686+ x61 x62 x63 x64 x65 x66 x67 x68 x69 x70 x71 x72 x73)
687+ = rnf x1 `seq` rnf x2 `seq` rnf x3 `seq` rnf x4 `seq` rnf x5 `seq` rnf x6 `seq` rnf x7 `seq` rnf x8 `seq` rnf x9 `seq` rnf x10 `seq` () `seq` rnf x11 `seq` rnf x12 `seq` rnf x13 `seq` rnf x14 `seq` rnf x15 `seq` rnf x16 `seq` rnf x17 `seq` rnf x18 `seq` rnf x19 `seq` rnf x20 `seq`
688+ rnf x21 `seq` rnf x22 `seq` rnf x23 `seq` rnf x24 `seq` rnf x25 `seq` rnf x26 `seq` rnf x27 `seq` rnf x28 `seq` rnf x29 `seq` rnf x30 `seq` rnf x31 `seq` rnf x32 `seq` rnf x33 `seq` rnf x34 `seq` rnf x35 `seq` rnf x36 `seq` rnf x37 `seq` rnf x38 `seq` rnf x39 `seq` rnf x40 `seq`
689+ rnf x41 `seq` rnf x42 `seq` rnf x43 `seq` rnf x44 `seq` rnf x45 `seq` rnf x46 `seq` rnf x47 `seq` rnf x48 `seq` rnf x49 `seq` rnf x50 `seq` rnf x51 `seq` rnf x52 `seq` rnf x53 `seq` rnf x54 `seq` rnf x55 `seq` rnf x56 `seq` rnf x57 `seq` rnf x58 `seq` rnf x59 `seq` rnf x60 `seq`
690+ rnf x61 `seq` rnf x62 `seq` rnf x63 `seq` rnf x64 `seq` rnf x65 `seq` rnf x66 `seq` rnf x67 `seq` rnf x68 `seq` rnf x69 `seq` rnf x70 `seq` rnf x71 `seq` rnf x72 `seq` rnf x73 `seq` ()