aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/elaborate.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2011-08-07 16:53:06 -0400
committerGravatar Adam Chlipala <adam@chlipala.net>2011-08-07 16:53:06 -0400
commite75a028e3ced5d05be1baa05c6fb1a83b277a45f (patch)
tree3b71b2a102795dcd3b2bb3e106a0ee2309487376 /src/elaborate.sml
parent4e0410306a4d4288dd36450dc8f9ea2e8bd0a154 (diff)
'-dumpTypes'
Diffstat (limited to 'src/elaborate.sml')
-rw-r--r--src/elaborate.sml54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/elaborate.sml b/src/elaborate.sml
index 1b8a7dbe..f221f59e 100644
--- a/src/elaborate.sml
+++ b/src/elaborate.sml
@@ -38,6 +38,8 @@
open ElabPrint
open ElabErr
+ val dumpTypes = ref false
+
structure IS = IntBinarySet
structure IM = IntBinaryMap
@@ -4486,6 +4488,58 @@ fun elabFile basis topStr topSgn env file =
(!delayedExhaustives);
(*preface ("file", p_file env' file);*)
+
+ if !dumpTypes then
+ let
+ open L'
+ open Print.PD
+ open Print
+
+ fun dumpDecl (d, env) =
+ case #1 d of
+ DCon (x, _, k, _) => (print (box [string x,
+ space,
+ string "::",
+ space,
+ p_kind env k,
+ newline,
+ newline]);
+ E.declBinds env d)
+ | DVal (x, _, t, _) => (print (box [string x,
+ space,
+ string ":",
+ space,
+ p_con env t,
+ newline,
+ newline]);
+ E.declBinds env d)
+ | DValRec vis => (app (fn (x, _, t, _) => print (box [string x,
+ space,
+ string ":",
+ space,
+ p_con env t,
+ newline,
+ newline])) vis;
+ E.declBinds env d)
+ | DStr (x, _, _, str) => (print (box [string ("<" ^ x ^ ">"),
+ newline,
+ newline]);
+ dumpStr (str, env);
+ print (box [string ("</" ^ x ^ ">"),
+ newline,
+ newline]);
+ E.declBinds env d)
+ | _ => E.declBinds env d
+
+ and dumpStr (str, env) =
+ case #1 str of
+ StrConst ds => ignore (foldl dumpDecl env ds)
+ | _ => ()
+ in
+ ignore (foldl dumpDecl env' file)
+ end
+ else
+ ();
(L'.DFfiStr ("Basis", basis_n, sgn), ErrorMsg.dummySpan)
:: ds