aboutsummaryrefslogtreecommitdiff
path: root/core/errors.nom
diff options
context:
space:
mode:
Diffstat (limited to 'core/errors.nom')
-rw-r--r--core/errors.nom22
1 files changed, 22 insertions, 0 deletions
diff --git a/core/errors.nom b/core/errors.nom
new file mode 100644
index 0000000..dc585be
--- /dev/null
+++ b/core/errors.nom
@@ -0,0 +1,22 @@
+#
+ This file contains basic error reporting code
+
+use "core/metaprogramming.nom"
+
+compile [traceback] to: Lua value "debug.traceback()"
+compile [traceback %] to: Lua value "debug.traceback('', \(% as lua expr))"
+compile [barf] to: Lua "error(nil, 0);"
+compile [barf %msg] to: Lua "error(\(%msg as lua expr), 0);"
+compile [assume %condition] to
+ lua> "local \%assumption = 'Assumption failed: '..tostring(nomsu:tree_to_nomsu(\%condition));"
+ return
+ Lua ".."
+ if not \(%condition as lua expr) then
+ error(\(quote "\%assumption"), 0);
+ end
+
+compile [assume %condition or barf %message] to
+ Lua ".."
+ if not \(%condition as lua expr) then
+ error(\(%message as lua expr), 0);
+ end