# HG changeset patch # User Bram Moolenaar # Date 1589921103 -7200 # Node ID 947e50e438d3bd6a6e52e4cf06ba039907474e46 # Parent 5adb36b48d8594c558a3bab4e9323c40df16ff54 patch 8.2.0800: errors from failing test are unclear Commit: https://github.com/vim/vim/commit/a09195f29ee8cd88411152cf311f4e4ab2f3b4b3 Author: Bram Moolenaar Date: Tue May 19 22:38:59 2020 +0200 patch 8.2.0800: errors from failing test are unclear Problem: Errors from failing test are unclear. Solution: Include text where parsing failed. diff --git a/src/json.c b/src/json.c --- 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, typv 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, typv 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, typv } 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, typv &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, typva 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 800, +/**/ 799, /**/ 798,