aboutsummaryrefslogtreecommitdiff
path: root/lib/core/errors.nom
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2019-01-16 16:31:49 -0800
committerBruce Hill <bruce@bruce-hill.com>2019-01-16 16:32:02 -0800
commit8ca7749b5509a40256195563fa52d3ede4bd1a34 (patch)
treea3e597668b6a53048e440d9630b48f3a2efb3926 /lib/core/errors.nom
parent25e1ccc025e27d5ef7f1cc23e82e4836aa5a07f4 (diff)
Better error messaging (using pretty_error in more places)
Diffstat (limited to 'lib/core/errors.nom')
-rw-r--r--lib/core/errors.nom56
1 files changed, 30 insertions, 26 deletions
diff --git a/lib/core/errors.nom b/lib/core/errors.nom
index 9a2cc9b..0b67400 100644
--- a/lib/core/errors.nom
+++ b/lib/core/errors.nom
@@ -8,32 +8,36 @@ use "core/control_flow"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-(fail $msg) compiles to "error(\(($msg as lua expr) if $msg else "nil"), 0);"
-(assume $condition) compiles to:
- lua> ("
- local \$assumption = 'Assumption failed: '..tostring((\$condition):get_source_code())
- ")
-
- return
- Lua ("
- if not \($condition as lua expr) then
- error(\(quote "\$assumption"), 0)
- end
- ")
+(fail $msg) compiles to
+ LuaCode
+ "at_1_fail(\(quote $msg.source), 'Failure: '..\($msg as lua expr))"
+ ..if $msg else "error('Failure', 0)"
-(assume $a == $b) compiles to:
- lua> "local \$assumption = 'Assumption failed: '..tostring(\(\($a == $b) as nomsu))"
- define mangler
- return
- Lua ("
- do
- local \(mangle "a"), \(mangle "b") = \($a as lua expr), \($b as lua expr)
- if \(mangle "a") ~= \(mangle "b") then
- error(\(quote "\$assumption").."\\n"..tostring(\(mangle "a")).." != "..tostring(\
- ..\(mangle "b")), 0)
- end
- end
- ")
+(assume $condition) compiles to ("
+ if not \($condition as lua expr) then
+ at_1_fail(\(quote "\($condition.source)"), "Assumption failed: This is not true.")
+ end
+")
+
+(assume $a == $b) compiles to ("
+ do
+ local _a, _b = \($a as lua expr), \($b as lua expr)
+ if _a ~= _b then
+ at_1_fail(\(quote "\($a.source)"),
+ "Assumption failed: This value is "..tostring(_a)..", but it was supposed to be "..tostring(_b)..".")
+ end
+ end
+")
+
+(assume $a != $b) compiles to ("
+ do
+ local _a, _b = \($a as lua expr), \($b as lua expr)
+ if _a == _b then
+ at_1_fail(\(quote "\($a.source)"),
+ "Assumption failed: This value is "..tostring(_a)..", but it wasn't supposed to be.")
+ end
+ end
+")
test:
try: fail
@@ -44,7 +48,7 @@ test:
$worked = (yes)
..if it succeeds:
fail "'try' incorrectly ran success case."
- assume $failure == "xx"
+ assume ($failure, matches "xx")
unless $worked:
fail "'try' failed to recover from failure"