From a09195f29ee8cd88411152cf311f4e4ab2f3b4b3 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 19 May 2020 22:38:59 +0200 Subject: [PATCH] patch 8.2.0800: errors from failing test are unclear Problem: Errors from failing test are unclear. Solution: Include text where parsing failed. --- src/json.c | 20 ++++++++++-------- src/testdir/test_json.vim | 44 +++++++++++++++++++-------------------- src/version.c | 2 ++ 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/json.c b/src/json.c index ec3355e71..2720abfca 100644 --- a/src/json.c +++ b/src/json.c @@ -20,6 +20,8 @@ static int json_encode_item(garray_T *gap, typval_T *val, int copyID, int options); +static char e_json_error[] = N_("E491: json decode error at '%s'"); + /* * Encode "val" into a JSON format string. * The result is added to "gap" @@ -740,7 +742,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options) retval = json_decode_string(reader, cur_item, *p); else { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; } break; @@ -748,7 +750,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options) case ',': // comma: empty item if ((options & JSON_JS) == 0) { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; break; } @@ -778,7 +780,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options) } if (!VIM_ISDIGIT(*sp)) { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; break; } @@ -809,7 +811,7 @@ json_decode_item(js_read_T *reader, typval_T *res, int options) &nr, NULL, 0, TRUE); if (len == 0) { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; goto theend; } @@ -962,7 +964,7 @@ item_end: retval = MAYBE; else { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; } goto theend; @@ -980,7 +982,7 @@ item_end: retval = MAYBE; else { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; } goto theend; @@ -1036,7 +1038,7 @@ item_end: retval = MAYBE; else { - emsg(_(e_invarg)); + semsg(_(e_json_error), p); retval = FAIL; } goto theend; @@ -1055,7 +1057,7 @@ item_end: res->v_type = VAR_SPECIAL; res->vval.v_number = VVAL_NONE; } - emsg(_(e_invarg)); + semsg(_(e_json_error), p); theend: ga_clear(&stack); @@ -1079,7 +1081,7 @@ json_decode_all(js_read_T *reader, typval_T *res, int options) if (ret != OK) { if (ret == MAYBE) - emsg(_(e_invarg)); + semsg(_(e_json_error), reader->js_buf); return FAIL; } json_skip_white(reader); diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim index 94481d930..6c11ace18 100644 --- a/src/testdir/test_json.vim +++ b/src/testdir/test_json.vim @@ -148,36 +148,36 @@ func Test_json_decode() call assert_fails("call json_decode('{\"\": \"ok\", \"\": \"bad\"}')", 'E938:') call assert_equal({'n': 1}, json_decode('{"n":1,}')) - call assert_fails("call json_decode(\"{'n':'1',}\")", 'E474:') - call assert_fails("call json_decode(\"'n'\")", 'E474:') + call assert_fails("call json_decode(\"{'n':'1',}\")", 'E491:') + call assert_fails("call json_decode(\"'n'\")", 'E491:') - call assert_fails('call json_decode("\"")', "E474:") - call assert_fails('call json_decode("blah")', "E474:") + call assert_fails('call json_decode("\"")', "E491:") + call assert_fails('call json_decode("blah")', "E491:") call assert_fails('call json_decode("true blah")', "E488:") - call assert_fails('call json_decode("")', "E474:") + call assert_fails('call json_decode("")', "E491:") call assert_fails('call json_decode("{\"a\":1,\"a\":2}")', "E938:") - call assert_fails('call json_decode("{")', "E474:") - call assert_fails('call json_decode("{foobar}")', "E474:") - call assert_fails('call json_decode("{\"n\",")', "E474:") - call assert_fails('call json_decode("{\"n\":")', "E474:") - call assert_fails('call json_decode("{\"n\":1")', "E474:") - call assert_fails('call json_decode("{\"n\":1,")', "E474:") - call assert_fails('call json_decode("{\"n\",1}")', "E474:") - call assert_fails('call json_decode("{-}")', "E474:") + call assert_fails('call json_decode("{")', "E491:") + call assert_fails('call json_decode("{foobar}")', "E491:") + call assert_fails('call json_decode("{\"n\",")', "E491:") + call assert_fails('call json_decode("{\"n\":")', "E491:") + call assert_fails('call json_decode("{\"n\":1")', "E491:") + call assert_fails('call json_decode("{\"n\":1,")', "E491:") + call assert_fails('call json_decode("{\"n\",1}")', "E491:") + call assert_fails('call json_decode("{-}")', "E491:") - call assert_fails('call json_decode("[foobar]")', "E474:") - call assert_fails('call json_decode("[")', "E474:") - call assert_fails('call json_decode("[1")', "E474:") - call assert_fails('call json_decode("[1,")', "E474:") - call assert_fails('call json_decode("[1 2]")', "E474:") + call assert_fails('call json_decode("[foobar]")', "E491:") + call assert_fails('call json_decode("[")', "E491:") + call assert_fails('call json_decode("[1")', "E491:") + call assert_fails('call json_decode("[1,")', "E491:") + call assert_fails('call json_decode("[1 2]")', "E491:") - call assert_fails('call json_decode("[1,,2]")', "E474:") + call assert_fails('call json_decode("[1,,2]")', "E491:") - call assert_fails('call json_decode("{{}:42}")', "E474:") - call assert_fails('call json_decode("{[]:42}")', "E474:") + call assert_fails('call json_decode("{{}:42}")', "E491:") + call assert_fails('call json_decode("{[]:42}")', "E491:") - call assert_fails('call json_decode("\"\\u111Z\"")', 'E474:') + call assert_fails('call json_decode("\"\\u111Z\"")', 'E491:') call assert_equal('[😂]', json_decode('"[\uD83D\uDE02]"')) call assert_equal('a😂b', json_decode('"a\uD83D\uDE02b"')) endfunc diff --git a/src/version.c b/src/version.c index f79ad7545..ede8ad10b 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 800, /**/ 799, /**/ -- 2.40.0