diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2019-01-16 16:31:49 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2019-01-16 16:32:02 -0800 |
| commit | 8ca7749b5509a40256195563fa52d3ede4bd1a34 (patch) | |
| tree | a3e597668b6a53048e440d9630b48f3a2efb3926 /lib/core/errors.nom | |
| parent | 25e1ccc025e27d5ef7f1cc23e82e4836aa5a07f4 (diff) | |
Better error messaging (using pretty_error in more places)
Diffstat (limited to 'lib/core/errors.nom')
| -rw-r--r-- | lib/core/errors.nom | 56 |
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" |
