diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-06-04 07:56:56 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-06-04 07:56:56 -0700 |
commit | fd94e0825bf3b132ebbb2184b89824ead4de4c80 (patch) | |
tree | 4abf79af99d54085f6a90b607718a9aa79d2e42c /eval.c | |
parent | 7726287eb96efa9c0c1bd970aba5c06d640c5005 (diff) | |
download | txr-fd94e0825bf3b132ebbb2184b89824ead4de4c80.tar.gz txr-fd94e0825bf3b132ebbb2184b89824ead4de4c80.tar.bz2 txr-fd94e0825bf3b132ebbb2184b89824ead4de4c80.zip |
Fixes in field formatting diagnostics.
* eval.c (format_field): Improve error messages; streamline
some code, report expression value rather than expression
itself for bad modifier.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -2172,7 +2172,7 @@ val format_field(val obj, val modifier, val filter, val eval_fun) for (; modifier; pop(&modifier)) { val item = first(modifier); if (regexp(item)) { - uw_throw(query_error_s, lit("bad field format: regex modifier in output")); + uw_throw(query_error_s, lit("bad field format: regex modifier in output var")); } else if (keywordp(item)) { plist = modifier; break; @@ -2191,12 +2191,13 @@ val format_field(val obj, val modifier, val filter, val eval_fun) obj = sub(obj, from, to); } else { val arg = funcall1(eval_fun, arg_expr); - if (bignump(arg) || fixnump(arg)) { + if (integerp(arg)) { obj = ref(obj, arg); } else if (rangep(arg)) { obj = sub(obj, from(arg), to(arg)); } else { - uw_throwf(query_error_s, lit("format_field: bad index: ~s"), + uw_throwf(query_error_s, + lit("bad field format: index ~s expected to be integer or range"), arg, nao); } } @@ -2208,8 +2209,8 @@ val format_field(val obj, val modifier, val filter, val eval_fun) sep = v; else uw_throwf(query_error_s, - lit("bad field format: bad modifier object: ~s"), - item, nao); + lit("bad field format: modifier ~s expected to be fixnum or string"), + v, nao); } } |