summaryrefslogtreecommitdiff
path: root/src/compiler.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2011-01-06 09:14:06 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2011-01-06 09:14:06 -0500
commit2537fba42cfd9265d3dfe9f78a80862ce9c1fdbc (patch)
tree7f6441771ce7b27e4bd3d3e205d55b87f6465aea /src/compiler.sml
parentf4b8a6c1cabf2fe34a978011e06ebfaf2303ee25 (diff)
Detect missing 'database' directive; don't compile garbage C files
Diffstat (limited to 'src/compiler.sml')
-rw-r--r--src/compiler.sml41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/compiler.sml b/src/compiler.sml
index 0668ac42..df7cdb4c 100644
--- a/src/compiler.sml
+++ b/src/compiler.sml
@@ -1337,10 +1337,10 @@ fun compile job =
in
OS.FileSys.mkDir dir;
(cname, oname,
- fn () => (OS.FileSys.remove cname;
- OS.FileSys.remove oname;
- OS.FileSys.rmDir dir)
- handle OS.SysErr _ => OS.FileSys.rmDir dir)
+ fn () => (OS.FileSys.remove cname;
+ OS.FileSys.remove oname;
+ OS.FileSys.rmDir dir)
+ handle OS.SysErr _ => OS.FileSys.rmDir dir)
end
val ename = #exe job
in
@@ -1359,21 +1359,24 @@ fun compile job =
TextIO.output1 (outf, #"\n");
TextIO.closeOut outf;
- case #sql job of
- NONE => ()
- | SOME sql =>
- let
- val outf = TextIO.openOut sql
- val s = TextIOPP.openOut {dst = outf, wid = 80}
- in
- Print.fprint s (CjrPrint.p_sql CjrEnv.empty file);
- TextIO.closeOut outf
- end;
-
- compileC {cname = cname, oname = oname, ename = ename, libs = libs,
- profile = #profile job, debug = #debug job, link = #link job}
-
- before cleanup ()
+ if ErrorMsg.anyErrors () then
+ false
+ else
+ (case #sql job of
+ NONE => ()
+ | SOME sql =>
+ let
+ val outf = TextIO.openOut sql
+ val s = TextIOPP.openOut {dst = outf, wid = 80}
+ in
+ Print.fprint s (CjrPrint.p_sql CjrEnv.empty file);
+ TextIO.closeOut outf
+ end;
+
+ compileC {cname = cname, oname = oname, ename = ename, libs = libs,
+ profile = #profile job, debug = #debug job, link = #link job}
+
+ before cleanup ())
end
handle ex => (((cleanup ()) handle _ => ()); raise ex)
end