diff options
author | Emanuele Torre <torreemanuele6@gmail.com> | 2023-08-04 22:52:27 +0200 |
---|---|---|
committer | Nico Williams <nico@cryptonector.com> | 2023-08-04 17:38:52 -0500 |
commit | f94a9d463ffb3422861a0da140470dbf5ce76632 (patch) | |
tree | b63b841402177b23758f6ab54a835d34ae716156 | |
parent | 3b6e7ddd72d6080959a44bdcca068c3a200eb2ef (diff) |
Let error(null) throw null
This patch removes the weird behaviour of jv_invalid_with_msg(jv_null())
that returns jv_invalid() (i.e. empty), instead of a boxed jv_null().
The previous behaviour of null|error was obviously unintentional, and
allowing is jv_invalid_with_msg() to return values on which you can't
call jv_invalid_get_msg() is only error prone.
-rw-r--r-- | docs/content/manual/manual.yml | 4 | ||||
-rw-r--r-- | jq.1.prebuilt | 3 | ||||
-rw-r--r-- | src/jv.c | 2 | ||||
-rw-r--r-- | tests/jq.test | 10 |
4 files changed, 4 insertions, 15 deletions
diff --git a/docs/content/manual/manual.yml b/docs/content/manual/manual.yml index 3e2c289d..4028a943 100644 --- a/docs/content/manual/manual.yml +++ b/docs/content/manual/manual.yml @@ -1231,10 +1231,6 @@ sections: given as the argument. Errors can be caught with try/catch; see below. - When the error value is `null`, it produces nothing and works - just like `empty`. So `[null | error]` and `[error(null)]` both - emit `[]`. - examples: - program: 'try error catch .' input: '"error message"' diff --git a/jq.1.prebuilt b/jq.1.prebuilt index b2590acc..48b76220 100644 --- a/jq.1.prebuilt +++ b/jq.1.prebuilt @@ -1263,9 +1263,6 @@ jq \'[1,2,empty,3]\' .SS "error, error(message)" Produces an error with the input value, or with the message given as the argument\. Errors can be caught with try/catch; see below\. . -.P -When the error value is \fBnull\fR, it produces nothing and works just like \fBempty\fR\. So \fB[null | error]\fR and \fB[error(null)]\fR both emit \fB[]\fR\. -. .IP "" 4 . .nf @@ -147,8 +147,6 @@ typedef struct { } jvp_invalid; jv jv_invalid_with_msg(jv err) { - if (JVP_HAS_KIND(err, JV_KIND_NULL)) - return JV_INVALID; jvp_invalid* i = jv_mem_alloc(sizeof(jvp_invalid)); i->refcnt = JV_REFCNT_INIT; i->errmsg = err; diff --git a/tests/jq.test b/tests/jq.test index 3ba29add..94dec3fb 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1270,13 +1270,11 @@ null [null,true,{"a":1}] [] -[1,error,2] +.[] | try error catch . +[1,null,2] +1 null -[1,2] - -[1,error(null),2] -0 -[1,2] +2 try error("\($__loc__)") catch . null |