aboutsummaryrefslogtreecommitdiff
path: root/sil.icl
diff options
context:
space:
mode:
Diffstat (limited to 'sil.icl')
-rw-r--r--sil.icl29
1 files changed, 15 insertions, 14 deletions
diff --git a/sil.icl b/sil.icl
index b73f25c..5b1529a 100644
--- a/sil.icl
+++ b/sil.icl
@@ -57,16 +57,16 @@ Start w
# (args,_) = runParser (arg until eof) $ tl cmd
| isError args
# err = err <<< toString (fromError args) <<< "\r\n"
- = finish io err w
+ = finish 1 io err w
# args = seq (fromOk args) zero
# (file,w) = readFile args.inputfile w
| isError file
# err = err <<< "Could not open '" <<< args.inputfile <<< "' for reading.\r\n"
- = finish io err w
+ = finish 1 io err w
# prog = tokenise (fromString $ fromOk file) >>= parse
| isError prog
# err = err <<< toString (fromError prog) <<< "\r\n"
- = finish io err w
+ = finish 1 io err w
# prog = fromOk prog
# io = if args.prettyprint
(io <<< print zero prog <<< "\r\n")
@@ -75,35 +75,35 @@ Start w
(appSnd fromJust $ checkProgram (Just err) prog)
([], err)
| not (isEmpty errs)
- = finish io err w
+ = finish 1 io err w
| not args.compile
- = finish io err w
+ = finish 0 io err w
# (ok,f,w) = fopen "sil_compiled.dcl" FWriteText w
| not ok
# err = err <<< "Could not open 'sil_compiled.dcl' for writing\r\n"
- = finish io err w
+ = finish 1 io err w
# f = f <<< "definition module sil_compiled"
# (_,w) = fclose f w
# (_,w) = sleep 1 w
# (ok,f,w) = fopen "Clean System Files/sil_compiled.abc" FWriteText w
| not ok
# err = err <<< "Could not open 'sil_compiled.abc' for writing\r\n"
- = finish io err w
+ = finish 1 io err w
# f = f <<< 'SC'.compile prog
# (_,w) = fclose f w
| not args.generate
- = finish io err w
+ = finish 0 io err w
# (p,w) = callProcess "/opt/clean/bin/clm" ["sil_compiled", "-o", "sil_compiled"] Nothing w
| isError p
# err = err <<< snd (fromError p) <<< "\r\n"
- = finish io err w
+ = finish 1 io err w
| not args.run
- = finish io err w
+ = finish 0 io err w
# (p,w) = callProcess "./sil_compiled" [] Nothing w
| isError p
# err = err <<< snd (fromError p) <<< "\r\n"
- = finish io err w
-= finish io err w
+ = finish 1 io err w
+= finish 0 io err w
where
arg :: Parser String (CLI -> CLI)
arg = peek >>= \opt ->
@@ -119,10 +119,11 @@ where
isFilename :: (String -> Bool)
isFilename = all (\c -> isAlphanum c || isMember c ['./']) o fromString
- finish :: !*File !*File !*World -> *World
- finish io err w
+ finish :: !Int !*File !*File !*World -> *World
+ finish ret io err w
# (_,w) = fclose io w
# (_,w) = fclose err w
+ # w = setReturnCode ret w
= w
sleep :: !Int !*World -> *(!Int, !*World)