diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-04-14 06:53:20 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-04-14 06:53:20 -0700 |
commit | db4cab95813e28e95d76a55b1f2c032521d92c86 (patch) | |
tree | 11b12cf848bcbf1589b608bd0c78e8692b42928d /eval.c | |
parent | a506664be6f93a51152cb7c25fad1f9466ebc78c (diff) | |
download | txr-db4cab95813e28e95d76a55b1f2c032521d92c86.tar.gz txr-db4cab95813e28e95d76a55b1f2c032521d92c86.tar.bz2 txr-db4cab95813e28e95d76a55b1f2c032521d92c86.zip |
load: release warnings before throwing exception.
* eval.c (load): When we parse TXR code, let's not release
warnings unconditionally. Let's do that when throwing an
exception though due to parse errors. If the load is not
recursed it will release warnings at the bottom of the
function.
* match.c (v_load): Consistently with load, release
deferred warnings if throwing exception due to the parse
having failed.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -4444,11 +4444,12 @@ val load(val target) close_stream(stream, nil); - uw_release_deferred_warnings(); - - if (parser->errors) + if (parser->errors) { + uw_release_deferred_warnings(); uw_throwf(query_error_s, lit("~a: parser errors in ~a"), self, path, nao); + } + { val match_ctx = uw_get_match_context(); val bindings = cdr(match_ctx); |